From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Date: Tue, 20 Dec 2011 21:16:13 +0100 Subject: [U-Boot] [PATCH v3 0/4] mmc: Implement central card-detection. In-Reply-To: <201112201231.10509.vapier@gentoo.org> References: <1324371163-12096-1-git-send-email-thierry.reding@avionic-design.de> <201112201231.10509.vapier@gentoo.org> Message-ID: <20111220201613.GA29763@avionic-0098.mockup.avionic-design.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de * 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 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: not available URL: