| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/memory-controllers/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 |
| $ref: /schemas/memory-controllers/intel,ixp4xx-expansion-peripheral-props.yaml# |
| additionalProperties: true |
| |
| 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>; |
| }; |
| }; |