Part Number: DRA726
Other Parts Discussed in Thread: DRA722
Tool/software: Linux
I have been trying to get the 3 external MCP25625 Microchip CAN devices recognized on linux and I'm not having much success.
DCAN1 and DCAN2 work as can0 and can1
I would like to see the other three as can2, can3 and can4
All three devices are connected to SPI1
Int for first device on gpio6_7 B16
Int for second device on gpio6_8 C15
Int for third device on gpio6_9 A16
spi1 cs0 A24
spi1 cs1 A22
spi1 cs2 B21
spi1 sclk A25
spi1 d0 B25 --> CAN SI
spi1 d1 F16 --> CAN SO
Firs device has 16Mhz xtal, CLKOUT connected to other 2 devices
Is my linux device tree entry correct?
clocks {
clk16m: clk@1 {
compatible = "fixed-clock";
reg=<0>;
#clock-cells = <0>;
clock-frequency = <16000000>;
clock-output-names = "clk16m";
};
};
mcspi1_pins: pinmux_mcspi1_pins {
pinctrl-single,pins = <
0x3a4 (PIN_OUTPUT | MUX_MODE0) /* spi1_sclk.spi1_sclk */
0x3ac (PIN_INPUT | MUX_MODE0) /* spi1_d0.spi1_d0 */
0x3a8 (PIN_OUTPUT | MUX_MODE0) /* spi1_d1.spi1_d1 */
0x380 (PIN_OUTPUT | MUX_MODE0) /* spi1_cs0.spi1_cs0 */
0x384 (PIN_OUTPUT | MUX_MODE0) /* spi1_cs1.spi1_cs0 */
0x388 (PIN_OUTPUT | MUX_MODE0 | SLEWCONTROL) /* spi1_cs2.spi1_cs0 */
>;
};
&mcspi1 {
pinctrl-names = "default";
pinctrl-0 = <&mcspi1_pins>;
dcan3: dcan3@0 {
status = "okay";
compatible = "microchip,mcp2515";
reg = <0>;
mode = <0>;
clocks = <&clk16m>;
interrupt-parent = <&gpio>;
interrupts = <199 IRQ_TYPE_LEVEL_LOW>;
spi-max-frequency = <10000000>;
mcp251x,enable-clkout = <1>;
};
dcan4: dcan4@1 {
status = "okay";
compatible = "microchip,mcp2515";
reg = <1>;
mode = <0>;
clocks = <&clk16m>;
interrupt-parent = <&gpio>;
interrupts = <200 IRQ_TYPE_LEVEL_LOW>;
spi-max-frequency = <10000000>;
};
dcan5: dcan5@2 {
status = "okay";
compatible = "microchip,mcp2515";
reg = <2>;
mode = <0>;
clocks = <&clk16m>;
interrupt-parent = <&gpio>;
interrupts = <201 IRQ_TYPE_LEVEL_LOW>;
spi-max-frequency = <10000000>;
};
};
Linux conf :
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
CONFIG_CAN=m
CONFIG_CAN_RAW=m
CONFIG_CAN_BCM=m
# CONFIG_CAN_GW is not set
#
# CAN Device Drivers
#
# CONFIG_CAN_VCAN is not set
# CONFIG_CAN_SLCAN is not set
CONFIG_CAN_DEV=m
CONFIG_CAN_CALC_BITTIMING=y
# CONFIG_CAN_LEDS is not set
CONFIG_CAN_TI_HECC=m
# CONFIG_CAN_FLEXCAN is not set
# CONFIG_CAN_GRCAN is not set
# CONFIG_CAN_RCAR is not set
# CONFIG_CAN_SJA1000 is not set
CONFIG_CAN_C_CAN=m
CONFIG_CAN_C_CAN_PLATFORM=m
CONFIG_CAN_M_CAN=m
# CONFIG_CAN_CC770 is not set
#
# CAN SPI interfaces
#
CONFIG_CAN_MCP251X=m
CONFIG_SPI=y
CONFIG_SPI_DEBUG=y
CONFIG_SPI_MASTER=y
#
# SPI Master Controller Drivers
#
CONFIG_SPI_OMAP24XX=y
In u-boot
{ SPI1_SCLK, (M0 | PIN_OUTPUT) }, /* spi1_sclk.spi1_sclk */
{ SPI1_D1, (M0 | PIN_INPUT) }, /* spi1_d1.spi1_d1 */
{ SPI1_D0, (M0 | PIN_OUTPUT) }, /* spi1_d0.spi1_d0 */
{ SPI1_CS0, (M0 | PIN_OUTPUT) }, /* spi1_cs0.spi1_cs0 */
{ SPI1_CS1, (M0 | PIN_OUTPUT) }, /* spi1_cs1.spi1_cs1 */
{ SPI1_CS2, (M0 | PIN_OUTPUT | SLEWCONTROL) }, /* spi1_cs2.spi1_cs2 */