greybus: sdio: fix defines for older kernels
authorRui Miguel Silva <rui.silva@linaro.org>
Wed, 24 Jun 2015 22:20:26 +0000 (23:20 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Thu, 25 Jun 2015 00:34:46 +0000 (17:34 -0700)
Some of the options for mmc host, are not defined in older kernels.
MMC_CAP2_HS400_1_2V, MMC_CAP2_HS400_1_8V, MMC_TIMING_MMC_DDR52 and
MMC_TIMING_MMC_HS400.

To not use them for older versions.

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

index 8b8e712..f95f302 100644 (file)
@@ -127,4 +127,12 @@ static inline void sysfs_remove_groups(struct kobject *kobj,
 }
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
+#define MMC_HS400_SUPPORTED
+#define MMC_DDR52_DEFINED
+#endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0)
+#define MMC_POWER_UNDEFINED_SUPPORTED
+#endif
 #endif /* __GREYBUS_KERNEL_VER_H */
index 1fd17c8..16abf7c 100644 (file)
@@ -62,9 +62,11 @@ static void _gb_sdio_set_host_caps(struct gb_sdio_host *host, u32 r)
                (r & GB_SDIO_CAP_DRIVER_TYPE_D ? MMC_CAP_DRIVER_TYPE_D : 0);
 
        caps2 = (r & GB_SDIO_CAP_HS200_1_2V ? MMC_CAP2_HS200_1_2V_SDR : 0) |
-               (r & GB_SDIO_CAP_HS200_1_8V ? MMC_CAP2_HS200_1_8V_SDR : 0) |
+#ifdef MMC_HS400_SUPPORTED
                (r & GB_SDIO_CAP_HS400_1_2V ? MMC_CAP2_HS400_1_2V : 0) |
-               (r & GB_SDIO_CAP_HS400_1_8V ? MMC_CAP2_HS400_1_8V : 0);
+               (r & GB_SDIO_CAP_HS400_1_8V ? MMC_CAP2_HS400_1_8V : 0) |
+#endif
+               (r & GB_SDIO_CAP_HS200_1_8V ? MMC_CAP2_HS200_1_8V_SDR : 0);
 
        host->mmc->caps = caps;
        host->mmc->caps2 = caps2;
@@ -478,6 +480,7 @@ static void gb_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 
        switch (ios->power_mode) {
        case MMC_POWER_OFF:
+       default:
                power_mode = GB_SDIO_POWER_OFF;
                break;
        case MMC_POWER_UP:
@@ -486,10 +489,11 @@ static void gb_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
        case MMC_POWER_ON:
                power_mode = GB_SDIO_POWER_ON;
                break;
+#ifdef MMC_POWER_UNDEFINED_SUPPORTED
        case MMC_POWER_UNDEFINED:
-       default:
                power_mode = GB_SDIO_POWER_UNDEFINED;
                break;
+#endif
        }
        request.power_mode = power_mode;
 
@@ -533,15 +537,19 @@ static void gb_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
        case MMC_TIMING_UHS_DDR50:
                timing = GB_SDIO_TIMING_UHS_DDR50;
                break;
+#ifdef MMC_DDR52_DEFINED
        case MMC_TIMING_MMC_DDR52:
                timing = GB_SDIO_TIMING_MMC_DDR52;
                break;
+#endif
        case MMC_TIMING_MMC_HS200:
                timing = GB_SDIO_TIMING_MMC_HS200;
                break;
+#ifdef MMC_HS400_SUPPORTED
        case MMC_TIMING_MMC_HS400:
                timing = GB_SDIO_TIMING_MMC_HS400;
                break;
+#endif
        }
        request.timing = timing;