* Mike Frysinger wrote: > On Tuesday 20 December 2011 03:52:39 Thierry Reding wrote: > > This series of patches implements central card-detection within the MMC > > framework. Before this patch series, many boards actually did implement > > the board_mmc_getcd() function, but it wasn't used except by one driver > > (fsl_esdhc). Unfortunately, implementations interpreted the meaning of > > the cd parameter differently, some taking it to signal card absence and > > others using it to detect card presence. Furthermore, the signature of > > the board_mmc_getcd() function was not at all consistent with other MMC > > related functions. > > as you've seen, GPIO pin detection is not novel or unique to any driver/SoC. > i'd suggest instead finding a way to move this into "struct mmc". perhaps > something like: > > include/mmc.h: > struct mmc { > ... > #ifdef CONFIG_MMC_GPIO_CD > unsigned gpio_cd; > #endif > ... > }; > > and then the default mmc_register() func can do: > #ifdef CONFIG_MMC_GPIO_CD > if (!mmc->getcd) > mmc->getcd = mmc_getcd_gpio; > #endif > > and we can have the drivers/mmc/mmc.c: > #ifdef CONFIG_MMC_GPIO_CD > int mmc_getcd_gpio(struct mmc *mmc) > { > return !gpio_get_value(mmc->getcd); > } > #endif > > then mmc drivers can extend their register function to take a GPIO number (if > they don't already). and then they get everything else for free.
Yes, there is some potential for refactoring drivers, though only a very limited number of boards actually implement card-detection. I guess something like what you are proposing could be added on top of the series. That would hard-code the fact that card-detect GPIOs are always low-active, though. Can we live with that? If a board handles that differently they can always override the behaviour by specifying their own board_mmc_getcd(). Thierry
pgpgY7c9w0hJ1.pgp
Description: PGP signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot