mirror of
https://github.com/torvalds/linux.git
synced 2024-12-24 20:01:55 +00:00
78df308089
Adjust the documentation of the new SPI memory interface based driver to reflect the new drivers settings. The "old" driver was using the "fsl,qspi-has-second-chip" property to select one of two dual chip setups (two chips on one bus or two chips on separate buses). And it used the order in which the subnodes are defined in the dt to select the CS, the chip is connected to. Both methods are wrong and in fact the "reg" property should be used to determine which bus and CS a chip is connected to. This also enables us to use different setups than just single chip, or symmetric dual chip. So the porting of the driver from the MTD to the SPI framework actually enforces the use of the "reg" properties and makes "fsl,qspi-has-second-chip" superfluous. As all boards that have "fsl,qspi-has-second-chip" set, also have correct "reg" properties, the removal of this property shouldn't lead to any incompatibilities. The only compatibility issues I can see are with imx6sx-sdb.dts and imx6sx-sdb-reva.dts, which have their reg properties set incorrectly (see explanation here: [2]), all other boards should stay compatible. Also the "big-endian" flag was removed, as this setting is now selected by the driver, depending on which SoC is in use. [2] https://patchwork.ozlabs.org/patch/922817/#1925445 Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Mark Brown <broonie@kernel.org>
64 lines
1.7 KiB
Plaintext
64 lines
1.7 KiB
Plaintext
* Freescale Quad Serial Peripheral Interface(QuadSPI)
|
|
|
|
Required properties:
|
|
- compatible : Should be "fsl,vf610-qspi", "fsl,imx6sx-qspi",
|
|
"fsl,imx7d-qspi", "fsl,imx6ul-qspi",
|
|
"fsl,ls1021a-qspi"
|
|
or
|
|
"fsl,ls2080a-qspi" followed by "fsl,ls1021a-qspi",
|
|
"fsl,ls1043a-qspi" followed by "fsl,ls1021a-qspi"
|
|
- reg : the first contains the register location and length,
|
|
the second contains the memory mapping address and length
|
|
- reg-names: Should contain the reg names "QuadSPI" and "QuadSPI-memory"
|
|
- interrupts : Should contain the interrupt for the device
|
|
- clocks : The clocks needed by the QuadSPI controller
|
|
- clock-names : Should contain the name of the clocks: "qspi_en" and "qspi".
|
|
|
|
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
|
|
|
|
Example:
|
|
|
|
qspi0: quadspi@40044000 {
|
|
compatible = "fsl,vf610-qspi";
|
|
reg = <0x40044000 0x1000>, <0x20000000 0x10000000>;
|
|
reg-names = "QuadSPI", "QuadSPI-memory";
|
|
interrupts = <0 24 IRQ_TYPE_LEVEL_HIGH>;
|
|
clocks = <&clks VF610_CLK_QSPI0_EN>,
|
|
<&clks VF610_CLK_QSPI0>;
|
|
clock-names = "qspi_en", "qspi";
|
|
|
|
flash0: s25fl128s@0 {
|
|
....
|
|
};
|
|
};
|
|
|
|
Example showing the usage of two SPI NOR devices on bus A:
|
|
|
|
&qspi2 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_qspi2>;
|
|
status = "okay";
|
|
|
|
flash0: n25q256a@0 {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
compatible = "micron,n25q256a", "jedec,spi-nor";
|
|
spi-max-frequency = <29000000>;
|
|
reg = <0>;
|
|
};
|
|
|
|
flash1: n25q256a@1 {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
compatible = "micron,n25q256a", "jedec,spi-nor";
|
|
spi-max-frequency = <29000000>;
|
|
reg = <1>;
|
|
};
|
|
};
|