18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/spi/snps,dw-apb-ssi.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Synopsys DesignWare AMBA 2.0 Synchronous Serial Interface
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Mark Brown <broonie@kernel.org>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciallOf:
138c2ecf20Sopenharmony_ci  - $ref: "spi-controller.yaml#"
148c2ecf20Sopenharmony_ci  - if:
158c2ecf20Sopenharmony_ci      properties:
168c2ecf20Sopenharmony_ci        compatible:
178c2ecf20Sopenharmony_ci          contains:
188c2ecf20Sopenharmony_ci            enum:
198c2ecf20Sopenharmony_ci              - mscc,ocelot-spi
208c2ecf20Sopenharmony_ci              - mscc,jaguar2-spi
218c2ecf20Sopenharmony_ci    then:
228c2ecf20Sopenharmony_ci      properties:
238c2ecf20Sopenharmony_ci        reg:
248c2ecf20Sopenharmony_ci          minItems: 2
258c2ecf20Sopenharmony_ci  - if:
268c2ecf20Sopenharmony_ci      properties:
278c2ecf20Sopenharmony_ci        compatible:
288c2ecf20Sopenharmony_ci          contains:
298c2ecf20Sopenharmony_ci            enum:
308c2ecf20Sopenharmony_ci              - baikal,bt1-sys-ssi
318c2ecf20Sopenharmony_ci    then:
328c2ecf20Sopenharmony_ci      properties:
338c2ecf20Sopenharmony_ci        mux-controls:
348c2ecf20Sopenharmony_ci          maxItems: 1
358c2ecf20Sopenharmony_ci      required:
368c2ecf20Sopenharmony_ci        - mux-controls
378c2ecf20Sopenharmony_ci    else:
388c2ecf20Sopenharmony_ci      required:
398c2ecf20Sopenharmony_ci        - interrupts
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ciproperties:
428c2ecf20Sopenharmony_ci  compatible:
438c2ecf20Sopenharmony_ci    oneOf:
448c2ecf20Sopenharmony_ci      - description: Generic DW SPI Controller
458c2ecf20Sopenharmony_ci        enum:
468c2ecf20Sopenharmony_ci          - snps,dw-apb-ssi
478c2ecf20Sopenharmony_ci          - snps,dwc-ssi-1.01a
488c2ecf20Sopenharmony_ci      - description: Microsemi Ocelot/Jaguar2 SoC SPI Controller
498c2ecf20Sopenharmony_ci        items:
508c2ecf20Sopenharmony_ci          - enum:
518c2ecf20Sopenharmony_ci              - mscc,ocelot-spi
528c2ecf20Sopenharmony_ci              - mscc,jaguar2-spi
538c2ecf20Sopenharmony_ci          - const: snps,dw-apb-ssi
548c2ecf20Sopenharmony_ci      - description: Microchip Sparx5 SoC SPI Controller
558c2ecf20Sopenharmony_ci        const: microchip,sparx5-spi
568c2ecf20Sopenharmony_ci      - description: Amazon Alpine SPI Controller
578c2ecf20Sopenharmony_ci        const: amazon,alpine-dw-apb-ssi
588c2ecf20Sopenharmony_ci      - description: Renesas RZ/N1 SPI Controller
598c2ecf20Sopenharmony_ci        items:
608c2ecf20Sopenharmony_ci          - const: renesas,rzn1-spi
618c2ecf20Sopenharmony_ci          - const: snps,dw-apb-ssi
628c2ecf20Sopenharmony_ci      - description: Intel Keem Bay SPI Controller
638c2ecf20Sopenharmony_ci        const: intel,keembay-ssi
648c2ecf20Sopenharmony_ci      - description: Baikal-T1 SPI Controller
658c2ecf20Sopenharmony_ci        const: baikal,bt1-ssi
668c2ecf20Sopenharmony_ci      - description: Baikal-T1 System Boot SPI Controller
678c2ecf20Sopenharmony_ci        const: baikal,bt1-sys-ssi
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci  reg:
708c2ecf20Sopenharmony_ci    minItems: 1
718c2ecf20Sopenharmony_ci    items:
728c2ecf20Sopenharmony_ci      - description: DW APB SSI controller memory mapped registers
738c2ecf20Sopenharmony_ci      - description: SPI MST region map or directly mapped SPI ROM
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci  interrupts:
768c2ecf20Sopenharmony_ci    maxItems: 1
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci  clocks:
798c2ecf20Sopenharmony_ci    minItems: 1
808c2ecf20Sopenharmony_ci    items:
818c2ecf20Sopenharmony_ci      - description: SPI Controller reference clock source
828c2ecf20Sopenharmony_ci      - description: APB interface clock source
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ci  clock-names:
858c2ecf20Sopenharmony_ci    minItems: 1
868c2ecf20Sopenharmony_ci    items:
878c2ecf20Sopenharmony_ci      - const: ssi_clk
888c2ecf20Sopenharmony_ci      - const: pclk
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci  resets:
918c2ecf20Sopenharmony_ci    maxItems: 1
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci  reset-names:
948c2ecf20Sopenharmony_ci    const: spi
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci  reg-io-width:
978c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
988c2ecf20Sopenharmony_ci    description: I/O register width (in bytes) implemented by this device
998c2ecf20Sopenharmony_ci    default: 4
1008c2ecf20Sopenharmony_ci    enum: [ 2, 4 ]
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci  num-cs:
1038c2ecf20Sopenharmony_ci    default: 4
1048c2ecf20Sopenharmony_ci    minimum: 1
1058c2ecf20Sopenharmony_ci    maximum: 4
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci  dmas:
1088c2ecf20Sopenharmony_ci    items:
1098c2ecf20Sopenharmony_ci      - description: TX DMA Channel
1108c2ecf20Sopenharmony_ci      - description: RX DMA Channel
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci  dma-names:
1138c2ecf20Sopenharmony_ci    items:
1148c2ecf20Sopenharmony_ci      - const: tx
1158c2ecf20Sopenharmony_ci      - const: rx
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ci  rx-sample-delay-ns:
1188c2ecf20Sopenharmony_ci    default: 0
1198c2ecf20Sopenharmony_ci    description: Default value of the rx-sample-delay-ns property.
1208c2ecf20Sopenharmony_ci      This value will be used if the property is not explicitly defined
1218c2ecf20Sopenharmony_ci      for a SPI slave device. See below.
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_cipatternProperties:
1248c2ecf20Sopenharmony_ci  "^.*@[0-9a-f]+$":
1258c2ecf20Sopenharmony_ci    type: object
1268c2ecf20Sopenharmony_ci    properties:
1278c2ecf20Sopenharmony_ci      reg:
1288c2ecf20Sopenharmony_ci        minimum: 0
1298c2ecf20Sopenharmony_ci        maximum: 3
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_ci      spi-rx-bus-width:
1328c2ecf20Sopenharmony_ci        const: 1
1338c2ecf20Sopenharmony_ci
1348c2ecf20Sopenharmony_ci      spi-tx-bus-width:
1358c2ecf20Sopenharmony_ci        const: 1
1368c2ecf20Sopenharmony_ci
1378c2ecf20Sopenharmony_ci      rx-sample-delay-ns:
1388c2ecf20Sopenharmony_ci        description: SPI Rx sample delay offset, unit is nanoseconds.
1398c2ecf20Sopenharmony_ci          The delay from the default sample time before the actual
1408c2ecf20Sopenharmony_ci          sample of the rxd input signal occurs. The "rx_sample_delay"
1418c2ecf20Sopenharmony_ci          is an optional feature of the designware controller, and the
1428c2ecf20Sopenharmony_ci          upper limit is also subject to controller configuration.
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ciunevaluatedProperties: false
1458c2ecf20Sopenharmony_ci
1468c2ecf20Sopenharmony_cirequired:
1478c2ecf20Sopenharmony_ci  - compatible
1488c2ecf20Sopenharmony_ci  - reg
1498c2ecf20Sopenharmony_ci  - "#address-cells"
1508c2ecf20Sopenharmony_ci  - "#size-cells"
1518c2ecf20Sopenharmony_ci  - clocks
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_ciexamples:
1548c2ecf20Sopenharmony_ci  - |
1558c2ecf20Sopenharmony_ci    spi@fff00000 {
1568c2ecf20Sopenharmony_ci      compatible = "snps,dw-apb-ssi";
1578c2ecf20Sopenharmony_ci      reg = <0xfff00000 0x1000>;
1588c2ecf20Sopenharmony_ci      #address-cells = <1>;
1598c2ecf20Sopenharmony_ci      #size-cells = <0>;
1608c2ecf20Sopenharmony_ci      interrupts = <0 154 4>;
1618c2ecf20Sopenharmony_ci      clocks = <&spi_m_clk>;
1628c2ecf20Sopenharmony_ci      num-cs = <2>;
1638c2ecf20Sopenharmony_ci      cs-gpios = <&gpio0 13 0>,
1648c2ecf20Sopenharmony_ci                 <&gpio0 14 0>;
1658c2ecf20Sopenharmony_ci      rx-sample-delay-ns = <3>;
1668c2ecf20Sopenharmony_ci      spi-flash@1 {
1678c2ecf20Sopenharmony_ci        compatible = "spi-nand";
1688c2ecf20Sopenharmony_ci        reg = <1>;
1698c2ecf20Sopenharmony_ci        rx-sample-delay-ns = <7>;
1708c2ecf20Sopenharmony_ci      };
1718c2ecf20Sopenharmony_ci    };
1728c2ecf20Sopenharmony_ci  - |
1738c2ecf20Sopenharmony_ci    spi@1f040100 {
1748c2ecf20Sopenharmony_ci      compatible = "baikal,bt1-sys-ssi";
1758c2ecf20Sopenharmony_ci      reg = <0x1f040100 0x900>,
1768c2ecf20Sopenharmony_ci            <0x1c000000 0x1000000>;
1778c2ecf20Sopenharmony_ci      #address-cells = <1>;
1788c2ecf20Sopenharmony_ci      #size-cells = <0>;
1798c2ecf20Sopenharmony_ci      mux-controls = <&boot_mux>;
1808c2ecf20Sopenharmony_ci      clocks = <&ccu_sys>;
1818c2ecf20Sopenharmony_ci      clock-names = "ssi_clk";
1828c2ecf20Sopenharmony_ci    };
1838c2ecf20Sopenharmony_ci...
184