# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# # Copyright (c) 2021 Aspeed Tehchnology 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 enableing 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

      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>;
        };
    };
