Hi,
If I have understood it correctly the mttcan driver module from Bosch that controls CAN0 and CAN1 on TX2 is a software-only CAN controller module. It runs in software using Jetsons GPIO pins for Rx/Tx and is not a physical chip. Please correct me if I’m wrong.
Since it is a software controller (IP-module) it should be possible to setup more instances using other GPIO pins for Rx/Tx for say CAN2, CAN3, CAN4…
Would this be a matter of adding more instances to the device tree under this entry?
mttcan@c310000 {
compatible = "bosch,mttcan";
reg = <0x0 0xc310000 0x0 0x400 0x0 0xc311000 0x0 0x32 0x0 0xc312000 0x0 0x1000>;
reg-names = "can-regs", "glue-regs", "msg-ram";
interrupts = <0x0 0x28 0x4>;
pll_source = "pllaon";
clocks = <0xd 0xd2 0xd 0xd3 0xd 0x214>;
clock-names = "can", "can_host", "pllaon";
resets = <0xd 0x3c>;
reset-names = "can";
status = "okay";
gpio_can_stb = <0x1b 0x28 0x0>;
gpio_can_en = <0x1b 0x29 0x0>;
mram-params = <0x0 0x10 0x10 0x8 0x8 0x8 0x10 0x10 0x10>;
tx-config = <0x8 0x8 0x0 0x40>;
rx-config = <0x40 0x40 0x40>;
};
mttcan@c320000 {
compatible = "bosch,mttcan";
reg = <0x0 0xc320000 0x0 0x400 0x0 0xc321000 0x0 0x32 0x0 0xc322000 0x0 0x1000>;
reg-names = "can-regs", "glue-regs", "msg-ram";
interrupts = <0x0 0x2a 0x4>;<a target='_blank' rel='noopener noreferrer' href=''></a>
pll_source = "pllaon";
clocks = <0xd 0xd4 0xd 0xd5 0xd 0x214>;
clock-names = "can", "can_host", "pllaon";
resets = <0xd 0x3d>;
reset-names = "can";
status = "okay";
gpio_can_stb = <0x1b 0x2e 0x0>;
gpio_can_en = <0x1b 0x2f 0x0>;
mram-params = <0x0 0x10 0x10 0x8 0x8 0x8 0x10 0x10 0x10>;
tx-config = <0x8 0x8 0x0 0x40>;
rx-config = <0x40 0x40 0x40>;
};
How do I set up the correct I/O pins?
Best Regards,
Ltro
Reference links:
http://www.bosch-semiconductors.com/ip-modules/can-ip-modules/m-can/
Product info:http://www.bosch-semiconductors.com/media/ip_modules/pdf_2/bosch_ip_m_can.pdf
User guide:http://www.bosch-semiconductors.com/media/ip_modules/pdf_2/m_can/mcan_users_manual_v3212.pdf