greybus: sdio: fix card removable detection
authorRui Miguel Silva <rui.silva@linaro.org>
Thu, 8 Oct 2015 11:10:52 +0000 (12:10 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Fri, 9 Oct 2015 21:02:06 +0000 (14:02 -0700)
In kernel versions bellow 3.15, the mmc_card_is_removable helper
function has an extra check used for a suspend/resume hack. This made
the gd_sdio_process_event to behave badly handling the module card
insert event in that versions.

So, just test bit the flag that we need, instead of using the helper
function. This way will work in all kernel versions.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/sdio.c

index ff68956108bf22a3e85ef3924e9db06ef2848d03..e5e3b77a2d15f12f473cee89289fd458ee2103d3 100644 (file)
@@ -144,7 +144,7 @@ static int _gb_sdio_process_events(struct gb_sdio_host *host, u8 event)
        u8 state_changed = 0;
 
        if (event & GB_SDIO_CARD_INSERTED) {
-               if (!mmc_card_is_removable(host->mmc))
+               if (host->mmc->caps & MMC_CAP_NONREMOVABLE)
                        return 0;
                if (host->card_present)
                        return 0;
@@ -153,7 +153,7 @@ static int _gb_sdio_process_events(struct gb_sdio_host *host, u8 event)
        }
 
        if (event & GB_SDIO_CARD_REMOVED) {
-               if (!mmc_card_is_removable(host->mmc))
+               if (host->mmc->caps & MMC_CAP_NONREMOVABLE)
                        return 0;
                if (!(host->card_present))
                        return 0;