From 92a11405f7ea5ddfc95e1ceefa0e61b7b2d7a489 Mon Sep 17 00:00:00 2001 From: Ioan Dragomir Date: Tue, 17 Dec 2024 14:52:29 +0200 Subject: [PATCH] drivers: can: Add CAN support for max32662 Adapt MAX32690 driver to use Wrap_MXC_CAN_Init to handle differences in the MSDK API (see analogdevicesinc/msdk#1306) between the MAX32690 and MAX32662. can_driver_api.timing_min required phase_seg1 >= 3 and phase_seg2 >= 2 when configuring CAN bit timing. Both microcontrollers covered by this driver (MAX32662, MAX32690) support values down to 1 for both of these timing parameters. Refer to the docs for registers CAN_BUSTIM1, CANn_BUSTIM1. Add a can0 node to the MAX32662 dtsi. Signed-off-by: Ioan Dragomir --- drivers/can/can_max32.c | 13 +++++++------ dts/arm/adi/max32/max32662.dtsi | 10 +++++++++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/drivers/can/can_max32.c b/drivers/can/can_max32.c index c101a03d089..2a1078fc897 100644 --- a/drivers/can/can_max32.c +++ b/drivers/can/can_max32.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Analog Devices, Inc. + * Copyright (c) 2024-2025 Analog Devices, Inc. * * SPDX-License-Identifier: Apache-2.0 */ @@ -15,6 +15,7 @@ #include #include +#include LOG_MODULE_REGISTER(can_max32, CONFIG_CAN_LOG_LEVEL); @@ -639,10 +640,10 @@ static int can_max32_init(const struct device *dev) dev_list[dev_cfg->can_id] = dev; - ret = MXC_CAN_Init(dev_cfg->can_id, MXC_CAN_OBJ_CFG_TXRX, unit_event_callback, - object_event_callback); + ret = Wrap_MXC_CAN_Init(dev_cfg->can_id, MXC_CAN_OBJ_CFG_TXRX, unit_event_callback, + object_event_callback); if (ret < 0) { - LOG_ERR("MXC_CAN_Init() failed:%d", ret); + LOG_ERR("Wrap_MXC_CAN_Init() failed:%d", ret); return ret; } @@ -700,8 +701,8 @@ static const struct can_driver_api can_max32_api = { .timing_min = { .sjw = 1, .prop_seg = 0, - .phase_seg1 = 3, - .phase_seg2 = 2, + .phase_seg1 = 1, + .phase_seg2 = 1, .prescaler = 1, }, .timing_max = { diff --git a/dts/arm/adi/max32/max32662.dtsi b/dts/arm/adi/max32/max32662.dtsi index b2d8c6614ad..50c7416f031 100644 --- a/dts/arm/adi/max32/max32662.dtsi +++ b/dts/arm/adi/max32/max32662.dtsi @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Analog Devices, Inc. + * Copyright (c) 2024-2025 Analog Devices, Inc. * * SPDX-License-Identifier: Apache-2.0 */ @@ -127,5 +127,13 @@ interrupts = <3 0>; status = "disabled"; }; + + can0: can@40064000 { + compatible = "adi,max32-can"; + reg = <0x40064000 0x1000>; + clocks = <&gcr ADI_MAX32_CLOCK_BUS1 11>; + interrupts = <107 0>; + status = "disabled"; + }; }; };