1e880275cSAndrew Jeffery# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2e880275cSAndrew Jeffery%YAML 1.2
3e880275cSAndrew Jeffery---
4e880275cSAndrew Jeffery$id: http://devicetree.org/schemas/ipmi/aspeed,ast2400-kcs-bmc.yaml#
5e880275cSAndrew Jeffery$schema: http://devicetree.org/meta-schemas/core.yaml#
6e880275cSAndrew Jeffery
7e880275cSAndrew Jefferytitle: ASPEED BMC KCS Devices
8e880275cSAndrew Jeffery
9e880275cSAndrew Jefferymaintainers:
10e880275cSAndrew Jeffery  - Andrew Jeffery <andrew@aj.id.au>
11e880275cSAndrew Jeffery
12e880275cSAndrew Jefferydescription: |
13e880275cSAndrew Jeffery  The Aspeed BMC SoCs typically use the Keyboard-Controller-Style (KCS)
14e880275cSAndrew Jeffery  interfaces on the LPC bus for in-band IPMI communication with their host.
15e880275cSAndrew Jeffery
16e880275cSAndrew Jefferyproperties:
17e880275cSAndrew Jeffery  compatible:
18e880275cSAndrew Jeffery    oneOf:
19e880275cSAndrew Jeffery      - description: Channel ID derived from reg
20e880275cSAndrew Jeffery        items:
21e880275cSAndrew Jeffery          enum:
22e880275cSAndrew Jeffery            - aspeed,ast2400-kcs-bmc-v2
23e880275cSAndrew Jeffery            - aspeed,ast2500-kcs-bmc-v2
24e880275cSAndrew Jeffery            - aspeed,ast2600-kcs-bmc
25e880275cSAndrew Jeffery
26e880275cSAndrew Jeffery      - description: Old-style with explicit channel ID, no reg
27e880275cSAndrew Jeffery        deprecated: true
28e880275cSAndrew Jeffery        items:
29e880275cSAndrew Jeffery          enum:
30e880275cSAndrew Jeffery            - aspeed,ast2400-kcs-bmc
31e880275cSAndrew Jeffery            - aspeed,ast2500-kcs-bmc
32e880275cSAndrew Jeffery
33e880275cSAndrew Jeffery  interrupts:
34e880275cSAndrew Jeffery    maxItems: 1
35e880275cSAndrew Jeffery
36e880275cSAndrew Jeffery  reg:
37e880275cSAndrew Jeffery    # maxItems: 3
38e880275cSAndrew Jeffery    items:
39e880275cSAndrew Jeffery      - description: IDR register
40e880275cSAndrew Jeffery      - description: ODR register
41e880275cSAndrew Jeffery      - description: STR register
42e880275cSAndrew Jeffery
43e880275cSAndrew Jeffery  aspeed,lpc-io-reg:
44*45698208SRob Herring    $ref: /schemas/types.yaml#/definitions/uint32-array
45e880275cSAndrew Jeffery    minItems: 1
46e880275cSAndrew Jeffery    maxItems: 2
47e880275cSAndrew Jeffery    description: |
48e880275cSAndrew Jeffery      The host CPU LPC IO data and status addresses for the device. For most
49e880275cSAndrew Jeffery      channels the status address is derived from the data address, but the
50e880275cSAndrew Jeffery      status address may be optionally provided.
51e880275cSAndrew Jeffery
52a7fd43d9SAndrew Jeffery  aspeed,lpc-interrupts:
53*45698208SRob Herring    $ref: /schemas/types.yaml#/definitions/uint32-array
54a7fd43d9SAndrew Jeffery    minItems: 2
55a7fd43d9SAndrew Jeffery    maxItems: 2
56a7fd43d9SAndrew Jeffery    description: |
57a7fd43d9SAndrew Jeffery      A 2-cell property expressing the LPC SerIRQ number and the interrupt
58a7fd43d9SAndrew Jeffery      level/sense encoding (specified in the standard fashion).
59a7fd43d9SAndrew Jeffery
60a7fd43d9SAndrew Jeffery      Note that the generated interrupt is issued from the BMC to the host, and
61a7fd43d9SAndrew Jeffery      thus the target interrupt controller is not captured by the BMC's
62a7fd43d9SAndrew Jeffery      devicetree.
63a7fd43d9SAndrew Jeffery
64e880275cSAndrew Jeffery  kcs_chan:
65e880275cSAndrew Jeffery    deprecated: true
66*45698208SRob Herring    $ref: /schemas/types.yaml#/definitions/uint32
67e880275cSAndrew Jeffery    description: The LPC channel number in the controller
68e880275cSAndrew Jeffery
69e880275cSAndrew Jeffery  kcs_addr:
70e880275cSAndrew Jeffery    deprecated: true
71*45698208SRob Herring    $ref: /schemas/types.yaml#/definitions/uint32
72e880275cSAndrew Jeffery    description: The host CPU IO map address
73e880275cSAndrew Jeffery
74e880275cSAndrew Jefferyrequired:
75e880275cSAndrew Jeffery  - compatible
76e880275cSAndrew Jeffery  - interrupts
77e880275cSAndrew Jeffery
78e880275cSAndrew JefferyadditionalProperties: false
79e880275cSAndrew Jeffery
80e880275cSAndrew JefferyallOf:
81e880275cSAndrew Jeffery  - if:
82e880275cSAndrew Jeffery      properties:
83e880275cSAndrew Jeffery        compatible:
84e880275cSAndrew Jeffery          contains:
85e880275cSAndrew Jeffery            enum:
86e880275cSAndrew Jeffery              - aspeed,ast2400-kcs-bmc
87e880275cSAndrew Jeffery              - aspeed,ast2500-kcs-bmc
88e880275cSAndrew Jeffery    then:
89e880275cSAndrew Jeffery      required:
90e880275cSAndrew Jeffery        - kcs_chan
91e880275cSAndrew Jeffery        - kcs_addr
92e880275cSAndrew Jeffery    else:
93e880275cSAndrew Jeffery      required:
94e880275cSAndrew Jeffery        - reg
95e880275cSAndrew Jeffery        - aspeed,lpc-io-reg
96e880275cSAndrew Jeffery
97e880275cSAndrew Jefferyexamples:
98e880275cSAndrew Jeffery  - |
99a7fd43d9SAndrew Jeffery    #include <dt-bindings/interrupt-controller/irq.h>
100e880275cSAndrew Jeffery    kcs3: kcs@24 {
101e880275cSAndrew Jeffery        compatible = "aspeed,ast2600-kcs-bmc";
102e880275cSAndrew Jeffery        reg = <0x24 0x1>, <0x30 0x1>, <0x3c 0x1>;
103e880275cSAndrew Jeffery        aspeed,lpc-io-reg = <0xca2>;
104a7fd43d9SAndrew Jeffery        aspeed,lpc-interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
105e880275cSAndrew Jeffery        interrupts = <8>;
106e880275cSAndrew Jeffery    };
107