Re: [PATCH 1/2] dt-bindings: mmc: Document Aspeed SD controller
From: Rob Herring <robh+dt@kernel.org>
Date: 2019-07-10 15:50:01
Also in:
linux-arm-kernel, linux-aspeed, linux-mmc, lkml
On Wed, Jul 10, 2019 at 8:16 AM Andrew Jeffery [off-list ref] wrote:
The ASPEED SD/SDIO/eMMC controller exposes two slots implementing the SDIO Host Specification v2.00, with 1 or 4 bit data buses, or an 8 bit data bus if only a single slot is enabled. Signed-off-by: Andrew Jeffery <redacted> --- .../bindings/mmc/sdhci-of-aspeed.yaml | 91 +++++++++++++++++++
aspeed,sdhci.yaml
quoted hunk ↗ jump to hunk
1 file changed, 91 insertions(+) create mode 100644 Documentation/devicetree/bindings/mmc/sdhci-of-aspeed.yamldiff --git a/Documentation/devicetree/bindings/mmc/sdhci-of-aspeed.yaml b/Documentation/devicetree/bindings/mmc/sdhci-of-aspeed.yaml new file mode 100644 index 000000000000..e98a2ac4d46d --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/sdhci-of-aspeed.yaml@@ -0,0 +1,91 @@ +# SPDX-License-Identifier: GPL-2.0-or-later
The preferred license is (GPL-2.0 OR BSD-2-Clause) if that is okay with you.
+%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mmc/sdhci-of-aspeed.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: ASPEED SD/SDIO/eMMC Controller + +maintainers: + - Andrew Jeffery [off-list ref] + - Ryan Chen [off-list ref] + +description: |+ + The ASPEED SD/SDIO/eMMC controller exposes two slots implementing the SDIO + Host Specification v2.00, with 1 or 4 bit data buses, or an 8 bit data bus if + only a single slot is enabled. + + The two slots are supported by a common configuration area. As the SDHCIs for + the slots are dependent on the common configuration area, they are described + as child nodes. + +properties: + compatible: + enum: [ aspeed,ast2400-sdc, aspeed,ast2500-sdc ] + reg: + description: Common configuration registers
This should have a 'maxItems: 1'. Same for the child reg.
+ ranges: true + clocks: + maxItems: 1 + description: The SD/SDIO controller clock gate + sdhci:
This needs to be a pattern (under patternProperties) as these have unit-addresses.
+ type: object + properties: + compatible: + allOf: + - enum: [ aspeed,ast2400-sdhci, aspeed,ast2500-sdhci ] + - const: sdhci
This condition can never be true. What you need is s/allOf/items/. However, 'sdhci' is not really a useful compatible because every implementation has quirks, so I'd drop it.
+ reg: + description: The SDHCI registers + clocks: + maxItems: 1 + description: The SD bus clock + slot: + allOf: + - $ref: /schemas/types.yaml#/definitions/uint32 + - enum: [0, 1]
Is this really needed? Offset 0x100 is slot 0 and offset 0x200 is slot 1. Does that ever change?
+ interrupts: + maxItems: 1 + description: The SD interrupt shared between both slots + required: + - compatible + - reg + - clocks + - slot + - interrupts + +required: + - compatible + - reg + - ranges + - clocks
#address-cells and #size-cells are required too. You should also add 'additionalProperties: false' here so other random properties can't be present.
+
+examples:
+ - |
+ #include <dt-bindings/clock/aspeed-clock.h>
+ sdc@1e740000 {
+ compatible = "aspeed,ast2500-sdc";
+ reg = <0x1e740000 0x100>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;It's preferred to limit the range here and then the child addresses are 0x100 and 0x200.
+ clocks = <&syscon ASPEED_CLK_GATE_SDCLK>;
+
+ sdhci0: sdhci@1e740100 {
+ compatible = "aspeed,ast2500-sdhci", "sdhci";
+ reg = <0x1e740100 0x100>;
+ slot = <0>;
+ interrupts = <26>;
+ sdhci,auto-cmd12;
+ clocks = <&syscon ASPEED_CLK_SDIO>;
+ };
+
+ sdhci1: sdhci@1e740200 {
+ compatible = "aspeed,ast2500-sdhci", "sdhci";
+ reg = <0x1e740200 0x100>;
+ slot = <1>;
+ interrupts = <26>;
+ sdhci,auto-cmd12;
+ clocks = <&syscon ASPEED_CLK_SDIO>;
+ };
+ };
--
2.20.1