@@ -39,6 +39,18 @@ properties:
resets:
maxItems: 1
+ spi-lower:
+ type: object
+ $ref: spi-controller.yaml#
+ unevaluatedProperties: false
+ description: The "lower" bus (SPI0). On the ZynqMP this uses MIO pins 0-5.
+
+ spi-upper:
+ type: object
+ $ref: spi-controller.yaml#
+ unevaluatedProperties: false
+ description: The "upper" bus (SPI1). On the ZynqMP this uses MIO pins 7-12.
+
required:
- compatible
- reg
@@ -50,8 +62,6 @@ required:
unevaluatedProperties: false
allOf:
- - $ref: spi-controller.yaml#
-
- if:
properties:
compatible:
@@ -75,7 +85,7 @@ examples:
#address-cells = <2>;
#size-cells = <2>;
- qspi: spi@ff0f0000 {
+ qspi: spi-controller@ff0f0000 {
compatible = "xlnx,zynqmp-qspi-1.0";
clocks = <&zynqmp_clk QSPI_REF>, <&zynqmp_clk LPD_LSBUS>;
clock-names = "ref_clk", "pclk";
@@ -84,5 +94,32 @@ examples:
resets = <&zynqmp_reset ZYNQMP_RESET_QSPI>;
reg = <0x0 0xff0f0000 0x0 0x1000>,
<0x0 0xc0000000 0x0 0x8000000>;
+
+ spi-lower {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ num-cs = <2>;
+ cs-gpios = <0>, <&gpio 5>;
+
+ flash@0 {
+ reg = <0>;
+ compatible = "jedec,spi-nor";
+ };
+
+ flash@1 {
+ reg = <1>;
+ compatible = "jedec,spi-nor";
+ };
+ };
+
+ spi-upper {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ flash@0 {
+ reg = <0>;
+ compatible = "jedec,spi-nor";
+ };
+ };
};
};
This device supports two separate SPI busses: "lower" (SPI0) and "upper" (SPI1). Each SPI bus has separate clock and data lines, as well as a hardware-controlled chip select. The current binding does not model this situation. It exposes one bus, where CS 0 uses the lower bus and the lower chip select, and CS 1 uses the upper bus and the upper chip select. It is not possible to use the upper chip select with the lower bus (or vice versa). GPIO chip selects are unsupported, and there would be no way to specify which bus to use if they were. Split the "merged" bus into an upper and lower bus, each with their own subnodes. Signed-off-by: Sean Anderson <sean.anderson@linux.dev> --- .../bindings/spi/spi-zynqmp-qspi.yaml | 43 +++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-)