xref: /freebsd-src/sys/contrib/device-tree/Bindings/spi/cdns,xspi.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
18cc087a1SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28cc087a1SEmmanuel Vadot# Copyright 2020-21 Cadence
38cc087a1SEmmanuel Vadot%YAML 1.2
48cc087a1SEmmanuel Vadot---
5cb7aa33aSEmmanuel Vadot$id: http://devicetree.org/schemas/spi/cdns,xspi.yaml#
6cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
78cc087a1SEmmanuel Vadot
88cc087a1SEmmanuel Vadottitle: Cadence XSPI Controller
98cc087a1SEmmanuel Vadot
108cc087a1SEmmanuel Vadotmaintainers:
118cc087a1SEmmanuel Vadot  - Parshuram Thombare <pthombar@cadence.com>
128cc087a1SEmmanuel Vadot
138cc087a1SEmmanuel Vadotdescription: |
148cc087a1SEmmanuel Vadot  The XSPI controller allows SPI protocol communication in
158cc087a1SEmmanuel Vadot  single, dual, quad or octal wire transmission modes for
168cc087a1SEmmanuel Vadot  read/write access to slaves such as SPI-NOR flash.
178cc087a1SEmmanuel Vadot
188cc087a1SEmmanuel Vadotproperties:
198cc087a1SEmmanuel Vadot  compatible:
20*b2d2a78aSEmmanuel Vadot    enum:
21*b2d2a78aSEmmanuel Vadot      - cdns,xspi-nor
22*b2d2a78aSEmmanuel Vadot      - marvell,cn10-xspi-nor
238cc087a1SEmmanuel Vadot
248cc087a1SEmmanuel Vadot  reg:
258cc087a1SEmmanuel Vadot    items:
268cc087a1SEmmanuel Vadot      - description: address and length of the controller register set
278cc087a1SEmmanuel Vadot      - description: address and length of the Slave DMA data port
288cc087a1SEmmanuel Vadot      - description: address and length of the auxiliary registers
29*b2d2a78aSEmmanuel Vadot      - description: address and length of the xfer registers
30*b2d2a78aSEmmanuel Vadot    minItems: 3
318cc087a1SEmmanuel Vadot
328cc087a1SEmmanuel Vadot  reg-names:
338cc087a1SEmmanuel Vadot    items:
348cc087a1SEmmanuel Vadot      - const: io
358cc087a1SEmmanuel Vadot      - const: sdma
368cc087a1SEmmanuel Vadot      - const: aux
37*b2d2a78aSEmmanuel Vadot      - const: xfer
38*b2d2a78aSEmmanuel Vadot    minItems: 3
398cc087a1SEmmanuel Vadot
408cc087a1SEmmanuel Vadot  interrupts:
418cc087a1SEmmanuel Vadot    maxItems: 1
428cc087a1SEmmanuel Vadot
438cc087a1SEmmanuel Vadotrequired:
448cc087a1SEmmanuel Vadot  - compatible
458cc087a1SEmmanuel Vadot  - reg
468cc087a1SEmmanuel Vadot  - interrupts
478cc087a1SEmmanuel Vadot
48*b2d2a78aSEmmanuel VadotallOf:
49*b2d2a78aSEmmanuel Vadot  - $ref: spi-controller.yaml#
50*b2d2a78aSEmmanuel Vadot  - if:
51*b2d2a78aSEmmanuel Vadot      properties:
52*b2d2a78aSEmmanuel Vadot        compatible:
53*b2d2a78aSEmmanuel Vadot          contains:
54*b2d2a78aSEmmanuel Vadot            enum:
55*b2d2a78aSEmmanuel Vadot              - marvell,cn10-xspi-nor
56*b2d2a78aSEmmanuel Vadot    then:
57*b2d2a78aSEmmanuel Vadot      properties:
58*b2d2a78aSEmmanuel Vadot        reg:
59*b2d2a78aSEmmanuel Vadot          minItems: 4
60*b2d2a78aSEmmanuel Vadot        reg-names:
61*b2d2a78aSEmmanuel Vadot          minItems: 4
62*b2d2a78aSEmmanuel Vadot    else:
63*b2d2a78aSEmmanuel Vadot      properties:
64*b2d2a78aSEmmanuel Vadot        reg:
65*b2d2a78aSEmmanuel Vadot          maxItems: 3
66*b2d2a78aSEmmanuel Vadot        reg-names:
67*b2d2a78aSEmmanuel Vadot          maxItems: 3
68*b2d2a78aSEmmanuel Vadot
698cc087a1SEmmanuel VadotunevaluatedProperties: false
708cc087a1SEmmanuel Vadot
718cc087a1SEmmanuel Vadotexamples:
728cc087a1SEmmanuel Vadot  - |
738cc087a1SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
748cc087a1SEmmanuel Vadot    bus {
758cc087a1SEmmanuel Vadot        #address-cells = <2>;
768cc087a1SEmmanuel Vadot        #size-cells = <2>;
778cc087a1SEmmanuel Vadot
788cc087a1SEmmanuel Vadot        xspi: spi@a0010000 {
798cc087a1SEmmanuel Vadot            #address-cells = <1>;
808cc087a1SEmmanuel Vadot            #size-cells = <0>;
818cc087a1SEmmanuel Vadot            compatible = "cdns,xspi-nor";
828cc087a1SEmmanuel Vadot            reg = <0x0 0xa0010000 0x0 0x1040>,
838cc087a1SEmmanuel Vadot                  <0x0 0xb0000000 0x0 0x1000>,
848cc087a1SEmmanuel Vadot                  <0x0 0xa0020000 0x0 0x100>;
858cc087a1SEmmanuel Vadot            reg-names = "io", "sdma", "aux";
868cc087a1SEmmanuel Vadot            interrupts = <0 90 IRQ_TYPE_LEVEL_HIGH>;
878cc087a1SEmmanuel Vadot            interrupt-parent = <&gic>;
888cc087a1SEmmanuel Vadot
898cc087a1SEmmanuel Vadot            flash@0 {
908cc087a1SEmmanuel Vadot                compatible = "jedec,spi-nor";
918cc087a1SEmmanuel Vadot                spi-max-frequency = <75000000>;
928cc087a1SEmmanuel Vadot                reg = <0>;
938cc087a1SEmmanuel Vadot            };
948cc087a1SEmmanuel Vadot
958cc087a1SEmmanuel Vadot            flash@1 {
968cc087a1SEmmanuel Vadot                compatible = "jedec,spi-nor";
978cc087a1SEmmanuel Vadot                spi-max-frequency = <75000000>;
988cc087a1SEmmanuel Vadot                reg = <1>;
998cc087a1SEmmanuel Vadot            };
1008cc087a1SEmmanuel Vadot        };
1018cc087a1SEmmanuel Vadot    };
102