Hello,
I encoutered an issue related to the FLEXSPI BUS of the i.MX8QXP SoC (driver drivers / spi / spi-nxp-fspi.c of kernel 5.4.70). According to the documentation the driver can be configured as follows:
Required SPI slave node properties:
- reg : There are two buses (A and B) with two chip selects each.
This encodes to which bus and CS the flash is connected:
- <0>: Bus A, CS 0
- <1>: Bus A, CS 1
- <2>: Bus B, CS 0
- <3>: Bus B, CS 1
The Pinmux in dts is the follow:
pinctrl_flexspi0: flexspi0grp {
fsl,pins = <
IMX8QXP_QSPI0A_SCLK_LSIO_QSPI0A_SCLK 0x06000021
IMX8QXP_QSPI0A_SS0_B_LSIO_QSPI0A_SS0_B 0x06000021
IMX8QXP_QSPI0A_DATA0_LSIO_QSPI0A_DATA0 0x06000021
IMX8QXP_QSPI0A_DATA1_LSIO_QSPI0A_DATA1 0x06000021
IMX8QXP_QSPI0A_DATA2_LSIO_QSPI0A_DATA2 0x06000021
IMX8QXP_QSPI0A_DATA3_LSIO_QSPI0A_DATA3 0x06000021
IMX8QXP_QSPI0B_SCLK_LSIO_QSPI0B_SCLK 0x06000021
IMX8QXP_QSPI0B_SS0_B_LSIO_QSPI0B_SS0_B 0x06000021
IMX8QXP_QSPI0B_SS1_B_LSIO_QSPI0B_SS1_B 0x06000021
IMX8QXP_QSPI0B_DATA0_LSIO_QSPI0B_DATA0 0x06000021
IMX8QXP_QSPI0B_DATA1_LSIO_QSPI0B_DATA1 0x06000021
IMX8QXP_QSPI0B_DATA2_LSIO_QSPI0B_DATA2 0x06000021
IMX8QXP_QSPI0B_DATA3_LSIO_QSPI0B_DATA3 0x06000021
>;
};
The interface is configured in the following way:
&flexspi0 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flexspi0>;
status = "okay";
flash_b_0: flash_b-mx2@2 {
compatible = "macronix,mx25u6435f", "jedec,spi-nor";
reg = <2>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <25000000>;
status = "okay";
spi-tx-bus-width = <4>;
spi-rx-bus-width = <4>;
};
};
As described, this eeprom should be recognized by BUS FLEXSPI B in Chip Select 0. But what happens is that we see Chip Select and Clock working correctly but no data comes out of the SoC in any of the 4 lines: DATA0, DATA1, DATA2, DATA3. I don't know if it's a known problem or I'm doing something wrong. Thanks for the support.
Best Regards