# 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 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

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