Skip to content

Commit 3fbcc67

Browse files
committed
bus: ixp4xx: Add DT bindings for the IXP4xx expansion bus
This adds device tree bindings for the IXP4xx expansion bus controller. Cc: Marc Zyngier <[email protected]> Cc: [email protected] Reviewed-by: Rob Herring <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
1 parent e73f0f0 commit 3fbcc67

File tree

1 file changed

+168
-0
lines changed

1 file changed

+168
-0
lines changed
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
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 <[email protected]>
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+
};

0 commit comments

Comments
 (0)