Re: [U-Boot] [PATCH v4 4/4] Tegra: MMC: Add DT support to MMCdriver for all T20 boards
Marc/Stephen, On Fri, Feb 15, 2013 at 9:42 AM, Marc Dietrich marvi...@gmx.de wrote: Stephen, On Thursday 14 February 2013 16:12:42 Stephen Warren wrote: On 02/14/2013 02:04 PM, Tom Warren wrote: tegra_mmc_init() now parses the DT info for bus width, WP/CD GPIOs, etc. Tested on Seaboard, fully functional. Tamonten boards (medcom-wide, plutux, and tec) use a different/new dtsi file w/common settings. diff --git a/drivers/mmc/tegra_mmc.c b/drivers/mmc/tegra_mmc.c @@ -515,44 +483,47 @@ static int mmc_core_init(struct mmc *mmc) int tegra_mmc_getcd(struct mmc *mmc) { struct mmc_host *host = (struct mmc_host *)mmc-priv; + debug(%s called, host-cd_gpio = 0x%08X\n, __func__, + (unsigned)host-cd_gpio); That last line should be: host-cd_gpio.gpio; The case is because it's a struct address, not the GPIO you want to print. +static int do_mmc_init(int dev_index) - if (host-pwr_gpio = 0) { + if (fdt_gpio_isvalid(host-pwr_gpio)) { sprintf(gpusage, SD/MMC%d PWR, dev_index); - gpio_request(host-pwr_gpio, gpusage); - gpio_direction_output(host-pwr_gpio, 1); + gpio_request(host-pwr_gpio.gpio, gpusage); + fdtdec_set_gpio(host-pwr_gpio, 1); That change completely removes the call to gpio_direction_output; fdtdec_set_gpio() doesn't do that. This is the cause of the problem on PAZ00, and Harmony. - if (host-cd_gpio = 0) { + if (fdt_gpio_isvalid(host-cd_gpio)) { sprintf(gpusage, SD/MMC%d CD, dev_index); - gpio_request(host-cd_gpio, gpusage); - gpio_direction_input(host-cd_gpio); + gpio_request(host-cd_gpio.gpio, gpusage); + card_det = fdtdec_get_gpio(host-cd_gpio); Similarly, this change removes the call to gpio_direction_input(); fdtdec_get_gpio() just reads the GPIO's value and is pointless here. I'll go retest all the boards after fixing that... yup - with these changes, everything is fine again on PAZ00. Thanks, guys. I'll roll out a v5 patchset later today. Tom Marc ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v4 4/4] Tegra: MMC: Add DT support to MMCdriver for all T20 boards
Stephen, On Thursday 14 February 2013 16:12:42 Stephen Warren wrote: On 02/14/2013 02:04 PM, Tom Warren wrote: tegra_mmc_init() now parses the DT info for bus width, WP/CD GPIOs, etc. Tested on Seaboard, fully functional. Tamonten boards (medcom-wide, plutux, and tec) use a different/new dtsi file w/common settings. diff --git a/drivers/mmc/tegra_mmc.c b/drivers/mmc/tegra_mmc.c @@ -515,44 +483,47 @@ static int mmc_core_init(struct mmc *mmc) int tegra_mmc_getcd(struct mmc *mmc) { struct mmc_host *host = (struct mmc_host *)mmc-priv; + debug(%s called, host-cd_gpio = 0x%08X\n, __func__, + (unsigned)host-cd_gpio); That last line should be: host-cd_gpio.gpio; The case is because it's a struct address, not the GPIO you want to print. +static int do_mmc_init(int dev_index) - if (host-pwr_gpio = 0) { + if (fdt_gpio_isvalid(host-pwr_gpio)) { sprintf(gpusage, SD/MMC%d PWR, dev_index); - gpio_request(host-pwr_gpio, gpusage); - gpio_direction_output(host-pwr_gpio, 1); + gpio_request(host-pwr_gpio.gpio, gpusage); + fdtdec_set_gpio(host-pwr_gpio, 1); That change completely removes the call to gpio_direction_output; fdtdec_set_gpio() doesn't do that. This is the cause of the problem on PAZ00, and Harmony. - if (host-cd_gpio = 0) { + if (fdt_gpio_isvalid(host-cd_gpio)) { sprintf(gpusage, SD/MMC%d CD, dev_index); - gpio_request(host-cd_gpio, gpusage); - gpio_direction_input(host-cd_gpio); + gpio_request(host-cd_gpio.gpio, gpusage); + card_det = fdtdec_get_gpio(host-cd_gpio); Similarly, this change removes the call to gpio_direction_input(); fdtdec_get_gpio() just reads the GPIO's value and is pointless here. I'll go retest all the boards after fixing that... yup - with these changes, everything is fine again on PAZ00. Marc ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot