From: Nick Hawkins <nick.hawkins@hpe.com>
Add the 'hpe,gsc-dwcmshc' compatible string for the HPE GSC (ARM64
Cortex-A53) BMC SoC eMMC controller.
The HPE GSC requires access to the MSHCCS register in the SoC system
register block to configure SCG sync disable (bit 18) for HS200 RX
delay-line phase selection. The existing 'hpe,gxp-sysreg' syscon
phandle is required for this compatible to access MSHCCS via regmap.
The HPE GSC eMMC interface only exposes a single 'core' clock (no
bus clock), so clocks/clock-names are constrained to a single item.
Add an example node with the hpe,gxp-sysreg syscon reference.
Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
---
.../bindings/mmc/snps,dwcmshc-sdhci.yaml | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml b/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml
index 7e7c55dc2440..74734d46c70d 100644
--- a/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml
+++ b/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml
@@ -23,6 +23,7 @@ properties:
- const: sophgo,sg2044-dwcmshc
- const: sophgo,sg2042-dwcmshc
- enum:
+ - hpe,gsc-dwcmshc
- rockchip,rk3568-dwcmshc
- rockchip,rk3588-dwcmshc
- snps,dwcmshc-sdhci
@@ -77,6 +78,13 @@ properties:
description: Specifies the drive impedance in Ohm.
enum: [33, 40, 50, 66, 100]
+ hpe,gxp-sysreg:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ Phandle to the HPE GXP SoC system register block (syscon).
+ The driver accesses the MSHCCS register at offset 0x110 within
+ this block to configure clock synchronisation for HS200 tuning.
+
required:
- compatible
- reg
@@ -87,6 +95,23 @@ required:
allOf:
- $ref: mmc-controller.yaml#
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: hpe,gsc-dwcmshc
+
+ then:
+ properties:
+ clocks:
+ items:
+ - description: core clock
+ clock-names:
+ items:
+ - const: core
+ required:
+ - hpe,gxp-sysreg
+
- if:
properties:
compatible:
@@ -190,5 +215,16 @@ examples:
#address-cells = <1>;
#size-cells = <0>;
};
+ - |
+ mmc@c0100000 {
+ compatible = "hpe,gsc-dwcmshc";
+ reg = <0xc0100000 0x1000>;
+ interrupts = <0 17 0x4>;
+ clocks = <&emmcclk>;
+ clock-names = "core";
+ hpe,gxp-sysreg = <&soc_ctrl>;
+ bus-width = <8>;
+ non-removable;
+ };
...
--
2.34.1
On Wed, Mar 11, 2026 at 01:11:11PM -0500, nick.hawkins@hpe.com wrote:
> From: Nick Hawkins <nick.hawkins@hpe.com>
>
> Add the 'hpe,gsc-dwcmshc' compatible string for the HPE GSC (ARM64
> Cortex-A53) BMC SoC eMMC controller.
>
> The HPE GSC requires access to the MSHCCS register in the SoC system
> register block to configure SCG sync disable (bit 18) for HS200 RX
> delay-line phase selection. The existing 'hpe,gxp-sysreg' syscon
> phandle is required for this compatible to access MSHCCS via regmap.
>
> The HPE GSC eMMC interface only exposes a single 'core' clock (no
> bus clock), so clocks/clock-names are constrained to a single item.
>
> Add an example node with the hpe,gxp-sysreg syscon reference.
Difference in one property does not warrant new example as there are
already two examples (two are enough usually). Drop.
>
> Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
> ---
> .../bindings/mmc/snps,dwcmshc-sdhci.yaml | 36 +++++++++++++++++++
> 1 file changed, 36 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml b/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml
> index 7e7c55dc2440..74734d46c70d 100644
> --- a/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml
> +++ b/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml
> @@ -23,6 +23,7 @@ properties:
> - const: sophgo,sg2044-dwcmshc
> - const: sophgo,sg2042-dwcmshc
> - enum:
> + - hpe,gsc-dwcmshc
> - rockchip,rk3568-dwcmshc
> - rockchip,rk3588-dwcmshc
> - snps,dwcmshc-sdhci
> @@ -77,6 +78,13 @@ properties:
> description: Specifies the drive impedance in Ohm.
> enum: [33, 40, 50, 66, 100]
>
> + hpe,gxp-sysreg:
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description:
> + Phandle to the HPE GXP SoC system register block (syscon).
> + The driver accesses the MSHCCS register at offset 0x110 within
> + this block to configure clock synchronisation for HS200 tuning.
You need only one reg, from that syscon, so you should pass it as
argument:
https://elixir.bootlin.com/linux/v5.18-rc1/source/Documentation/devicetree/bindings/soc/samsung/exynos-usi.yaml#L42
> +
> required:
> - compatible
> - reg
> @@ -87,6 +95,23 @@ required:
> allOf:
> - $ref: mmc-controller.yaml#
>
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: hpe,gsc-dwcmshc
> +
> + then:
> + properties:
> + clocks:
> + items:
> + - description: core clock
> + clock-names:
> + items:
> + - const: core
> + required:
> + - hpe,gxp-sysreg
else:
properties:
hpe,gxp-sysreg: false
Best regards,
Krzysztof
© 2016 - 2026 Red Hat, Inc.