Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bus: ixp4xx: Add DT bindings for the IXP4xx expansion bus

This adds device tree bindings for the IXP4xx expansion bus controller.

Cc: Marc Zyngier <maz@kernel.org>
Cc: devicetree@vger.kernel.org
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

+168
+168
Documentation/devicetree/bindings/bus/intel,ixp4xx-expansion-bus-controller.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/bus/intel,ixp4xx-expansion-bus-controller.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Intel IXP4xx Expansion Bus Controller 8 + 9 + description: | 10 + The IXP4xx expansion bus controller handles access to devices on the 11 + memory-mapped expansion bus on the Intel IXP4xx family of system on chips, 12 + including IXP42x, IXP43x, IXP45x and IXP46x. 13 + 14 + maintainers: 15 + - Linus Walleij <linus.walleij@linaro.org> 16 + 17 + properties: 18 + $nodename: 19 + pattern: '^bus@[0-9a-f]+$' 20 + 21 + compatible: 22 + items: 23 + - enum: 24 + - intel,ixp42x-expansion-bus-controller 25 + - intel,ixp43x-expansion-bus-controller 26 + - intel,ixp45x-expansion-bus-controller 27 + - intel,ixp46x-expansion-bus-controller 28 + - const: syscon 29 + 30 + reg: 31 + description: Control registers for the expansion bus, these are not 32 + inside the memory range handled by the expansion bus. 33 + maxItems: 1 34 + 35 + native-endian: 36 + $ref: /schemas/types.yaml#/definitions/flag 37 + description: The IXP4xx has a peculiar MMIO access scheme, as it changes 38 + the access pattern for words (swizzling) on the bus depending on whether 39 + the SoC is running in big-endian or little-endian mode. Thus the 40 + registers must always be accessed using native endianness. 41 + 42 + "#address-cells": 43 + description: | 44 + The first cell is the chip select number. 45 + The second cell is the address offset within the bank. 46 + const: 2 47 + 48 + "#size-cells": 49 + const: 1 50 + 51 + ranges: true 52 + dma-ranges: true 53 + 54 + patternProperties: 55 + "^.*@[0-7],[0-9a-f]+$": 56 + description: Devices attached to chip selects are represented as 57 + subnodes. 58 + type: object 59 + 60 + properties: 61 + intel,ixp4xx-eb-t1: 62 + description: Address timing, extend address phase with n cycles. 63 + $ref: /schemas/types.yaml#/definitions/uint32 64 + maximum: 3 65 + 66 + intel,ixp4xx-eb-t2: 67 + description: Setup chip select timing, extend setup phase with n cycles. 68 + $ref: /schemas/types.yaml#/definitions/uint32 69 + maximum: 3 70 + 71 + intel,ixp4xx-eb-t3: 72 + description: Strobe timing, extend strobe phase with n cycles. 73 + $ref: /schemas/types.yaml#/definitions/uint32 74 + maximum: 15 75 + 76 + intel,ixp4xx-eb-t4: 77 + description: Hold timing, extend hold phase with n cycles. 78 + $ref: /schemas/types.yaml#/definitions/uint32 79 + maximum: 3 80 + 81 + intel,ixp4xx-eb-t5: 82 + description: Recovery timing, extend recovery phase with n cycles. 83 + $ref: /schemas/types.yaml#/definitions/uint32 84 + maximum: 15 85 + 86 + intel,ixp4xx-eb-cycle-type: 87 + description: The type of cycles to use on the expansion bus for this 88 + chip select. 0 = Intel cycles, 1 = Motorola cycles, 2 = HPI cycles. 89 + $ref: /schemas/types.yaml#/definitions/uint32 90 + enum: [0, 1, 2] 91 + 92 + intel,ixp4xx-eb-byte-access-on-halfword: 93 + description: Allow byte read access on half word devices. 94 + $ref: /schemas/types.yaml#/definitions/uint32 95 + enum: [0, 1] 96 + 97 + intel,ixp4xx-eb-hpi-hrdy-pol-high: 98 + description: Set HPI HRDY polarity to active high when using HPI. 99 + $ref: /schemas/types.yaml#/definitions/uint32 100 + enum: [0, 1] 101 + 102 + intel,ixp4xx-eb-mux-address-and-data: 103 + description: Multiplex address and data on the data bus. 104 + $ref: /schemas/types.yaml#/definitions/uint32 105 + enum: [0, 1] 106 + 107 + intel,ixp4xx-eb-ahb-split-transfers: 108 + description: Enable AHB split transfers. 109 + $ref: /schemas/types.yaml#/definitions/uint32 110 + enum: [0, 1] 111 + 112 + intel,ixp4xx-eb-write-enable: 113 + description: Enable write cycles. 114 + $ref: /schemas/types.yaml#/definitions/uint32 115 + enum: [0, 1] 116 + 117 + intel,ixp4xx-eb-byte-access: 118 + description: Expansion bus uses only 8 bits. The default is to use 119 + 16 bits. 120 + $ref: /schemas/types.yaml#/definitions/uint32 121 + enum: [0, 1] 122 + 123 + required: 124 + - compatible 125 + - reg 126 + - native-endian 127 + - "#address-cells" 128 + - "#size-cells" 129 + - ranges 130 + - dma-ranges 131 + 132 + additionalProperties: false 133 + 134 + examples: 135 + - | 136 + #include <dt-bindings/interrupt-controller/irq.h> 137 + bus@50000000 { 138 + compatible = "intel,ixp42x-expansion-bus-controller", "syscon"; 139 + reg = <0xc4000000 0x28>; 140 + native-endian; 141 + #address-cells = <2>; 142 + #size-cells = <1>; 143 + ranges = <0 0x0 0x50000000 0x01000000>, 144 + <1 0x0 0x51000000 0x01000000>; 145 + dma-ranges = <0 0x0 0x50000000 0x01000000>, 146 + <1 0x0 0x51000000 0x01000000>; 147 + flash@0,0 { 148 + compatible = "intel,ixp4xx-flash", "cfi-flash"; 149 + bank-width = <2>; 150 + reg = <0 0x00000000 0x1000000>; 151 + intel,ixp4xx-eb-t3 = <3>; 152 + intel,ixp4xx-eb-cycle-type = <0>; 153 + intel,ixp4xx-eb-byte-access-on-halfword = <1>; 154 + intel,ixp4xx-eb-write-enable = <1>; 155 + intel,ixp4xx-eb-byte-access = <0>; 156 + }; 157 + serial@1,0 { 158 + compatible = "exar,xr16l2551", "ns8250"; 159 + reg = <1 0x00000000 0x10>; 160 + interrupt-parent = <&gpio0>; 161 + interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 162 + clock-frequency = <1843200>; 163 + intel,ixp4xx-eb-t3 = <3>; 164 + intel,ixp4xx-eb-cycle-type = <1>; 165 + intel,ixp4xx-eb-write-enable = <1>; 166 + intel,ixp4xx-eb-byte-access = <1>; 167 + }; 168 + };