Colibri imx6ull CAN1 and CAN2

Hi,

I have Colibri-imx6ull with a custom carrier Board and use the linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules kernel for development.

I want to bring up the can1(pin 63/55) and can2(188/178) on my custom carrier.

With reference to this article https://developer.toradex.com/linux-bsp/application-development/peripheral-access/can-linux/#kernel-support-colibri-imx6ull , I have made changes and build imx6ull-colibri-wifi-eval-v3.dts(currently best suites for us and works in our custom carrier board).

In imx6ull-colibri-eval-v3.dtsi, update the status to okay.

&can1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_flexcan1>;
	status = "okay";
};

&can2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_flexcan2>;
	status = "okay";
};

Using that device tree binary, I booted the kernel, which showed the error.

[   15.558048] CAN device driver interface
[   15.622542] imx6ul-pinctrl 20e0000.iomuxc: pin MX6UL_PAD_ENET1_RX_DATA0 already requested by 20e0000.iomuxc; cannot claim for 2090000.flexcan
[   15.639317] imx6ul-pinctrl 20e0000.iomuxc: pin-49 (2090000.flexcan) status -22
[   15.650531] imx6ul-pinctrl 20e0000.iomuxc: could not request pin 49 (MX6UL_PAD_ENET1_RX_DATA0) from group flexcan1-grp  on device 20e0000.iomuxc
[   15.667578] flexcan 2090000.flexcan: Error applying setting, reverse things back
[   16.541580] flexcan: probe of 2090000.flexcan failed with error -22
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[   16.695871] imx6ul-pinctrl 20e0000.iomuxc: pin MX6UL_PAD_ENET1_TX_DATA0 already requested by 20e0000.iomuxc; cannot claim for 2094000.flexcan
[   16.713330] imx6ul-pinctrl 20e0000.iomuxc: pin-52 (2094000.flexcan) status -22
[   16.725174] imx6ul-pinctrl 20e0000.iomuxc: could not request pin 52 (MX6UL_PAD_ENET1_TX_DATA0) from group flexcan2-grp  on device 20e0000.iomuxc
[   16.742814] flexcan 2094000.flexcan: Error applying setting, reverse things back
[   16.813019] caam-snvs 20cc000.caam-snvs: violation handlers armed - init state

Let us know what other do I need to do in the device tree so that CAN works.

Thanks in Advance,
Vishvas

Hi @vishvas,

It seems issue is related to pin conflict between two node accessing same pins. Please make sure MX6UL_PAD_ENET1_RX_DATA0 & MX6UL_PAD_ENET1_TX_DATA0 is not being used by any other node. Check pinctrl_gpio7 node as below. Make sure these are not used anywhere and then you can use for CAN
https://git.toradex.com/cgit/linux-toradex.git/tree/arch/arm/boot/dts/imx6ull-colibri.dtsi?h=toradex_5.15-2.1.x-imx#n341

Best Regards
Ritesh Kumar