Module Name: src Committed By: jmcneill Date: Sat Apr 22 17:41:20 UTC 2017
Modified Files: src/sys/arch/arm/nvidia: tegra_sdhc.c Log Message: Set parent clock rate to 100MHz when SDR104 is disabled To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/nvidia/tegra_sdhc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/nvidia/tegra_sdhc.c diff -u src/sys/arch/arm/nvidia/tegra_sdhc.c:1.17 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.18 --- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.17 Sun Apr 16 13:27:19 2017 +++ src/sys/arch/arm/nvidia/tegra_sdhc.c Sat Apr 22 17:41:20 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: tegra_sdhc.c,v 1.17 2017/04/16 13:27:19 jmcneill Exp $ */ +/* $NetBSD: tegra_sdhc.c,v 1.18 2017/04/22 17:41:20 jmcneill Exp $ */ /*- * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca> @@ -26,10 +26,12 @@ * SUCH DAMAGE. */ +#define TEGRA_SDHC_NO_SDR104 + #include "locators.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.17 2017/04/16 13:27:19 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.18 2017/04/22 17:41:20 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -124,6 +126,7 @@ tegra_sdhc_attach(device_t parent, devic } sc->sc_bsz = size; +#ifdef TEGRA_SDHC_NO_SDR104 /* XXX SDR104 requires a custom tuning method on Tegra K1 */ sc->sc.sc_flags |= SDHC_FLAG_HOSTCAPS; sc->sc.sc_caps = bus_space_read_4(sc->sc_bst, sc->sc_bsh, @@ -131,6 +134,7 @@ tegra_sdhc_attach(device_t parent, devic sc->sc.sc_caps2 = bus_space_read_4(sc->sc_bst, sc->sc_bsh, SDHC_CAPABILITIES2); sc->sc.sc_caps2 &= ~SDHC_SDR104_SUPP; +#endif sc->sc_pin_power = fdtbus_gpio_acquire(faa->faa_phandle, "power-gpios", GPIO_PIN_OUTPUT); @@ -162,7 +166,11 @@ tegra_sdhc_attach(device_t parent, devic } fdtbus_reset_assert(sc->sc_rst); +#ifdef TEGRA_SDHC_NO_SDR104 + error = clk_set_rate(sc->sc_clk, 100000000); +#else error = clk_set_rate(sc->sc_clk, 204000000); +#endif if (error) { aprint_error(": couldn't set frequency: %d\n", error); return; @@ -177,7 +185,7 @@ tegra_sdhc_attach(device_t parent, devic sc->sc.sc_clkbase = clk_get_rate(sc->sc_clk) / 1000; aprint_naive("\n"); - aprint_normal(": SDMMC\n"); + aprint_normal(": SDMMC (%u kHz)\n", sc->sc.sc_clkbase); if (sc->sc.sc_clkbase == 0) { aprint_error_dev(self, "couldn't determine frequency\n");