1 ======================================================================
2 Device tree bindings for the Aspeed Low Pin Count (LPC) Bus Controller
3 ======================================================================
5 The LPC bus is a means to bridge a host CPU to a number of low-bandwidth
6 peripheral devices, replacing the use of the ISA bus in the age of PCI[0]. The
7 primary use case of the Aspeed LPC controller is as a slave on the bus
8 (typically in a Baseboard Management Controller SoC), but under certain
9 conditions it can also take the role of bus master.
11 The LPC controller is represented as a multi-function device to account for the
12 mix of functionality it provides. The principle split is between the register
13 layout at the start of the I/O space which is, to quote the Aspeed datasheet,
14 "basically compatible with the [LPC registers from the] popular BMC controller
15 H8S/2168[1]", and everything else, where everything else is an eclectic
16 collection of functions with a esoteric register layout. "Everything else",
17 here labeled the "host" portion of the controller, includes, but is not limited
20 * An IPMI Block Transfer[2] Controller
22 * An LPC Host Controller: Manages LPC functions such as host vs slave mode, the
23 physical properties of some LPC pins, configuration of serial IRQs, and
24 APB-to-LPC bridging amonst other functions.
26 * An LPC Host Interface Controller: Manages functions exposed to the host such
27 as LPC firmware hub cycles, configuration of the LPC-to-AHB mapping, UART
28 management and bus snoop configuration.
30 * A set of SuperIO[3] scratch registers: Enables implementation of e.g. custom
31 hardware management protocols for handover between the host and baseboard
32 management controller.
34 Additionally the state of the LPC controller influences the pinmux
35 configuration, therefore the host portion of the controller is exposed as a
36 syscon as a means to arbitrate access.
38 [0] http://www.intel.com/design/chipsets/industry/25128901.pdf
39 [1] https://www.renesas.com/en-sg/doc/products/mpumcu/001/rej09b0078_h8s2168.pdf?key=7c88837454702128622bee53acbda8f4
40 [2] http://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf
41 [3] https://en.wikipedia.org/wiki/Super_I/O
47 "aspeed,ast2400-lpc", "simple-mfd"
48 "aspeed,ast2500-lpc", "simple-mfd"
50 - reg: contains the physical address and length values of the Aspeed
55 - ranges: Maps 0 to the physical address and length of the LPC memory
58 Required LPC Child nodes
59 ========================
65 "aspeed,ast2400-lpc-bmc"
66 "aspeed,ast2500-lpc-bmc"
68 - reg: contains the physical address and length values of the
69 H8S/2168-compatible LPC controller memory region
75 "aspeed,ast2400-lpc-host", "simple-mfd", "syscon"
76 "aspeed,ast2500-lpc-host", "simple-mfd", "syscon"
78 - reg: contains the address and length values of the host-related
79 register space for the Aspeed LPC controller
83 - ranges: Maps 0 to the address and length of the host-related LPC memory
89 compatible = "aspeed,ast2500-lpc", "simple-mfd";
90 reg = <0x1e789000 0x1000>;
94 ranges = <0x0 0x1e789000 0x1000>;
97 compatible = "aspeed,ast2500-lpc-bmc";
101 lpc_host: lpc-host@80 {
102 compatible = "aspeed,ast2500-lpc-host", "simple-mfd", "syscon";
106 #address-cells = <1>;
108 ranges = <0x0 0x80 0x1e0>;
118 The Aspeed LPC Host Controller configures the Low Pin Count (LPC) bus behaviour
119 between the host and the baseboard management controller. The registers exist
120 in the "host" portion of the Aspeed LPC controller, which must be the parent of
121 the LPC host controller node.
125 - compatible: One of:
126 "aspeed,ast2400-lhc";
127 "aspeed,ast2500-lhc";
129 - reg: contains offset/length values of the LHC memory regions. In the
130 AST2400 and AST2500 there are two regions.
135 compatible = "aspeed,ast2500-lhc";
136 reg = <0x20 0x24 0x48 0x8>;