Zynq-7000 has a variant of Arasan SD controller that is not recognized
by the fdt glue. The diff below fixes this.

The controller's capabilities register lacks the base clock frequency.
The attachment glue has to provide this parameter.

OK?

Index: dev/fdt/sdhc_fdt.c
===================================================================
RCS file: src/sys/dev/fdt/sdhc_fdt.c,v
retrieving revision 1.15
diff -u -p -r1.15 sdhc_fdt.c
--- dev/fdt/sdhc_fdt.c  5 Apr 2021 09:31:45 -0000       1.15
+++ dev/fdt/sdhc_fdt.c  2 May 2021 14:07:45 -0000
@@ -126,6 +126,7 @@ sdhc_fdt_match(struct device *parent, vo
        struct fdt_attach_args *faa = aux;
 
        return (OF_is_compatible(faa->fa_node, "arasan,sdhci-5.1") ||
+           OF_is_compatible(faa->fa_node, "arasan,sdhci-8.9a") ||
            OF_is_compatible(faa->fa_node, "brcm,bcm2711-emmc2") ||
            OF_is_compatible(faa->fa_node, "brcm,bcm2835-sdhci") ||
            OF_is_compatible(faa->fa_node, "marvell,armada-3700-sdhci") ||
@@ -232,6 +233,11 @@ sdhc_fdt_attach(struct device *parent, s
                sc->sc.sc_flags |= SDHC_F_NODDR50;
        }
 
+       if (OF_is_compatible(faa->fa_node, "arasan,sdhci-8.9a")) {
+               freq = clock_get_frequency(faa->fa_node, "clk_xin");
+               sc->sc.sc_clkbase = (freq + 500) / 1000;
+       }
+
        if (OF_is_compatible(faa->fa_node, "brcm,bcm2711-emmc2"))
                sc->sc.sc_flags |= SDHC_F_NOPWR0;
 

Reply via email to