xref: /linux/Documentation/devicetree/bindings/mmc/amlogic,meson-mx-sdio.yaml (revision 2bf717b07969b6d9e9ba5bccd3ac778e9aeaab18)
1*ea049a03SNeil Armstrong# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*ea049a03SNeil Armstrong%YAML 1.2
3*ea049a03SNeil Armstrong---
4*ea049a03SNeil Armstrong$id: http://devicetree.org/schemas/mmc/amlogic,meson-mx-sdio.yaml#
5*ea049a03SNeil Armstrong$schema: http://devicetree.org/meta-schemas/core.yaml#
6*ea049a03SNeil Armstrong
7*ea049a03SNeil Armstrongtitle: Amlogic Meson6, Meson8 and Meson8b SDIO/MMC controller
8*ea049a03SNeil Armstrong
9*ea049a03SNeil Armstrongdescription: |
10*ea049a03SNeil Armstrong  The highspeed MMC host controller on Amlogic SoCs provides an interface
11*ea049a03SNeil Armstrong  for MMC, SD, SDIO and SDHC types of memory cards.
12*ea049a03SNeil Armstrong
13*ea049a03SNeil Armstrong  Supported maximum speeds are the ones of the eMMC standard 4.41 as well
14*ea049a03SNeil Armstrong  as the speed of SD standard 2.0.
15*ea049a03SNeil Armstrong
16*ea049a03SNeil Armstrong  The hardware provides an internal "mux" which allows up to three slots
17*ea049a03SNeil Armstrong  to be controlled. Only one slot can be accessed at a time.
18*ea049a03SNeil Armstrong
19*ea049a03SNeil Armstrongmaintainers:
20*ea049a03SNeil Armstrong  - Neil Armstrong <neil.armstrong@linaro.org>
21*ea049a03SNeil Armstrong
22*ea049a03SNeil Armstrongproperties:
23*ea049a03SNeil Armstrong  compatible:
24*ea049a03SNeil Armstrong    items:
25*ea049a03SNeil Armstrong      - enum:
26*ea049a03SNeil Armstrong          - amlogic,meson8-sdio
27*ea049a03SNeil Armstrong          - amlogic,meson8b-sdio
28*ea049a03SNeil Armstrong      - const: amlogic,meson-mx-sdio
29*ea049a03SNeil Armstrong
30*ea049a03SNeil Armstrong  reg:
31*ea049a03SNeil Armstrong    maxItems: 1
32*ea049a03SNeil Armstrong
33*ea049a03SNeil Armstrong  interrupts:
34*ea049a03SNeil Armstrong    maxItems: 1
35*ea049a03SNeil Armstrong
36*ea049a03SNeil Armstrong  clocks:
37*ea049a03SNeil Armstrong    maxItems: 2
38*ea049a03SNeil Armstrong
39*ea049a03SNeil Armstrong  clock-names:
40*ea049a03SNeil Armstrong    items:
41*ea049a03SNeil Armstrong      - const: core
42*ea049a03SNeil Armstrong      - const: clkin
43*ea049a03SNeil Armstrong
44*ea049a03SNeil Armstrong  "#address-cells":
45*ea049a03SNeil Armstrong    const: 1
46*ea049a03SNeil Armstrong
47*ea049a03SNeil Armstrong  "#size-cells":
48*ea049a03SNeil Armstrong    const: 0
49*ea049a03SNeil Armstrong
50*ea049a03SNeil ArmstrongpatternProperties:
51*ea049a03SNeil Armstrong  "slot@[0-2]$":
52*ea049a03SNeil Armstrong    $ref: mmc-slot.yaml#
53*ea049a03SNeil Armstrong    description:
54*ea049a03SNeil Armstrong      A node for each slot provided by the MMC controller
55*ea049a03SNeil Armstrong
56*ea049a03SNeil Armstrong    properties:
57*ea049a03SNeil Armstrong      reg:
58*ea049a03SNeil Armstrong        enum: [0, 1, 2]
59*ea049a03SNeil Armstrong
60*ea049a03SNeil Armstrong      bus-width:
61*ea049a03SNeil Armstrong        enum: [1, 4]
62*ea049a03SNeil Armstrong
63*ea049a03SNeil Armstrong    unevaluatedProperties: false
64*ea049a03SNeil Armstrong
65*ea049a03SNeil Armstrongrequired:
66*ea049a03SNeil Armstrong  - compatible
67*ea049a03SNeil Armstrong  - reg
68*ea049a03SNeil Armstrong  - interrupts
69*ea049a03SNeil Armstrong  - clocks
70*ea049a03SNeil Armstrong  - clock-names
71*ea049a03SNeil Armstrong  - "#address-cells"
72*ea049a03SNeil Armstrong  - "#size-cells"
73*ea049a03SNeil Armstrong
74*ea049a03SNeil ArmstrongadditionalProperties: false
75*ea049a03SNeil Armstrong
76*ea049a03SNeil Armstrongexamples:
77*ea049a03SNeil Armstrong  - |
78*ea049a03SNeil Armstrong    #include <dt-bindings/interrupt-controller/irq.h>
79*ea049a03SNeil Armstrong    #include <dt-bindings/interrupt-controller/arm-gic.h>
80*ea049a03SNeil Armstrong    mmc@c1108c20 {
81*ea049a03SNeil Armstrong        compatible = "amlogic,meson8-sdio", "amlogic,meson-mx-sdio";
82*ea049a03SNeil Armstrong        reg = <0xc1108c20 0x20>;
83*ea049a03SNeil Armstrong        interrupts = <GIC_SPI 28 IRQ_TYPE_EDGE_RISING>;
84*ea049a03SNeil Armstrong        clocks = <&clk_core>, <&clk_in>;
85*ea049a03SNeil Armstrong        clock-names = "core", "clkin";
86*ea049a03SNeil Armstrong        #address-cells = <1>;
87*ea049a03SNeil Armstrong        #size-cells = <0>;
88*ea049a03SNeil Armstrong
89*ea049a03SNeil Armstrong        slot@1 {
90*ea049a03SNeil Armstrong            compatible = "mmc-slot";
91*ea049a03SNeil Armstrong            reg = <1>;
92*ea049a03SNeil Armstrong            bus-width = <4>;
93*ea049a03SNeil Armstrong        };
94*ea049a03SNeil Armstrong    };
95