[U-Boot] [PATCH v3 1/2] omap_hsmmc: Check wp and cd GPIO for valid GPIO first

When we cannot check write protect or card change via GPIO (and have been passed -1 in omap_mmc_init), only try if gpio_is_valid is true. This prevents invalid GPIO messages from being seen on the console when doing MMC operations
Signed-off-by: Tom Rini trini@ti.com
--- Changes in v3: - Style comments from Nikita Kiryanov
Changes in v2: - Use gpio_is_valid not just a check for >= 0 (Fabio Estevam) --- drivers/mmc/omap_hsmmc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c index 67cfcc2..d599482 100644 --- a/drivers/mmc/omap_hsmmc.c +++ b/drivers/mmc/omap_hsmmc.c @@ -73,13 +73,21 @@ static int omap_mmc_setup_gpio_in(int gpio, const char *label) static int omap_mmc_getcd(struct mmc *mmc) { int cd_gpio = ((struct omap_hsmmc_data *)mmc->priv)->cd_gpio; - return gpio_get_value(cd_gpio); + + if (gpio_is_valid(cd_gpio)) + return gpio_get_value(cd_gpio); + + return -1; }
static int omap_mmc_getwp(struct mmc *mmc) { int wp_gpio = ((struct omap_hsmmc_data *)mmc->priv)->wp_gpio; - return gpio_get_value(wp_gpio); + + if (gpio_is_valid(wp_gpio)) + return gpio_get_value(wp_gpio); + + return -1; } #else static inline int omap_mmc_setup_gpio_in(int gpio, const char *label)

Signed-off-by: Tom Rini trini@ti.com
--- Changes in v3: - Reapply with style changes in previous patch - Add missing <asm/errno.h>
Changes in v2: - New patch, use -EINVAL in the driver --- drivers/mmc/omap_hsmmc.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c index d599482..53aa2bd 100644 --- a/drivers/mmc/omap_hsmmc.c +++ b/drivers/mmc/omap_hsmmc.c @@ -34,6 +34,7 @@ #include <asm/io.h> #include <asm/arch/mmc_host_def.h> #include <asm/arch/sys_proto.h> +#include <asm/errno.h>
/* common definitions for all OMAPs */ #define SYSCTL_SRC (1 << 25) @@ -59,13 +60,13 @@ static struct omap_hsmmc_data hsmmc_dev_data[3]; static int omap_mmc_setup_gpio_in(int gpio, const char *label) { if (!gpio_is_valid(gpio)) - return -1; + return -EINVAL;
if (gpio_request(gpio, label) < 0) - return -1; + return -EINVAL;
if (gpio_direction_input(gpio) < 0) - return -1; + return -EINVAL;
return gpio; } @@ -77,7 +78,7 @@ static int omap_mmc_getcd(struct mmc *mmc) if (gpio_is_valid(cd_gpio)) return gpio_get_value(cd_gpio);
- return -1; + return -EINVAL; }
static int omap_mmc_getwp(struct mmc *mmc) @@ -87,12 +88,12 @@ static int omap_mmc_getwp(struct mmc *mmc) if (gpio_is_valid(wp_gpio)) return gpio_get_value(wp_gpio);
- return -1; + return -EINVAL; } #else static inline int omap_mmc_setup_gpio_in(int gpio, const char *label) { - return -1; + return -EINVAL; }
#define omap_mmc_getcd NULL @@ -401,7 +402,7 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, mmc_reset_controller_fsm(mmc_base, SYSCTL_SRC); return TIMEOUT; } else if ((mmc_stat & ERRI_MASK) != 0) - return -1; + return -EINVAL;
if (mmc_stat & CC_MASK) { writel(CC_MASK, &mmc_base->stat);
participants (1)
-
Tom Rini