Hi all,
I’m trying to make SPI work on Linux with the spidev driver with this wanted pinout:
- SPI 1 enabled
- CS0 enabled on pin 86
- CS1 enabled on pin 72
- CS2 enabled on pin 80
- SPI 2 enabled
- CS0 enabled on pin 61
I’m using the 2.7b3-20170630
linux version, with the following changes on the device tree source:
--- <imx6dl-colibri-eval-v3.dts>
+++ <imx6dl-colibri-eval-v3-custom.dts>
@@ -101,24 +101,33 @@
};
};
+&can1 {
+ status = "okay";
+};
+
/* Colibri SPI */
&ecspi4 {
status = "okay";
- mcp258x0: mcp258x@1 {
- compatible = "microchip,mcp2515";
+ spidev0: spidev@1 {
+ compatible = "spidev";
reg = <0>;
- clocks = <&clk16m>;
- interrupt-parent = <&gpio3>;
- interrupts = <27 0x2>;
- spi-max-frequency = <10000000>;
- status = "okay";
- };
- spidev0: spidev@1 {
- compatible = "toradex,evalspi";
- reg = <0>;
- spi-max-frequency = <23000000>;
- status = "disabled";
+ spi-max-frequency = <23000000>;
+ };
+ spidev1: spidev@1 {
+ compatible = "spidev";
+ reg = <1>;
+ spi-max-frequency = <23000000>;
+ };
+ spidev2: spidev@1 {
+ compatible = "spidev";
+ reg = <2>;
+ spi-max-frequency = <23000000>;
+ };
+ spidev3: spidev@2 {
+ compatible = "spidev";
+ reg = <3>;
+ spi-max-frequency = <23000000>;
};
};
@@ -182,7 +191,6 @@
&pinctrl_weim_gpio_5 &pinctrl_weim_gpio_6
&pinctrl_csi_gpio_1
&pinctrl_gpio_1
- &pinctrl_gpio_2
&pinctrl_usbh_oc_1 &pinctrl_usbc_id_1>;
gpio {
@@ -193,10 +201,6 @@
>;
};
};
-};
-
-&lcd {
- status = "okay";
};
and:
--- <imx6qdl-colibri.dtsi>
+++ <imx6qdl-colibri-custom.dtsi>
@@ -174,8 +174,8 @@
/* Colibri SPI */
&ecspi4 {
- fsl,spi-num-chipselects = <1>;
- cs-gpios = <&gpio5 2 0>;
+ fsl,spi-num-chipselects = <4>;
+ cs-gpios = <&gpio5 2 0>, <&gpio4 26 0>, <&gpio4 27 0>, <&gpio5 11 0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi4 &pinctrl_spi_cs1>;
status = "disabled";
@@ -562,7 +562,10 @@
#endif
pinctrl_spi_cs1: spi_cs1 {
fsl,pins = <
- MX6QDL_PAD_EIM_A25__GPIO5_IO02 PAD_CTRL_NO /* SPI cs */
+ MX6QDL_PAD_EIM_A25__GPIO5_IO02 PAD_CTRL_NO /* SPI cs 1 */
+ MX6QDL_PAD_DISP0_DAT5__GPIO4_IO26 PAD_CTRL_NO /* SPI cs 2 */
+ MX6QDL_PAD_DISP0_DAT6__GPIO4_IO27 PAD_CTRL_NO /* SPI cs 3 */
+ MX6QDL_PAD_DISP0_DAT17__GPIO5_IO11 PAD_CTRL_NO /* SPI cs 4 */
>;
};
pinctrl_touch_int_1: touch_int-1 {
It appears that I never attached the different SPI CS pin to a specific SPI controller.
On my linux distribution, I have:
ls /dev | grep spi
spidev3.0
spidev3.1
But I hoped to have spidev0.0
, spidev0.1
, spidev0.2
, and spidev1.0
, or something similar.
How to setup the SPI to work with multiple SPI CD pins?
Regards,
Léo