can: dts: Convert can-primary alias to zephyr,can-primary chosen prop
Convert CAN to use a chosen node property that is similar to how we
handle zephyr,entroy or zephyr,flash-controller as the means to select a
specific peripheral instance utilized by a subsystem.
Replace references of the form:
alias {
can-primary = &can1;
};
with:
chosen {
zephyr,can-primary = &can1;
};
Replace various macro/define references with either
DT_CHOSEN(zephyr_can_primary) or replace DT_ALIAS_CAN_PRIMARY_LABEL
with DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
diff --git a/boards/arm/black_f407_generic/black_f407ve.dts b/boards/arm/black_f407_generic/black_f407ve.dts
index 8caca94..d767cbd 100644
--- a/boards/arm/black_f407_generic/black_f407ve.dts
+++ b/boards/arm/black_f407_generic/black_f407ve.dts
@@ -17,6 +17,7 @@
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,ccm = &ccm0;
+ zephyr,can-primary = &can2;
};
leds {
@@ -48,7 +49,6 @@
};
aliases {
- can-primary = &can2;
led0 = &green_led_1;
led1 = &green_led_2;
sw0 = &user_button_UP;
diff --git a/boards/arm/frdm_k64f/frdm_k64f.dts b/boards/arm/frdm_k64f/frdm_k64f.dts
index 047a7db..a77615f 100644
--- a/boards/arm/frdm_k64f/frdm_k64f.dts
+++ b/boards/arm/frdm_k64f/frdm_k64f.dts
@@ -14,7 +14,6 @@
led2 = &red_led;
sw0 = &user_button_3;
sw1 = &user_button_2;
- can-primary = &flexcan0;
};
chosen {
@@ -24,6 +23,7 @@
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
zephyr,uart-pipe = &uart0;
+ zephyr,can-primary = &flexcan0;
};
leds {
diff --git a/boards/arm/nucleo_f746zg/nucleo_f746zg.dts b/boards/arm/nucleo_f746zg/nucleo_f746zg.dts
index 0a44738..76c84d2 100644
--- a/boards/arm/nucleo_f746zg/nucleo_f746zg.dts
+++ b/boards/arm/nucleo_f746zg/nucleo_f746zg.dts
@@ -18,6 +18,7 @@
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,dtcm = &dtcm;
+ zephyr,can-primary = &can1;
};
leds {
@@ -49,7 +50,6 @@
led1 = &blue_led;
led2 = &red_led;
sw0 = &user_button;
- can-primary = &can1;
};
};
diff --git a/boards/arm/nucleo_f767zi/nucleo_f767zi.dts b/boards/arm/nucleo_f767zi/nucleo_f767zi.dts
index 179f5c3..144ffb3 100644
--- a/boards/arm/nucleo_f767zi/nucleo_f767zi.dts
+++ b/boards/arm/nucleo_f767zi/nucleo_f767zi.dts
@@ -18,6 +18,7 @@
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,dtcm = &dtcm;
+ zephyr,can-primary = &can1;
};
leds {
@@ -49,7 +50,6 @@
led1 = &blue_led;
led2 = &red_led;
sw0 = &user_button;
- can-primary = &can1;
};
};
diff --git a/boards/arm/nucleo_l432kc/nucleo_l432kc.dts b/boards/arm/nucleo_l432kc/nucleo_l432kc.dts
index 71c4d40..4fbe86b 100644
--- a/boards/arm/nucleo_l432kc/nucleo_l432kc.dts
+++ b/boards/arm/nucleo_l432kc/nucleo_l432kc.dts
@@ -16,6 +16,7 @@
zephyr,shell-uart = &usart2;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
+ zephyr,can-primary = &can1;
};
leds {
@@ -28,7 +29,6 @@
aliases {
led0 = &green_led;
- can-primary = &can1;
};
};
diff --git a/boards/arm/nucleo_l452re/nucleo_l452re.dts b/boards/arm/nucleo_l452re/nucleo_l452re.dts
index 543ad83..cf29469 100644
--- a/boards/arm/nucleo_l452re/nucleo_l452re.dts
+++ b/boards/arm/nucleo_l452re/nucleo_l452re.dts
@@ -17,6 +17,7 @@
zephyr,shell-uart = &usart2;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
+ zephyr,can-primary = &can1;
};
leds {
@@ -38,7 +39,6 @@
aliases {
led0 = &green_led;
sw0 = &user_button;
- can-primary = &can1;
};
};
diff --git a/boards/arm/olimex_stm32_p405/olimex_stm32_p405.dts b/boards/arm/olimex_stm32_p405/olimex_stm32_p405.dts
index b28eb6a..7d6fca1 100644
--- a/boards/arm/olimex_stm32_p405/olimex_stm32_p405.dts
+++ b/boards/arm/olimex_stm32_p405/olimex_stm32_p405.dts
@@ -17,6 +17,7 @@
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,ccm = &ccm0;
+ zephyr,can-primary = &can1;
};
leds {
@@ -38,7 +39,6 @@
aliases {
led0 = &green_led_1;
sw0 = &user_button;
- can-primary = &can1;
};
};
diff --git a/boards/arm/olimexino_stm32/olimexino_stm32.dts b/boards/arm/olimexino_stm32/olimexino_stm32.dts
index e6cb55d..b7bc940 100644
--- a/boards/arm/olimexino_stm32/olimexino_stm32.dts
+++ b/boards/arm/olimexino_stm32/olimexino_stm32.dts
@@ -16,6 +16,7 @@
zephyr,shell-uart = &usart1;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
+ zephyr,can-primary = &can1;
};
leds {
@@ -42,7 +43,6 @@
led0 = &green_led_1;
led1 = &yellow_led_2;
sw0 = &user_button;
- can-primary = &can1;
};
};
diff --git a/boards/arm/stm32f072b_disco/stm32f072b_disco.dts b/boards/arm/stm32f072b_disco/stm32f072b_disco.dts
index 8ea4098..82939de 100644
--- a/boards/arm/stm32f072b_disco/stm32f072b_disco.dts
+++ b/boards/arm/stm32f072b_disco/stm32f072b_disco.dts
@@ -16,6 +16,7 @@
zephyr,shell-uart = &usart1;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
+ zephyr,can-primary = &can1;
};
leds {
@@ -52,7 +53,6 @@
led2 = &green_right_led_5;
led3 = &blue_low_led_6;
sw0 = &user_button;
- can-primary = &can1;
};
};
diff --git a/boards/arm/stm32f3_disco/stm32f3_disco.dts b/boards/arm/stm32f3_disco/stm32f3_disco.dts
index 7b163f1..6fde431 100644
--- a/boards/arm/stm32f3_disco/stm32f3_disco.dts
+++ b/boards/arm/stm32f3_disco/stm32f3_disco.dts
@@ -16,6 +16,7 @@
zephyr,shell-uart = &usart1;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
+ zephyr,can-primary = &can1;
};
leds {
@@ -66,7 +67,6 @@
led0 = &green_led_6;
led1 = &green_led_7;
sw0 = &user_button;
- can-primary = &can1;
};
};
diff --git a/boards/arm/stm32f4_disco/stm32f4_disco.dts b/boards/arm/stm32f4_disco/stm32f4_disco.dts
index d22bf4e..266996a 100644
--- a/boards/arm/stm32f4_disco/stm32f4_disco.dts
+++ b/boards/arm/stm32f4_disco/stm32f4_disco.dts
@@ -17,6 +17,7 @@
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,ccm = &ccm0;
+ zephyr,can-primary = &can2;
};
leds {
@@ -48,7 +49,6 @@
};
aliases {
- can-primary = &can2;
led0 = &green_led_4;
led1 = &orange_led_3;
led2 = &red_led_5;
diff --git a/boards/arm/twr_ke18f/twr_ke18f.dts b/boards/arm/twr_ke18f/twr_ke18f.dts
index 1c0917c..3120634 100644
--- a/boards/arm/twr_ke18f/twr_ke18f.dts
+++ b/boards/arm/twr_ke18f/twr_ke18f.dts
@@ -31,7 +31,6 @@
blue-pwm-led = &tri_blue_pwm_led;
sw0 = &user_button_3;
sw1 = &user_button_2;
- can-primary = &flexcan0;
};
chosen {
@@ -41,6 +40,7 @@
zephyr,console = &lpuart0;
zephyr,shell-uart = &lpuart0;
zephyr,uart-pipe = &lpuart0;
+ zephyr,can-primary = &flexcan0;
};
leds {
diff --git a/boards/shields/dfrobot_can_bus_v2_0/dfrobot_can_bus_v2_0.overlay b/boards/shields/dfrobot_can_bus_v2_0/dfrobot_can_bus_v2_0.overlay
index de951f2..27a7621 100644
--- a/boards/shields/dfrobot_can_bus_v2_0/dfrobot_can_bus_v2_0.overlay
+++ b/boards/shields/dfrobot_can_bus_v2_0/dfrobot_can_bus_v2_0.overlay
@@ -27,7 +27,7 @@
};
/ {
- aliases {
- can-primary = &can1;
+ chosen {
+ zephyr,can-primary = &can1;
};
};
diff --git a/drivers/can/can_net.c b/drivers/can/can_net.c
index a031715..4d9fbde 100644
--- a/drivers/can/can_net.c
+++ b/drivers/can/can_net.c
@@ -372,9 +372,11 @@
static int net_can_init(struct device *dev)
{
- struct device *can_dev = device_get_binding(DT_ALIAS_CAN_PRIMARY_LABEL);
+ struct device *can_dev;
struct net_can_context *ctx = dev->driver_data;
+ can_dev = device_get_binding(DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL);
+
ctx->recv_filter_id = CAN_NET_FILTER_NOT_SET;
#ifdef CONFIG_NET_L2_CANBUS_ETH_TRANSLATOR
ctx->eth_bridge_filter_id = CAN_NET_FILTER_NOT_SET;
@@ -383,7 +385,7 @@
if (!can_dev) {
NET_ERR("Can't get binding to CAN device %s",
- DT_ALIAS_CAN_PRIMARY_LABEL);
+ DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL);
return -EIO;
}
diff --git a/include/devicetree/zephyr.h b/include/devicetree/zephyr.h
index 00402b0..5a58b10 100644
--- a/include/devicetree/zephyr.h
+++ b/include/devicetree/zephyr.h
@@ -44,6 +44,15 @@
* a label property, that property's value. Undefined otherwise.
*/
#define DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL ""
+
+/**
+ * @def DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL
+ *
+ * @brief If there is a chosen node zephyr,can-primary property which has
+ * a label property, that property's value. Undefined otherwise.
+ */
+#define DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL ""
+
#endif /* DT_DOXYGEN */
#if DT_NODE_HAS_PROP(DT_CHOSEN(zephyr_entropy), label)
@@ -55,6 +64,10 @@
DT_LABEL(DT_CHOSEN(zephyr_flash_controller))
#endif
+#if DT_NODE_HAS_PROP(DT_CHOSEN(zephyr_can_primary), label)
+#define DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL \
+ DT_LABEL(DT_CHOSEN(zephyr_can_primary))
+#endif
/**
* @}
*/
diff --git a/samples/drivers/CAN/src/main.c b/samples/drivers/CAN/src/main.c
index 4e3a4be..cdb9309 100644
--- a/samples/drivers/CAN/src/main.c
+++ b/samples/drivers/CAN/src/main.c
@@ -195,7 +195,7 @@
k_tid_t rx_tid, get_state_tid;
int ret;
- can_dev = device_get_binding(DT_ALIAS_CAN_PRIMARY_LABEL);
+ can_dev = device_get_binding(DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL);
if (!can_dev) {
printk("CAN: Device driver not found.\n");
diff --git a/samples/subsys/canbus/canopen/src/main.c b/samples/subsys/canbus/canopen/src/main.c
index ce8f0d2..63bc22f 100644
--- a/samples/subsys/canbus/canopen/src/main.c
+++ b/samples/subsys/canbus/canopen/src/main.c
@@ -15,9 +15,9 @@
LOG_MODULE_REGISTER(app);
-#define CAN_INTERFACE DT_ALIAS_CAN_PRIMARY_LABEL
-#define CAN_BITRATE (DT_ALIAS_CAN_PRIMARY_BUS_SPEED / 1000)
-#if !defined(DT_ALIAS_CAN_PRIMARY_LABEL)
+#define CAN_INTERFACE DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL
+#define CAN_BITRATE (DT_PROP(DT_CHOSEN(zephyr_can_primary), bus_speed) / 1000)
+#if !defined(DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL)
#error CANopen CAN interface not set
#endif
diff --git a/samples/subsys/canbus/isotp/src/main.c b/samples/subsys/canbus/isotp/src/main.c
index 28eda69..f62c9ba 100644
--- a/samples/subsys/canbus/isotp/src/main.c
+++ b/samples/subsys/canbus/isotp/src/main.c
@@ -148,7 +148,7 @@
static struct isotp_send_ctx send_ctx_0_5;
int ret = 0;
- can_dev = device_get_binding(DT_ALIAS_CAN_PRIMARY_LABEL);
+ can_dev = device_get_binding(DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL);
if (!can_dev) {
printk("CAN: Device driver not found.\n");
return;
diff --git a/tests/drivers/can/api/src/main.c b/tests/drivers/can/api/src/main.c
index 10b8625..f80abb4 100644
--- a/tests/drivers/can/api/src/main.c
+++ b/tests/drivers/can/api/src/main.c
@@ -44,7 +44,7 @@
#if defined(CONFIG_CAN_LOOPBACK_DEV_NAME)
#define CAN_DEVICE_NAME CONFIG_CAN_LOOPBACK_DEV_NAME
#else
-#define CAN_DEVICE_NAME DT_ALIAS_CAN_PRIMARY_LABEL
+#define CAN_DEVICE_NAME DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL
#endif
CAN_DEFINE_MSGQ(can_msgq, 5);
diff --git a/tests/drivers/can/stm32/src/main.c b/tests/drivers/can/stm32/src/main.c
index e7b56b7..f5086a5 100644
--- a/tests/drivers/can/stm32/src/main.c
+++ b/tests/drivers/can/stm32/src/main.c
@@ -130,7 +130,7 @@
int ret, filter_id_1, filter_id_2;
struct zcan_frame msg_buffer;
- can_dev = device_get_binding(DT_ALIAS_CAN_PRIMARY_LABEL);
+ can_dev = device_get_binding(DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL);
ret = can_configure(can_dev, CAN_LOOPBACK_MODE, 0);
diff --git a/tests/subsys/canbus/isotp/conformance/src/main.c b/tests/subsys/canbus/isotp/conformance/src/main.c
index 1b461c7..c7fc673 100644
--- a/tests/subsys/canbus/isotp/conformance/src/main.c
+++ b/tests/subsys/canbus/isotp/conformance/src/main.c
@@ -46,7 +46,7 @@
#if defined(CONFIG_CAN_LOOPBACK_DEV_NAME)
#define CAN_DEVICE_NAME CONFIG_CAN_LOOPBACK_DEV_NAME
#else
-#define CAN_DEVICE_NAME DT_ALIAS_CAN_PRIMARY_LABEL
+#define CAN_DEVICE_NAME DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL
#endif
/*
diff --git a/tests/subsys/canbus/isotp/implementation/src/main.c b/tests/subsys/canbus/isotp/implementation/src/main.c
index 487ef33..931d4be 100644
--- a/tests/subsys/canbus/isotp/implementation/src/main.c
+++ b/tests/subsys/canbus/isotp/implementation/src/main.c
@@ -15,7 +15,7 @@
#if defined(CONFIG_CAN_LOOPBACK_DEV_NAME)
#define CAN_DEVICE_NAME CONFIG_CAN_LOOPBACK_DEV_NAME
#else
-#define CAN_DEVICE_NAME DT_ALIAS_CAN_PRIMARY_LABEL
+#define CAN_DEVICE_NAME DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL
#endif
/*