can: Introduce can-primary alias
This commit introduces the can-primary alias to identify the primary CAN interface. This alias is used for all samples and tests, so they don't need to probe the right interface. Signed-off-by: Alexander Wachter <alexander@wachter.cloud>
This commit is contained in:
parent
4fcf80d64f
commit
2f44990e9b
16 changed files with 26 additions and 51 deletions
|
@ -14,6 +14,7 @@
|
|||
led2 = &red_led;
|
||||
sw0 = &user_button_3;
|
||||
sw1 = &user_button_2;
|
||||
can-primary = &can0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
led1 = &blue_led;
|
||||
led2 = &red_led;
|
||||
sw0 = &user_button;
|
||||
can-primary = &can1;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
led1 = &blue_led;
|
||||
led2 = &red_led;
|
||||
sw0 = &user_button;
|
||||
can-primary = &can1;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
aliases {
|
||||
led0 = &green_led;
|
||||
can-primary = &can1;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
aliases {
|
||||
led0 = &green_led;
|
||||
sw0 = &user_button;
|
||||
can-primary = &can1;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
aliases {
|
||||
led0 = &green_led_1;
|
||||
sw0 = &user_button;
|
||||
can-primary = &can1;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
led0 = &green_led_1;
|
||||
led1 = &yellow_led_2;
|
||||
sw0 = &user_button;
|
||||
can-primary = &can1;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
led2 = &green_right_led_5;
|
||||
led3 = &blue_low_led_6;
|
||||
sw0 = &user_button;
|
||||
can-primary = &can1;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
blue-pwm-led = &tri_blue_pwm_led;
|
||||
sw0 = &user_button_3;
|
||||
sw1 = &user_button_2;
|
||||
can-primary = &can0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
status = "okay";
|
||||
cs-gpios = <&arduino_header 16 0>; /* D10 */
|
||||
|
||||
mcp2515@0 {
|
||||
can1: mcp2515@0 {
|
||||
compatible = "microchip,mcp2515";
|
||||
spi-max-frequency = <1000000>;
|
||||
int-gpios = <&arduino_header 8 0>; /* D2 */
|
||||
|
@ -25,3 +25,9 @@
|
|||
#size-cells = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
can-primary = &can1;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -372,7 +372,7 @@ static struct net_can_api net_can_api_inst = {
|
|||
|
||||
static int net_can_init(struct device *dev)
|
||||
{
|
||||
struct device *can_dev = device_get_binding(DT_CAN_1_NAME);
|
||||
struct device *can_dev = device_get_binding(DT_ALIAS_CAN_PRIMARY_LABEL);
|
||||
struct net_can_context *ctx = dev->driver_data;
|
||||
|
||||
ctx->recv_filter_id = CAN_NET_FILTER_NOT_SET;
|
||||
|
@ -382,7 +382,8 @@ static int net_can_init(struct device *dev)
|
|||
#endif /*CONFIG_NET_L2_CANBUS_ETH_TRANSLATOR*/
|
||||
|
||||
if (!can_dev) {
|
||||
NET_ERR("Can't get binding to CAN device %s", DT_CAN_1_NAME);
|
||||
NET_ERR("Can't get binding to CAN device %s",
|
||||
DT_ALIAS_CAN_PRIMARY_LABEL);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
|
|
|
@ -195,13 +195,7 @@ void main(void)
|
|||
k_tid_t rx_tid, get_state_tid;
|
||||
int ret;
|
||||
|
||||
/* Usually the CAN device is either called CAN_0 or CAN_1, depending
|
||||
* on the SOC. Let's check both and take the first valid one.
|
||||
*/
|
||||
can_dev = device_get_binding("CAN_0");
|
||||
if (!can_dev) {
|
||||
can_dev = device_get_binding("CAN_1");
|
||||
}
|
||||
can_dev = device_get_binding(DT_ALIAS_CAN_PRIMARY_LABEL);
|
||||
|
||||
if (!can_dev) {
|
||||
printk("CAN: Device driver not found.\n");
|
||||
|
|
|
@ -4,24 +4,6 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
choice
|
||||
prompt "CAN interface to use for CANopen"
|
||||
|
||||
config CANOPEN_INTERFACE_CAN_0
|
||||
bool "CAN 0"
|
||||
depends on CAN_0
|
||||
|
||||
config CANOPEN_INTERFACE_CAN_1
|
||||
bool "CAN 1"
|
||||
depends on CAN_1
|
||||
|
||||
endchoice
|
||||
|
||||
config CANOPEN_INTERFACE
|
||||
int
|
||||
default 0 if CANOPEN_INTERFACE_CAN0
|
||||
default 1 if CANOPEN_INTERFACE_CAN1
|
||||
|
||||
config CANOPEN_NODE_ID
|
||||
int "CANopen node ID"
|
||||
default 10
|
||||
|
|
|
@ -14,13 +14,10 @@
|
|||
#include <logging/log.h>
|
||||
LOG_MODULE_REGISTER(app);
|
||||
|
||||
#if defined(CONFIG_CANOPEN_INTERFACE_CAN_0)
|
||||
#define CAN_INTERFACE DT_ALIAS_CAN_0_LABEL
|
||||
#define CAN_BITRATE (DT_ALIAS_CAN_0_BUS_SPEED / 1000)
|
||||
#elif defined(CONFIG_CANOPEN_INTERFACE_CAN_1)
|
||||
#define CAN_INTERFACE DT_ALIAS_CAN_1_LABEL
|
||||
#define CAN_BITRATE (DT_ALIAS_CAN_1_BUS_SPEED / 1000)
|
||||
#else
|
||||
|
||||
#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)
|
||||
#error CANopen CAN interface not set
|
||||
#endif
|
||||
|
||||
|
|
|
@ -43,14 +43,8 @@
|
|||
|
||||
#if defined(CONFIG_CAN_LOOPBACK_DEV_NAME)
|
||||
#define CAN_DEVICE_NAME CONFIG_CAN_LOOPBACK_DEV_NAME
|
||||
#elif defined(DT_CAN_0_NAME)
|
||||
#define CAN_DEVICE_NAME DT_CAN_0_NAME
|
||||
#elif defined(DT_CAN_1_NAME)
|
||||
#define CAN_DEVICE_NAME DT_CAN_1_NAME
|
||||
#elif defined(DT_INST_0_MICROCHIP_MCP2515_LABEL)
|
||||
#define CAN_DEVICE_NAME DT_INST_0_MICROCHIP_MCP2515_LABEL
|
||||
#else
|
||||
#define CAN_DEVICE_NAME ""
|
||||
#define CAN_DEVICE_NAME DT_ALIAS_CAN_PRIMARY_LABEL
|
||||
#endif
|
||||
|
||||
CAN_DEFINE_MSGQ(can_msgq, 5);
|
||||
|
|
|
@ -33,14 +33,6 @@
|
|||
* @}
|
||||
*/
|
||||
|
||||
#if defined(DT_CAN_0_NAME)
|
||||
#define CAN_NAME DT_CAN_0_NAME
|
||||
#elif defined(DT_CAN_1_NAME)
|
||||
#define CAN_NAME DT_CAN_1_NAME
|
||||
#else
|
||||
#error No CAN device available
|
||||
#endif
|
||||
|
||||
#define TEST_SEND_TIMEOUT K_MSEC(100)
|
||||
#define TEST_RECEIVE_TIMEOUT K_MSEC(100)
|
||||
|
||||
|
@ -138,7 +130,7 @@ static void test_filter_handling(void)
|
|||
int ret, filter_id_1, filter_id_2;
|
||||
struct zcan_frame msg_buffer;
|
||||
|
||||
can_dev = device_get_binding(CAN_NAME);
|
||||
can_dev = device_get_binding(DT_ALIAS_CAN_PRIMARY_LABEL);
|
||||
|
||||
ret = can_configure(can_dev, CAN_LOOPBACK_MODE, 0);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue