| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
- # # Copyright (c) 2021 Aspeed Technology Inc.
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/mfd/aspeed-lpc.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Aspeed Low Pin Count (LPC) Bus Controller
- maintainers:
- - Andrew Jeffery <andrew@aj.id.au>
- - Chia-Wei Wang <chiawei_wang@aspeedtech.com>
- description:
- The LPC bus is a means to bridge a host CPU to a number of low-bandwidth
- peripheral devices, replacing the use of the ISA bus in the age of PCI[0]. The
- primary use case of the Aspeed LPC controller is as a slave on the bus
- (typically in a Baseboard Management Controller SoC), but under certain
- conditions it can also take the role of bus master.
- The LPC controller is represented as a multi-function device to account for the
- mix of functionality, which includes, but is not limited to
- * An IPMI Block Transfer[2] Controller
- * An LPC Host Interface Controller manages functions exposed to the host such
- as LPC firmware hub cycles, configuration of the LPC-to-AHB mapping, UART
- management and bus snoop configuration.
- * A set of SuperIO[3] scratch registers enabling implementation of e.g. custom
- hardware management protocols for handover between the host and baseboard
- management controller.
- Additionally the state of the LPC controller influences the pinmux
- configuration, therefore the host portion of the controller is exposed as a
- syscon as a means to arbitrate access.
- properties:
- compatible:
- items:
- - enum:
- - aspeed,ast2400-lpc-v2
- - aspeed,ast2500-lpc-v2
- - aspeed,ast2600-lpc-v2
- - const: simple-mfd
- - const: syscon
- reg:
- maxItems: 1
- '#address-cells':
- const: 1
- '#size-cells':
- const: 1
- ranges: true
- patternProperties:
- '^lpc-ctrl@[0-9a-f]+$':
- type: object
- additionalProperties: false
- description: |
- The LPC Host Interface Controller manages functions exposed to the host such as
- LPC firmware hub cycles, configuration of the LPC-to-AHB mapping, UART management
- and bus snoop configuration.
- properties:
- compatible:
- items:
- - enum:
- - aspeed,ast2400-lpc-ctrl
- - aspeed,ast2500-lpc-ctrl
- - aspeed,ast2600-lpc-ctrl
- reg:
- maxItems: 1
- clocks:
- maxItems: 1
- memory-region:
- maxItems: 1
- description: handle to memory reservation for the LPC to AHB mapping region
- flash:
- $ref: /schemas/types.yaml#/definitions/phandle
- description: The SPI flash controller containing the flash to be exposed over the LPC to AHB mapping
- required:
- - compatible
- - clocks
- '^reset-controller@[0-9a-f]+$':
- type: object
- additionalProperties: false
- description:
- The UARTs present in the ASPEED SoC can have their resets tied to the reset
- state of the LPC bus. Some systems may chose to modify this configuration
- properties:
- compatible:
- items:
- - enum:
- - aspeed,ast2400-lpc-reset
- - aspeed,ast2500-lpc-reset
- - aspeed,ast2600-lpc-reset
- reg:
- maxItems: 1
- '#reset-cells':
- const: 1
- required:
- - compatible
- - '#reset-cells'
- '^lpc-snoop@[0-9a-f]+$':
- type: object
- additionalProperties: false
- description:
- The LPC snoop interface allows the BMC to listen on and record the data
- bytes written by the Host to the targeted LPC I/O pots.
- properties:
- compatible:
- items:
- - enum:
- - aspeed,ast2400-lpc-snoop
- - aspeed,ast2500-lpc-snoop
- - aspeed,ast2600-lpc-snoop
- reg:
- maxItems: 1
- clocks:
- maxItems: 1
- interrupts:
- maxItems: 1
- snoop-ports:
- $ref: /schemas/types.yaml#/definitions/uint32-array
- description: The LPC I/O ports to snoop
- required:
- - compatible
- - interrupts
- - snoop-ports
- '^uart-routing@[0-9a-f]+$':
- $ref: /schemas/soc/aspeed/uart-routing.yaml#
- description: The UART routing control under LPC register space
- required:
- - compatible
- - reg
- - '#address-cells'
- - '#size-cells'
- - ranges
- additionalProperties:
- type: object
- examples:
- - |
- #include <dt-bindings/interrupt-controller/arm-gic.h>
- #include <dt-bindings/clock/ast2600-clock.h>
- lpc: lpc@1e789000 {
- compatible = "aspeed,ast2600-lpc-v2", "simple-mfd", "syscon";
- reg = <0x1e789000 0x1000>;
- #address-cells = <1>;
- #size-cells = <1>;
- ranges = <0x0 0x1e789000 0x1000>;
- lpc_ctrl: lpc-ctrl@80 {
- compatible = "aspeed,ast2600-lpc-ctrl";
- reg = <0x80 0x80>;
- clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
- memory-region = <&flash_memory>;
- flash = <&spi>;
- };
- lpc_reset: reset-controller@98 {
- compatible = "aspeed,ast2600-lpc-reset";
- reg = <0x98 0x4>;
- #reset-cells = <1>;
- };
- lpc_snoop: lpc-snoop@90 {
- compatible = "aspeed,ast2600-lpc-snoop";
- reg = <0x90 0x8>;
- interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
- snoop-ports = <0x80>;
- };
- };
|