On Thu, 15 Jan 2015, Roger Tseng wrote: > A card insertion happens after the lastest polling before reader is > suspended may never have a chance to be detected. Under current 1-HZ > polling interval setting in mmc_core, the worst case of such > undetectablility is about 1 second. > > To further reduce the undetectability, detect card slot again in suspend > method and defer the autosuspend if the slot is loaded. The default 2 > second autosuspend delay of USB subsystem should let the next polling > detects the card. > > Signed-off-by: Roger Tseng <rogerable@xxxxxxxxxxx> > --- > drivers/mfd/rtsx_usb.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) Applied, thanks. > diff --git a/drivers/mfd/rtsx_usb.c b/drivers/mfd/rtsx_usb.c > index 076694126e5d..63883fd025c0 100644 > --- a/drivers/mfd/rtsx_usb.c > +++ b/drivers/mfd/rtsx_usb.c > @@ -687,6 +687,20 @@ static int rtsx_usb_suspend(struct usb_interface *intf, pm_message_t message) > dev_dbg(&intf->dev, "%s called with pm message 0x%04x\n", > __func__, message.event); > > + if (PMSG_IS_AUTO(message)) { > + if (mutex_trylock(&ucr->dev_mutex)) { > + rtsx_usb_get_card_status(ucr, &val); > + mutex_unlock(&ucr->dev_mutex); > + > + /* Defer the autosuspend if card exists */ > + if (val & (SD_CD | MS_CD)) > + return -EAGAIN; > + } else { > + /* There is an ongoing operation*/ > + return -EAGAIN; > + } > + } > + > return 0; > } > -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel