mirror of
https://github.com/torvalds/linux.git
synced 2026-04-25 10:02:31 -04:00
The ASpeed lpc-snoop nodes have a "clocks" property which isn't documented. It looks like all the LPC child devices have the same clock source. Perhaps it is the parent device that should have the clock, but it's too late for that. The driver for lpc-snoop requires a clock to be present. Signed-off-by: "Rob Herring (Arm)" <robh@kernel.org> Acked-by: Andrew Jeffery <andrew@codeconstruct.com.au> Link: https://lore.kernel.org/r/20250807132909.3291770-1-robh@kernel.org Signed-off-by: Lee Jones <lee@kernel.org>
203 lines
5.2 KiB
YAML
203 lines
5.2 KiB
YAML
# 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>;
|
|
};
|
|
};
|