1*c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0 2*c66ec88fSEmmanuel Vadot%YAML 1.2 3*c66ec88fSEmmanuel Vadot--- 4*c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/spi/spi-pl022.yaml# 5*c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*c66ec88fSEmmanuel Vadot 7*c66ec88fSEmmanuel Vadottitle: ARM PL022 SPI controller 8*c66ec88fSEmmanuel Vadot 9*c66ec88fSEmmanuel Vadotmaintainers: 10*c66ec88fSEmmanuel Vadot - Linus Walleij <linus.walleij@linaro.org> 11*c66ec88fSEmmanuel Vadot 12*c66ec88fSEmmanuel VadotallOf: 13*c66ec88fSEmmanuel Vadot - $ref: "spi-controller.yaml#" 14*c66ec88fSEmmanuel Vadot 15*c66ec88fSEmmanuel Vadot# We need a select here so we don't match all nodes with 'arm,primecell' 16*c66ec88fSEmmanuel Vadotselect: 17*c66ec88fSEmmanuel Vadot properties: 18*c66ec88fSEmmanuel Vadot compatible: 19*c66ec88fSEmmanuel Vadot contains: 20*c66ec88fSEmmanuel Vadot const: arm,pl022 21*c66ec88fSEmmanuel Vadot required: 22*c66ec88fSEmmanuel Vadot - compatible 23*c66ec88fSEmmanuel Vadot 24*c66ec88fSEmmanuel Vadotproperties: 25*c66ec88fSEmmanuel Vadot compatible: 26*c66ec88fSEmmanuel Vadot items: 27*c66ec88fSEmmanuel Vadot - const: arm,pl022 28*c66ec88fSEmmanuel Vadot - const: arm,primecell 29*c66ec88fSEmmanuel Vadot 30*c66ec88fSEmmanuel Vadot reg: 31*c66ec88fSEmmanuel Vadot maxItems: 1 32*c66ec88fSEmmanuel Vadot 33*c66ec88fSEmmanuel Vadot interrupts: 34*c66ec88fSEmmanuel Vadot maxItems: 1 35*c66ec88fSEmmanuel Vadot 36*c66ec88fSEmmanuel Vadot clocks: 37*c66ec88fSEmmanuel Vadot maxItems: 2 38*c66ec88fSEmmanuel Vadot 39*c66ec88fSEmmanuel Vadot clock-names: 40*c66ec88fSEmmanuel Vadot items: 41*c66ec88fSEmmanuel Vadot - enum: 42*c66ec88fSEmmanuel Vadot - SSPCLK 43*c66ec88fSEmmanuel Vadot - sspclk 44*c66ec88fSEmmanuel Vadot - const: apb_pclk 45*c66ec88fSEmmanuel Vadot 46*c66ec88fSEmmanuel Vadot pl022,autosuspend-delay: 47*c66ec88fSEmmanuel Vadot description: delay in ms following transfer completion before the 48*c66ec88fSEmmanuel Vadot runtime power management system suspends the device. A setting of 0 49*c66ec88fSEmmanuel Vadot indicates no delay and the device will be suspended immediately. 50*c66ec88fSEmmanuel Vadot $ref: "/schemas/types.yaml#/definitions/uint32" 51*c66ec88fSEmmanuel Vadot 52*c66ec88fSEmmanuel Vadot pl022,rt: 53*c66ec88fSEmmanuel Vadot description: indicates the controller should run the message pump with realtime 54*c66ec88fSEmmanuel Vadot priority to minimise the transfer latency on the bus (boolean) 55*c66ec88fSEmmanuel Vadot type: boolean 56*c66ec88fSEmmanuel Vadot 57*c66ec88fSEmmanuel Vadot dmas: 58*c66ec88fSEmmanuel Vadot description: 59*c66ec88fSEmmanuel Vadot Two or more DMA channel specifiers following the convention outlined 60*c66ec88fSEmmanuel Vadot in bindings/dma/dma.txt 61*c66ec88fSEmmanuel Vadot minItems: 2 62*c66ec88fSEmmanuel Vadot maxItems: 32 63*c66ec88fSEmmanuel Vadot 64*c66ec88fSEmmanuel Vadot dma-names: 65*c66ec88fSEmmanuel Vadot description: 66*c66ec88fSEmmanuel Vadot There must be at least one channel named "tx" for transmit and named "rx" 67*c66ec88fSEmmanuel Vadot for receive. 68*c66ec88fSEmmanuel Vadot minItems: 2 69*c66ec88fSEmmanuel Vadot maxItems: 32 70*c66ec88fSEmmanuel Vadot additionalItems: true 71*c66ec88fSEmmanuel Vadot items: 72*c66ec88fSEmmanuel Vadot - const: rx 73*c66ec88fSEmmanuel Vadot - const: tx 74*c66ec88fSEmmanuel Vadot 75*c66ec88fSEmmanuel VadotpatternProperties: 76*c66ec88fSEmmanuel Vadot "^[a-zA-Z][a-zA-Z0-9,+\\-._]{0,63}@[0-9a-f]+$": 77*c66ec88fSEmmanuel Vadot type: object 78*c66ec88fSEmmanuel Vadot # SPI slave nodes must be children of the SPI master node and can 79*c66ec88fSEmmanuel Vadot # contain the following properties. 80*c66ec88fSEmmanuel Vadot properties: 81*c66ec88fSEmmanuel Vadot pl022,interface: 82*c66ec88fSEmmanuel Vadot description: SPI interface type 83*c66ec88fSEmmanuel Vadot $ref: "/schemas/types.yaml#/definitions/uint32" 84*c66ec88fSEmmanuel Vadot enum: 85*c66ec88fSEmmanuel Vadot - 0 # SPI 86*c66ec88fSEmmanuel Vadot - 1 # Texas Instruments Synchronous Serial Frame Format 87*c66ec88fSEmmanuel Vadot - 2 # Microwire (Half Duplex) 88*c66ec88fSEmmanuel Vadot 89*c66ec88fSEmmanuel Vadot pl022,com-mode: 90*c66ec88fSEmmanuel Vadot description: Specifies the transfer mode 91*c66ec88fSEmmanuel Vadot $ref: "/schemas/types.yaml#/definitions/uint32" 92*c66ec88fSEmmanuel Vadot enum: 93*c66ec88fSEmmanuel Vadot - 0 # interrupt mode 94*c66ec88fSEmmanuel Vadot - 1 # polling mode 95*c66ec88fSEmmanuel Vadot - 2 # DMA mode 96*c66ec88fSEmmanuel Vadot default: 1 97*c66ec88fSEmmanuel Vadot 98*c66ec88fSEmmanuel Vadot pl022,rx-level-trig: 99*c66ec88fSEmmanuel Vadot description: Rx FIFO watermark level 100*c66ec88fSEmmanuel Vadot $ref: "/schemas/types.yaml#/definitions/uint32" 101*c66ec88fSEmmanuel Vadot minimum: 0 102*c66ec88fSEmmanuel Vadot maximum: 4 103*c66ec88fSEmmanuel Vadot 104*c66ec88fSEmmanuel Vadot pl022,tx-level-trig: 105*c66ec88fSEmmanuel Vadot description: Tx FIFO watermark level 106*c66ec88fSEmmanuel Vadot $ref: "/schemas/types.yaml#/definitions/uint32" 107*c66ec88fSEmmanuel Vadot minimum: 0 108*c66ec88fSEmmanuel Vadot maximum: 4 109*c66ec88fSEmmanuel Vadot 110*c66ec88fSEmmanuel Vadot pl022,ctrl-len: 111*c66ec88fSEmmanuel Vadot description: Microwire interface - Control length 112*c66ec88fSEmmanuel Vadot $ref: "/schemas/types.yaml#/definitions/uint32" 113*c66ec88fSEmmanuel Vadot minimum: 0x03 114*c66ec88fSEmmanuel Vadot maximum: 0x1f 115*c66ec88fSEmmanuel Vadot 116*c66ec88fSEmmanuel Vadot pl022,wait-state: 117*c66ec88fSEmmanuel Vadot description: Microwire interface - Wait state 118*c66ec88fSEmmanuel Vadot $ref: "/schemas/types.yaml#/definitions/uint32" 119*c66ec88fSEmmanuel Vadot enum: [0, 1] 120*c66ec88fSEmmanuel Vadot 121*c66ec88fSEmmanuel Vadot pl022,duplex: 122*c66ec88fSEmmanuel Vadot description: Microwire interface - Full/Half duplex 123*c66ec88fSEmmanuel Vadot $ref: "/schemas/types.yaml#/definitions/uint32" 124*c66ec88fSEmmanuel Vadot enum: [0, 1] 125*c66ec88fSEmmanuel Vadot 126*c66ec88fSEmmanuel Vadotrequired: 127*c66ec88fSEmmanuel Vadot - compatible 128*c66ec88fSEmmanuel Vadot - reg 129*c66ec88fSEmmanuel Vadot - interrupts 130*c66ec88fSEmmanuel Vadot 131*c66ec88fSEmmanuel Vadotexamples: 132*c66ec88fSEmmanuel Vadot - | 133*c66ec88fSEmmanuel Vadot spi@e0100000 { 134*c66ec88fSEmmanuel Vadot compatible = "arm,pl022", "arm,primecell"; 135*c66ec88fSEmmanuel Vadot reg = <0xe0100000 0x1000>; 136*c66ec88fSEmmanuel Vadot #address-cells = <1>; 137*c66ec88fSEmmanuel Vadot #size-cells = <0>; 138*c66ec88fSEmmanuel Vadot interrupts = <0 31 0x4>; 139*c66ec88fSEmmanuel Vadot dmas = <&dma_controller 23 1>, 140*c66ec88fSEmmanuel Vadot <&dma_controller 24 0>; 141*c66ec88fSEmmanuel Vadot dma-names = "rx", "tx"; 142*c66ec88fSEmmanuel Vadot 143*c66ec88fSEmmanuel Vadot m25p80@1 { 144*c66ec88fSEmmanuel Vadot compatible = "st,m25p80"; 145*c66ec88fSEmmanuel Vadot reg = <1>; 146*c66ec88fSEmmanuel Vadot spi-max-frequency = <12000000>; 147*c66ec88fSEmmanuel Vadot spi-cpol; 148*c66ec88fSEmmanuel Vadot spi-cpha; 149*c66ec88fSEmmanuel Vadot pl022,interface = <0>; 150*c66ec88fSEmmanuel Vadot pl022,com-mode = <0x2>; 151*c66ec88fSEmmanuel Vadot pl022,rx-level-trig = <0>; 152*c66ec88fSEmmanuel Vadot pl022,tx-level-trig = <0>; 153*c66ec88fSEmmanuel Vadot pl022,ctrl-len = <0x11>; 154*c66ec88fSEmmanuel Vadot pl022,wait-state = <0>; 155*c66ec88fSEmmanuel Vadot pl022,duplex = <0>; 156*c66ec88fSEmmanuel Vadot }; 157*c66ec88fSEmmanuel Vadot }; 158*c66ec88fSEmmanuel Vadot... 159