diff options
author | ian <ian@FreeBSD.org> | 2014-05-18 00:15:48 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2014-05-18 00:15:48 +0000 |
commit | 407aec60d3fc9b7b4504b70997feac179121e5a0 (patch) | |
tree | af2d28663fd64832df29e20804ca1a5f07770a48 /sys | |
parent | 5a2fe5ecc4088671b3a2ecf7f56ccf246677e0a9 (diff) | |
download | FreeBSD-src-407aec60d3fc9b7b4504b70997feac179121e5a0.zip FreeBSD-src-407aec60d3fc9b7b4504b70997feac179121e5a0.tar.gz |
MFC 265208: Honor the max-frequency property if it appears in the fdt data.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/boot/fdt/dts/arm/exynos5250.dtsi | 8 | ||||
-rw-r--r-- | sys/boot/fdt/dts/arm/zedboard.dts | 2 | ||||
-rw-r--r-- | sys/dev/sdhci/sdhci_fdt.c | 16 |
3 files changed, 16 insertions, 10 deletions
diff --git a/sys/boot/fdt/dts/arm/exynos5250.dtsi b/sys/boot/fdt/dts/arm/exynos5250.dtsi index 55246ea..3d2e6bc 100644 --- a/sys/boot/fdt/dts/arm/exynos5250.dtsi +++ b/sys/boot/fdt/dts/arm/exynos5250.dtsi @@ -126,7 +126,7 @@ reg = <0x12200000 0x1000>; interrupts = <107>; interrupt-parent = <&GIC>; - clock-frequency = <24000000>; /* TODO: verify freq */ + max-frequency = <24000000>; /* TODO: verify freq */ }; sdhci@12210000 { @@ -134,7 +134,7 @@ reg = <0x12210000 0x1000>; interrupts = <108>; interrupt-parent = <&GIC>; - clock-frequency = <24000000>; + max-frequency = <24000000>; }; sdhci@12220000 { @@ -142,7 +142,7 @@ reg = <0x12220000 0x1000>; interrupts = <109>; interrupt-parent = <&GIC>; - clock-frequency = <24000000>; + max-frequency = <24000000>; }; sdhci@12230000 { @@ -150,7 +150,7 @@ reg = <0x12230000 0x1000>; interrupts = <110>; interrupt-parent = <&GIC>; - clock-frequency = <24000000>; + max-frequency = <24000000>; }; serial0: serial@12C00000 { diff --git a/sys/boot/fdt/dts/arm/zedboard.dts b/sys/boot/fdt/dts/arm/zedboard.dts index a95a2f7..2d9fccd 100644 --- a/sys/boot/fdt/dts/arm/zedboard.dts +++ b/sys/boot/fdt/dts/arm/zedboard.dts @@ -183,7 +183,7 @@ reg = <0x100000 0x1000>; interrupts = <56>; interrupt-parent = <&GIC>; - clock-frequency = <50000000>; + max-frequency = <50000000>; }; // QSPI diff --git a/sys/dev/sdhci/sdhci_fdt.c b/sys/dev/sdhci/sdhci_fdt.c index 65eac6d..6a3d702 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; |