On Mon, Apr 28, 2014 at 11:31:03AM +0200, Ulf Hansson wrote: > On 28 April 2014 11:13, Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> wrote: > > On Sat, Apr 19, 2014 at 11:59:18PM +0200, Daniel Willmann wrote: > >> Return -ENOSYS in get_cd if broken-cd is specified in the device tree. > >> > >> Commit a91fe279ae75 (mmc: mxs: use standard flag for broken card > >> detection) sets MMC_CAP_NEEDS_POLL when broken-cd is specified. This > >> driver sets this flag unconditionally as it does not support a card > >> detect interrupt. Instead, broken-cd means that there is no card detect > >> signal connected. > >> > >> The mmc core checks the get_cd function return value to determine if a > >> card is present. Only for a non-zero return value it will attempt to > >> initialize the card. So retuning -ENOSYS will allow the card to be > >> initialized. > >> For comparison, mmc_gpio_get_cd in slot-gpio.c also returns -ENOSYS if > >> the card detect GPIO is not valid. > > > > Short answer for fixing this regression: > > > > Acked-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > > > > Long answer: > > > > This is broken in the MMC OF parser. When the parser finds the > > 'broken-cd' property it just sets the MMC_CAP_NEEDS_POLL flag. This is > > wrong. broken-cd means that we cannot rely on any card detection, but > > instead have to talk to the card to find out if it's available. > > Currently there is no flag to signal this situation, so the host driver > > has to handle this by returning true in the get_cd callback, just like > > the patch below does. > > > > IMO the correct solution would be to add a MMC_CAP_CD_NEEDS_TALK_TO_CARD > > flag to the core. > > > > So if I understand correct, you want the host-ops->get_cd function to > be invoked from the mmc rescan - only when it actually can provide > useful information? Yes. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html