mirror of
git://soft.sys114.com/klipper
synced 2026-02-12 00:10:26 +09:00
atsamd: Add support for SAMC21
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
This commit is contained in:
@@ -28,6 +28,11 @@
|
||||
#define GPIO_Rx GPIO('A', 25)
|
||||
#define GPIO_Tx GPIO('A', 24)
|
||||
#define CANx_GCLK_ID CAN0_GCLK_ID
|
||||
#elif CONFIG_ATSAMD_CANBUS_PB11_PB10
|
||||
DECL_CONSTANT_STR("RESERVE_PINS_CAN", "PB11,PB10");
|
||||
#define GPIO_Rx GPIO('B', 11)
|
||||
#define GPIO_Tx GPIO('B', 10)
|
||||
#define CANx_GCLK_ID CAN1_GCLK_ID
|
||||
#elif CONFIG_ATSAMD_CANBUS_PB13_PB12
|
||||
DECL_CONSTANT_STR("RESERVE_PINS_CAN", "PB13,PB12");
|
||||
#define GPIO_Rx GPIO('B', 13)
|
||||
@@ -40,7 +45,17 @@
|
||||
#define CANx_GCLK_ID CAN1_GCLK_ID
|
||||
#endif
|
||||
|
||||
#if CANx_GCLK_ID == CAN0_GCLK_ID
|
||||
#if CANx_GCLK_ID == CAN0_GCLK_ID && CONFIG_MACH_SAMC21
|
||||
#define CAN_FUNCTION 'G'
|
||||
#define CANx CAN0
|
||||
#define CANx_IRQn CAN0_IRQn
|
||||
#define MCLK_AHBMASK_CANx MCLK_AHBMASK_CAN0
|
||||
#elif CANx_GCLK_ID == CAN1_GCLK_ID && CONFIG_MACH_SAMC21
|
||||
#define CAN_FUNCTION 'G'
|
||||
#define CANx CAN1
|
||||
#define CANx_IRQn CAN1_IRQn
|
||||
#define MCLK_AHBMASK_CANx MCLK_AHBMASK_CAN1
|
||||
#elif CANx_GCLK_ID == CAN0_GCLK_ID
|
||||
#define CAN_FUNCTION 'I'
|
||||
#define CANx CAN0
|
||||
#define CANx_IRQn CAN0_IRQn
|
||||
@@ -234,13 +249,18 @@ compute_btr(uint32_t pclock, uint32_t bitrate)
|
||||
void
|
||||
can_init(void)
|
||||
{
|
||||
#if CONFIG_HAVE_SAMD_USB
|
||||
if (!CONFIG_USB) {
|
||||
// The FDCAN peripheral only seems to run if at least one
|
||||
// other peripheral is also enabled.
|
||||
enable_pclock(USB_GCLK_ID, ID_USB);
|
||||
USB->DEVICE.CTRLA.reg = USB_CTRLA_ENABLE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_MACH_SAMC21
|
||||
MCLK->AHBMASK.reg |= MCLK_AHBMASK_CANx;
|
||||
#endif
|
||||
enable_pclock(CANx_GCLK_ID, -1);
|
||||
|
||||
gpio_peripheral(GPIO_Rx, CAN_FUNCTION, 1);
|
||||
|
||||
Reference in New Issue
Block a user