summaryrefslogtreecommitdiffstats
path: root/dts/Bindings/bus/intel,ixp4xx-expansion-bus-controller.yaml
blob: 5fb4e7bfa4da1be8ff3aa919c13aa564e7255b09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/bus/intel,ixp4xx-expansion-bus-controller.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Intel IXP4xx Expansion Bus Controller

description: |
  The IXP4xx expansion bus controller handles access to devices on the
  memory-mapped expansion bus on the Intel IXP4xx family of system on chips,
  including IXP42x, IXP43x, IXP45x and IXP46x.

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

properties:
  $nodename:
    pattern: '^bus@[0-9a-f]+$'

  compatible:
    items:
      - enum:
          - intel,ixp42x-expansion-bus-controller
          - intel,ixp43x-expansion-bus-controller
          - intel,ixp45x-expansion-bus-controller
          - intel,ixp46x-expansion-bus-controller
      - const: syscon

  reg:
    description: Control registers for the expansion bus, these are not
      inside the memory range handled by the expansion bus.
    maxItems: 1

  native-endian:
    $ref: /schemas/types.yaml#/definitions/flag
    description: The IXP4xx has a peculiar MMIO access scheme, as it changes
      the access pattern for words (swizzling) on the bus depending on whether
      the SoC is running in big-endian or little-endian mode. Thus the
      registers must always be accessed using native endianness.

  "#address-cells":
    description: |
      The first cell is the chip select number.
      The second cell is the address offset within the bank.
    const: 2

  "#size-cells":
    const: 1

  ranges: true
  dma-ranges: true

patternProperties:
  "^.*@[0-7],[0-9a-f]+$":
    description: Devices attached to chip selects are represented as
      subnodes.
    type: object

    properties:
      intel,ixp4xx-eb-t1:
        description: Address timing, extend address phase with n cycles.
        $ref: /schemas/types.yaml#/definitions/uint32
        maximum: 3

      intel,ixp4xx-eb-t2:
        description: Setup chip select timing, extend setup phase with n cycles.
        $ref: /schemas/types.yaml#/definitions/uint32
        maximum: 3

      intel,ixp4xx-eb-t3:
        description: Strobe timing, extend strobe phase with n cycles.
        $ref: /schemas/types.yaml#/definitions/uint32
        maximum: 15

      intel,ixp4xx-eb-t4:
        description: Hold timing, extend hold phase with n cycles.
        $ref: /schemas/types.yaml#/definitions/uint32
        maximum: 3

      intel,ixp4xx-eb-t5:
        description: Recovery timing, extend recovery phase with n cycles.
        $ref: /schemas/types.yaml#/definitions/uint32
        maximum: 15

      intel,ixp4xx-eb-cycle-type:
        description: The type of cycles to use on the expansion bus for this
          chip select. 0 = Intel cycles, 1 = Motorola cycles, 2 = HPI cycles.
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1, 2]

      intel,ixp4xx-eb-byte-access-on-halfword:
        description: Allow byte read access on half word devices.
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1]

      intel,ixp4xx-eb-hpi-hrdy-pol-high:
        description: Set HPI HRDY polarity to active high when using HPI.
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1]

      intel,ixp4xx-eb-mux-address-and-data:
        description: Multiplex address and data on the data bus.
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1]

      intel,ixp4xx-eb-ahb-split-transfers:
        description: Enable AHB split transfers.
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1]

      intel,ixp4xx-eb-write-enable:
        description: Enable write cycles.
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1]

      intel,ixp4xx-eb-byte-access:
        description: Expansion bus uses only 8 bits. The default is to use
          16 bits.
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1]

required:
  - compatible
  - reg
  - native-endian
  - "#address-cells"
  - "#size-cells"
  - ranges
  - dma-ranges

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    bus@50000000 {
        compatible = "intel,ixp42x-expansion-bus-controller", "syscon";
        reg = <0xc4000000 0x28>;
        native-endian;
        #address-cells = <2>;
        #size-cells = <1>;
        ranges = <0 0x0 0x50000000 0x01000000>,
                 <1 0x0 0x51000000 0x01000000>;
        dma-ranges = <0 0x0 0x50000000 0x01000000>,
                     <1 0x0 0x51000000 0x01000000>;
        flash@0,0 {
            compatible = "intel,ixp4xx-flash", "cfi-flash";
            bank-width = <2>;
            reg = <0 0x00000000 0x1000000>;
            intel,ixp4xx-eb-t3 = <3>;
            intel,ixp4xx-eb-cycle-type = <0>;
            intel,ixp4xx-eb-byte-access-on-halfword = <1>;
            intel,ixp4xx-eb-write-enable = <1>;
            intel,ixp4xx-eb-byte-access = <0>;
        };
        serial@1,0 {
            compatible = "exar,xr16l2551", "ns8250";
            reg = <1 0x00000000 0x10>;
            interrupt-parent = <&gpio0>;
            interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
            clock-frequency = <1843200>;
            intel,ixp4xx-eb-t3 = <3>;
            intel,ixp4xx-eb-cycle-type = <1>;
            intel,ixp4xx-eb-write-enable = <1>;
            intel,ixp4xx-eb-byte-access = <1>;
        };
    };