I’ve been following the examples provided here ( http://www.aero-box.co.uk/beaglebone-black#TOC-CANbus ) and have managed to get both CAN modules to show up, but I can only get CAN0 to transmit and receive. Nothing untoward shows up in dmesg, and I can bring up the devices; its only CAN1 that doesn’t work. Does anyone have any suggestions to figure out what could be wrong?
I’m running Ubuntu 13.04 (07-22), and have the following modifications to my am335x-bone-common.dtsi file:
`
snip
dcan0_pins: pinmux_dcan0_pins {
pinctrl-single,pins = <
0x178 0x12 /* ic2c.sda_dcan0_rx, SLEWCTRL_FAST | INPUT_PULLUP | MODE2 /
0x17C 0x32 / ic2c_scl.dcan0_rx, SLEWCTRL_FAST | RECV_ENABLE | INPUT_PULLUP | MODE2 */
;
};
dcan1_pins: pinmux_dcan1_pins {
pinctrl-single,pins = <
0x180 0x12 /* uart1_rxd.d_can1_tx, SLEWCTRL_FAST | INPUT_PULLUP | MODE2 /
0x184 0x32 / uart1_txd.d_can1_rx, SLEWCTRL_FAST | RECV_ENABLE | INPUT_PULLUP | MODE2 */
;
};
*snip
snip
uart2: serial@48022000 {
status = “disabled”;
};
dcan0: d_can@481cc000 {
status = “okay”; // Switch on DCAN0
pinctrl-names = “default”; // Apply default pinmuxing
pinctrl-0 = <&dcan0_pins>;
};
dcan1: d_can@481d0000 {
status = “okay”; // Switch on DCAN1
pinctrl-names = “default”; // Apply default pinmuxing
pinctrl-0 = <&dcan1_pins>;
};
snip
snip
&i2c2 {
status = “disabled”;
pinctrl-names = “default”;
pinctrl-0 = <&i2c2_pins>;
snip
`
And my /proc/net/dev file:
`
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eth0: 2351960 13013 0 0 0 0 0 0 32410 388 0 0 0 0 0 0
usb0: 474271 9333 0 0 0 0 0 0 4156896 15720 0 0 0 0 0 0
can0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
can1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
`
And my /sys/kernel/debug/pinctrl/44e10800.pinmux/pins
`
snip
pin 94 (44e10978) 00000012 pinctrl-single
pin 95 (44e1097c) 00000032 pinctrl-single
pin 96 (44e10980) 00000032 pinctrl-single
pin 97 (44e10984) 00000012 pinctrl-single
snip
`
Thanks in advance.