aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/sdhci/sdhci_fdt.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/sdhci/sdhci_fdt.c')
-rw-r--r--sys/dev/sdhci/sdhci_fdt.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/sys/dev/sdhci/sdhci_fdt.c b/sys/dev/sdhci/sdhci_fdt.c
index 65eac6df8b6a..6a3d702a4c4f 100644
--- a/sys/dev/sdhci/sdhci_fdt.c
+++ b/sys/dev/sdhci/sdhci_fdt.c
@@ -66,6 +66,7 @@ struct sdhci_fdt_softc {
device_t dev; /* Controller device */
u_int quirks; /* Chip specific quirks */
u_int caps; /* If we override SDHCI_CAPABILITIES */
+ uint32_t max_clk; /* Max possible freq */
struct resource *irq_res; /* IRQ resource */
void *intrhand; /* Interrupt handle */
@@ -156,6 +157,7 @@ sdhci_fdt_probe(device_t dev)
sc->quirks = 0;
sc->num_slots = 1;
+ sc->max_clk = 0;
if (!ofw_bus_status_okay(dev))
return (ENXIO);
@@ -170,11 +172,14 @@ sdhci_fdt_probe(device_t dev)
node = ofw_bus_get_node(dev);
- /* Allow dts to patch quirks and slots. */
- if ((OF_getprop(node, "quirks", &cid, sizeof(cid))) > 0)
- sc->quirks = fdt32_to_cpu(cid);
- if ((OF_getprop(node, "num-slots", &cid, sizeof(cid))) > 0)
- sc->num_slots = fdt32_to_cpu(cid);
+ /* Allow dts to patch quirks, slots, and max-frequency. */
+ if ((OF_getencprop(node, "quirks", &cid, sizeof(cid))) > 0)
+ sc->quirks = cid;
+ if ((OF_getencprop(node, "num-slots", &cid, sizeof(cid))) > 0)
+ sc->num_slots = cid;
+ if ((OF_getencprop(node, "max-frequency", &cid, sizeof(cid))) > 0)
+ sc->max_clk = cid;
+
return (0);
}
@@ -214,6 +219,7 @@ sdhci_fdt_attach(device_t dev)
slot->quirks = sc->quirks;
slot->caps = sc->caps;
+ slot->max_clk = sc->max_clk;
if (sdhci_init_slot(dev, slot, i) != 0)
continue;