intel,ixp4xx-expansion-bus-controller.yaml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/memory-controllers/intel,ixp4xx-expansion-bus-controller.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: Intel IXP4xx Expansion Bus Controller
  7. description: |
  8. The IXP4xx expansion bus controller handles access to devices on the
  9. memory-mapped expansion bus on the Intel IXP4xx family of system on chips,
  10. including IXP42x, IXP43x, IXP45x and IXP46x.
  11. maintainers:
  12. - Linus Walleij <linus.walleij@linaro.org>
  13. properties:
  14. $nodename:
  15. pattern: '^bus@[0-9a-f]+$'
  16. compatible:
  17. items:
  18. - enum:
  19. - intel,ixp42x-expansion-bus-controller
  20. - intel,ixp43x-expansion-bus-controller
  21. - intel,ixp45x-expansion-bus-controller
  22. - intel,ixp46x-expansion-bus-controller
  23. - const: syscon
  24. reg:
  25. description: Control registers for the expansion bus, these are not
  26. inside the memory range handled by the expansion bus.
  27. maxItems: 1
  28. native-endian:
  29. $ref: /schemas/types.yaml#/definitions/flag
  30. description: The IXP4xx has a peculiar MMIO access scheme, as it changes
  31. the access pattern for words (swizzling) on the bus depending on whether
  32. the SoC is running in big-endian or little-endian mode. Thus the
  33. registers must always be accessed using native endianness.
  34. "#address-cells":
  35. description: |
  36. The first cell is the chip select number.
  37. The second cell is the address offset within the bank.
  38. const: 2
  39. "#size-cells":
  40. const: 1
  41. ranges: true
  42. dma-ranges: true
  43. patternProperties:
  44. "^.*@[0-7],[0-9a-f]+$":
  45. description: Devices attached to chip selects are represented as
  46. subnodes.
  47. type: object
  48. $ref: /schemas/memory-controllers/intel,ixp4xx-expansion-peripheral-props.yaml#
  49. additionalProperties: true
  50. required:
  51. - compatible
  52. - reg
  53. - native-endian
  54. - "#address-cells"
  55. - "#size-cells"
  56. - ranges
  57. - dma-ranges
  58. additionalProperties: false
  59. examples:
  60. - |
  61. #include <dt-bindings/interrupt-controller/irq.h>
  62. bus@50000000 {
  63. compatible = "intel,ixp42x-expansion-bus-controller", "syscon";
  64. reg = <0xc4000000 0x28>;
  65. native-endian;
  66. #address-cells = <2>;
  67. #size-cells = <1>;
  68. ranges = <0 0x0 0x50000000 0x01000000>,
  69. <1 0x0 0x51000000 0x01000000>;
  70. dma-ranges = <0 0x0 0x50000000 0x01000000>,
  71. <1 0x0 0x51000000 0x01000000>;
  72. flash@0,0 {
  73. compatible = "intel,ixp4xx-flash", "cfi-flash";
  74. bank-width = <2>;
  75. reg = <0 0x00000000 0x1000000>;
  76. intel,ixp4xx-eb-t3 = <3>;
  77. intel,ixp4xx-eb-cycle-type = <0>;
  78. intel,ixp4xx-eb-byte-access-on-halfword = <1>;
  79. intel,ixp4xx-eb-write-enable = <1>;
  80. intel,ixp4xx-eb-byte-access = <0>;
  81. };
  82. serial@1,0 {
  83. compatible = "exar,xr16l2551", "ns8250";
  84. reg = <1 0x00000000 0x10>;
  85. interrupt-parent = <&gpio0>;
  86. interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
  87. clock-frequency = <1843200>;
  88. intel,ixp4xx-eb-t3 = <3>;
  89. intel,ixp4xx-eb-cycle-type = <1>;
  90. intel,ixp4xx-eb-write-enable = <1>;
  91. intel,ixp4xx-eb-byte-access = <1>;
  92. };
  93. };