mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-26 23:55:40 +08:00
ASPEED LPC updates for 5.13
These patches fix the ASPEED LPC bindings and LPC-related device drivers so in the future the KCS driver can properly use the hardware. -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE+nHMAt9PCBDH63wBa3ZZB4FHcJ4FAmBv7HAACgkQa3ZZB4FH cJ68Gg/+KQns6SXdsCxu1sXctZmaSzmOXgGNnwLqCDu6TRFjtsUQ2CaIOFOhuUjJ A75StHMPFqHmcciWBL5eYHH+1CwBqs3b6ZXRbXFvVq0PE709epGA1n0egzoXiVEF nNjUM/74JY/4r2iEZu2cFRaGJKYJYPzn8cfTMvxdDZhmflgWtXxV7MejBr0r+JpF 3GevztzscuI8gmxH2VVs9BvvNZxp748oG3WNfHpyWUDG6kEK2/r4Y7BEmB+q6E0a CpbMINHOT6e/Mc55EpK3+eby+OGs9BN8yzJaU9oBSPxUirDRPVIeu1NShpjukQ7F wfO9OY7RR0mySmZp6u4Qj4FKnkUYoE0pzxslVoVAS68AiPy2Z6UB2nLpu+UlRQhf zlycloD5Tywn3hkA5uaT0FPu2zV/Kbla4MJaOT8BIGfTC+/X2andYIUQN9dbjRhC OyWpzYWRJar/nOLx6ergXtcPft2dn9g0KqPNRF4s414JFmrHLIjmdCXQiPePDFGQ pI+8bTv614wGPeTE1zAD7sMrFSv+FEU8a6ZdXwMUHKrV8E8jgKqT40+eyZ6SHGOZ u+ATncxGcOQTLk9/JiMFOLVlj0oUIGf4E6n+zldASwTPuFyzKlNFRSsmPxHkKF3/ FwE/cSXCtU83Vrr3e3zhV39Pz7hkMPbeQpqLmFiMCMbs3N+Oq0o= =U2zj -----END PGP SIGNATURE----- Merge tag 'aspeed-5.13-lpc' of git://git.kernel.org/pub/scm/linux/kernel/git/joel/bmc into arm/drivers ASPEED LPC updates for 5.13 These patches fix the ASPEED LPC bindings and LPC-related device drivers so in the future the KCS driver can properly use the hardware. * tag 'aspeed-5.13-lpc' of git://git.kernel.org/pub/scm/linux/kernel/git/joel/bmc: soc: aspeed: Adapt to new LPC device tree layout pinctrl: aspeed-g5: Adapt to new LPC device tree layout ipmi: kcs: aspeed: Adapt to new LPC DTS layout ARM: dts: Remove LPC BMC and Host partitions dt-bindings: aspeed-lpc: Remove LPC partitioning Link: https://lore.kernel.org/r/CACPK8Xcb12LsVr7CUaXXjQskKbVjb7x+jgueG1Hik-kBPWtDSg@mail.gmail.com Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
d60f314b93
@ -9,13 +9,7 @@ primary use case of the Aspeed LPC controller is as a slave on the bus
|
||||
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 it provides. The principle split is between the register
|
||||
layout at the start of the I/O space which is, to quote the Aspeed datasheet,
|
||||
"basically compatible with the [LPC registers from the] popular BMC controller
|
||||
H8S/2168[1]", and everything else, where everything else is an eclectic
|
||||
collection of functions with a esoteric register layout. "Everything else",
|
||||
here labeled the "host" portion of the controller, includes, but is not limited
|
||||
to:
|
||||
mix of functionality, which includes, but is not limited to:
|
||||
|
||||
* An IPMI Block Transfer[2] Controller
|
||||
|
||||
@ -44,80 +38,36 @@ Required properties
|
||||
===================
|
||||
|
||||
- compatible: One of:
|
||||
"aspeed,ast2400-lpc", "simple-mfd"
|
||||
"aspeed,ast2500-lpc", "simple-mfd"
|
||||
"aspeed,ast2600-lpc", "simple-mfd"
|
||||
"aspeed,ast2400-lpc-v2", "simple-mfd", "syscon"
|
||||
"aspeed,ast2500-lpc-v2", "simple-mfd", "syscon"
|
||||
"aspeed,ast2600-lpc-v2", "simple-mfd", "syscon"
|
||||
|
||||
- reg: contains the physical address and length values of the Aspeed
|
||||
LPC memory region.
|
||||
|
||||
- #address-cells: <1>
|
||||
- #size-cells: <1>
|
||||
- ranges: Maps 0 to the physical address and length of the LPC memory
|
||||
region
|
||||
|
||||
Required LPC Child nodes
|
||||
========================
|
||||
|
||||
BMC Node
|
||||
--------
|
||||
|
||||
- compatible: One of:
|
||||
"aspeed,ast2400-lpc-bmc"
|
||||
"aspeed,ast2500-lpc-bmc"
|
||||
"aspeed,ast2600-lpc-bmc"
|
||||
|
||||
- reg: contains the physical address and length values of the
|
||||
H8S/2168-compatible LPC controller memory region
|
||||
|
||||
Host Node
|
||||
---------
|
||||
|
||||
- compatible: One of:
|
||||
"aspeed,ast2400-lpc-host", "simple-mfd", "syscon"
|
||||
"aspeed,ast2500-lpc-host", "simple-mfd", "syscon"
|
||||
"aspeed,ast2600-lpc-host", "simple-mfd", "syscon"
|
||||
|
||||
- reg: contains the address and length values of the host-related
|
||||
register space for the Aspeed LPC controller
|
||||
|
||||
- #address-cells: <1>
|
||||
- #size-cells: <1>
|
||||
- ranges: Maps 0 to the address and length of the host-related LPC memory
|
||||
- ranges: Maps 0 to the physical address and length of the LPC memory
|
||||
region
|
||||
|
||||
Example:
|
||||
|
||||
lpc: lpc@1e789000 {
|
||||
compatible = "aspeed,ast2500-lpc", "simple-mfd";
|
||||
compatible = "aspeed,ast2500-lpc-v2", "simple-mfd", "syscon";
|
||||
reg = <0x1e789000 0x1000>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x1e789000 0x1000>;
|
||||
|
||||
lpc_bmc: lpc-bmc@0 {
|
||||
compatible = "aspeed,ast2500-lpc-bmc";
|
||||
lpc_snoop: lpc-snoop@0 {
|
||||
compatible = "aspeed,ast2600-lpc-snoop";
|
||||
reg = <0x0 0x80>;
|
||||
};
|
||||
|
||||
lpc_host: lpc-host@80 {
|
||||
compatible = "aspeed,ast2500-lpc-host", "simple-mfd", "syscon";
|
||||
reg = <0x80 0x1e0>;
|
||||
reg-io-width = <4>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x80 0x1e0>;
|
||||
interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
|
||||
snoop-ports = <0x80>;
|
||||
};
|
||||
};
|
||||
|
||||
BMC Node Children
|
||||
==================
|
||||
|
||||
|
||||
Host Node Children
|
||||
==================
|
||||
|
||||
LPC Host Interface Controller
|
||||
-------------------
|
||||
@ -149,14 +99,12 @@ Optional properties:
|
||||
|
||||
Example:
|
||||
|
||||
lpc-host@80 {
|
||||
lpc_ctrl: lpc-ctrl@0 {
|
||||
compatible = "aspeed,ast2500-lpc-ctrl";
|
||||
reg = <0x0 0x80>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
memory-region = <&flash_memory>;
|
||||
flash = <&spi>;
|
||||
};
|
||||
lpc_ctrl: lpc-ctrl@80 {
|
||||
compatible = "aspeed,ast2500-lpc-ctrl";
|
||||
reg = <0x80 0x80>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
memory-region = <&flash_memory>;
|
||||
flash = <&spi>;
|
||||
};
|
||||
|
||||
LPC Host Controller
|
||||
@ -179,9 +127,9 @@ Required properties:
|
||||
|
||||
Example:
|
||||
|
||||
lhc: lhc@20 {
|
||||
lhc: lhc@a0 {
|
||||
compatible = "aspeed,ast2500-lhc";
|
||||
reg = <0x20 0x24 0x48 0x8>;
|
||||
reg = <0xa0 0x24 0xc8 0x8>;
|
||||
};
|
||||
|
||||
LPC reset control
|
||||
@ -192,16 +140,18 @@ state of the LPC bus. Some systems may chose to modify this configuration.
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible: "aspeed,ast2600-lpc-reset" or
|
||||
"aspeed,ast2500-lpc-reset"
|
||||
"aspeed,ast2400-lpc-reset"
|
||||
- compatible: One of:
|
||||
"aspeed,ast2600-lpc-reset";
|
||||
"aspeed,ast2500-lpc-reset";
|
||||
"aspeed,ast2400-lpc-reset";
|
||||
|
||||
- reg: offset and length of the IP in the LHC memory region
|
||||
- #reset-controller indicates the number of reset cells expected
|
||||
|
||||
Example:
|
||||
|
||||
lpc_reset: reset-controller@18 {
|
||||
lpc_reset: reset-controller@98 {
|
||||
compatible = "aspeed,ast2500-lpc-reset";
|
||||
reg = <0x18 0x4>;
|
||||
reg = <0x98 0x4>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
@ -343,59 +343,45 @@
|
||||
};
|
||||
|
||||
lpc: lpc@1e789000 {
|
||||
compatible = "aspeed,ast2400-lpc", "simple-mfd";
|
||||
compatible = "aspeed,ast2400-lpc-v2", "simple-mfd", "syscon";
|
||||
reg = <0x1e789000 0x1000>;
|
||||
reg-io-width = <4>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x1e789000 0x1000>;
|
||||
|
||||
lpc_bmc: lpc-bmc@0 {
|
||||
compatible = "aspeed,ast2400-lpc-bmc";
|
||||
reg = <0x0 0x80>;
|
||||
lpc_ctrl: lpc-ctrl@80 {
|
||||
compatible = "aspeed,ast2400-lpc-ctrl";
|
||||
reg = <0x80 0x10>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lpc_host: lpc-host@80 {
|
||||
compatible = "aspeed,ast2400-lpc-host", "simple-mfd", "syscon";
|
||||
reg = <0x80 0x1e0>;
|
||||
reg-io-width = <4>;
|
||||
lpc_snoop: lpc-snoop@90 {
|
||||
compatible = "aspeed,ast2400-lpc-snoop";
|
||||
reg = <0x90 0x8>;
|
||||
interrupts = <8>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x80 0x1e0>;
|
||||
lhc: lhc@a0 {
|
||||
compatible = "aspeed,ast2400-lhc";
|
||||
reg = <0xa0 0x24 0xc8 0x8>;
|
||||
};
|
||||
|
||||
lpc_ctrl: lpc-ctrl@0 {
|
||||
compatible = "aspeed,ast2400-lpc-ctrl";
|
||||
reg = <0x0 0x10>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
lpc_reset: reset-controller@98 {
|
||||
compatible = "aspeed,ast2400-lpc-reset";
|
||||
reg = <0x98 0x4>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
lpc_snoop: lpc-snoop@10 {
|
||||
compatible = "aspeed,ast2400-lpc-snoop";
|
||||
reg = <0x10 0x8>;
|
||||
interrupts = <8>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lhc: lhc@20 {
|
||||
compatible = "aspeed,ast2400-lhc";
|
||||
reg = <0x20 0x24 0x48 0x8>;
|
||||
};
|
||||
|
||||
lpc_reset: reset-controller@18 {
|
||||
compatible = "aspeed,ast2400-lpc-reset";
|
||||
reg = <0x18 0x4>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
ibt: ibt@c0 {
|
||||
compatible = "aspeed,ast2400-ibt-bmc";
|
||||
reg = <0xc0 0x18>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
ibt: ibt@140 {
|
||||
compatible = "aspeed,ast2400-ibt-bmc";
|
||||
reg = <0x140 0x18>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -434,91 +434,74 @@
|
||||
};
|
||||
|
||||
lpc: lpc@1e789000 {
|
||||
compatible = "aspeed,ast2500-lpc", "simple-mfd";
|
||||
compatible = "aspeed,ast2500-lpc-v2", "simple-mfd", "syscon";
|
||||
reg = <0x1e789000 0x1000>;
|
||||
reg-io-width = <4>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x1e789000 0x1000>;
|
||||
|
||||
lpc_bmc: lpc-bmc@0 {
|
||||
compatible = "aspeed,ast2500-lpc-bmc", "simple-mfd", "syscon";
|
||||
reg = <0x0 0x80>;
|
||||
reg-io-width = <4>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x0 0x80>;
|
||||
|
||||
kcs1: kcs@24 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x24 0x1>, <0x30 0x1>, <0x3c 0x1>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
kcs2: kcs@28 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x28 0x1>, <0x34 0x1>, <0x40 0x1>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
kcs3: kcs@2c {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x2c 0x1>, <0x38 0x1>, <0x44 0x1>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
kcs1: kcs@24 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x24 0x1>, <0x30 0x1>, <0x3c 0x1>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lpc_host: lpc-host@80 {
|
||||
compatible = "aspeed,ast2500-lpc-host", "simple-mfd", "syscon";
|
||||
reg = <0x80 0x1e0>;
|
||||
reg-io-width = <4>;
|
||||
kcs2: kcs@28 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x28 0x1>, <0x34 0x1>, <0x40 0x1>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x80 0x1e0>;
|
||||
kcs3: kcs@2c {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x2c 0x1>, <0x38 0x1>, <0x44 0x1>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
kcs4: kcs@94 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x94 0x1>, <0x98 0x1>, <0x9c 0x1>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
kcs4: kcs@114 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x114 0x1>, <0x118 0x1>, <0x11c 0x1>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lpc_ctrl: lpc-ctrl@0 {
|
||||
compatible = "aspeed,ast2500-lpc-ctrl";
|
||||
reg = <0x0 0x10>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
lpc_ctrl: lpc-ctrl@80 {
|
||||
compatible = "aspeed,ast2500-lpc-ctrl";
|
||||
reg = <0x80 0x10>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lpc_snoop: lpc-snoop@10 {
|
||||
compatible = "aspeed,ast2500-lpc-snoop";
|
||||
reg = <0x10 0x8>;
|
||||
interrupts = <8>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
lpc_snoop: lpc-snoop@90 {
|
||||
compatible = "aspeed,ast2500-lpc-snoop";
|
||||
reg = <0x90 0x8>;
|
||||
interrupts = <8>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lpc_reset: reset-controller@18 {
|
||||
compatible = "aspeed,ast2500-lpc-reset";
|
||||
reg = <0x18 0x4>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
lpc_reset: reset-controller@98 {
|
||||
compatible = "aspeed,ast2500-lpc-reset";
|
||||
reg = <0x98 0x4>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
lhc: lhc@20 {
|
||||
compatible = "aspeed,ast2500-lhc";
|
||||
reg = <0x20 0x24 0x48 0x8>;
|
||||
};
|
||||
lhc: lhc@a0 {
|
||||
compatible = "aspeed,ast2500-lhc";
|
||||
reg = <0xa0 0x24 0xc8 0x8>;
|
||||
};
|
||||
|
||||
|
||||
ibt: ibt@c0 {
|
||||
compatible = "aspeed,ast2500-ibt-bmc";
|
||||
reg = <0xc0 0x18>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
ibt: ibt@140 {
|
||||
compatible = "aspeed,ast2500-ibt-bmc";
|
||||
reg = <0x140 0x18>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -460,91 +460,74 @@
|
||||
};
|
||||
|
||||
lpc: lpc@1e789000 {
|
||||
compatible = "aspeed,ast2600-lpc", "simple-mfd";
|
||||
compatible = "aspeed,ast2600-lpc-v2", "simple-mfd", "syscon";
|
||||
reg = <0x1e789000 0x1000>;
|
||||
reg-io-width = <4>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x1e789000 0x1000>;
|
||||
|
||||
lpc_bmc: lpc-bmc@0 {
|
||||
compatible = "aspeed,ast2600-lpc-bmc", "simple-mfd", "syscon";
|
||||
reg = <0x0 0x80>;
|
||||
reg-io-width = <4>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x0 0x80>;
|
||||
|
||||
kcs1: kcs@24 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x24 0x1>, <0x30 0x1>, <0x3c 0x1>;
|
||||
interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
|
||||
kcs_chan = <1>;
|
||||
status = "disabled";
|
||||
};
|
||||
kcs2: kcs@28 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x28 0x1>, <0x34 0x1>, <0x40 0x1>;
|
||||
interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
kcs3: kcs@2c {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x2c 0x1>, <0x38 0x1>, <0x44 0x1>;
|
||||
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
kcs1: kcs@24 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x24 0x1>, <0x30 0x1>, <0x3c 0x1>;
|
||||
interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
|
||||
kcs_chan = <1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lpc_host: lpc-host@80 {
|
||||
compatible = "aspeed,ast2600-lpc-host", "simple-mfd", "syscon";
|
||||
reg = <0x80 0x1e0>;
|
||||
reg-io-width = <4>;
|
||||
kcs2: kcs@28 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x28 0x1>, <0x34 0x1>, <0x40 0x1>;
|
||||
interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x80 0x1e0>;
|
||||
kcs3: kcs@2c {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x2c 0x1>, <0x38 0x1>, <0x44 0x1>;
|
||||
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
kcs4: kcs@94 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x94 0x1>, <0x98 0x1>, <0x9c 0x1>;
|
||||
interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
kcs4: kcs@114 {
|
||||
compatible = "aspeed,ast2500-kcs-bmc-v2";
|
||||
reg = <0x114 0x1>, <0x118 0x1>, <0x11c 0x1>;
|
||||
interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lpc_ctrl: lpc-ctrl@0 {
|
||||
compatible = "aspeed,ast2600-lpc-ctrl";
|
||||
reg = <0x0 0x80>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
lpc_ctrl: lpc-ctrl@80 {
|
||||
compatible = "aspeed,ast2600-lpc-ctrl";
|
||||
reg = <0x80 0x80>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lpc_snoop: lpc-snoop@0 {
|
||||
compatible = "aspeed,ast2600-lpc-snoop";
|
||||
reg = <0x0 0x80>;
|
||||
interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
lpc_snoop: lpc-snoop@80 {
|
||||
compatible = "aspeed,ast2600-lpc-snoop";
|
||||
reg = <0x80 0x80>;
|
||||
interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lhc: lhc@20 {
|
||||
compatible = "aspeed,ast2600-lhc";
|
||||
reg = <0x20 0x24 0x48 0x8>;
|
||||
};
|
||||
lhc: lhc@a0 {
|
||||
compatible = "aspeed,ast2600-lhc";
|
||||
reg = <0xa0 0x24 0xc8 0x8>;
|
||||
};
|
||||
|
||||
lpc_reset: reset-controller@18 {
|
||||
compatible = "aspeed,ast2600-lpc-reset";
|
||||
reg = <0x18 0x4>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
lpc_reset: reset-controller@98 {
|
||||
compatible = "aspeed,ast2600-lpc-reset";
|
||||
reg = <0x98 0x4>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
ibt: ibt@c0 {
|
||||
compatible = "aspeed,ast2600-ibt-bmc";
|
||||
reg = <0xc0 0x18>;
|
||||
interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
ibt: ibt@140 {
|
||||
compatible = "aspeed,ast2600-ibt-bmc";
|
||||
reg = <0x140 0x18>;
|
||||
interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -27,7 +27,6 @@
|
||||
|
||||
#define KCS_CHANNEL_MAX 4
|
||||
|
||||
/* mapped to lpc-bmc@0 IO space */
|
||||
#define LPC_HICR0 0x000
|
||||
#define LPC_HICR0_LPC3E BIT(7)
|
||||
#define LPC_HICR0_LPC2E BIT(6)
|
||||
@ -52,15 +51,13 @@
|
||||
#define LPC_STR1 0x03C
|
||||
#define LPC_STR2 0x040
|
||||
#define LPC_STR3 0x044
|
||||
|
||||
/* mapped to lpc-host@80 IO space */
|
||||
#define LPC_HICRB 0x080
|
||||
#define LPC_HICRB 0x100
|
||||
#define LPC_HICRB_IBFIF4 BIT(1)
|
||||
#define LPC_HICRB_LPC4E BIT(0)
|
||||
#define LPC_LADR4 0x090
|
||||
#define LPC_IDR4 0x094
|
||||
#define LPC_ODR4 0x098
|
||||
#define LPC_STR4 0x09C
|
||||
#define LPC_LADR4 0x110
|
||||
#define LPC_IDR4 0x114
|
||||
#define LPC_ODR4 0x118
|
||||
#define LPC_STR4 0x11C
|
||||
|
||||
struct aspeed_kcs_bmc {
|
||||
struct regmap *map;
|
||||
@ -348,12 +345,20 @@ static int aspeed_kcs_probe(struct platform_device *pdev)
|
||||
struct device_node *np;
|
||||
int rc;
|
||||
|
||||
np = pdev->dev.of_node;
|
||||
np = dev->of_node->parent;
|
||||
if (!of_device_is_compatible(np, "aspeed,ast2400-lpc-v2") &&
|
||||
!of_device_is_compatible(np, "aspeed,ast2500-lpc-v2") &&
|
||||
!of_device_is_compatible(np, "aspeed,ast2600-lpc-v2")) {
|
||||
dev_err(dev, "unsupported LPC device binding\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
np = dev->of_node;
|
||||
if (of_device_is_compatible(np, "aspeed,ast2400-kcs-bmc") ||
|
||||
of_device_is_compatible(np, "aspeed,ast2500-kcs-bmc"))
|
||||
of_device_is_compatible(np, "aspeed,ast2500-kcs-bmc"))
|
||||
kcs_bmc = aspeed_kcs_probe_of_v1(pdev);
|
||||
else if (of_device_is_compatible(np, "aspeed,ast2400-kcs-bmc-v2") ||
|
||||
of_device_is_compatible(np, "aspeed,ast2500-kcs-bmc-v2"))
|
||||
of_device_is_compatible(np, "aspeed,ast2500-kcs-bmc-v2"))
|
||||
kcs_bmc = aspeed_kcs_probe_of_v2(pdev);
|
||||
else
|
||||
return -EINVAL;
|
||||
|
@ -60,7 +60,7 @@
|
||||
#define COND2 { ASPEED_IP_SCU, SCU94, GENMASK(1, 0), 0, 0 }
|
||||
|
||||
/* LHCR0 is offset from the end of the H8S/2168-compatible registers */
|
||||
#define LHCR0 0x20
|
||||
#define LHCR0 0xa0
|
||||
#define GFX064 0x64
|
||||
|
||||
#define B14 0
|
||||
@ -2648,14 +2648,19 @@ static struct regmap *aspeed_g5_acquire_regmap(struct aspeed_pinmux_data *ctx,
|
||||
}
|
||||
|
||||
if (ip == ASPEED_IP_LPC) {
|
||||
struct device_node *node;
|
||||
struct device_node *np;
|
||||
struct regmap *map;
|
||||
|
||||
node = of_parse_phandle(ctx->dev->of_node,
|
||||
np = of_parse_phandle(ctx->dev->of_node,
|
||||
"aspeed,external-nodes", 1);
|
||||
if (node) {
|
||||
map = syscon_node_to_regmap(node->parent);
|
||||
of_node_put(node);
|
||||
if (np) {
|
||||
if (!of_device_is_compatible(np->parent, "aspeed,ast2400-lpc-v2") &&
|
||||
!of_device_is_compatible(np->parent, "aspeed,ast2500-lpc-v2") &&
|
||||
!of_device_is_compatible(np->parent, "aspeed,ast2600-lpc-v2"))
|
||||
return ERR_PTR(-ENODEV);
|
||||
|
||||
map = syscon_node_to_regmap(np->parent);
|
||||
of_node_put(np);
|
||||
if (IS_ERR(map))
|
||||
return map;
|
||||
} else
|
||||
|
@ -18,15 +18,15 @@
|
||||
|
||||
#define DEVICE_NAME "aspeed-lpc-ctrl"
|
||||
|
||||
#define HICR5 0x0
|
||||
#define HICR5 0x80
|
||||
#define HICR5_ENL2H BIT(8)
|
||||
#define HICR5_ENFWH BIT(10)
|
||||
|
||||
#define HICR6 0x4
|
||||
#define HICR6 0x84
|
||||
#define SW_FWH2AHB BIT(17)
|
||||
|
||||
#define HICR7 0x8
|
||||
#define HICR8 0xc
|
||||
#define HICR7 0x88
|
||||
#define HICR8 0x8c
|
||||
|
||||
struct aspeed_lpc_ctrl {
|
||||
struct miscdevice miscdev;
|
||||
@ -215,6 +215,7 @@ static int aspeed_lpc_ctrl_probe(struct platform_device *pdev)
|
||||
struct device_node *node;
|
||||
struct resource resm;
|
||||
struct device *dev;
|
||||
struct device_node *np;
|
||||
int rc;
|
||||
|
||||
dev = &pdev->dev;
|
||||
@ -270,8 +271,15 @@ static int aspeed_lpc_ctrl_probe(struct platform_device *pdev)
|
||||
}
|
||||
}
|
||||
|
||||
lpc_ctrl->regmap = syscon_node_to_regmap(
|
||||
pdev->dev.parent->of_node);
|
||||
np = pdev->dev.parent->of_node;
|
||||
if (!of_device_is_compatible(np, "aspeed,ast2400-lpc-v2") &&
|
||||
!of_device_is_compatible(np, "aspeed,ast2500-lpc-v2") &&
|
||||
!of_device_is_compatible(np, "aspeed,ast2600-lpc-v2")) {
|
||||
dev_err(dev, "unsupported LPC device binding\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
lpc_ctrl->regmap = syscon_node_to_regmap(np);
|
||||
if (IS_ERR(lpc_ctrl->regmap)) {
|
||||
dev_err(dev, "Couldn't get regmap\n");
|
||||
return -ENODEV;
|
||||
|
@ -29,26 +29,25 @@
|
||||
#define NUM_SNOOP_CHANNELS 2
|
||||
#define SNOOP_FIFO_SIZE 2048
|
||||
|
||||
#define HICR5 0x0
|
||||
#define HICR5 0x80
|
||||
#define HICR5_EN_SNP0W BIT(0)
|
||||
#define HICR5_ENINT_SNP0W BIT(1)
|
||||
#define HICR5_EN_SNP1W BIT(2)
|
||||
#define HICR5_ENINT_SNP1W BIT(3)
|
||||
|
||||
#define HICR6 0x4
|
||||
#define HICR6 0x84
|
||||
#define HICR6_STR_SNP0W BIT(0)
|
||||
#define HICR6_STR_SNP1W BIT(1)
|
||||
#define SNPWADR 0x10
|
||||
#define SNPWADR 0x90
|
||||
#define SNPWADR_CH0_MASK GENMASK(15, 0)
|
||||
#define SNPWADR_CH0_SHIFT 0
|
||||
#define SNPWADR_CH1_MASK GENMASK(31, 16)
|
||||
#define SNPWADR_CH1_SHIFT 16
|
||||
#define SNPWDR 0x14
|
||||
#define SNPWDR 0x94
|
||||
#define SNPWDR_CH0_MASK GENMASK(7, 0)
|
||||
#define SNPWDR_CH0_SHIFT 0
|
||||
#define SNPWDR_CH1_MASK GENMASK(15, 8)
|
||||
#define SNPWDR_CH1_SHIFT 8
|
||||
#define HICRB 0x80
|
||||
#define HICRB 0x100
|
||||
#define HICRB_ENSNP0D BIT(14)
|
||||
#define HICRB_ENSNP1D BIT(15)
|
||||
|
||||
@ -260,6 +259,7 @@ static int aspeed_lpc_snoop_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct aspeed_lpc_snoop *lpc_snoop;
|
||||
struct device *dev;
|
||||
struct device_node *np;
|
||||
u32 port;
|
||||
int rc;
|
||||
|
||||
@ -269,8 +269,15 @@ static int aspeed_lpc_snoop_probe(struct platform_device *pdev)
|
||||
if (!lpc_snoop)
|
||||
return -ENOMEM;
|
||||
|
||||
lpc_snoop->regmap = syscon_node_to_regmap(
|
||||
pdev->dev.parent->of_node);
|
||||
np = pdev->dev.parent->of_node;
|
||||
if (!of_device_is_compatible(np, "aspeed,ast2400-lpc-v2") &&
|
||||
!of_device_is_compatible(np, "aspeed,ast2500-lpc-v2") &&
|
||||
!of_device_is_compatible(np, "aspeed,ast2600-lpc-v2")) {
|
||||
dev_err(dev, "unsupported LPC device binding\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
lpc_snoop->regmap = syscon_node_to_regmap(np);
|
||||
if (IS_ERR(lpc_snoop->regmap)) {
|
||||
dev_err(dev, "Couldn't get regmap\n");
|
||||
return -ENODEV;
|
||||
|
Loading…
Reference in New Issue
Block a user