1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-or-later
2c66ec88fSEmmanuel Vadot# Copyright 2019 IBM Corp.
3c66ec88fSEmmanuel Vadot%YAML 1.2
4c66ec88fSEmmanuel Vadot---
5c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/mmc/aspeed,sdhci.yaml#
6c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
7c66ec88fSEmmanuel Vadot
8c66ec88fSEmmanuel Vadottitle: ASPEED SD/SDIO/MMC Controller
9c66ec88fSEmmanuel Vadot
10c66ec88fSEmmanuel Vadotmaintainers:
11c66ec88fSEmmanuel Vadot  - Andrew Jeffery <andrew@aj.id.au>
12c66ec88fSEmmanuel Vadot  - Ryan Chen <ryanchen.aspeed@gmail.com>
13c66ec88fSEmmanuel Vadot
14c66ec88fSEmmanuel Vadotdescription: |+
15c66ec88fSEmmanuel Vadot  The ASPEED SD/SDIO/eMMC controller exposes two slots implementing the SDIO
16c66ec88fSEmmanuel Vadot  Host Specification v2.00, with 1 or 4 bit data buses, or an 8 bit data bus if
17c66ec88fSEmmanuel Vadot  only a single slot is enabled.
18c66ec88fSEmmanuel Vadot
19c66ec88fSEmmanuel Vadot  The two slots are supported by a common configuration area. As the SDHCIs for
20c66ec88fSEmmanuel Vadot  the slots are dependent on the common configuration area, they are described
21c66ec88fSEmmanuel Vadot  as child nodes.
22c66ec88fSEmmanuel Vadot
23c66ec88fSEmmanuel Vadotproperties:
24c66ec88fSEmmanuel Vadot  compatible:
25c66ec88fSEmmanuel Vadot    enum:
26c66ec88fSEmmanuel Vadot      - aspeed,ast2400-sd-controller
27c66ec88fSEmmanuel Vadot      - aspeed,ast2500-sd-controller
28c66ec88fSEmmanuel Vadot      - aspeed,ast2600-sd-controller
29c66ec88fSEmmanuel Vadot  reg:
30c66ec88fSEmmanuel Vadot    maxItems: 1
31c66ec88fSEmmanuel Vadot    description: Common configuration registers
32c66ec88fSEmmanuel Vadot  "#address-cells":
33c66ec88fSEmmanuel Vadot    const: 1
34c66ec88fSEmmanuel Vadot  "#size-cells":
35c66ec88fSEmmanuel Vadot    const: 1
36c66ec88fSEmmanuel Vadot  ranges: true
37c66ec88fSEmmanuel Vadot  clocks:
38c66ec88fSEmmanuel Vadot    maxItems: 1
39c66ec88fSEmmanuel Vadot    description: The SD/SDIO controller clock gate
40c66ec88fSEmmanuel Vadot
41c66ec88fSEmmanuel VadotpatternProperties:
42c66ec88fSEmmanuel Vadot  "^sdhci@[0-9a-f]+$":
43c66ec88fSEmmanuel Vadot    type: object
44c66ec88fSEmmanuel Vadot    $ref: mmc-controller.yaml
45*fac71e4eSEmmanuel Vadot    unevaluatedProperties: false
46c66ec88fSEmmanuel Vadot
47c66ec88fSEmmanuel Vadot    properties:
48c66ec88fSEmmanuel Vadot      compatible:
49c66ec88fSEmmanuel Vadot        enum:
50c66ec88fSEmmanuel Vadot          - aspeed,ast2400-sdhci
51c66ec88fSEmmanuel Vadot          - aspeed,ast2500-sdhci
52c66ec88fSEmmanuel Vadot          - aspeed,ast2600-sdhci
53c66ec88fSEmmanuel Vadot      reg:
54c66ec88fSEmmanuel Vadot        maxItems: 1
55c66ec88fSEmmanuel Vadot        description: The SDHCI registers
56c66ec88fSEmmanuel Vadot      clocks:
57c66ec88fSEmmanuel Vadot        maxItems: 1
58c66ec88fSEmmanuel Vadot        description: The SD bus clock
59c66ec88fSEmmanuel Vadot      interrupts:
60c66ec88fSEmmanuel Vadot        maxItems: 1
61c66ec88fSEmmanuel Vadot        description: The SD interrupt shared between both slots
62c66ec88fSEmmanuel Vadot      sdhci,auto-cmd12:
63c66ec88fSEmmanuel Vadot        type: boolean
64c66ec88fSEmmanuel Vadot        description: Specifies that controller should use auto CMD12
65c66ec88fSEmmanuel Vadot    required:
66c66ec88fSEmmanuel Vadot      - compatible
67c66ec88fSEmmanuel Vadot      - reg
68c66ec88fSEmmanuel Vadot      - clocks
69c66ec88fSEmmanuel Vadot      - interrupts
70c66ec88fSEmmanuel Vadot
71c66ec88fSEmmanuel VadotadditionalProperties: false
72c66ec88fSEmmanuel Vadot
73c66ec88fSEmmanuel Vadotrequired:
74c66ec88fSEmmanuel Vadot  - compatible
75c66ec88fSEmmanuel Vadot  - reg
76c66ec88fSEmmanuel Vadot  - "#address-cells"
77c66ec88fSEmmanuel Vadot  - "#size-cells"
78c66ec88fSEmmanuel Vadot  - ranges
79c66ec88fSEmmanuel Vadot  - clocks
80c66ec88fSEmmanuel Vadot
81c66ec88fSEmmanuel Vadotexamples:
82c66ec88fSEmmanuel Vadot  - |
83c66ec88fSEmmanuel Vadot    #include <dt-bindings/clock/aspeed-clock.h>
84c66ec88fSEmmanuel Vadot    sdc@1e740000 {
85c66ec88fSEmmanuel Vadot            compatible = "aspeed,ast2500-sd-controller";
86c66ec88fSEmmanuel Vadot            reg = <0x1e740000 0x100>;
87c66ec88fSEmmanuel Vadot            #address-cells = <1>;
88c66ec88fSEmmanuel Vadot            #size-cells = <1>;
89c66ec88fSEmmanuel Vadot            ranges = <0 0x1e740000 0x20000>;
90c66ec88fSEmmanuel Vadot            clocks = <&syscon ASPEED_CLK_GATE_SDCLK>;
91c66ec88fSEmmanuel Vadot
92c66ec88fSEmmanuel Vadot            sdhci0: sdhci@100 {
93c66ec88fSEmmanuel Vadot                    compatible = "aspeed,ast2500-sdhci";
94c66ec88fSEmmanuel Vadot                    reg = <0x100 0x100>;
95c66ec88fSEmmanuel Vadot                    interrupts = <26>;
96c66ec88fSEmmanuel Vadot                    sdhci,auto-cmd12;
97c66ec88fSEmmanuel Vadot                    clocks = <&syscon ASPEED_CLK_SDIO>;
98c66ec88fSEmmanuel Vadot            };
99c66ec88fSEmmanuel Vadot
100c66ec88fSEmmanuel Vadot            sdhci1: sdhci@200 {
101c66ec88fSEmmanuel Vadot                    compatible = "aspeed,ast2500-sdhci";
102c66ec88fSEmmanuel Vadot                    reg = <0x200 0x100>;
103c66ec88fSEmmanuel Vadot                    interrupts = <26>;
104c66ec88fSEmmanuel Vadot                    sdhci,auto-cmd12;
105c66ec88fSEmmanuel Vadot                    clocks = <&syscon ASPEED_CLK_SDIO>;
106c66ec88fSEmmanuel Vadot            };
107c66ec88fSEmmanuel Vadot    };
108