Commit 061d17a6 authored by Adrian Hunter's avatar Adrian Hunter Committed by Ulf Hansson

mmc: sdhci: Tidy together LED code

ifdef's make the code more complicated and harder to read.
Move all the LED code together to reduce the ifdef's to
one place.
Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent eb5c20de
...@@ -38,11 +38,6 @@ ...@@ -38,11 +38,6 @@
#define DBG(f, x...) \ #define DBG(f, x...) \
pr_debug(DRIVER_NAME " [%s()]: " f, __func__,## x) pr_debug(DRIVER_NAME " [%s()]: " f, __func__,## x)
#if defined(CONFIG_LEDS_CLASS) || (defined(CONFIG_LEDS_CLASS_MODULE) && \
defined(CONFIG_MMC_SDHCI_MODULE))
#define SDHCI_USE_LEDS_CLASS
#endif
#define MAX_TUNING_LOOP 40 #define MAX_TUNING_LOOP 40
static unsigned int debug_quirks = 0; static unsigned int debug_quirks = 0;
...@@ -246,7 +241,7 @@ static void sdhci_reinit(struct sdhci_host *host) ...@@ -246,7 +241,7 @@ static void sdhci_reinit(struct sdhci_host *host)
sdhci_enable_card_detection(host); sdhci_enable_card_detection(host);
} }
static void sdhci_activate_led(struct sdhci_host *host) static void __sdhci_led_activate(struct sdhci_host *host)
{ {
u8 ctrl; u8 ctrl;
...@@ -255,7 +250,7 @@ static void sdhci_activate_led(struct sdhci_host *host) ...@@ -255,7 +250,7 @@ static void sdhci_activate_led(struct sdhci_host *host)
sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL); sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
} }
static void sdhci_deactivate_led(struct sdhci_host *host) static void __sdhci_led_deactivate(struct sdhci_host *host)
{ {
u8 ctrl; u8 ctrl;
...@@ -264,9 +259,11 @@ static void sdhci_deactivate_led(struct sdhci_host *host) ...@@ -264,9 +259,11 @@ static void sdhci_deactivate_led(struct sdhci_host *host)
sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL); sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
} }
#ifdef SDHCI_USE_LEDS_CLASS #if defined(CONFIG_LEDS_CLASS) || (defined(CONFIG_LEDS_CLASS_MODULE) && \
defined(CONFIG_MMC_SDHCI_MODULE))
static void sdhci_led_control(struct led_classdev *led, static void sdhci_led_control(struct led_classdev *led,
enum led_brightness brightness) enum led_brightness brightness)
{ {
struct sdhci_host *host = container_of(led, struct sdhci_host, led); struct sdhci_host *host = container_of(led, struct sdhci_host, led);
unsigned long flags; unsigned long flags;
...@@ -277,12 +274,62 @@ static void sdhci_led_control(struct led_classdev *led, ...@@ -277,12 +274,62 @@ static void sdhci_led_control(struct led_classdev *led,
goto out; goto out;
if (brightness == LED_OFF) if (brightness == LED_OFF)
sdhci_deactivate_led(host); __sdhci_led_deactivate(host);
else else
sdhci_activate_led(host); __sdhci_led_activate(host);
out: out:
spin_unlock_irqrestore(&host->lock, flags); spin_unlock_irqrestore(&host->lock, flags);
} }
static int sdhci_led_register(struct sdhci_host *host)
{
struct mmc_host *mmc = host->mmc;
snprintf(host->led_name, sizeof(host->led_name),
"%s::", mmc_hostname(mmc));
host->led.name = host->led_name;
host->led.brightness = LED_OFF;
host->led.default_trigger = mmc_hostname(mmc);
host->led.brightness_set = sdhci_led_control;
return led_classdev_register(mmc_dev(mmc), &host->led);
}
static void sdhci_led_unregister(struct sdhci_host *host)
{
led_classdev_unregister(&host->led);
}
static inline void sdhci_led_activate(struct sdhci_host *host)
{
}
static inline void sdhci_led_deactivate(struct sdhci_host *host)
{
}
#else
static inline int sdhci_led_register(struct sdhci_host *host)
{
return 0;
}
static inline void sdhci_led_unregister(struct sdhci_host *host)
{
}
static inline void sdhci_led_activate(struct sdhci_host *host)
{
__sdhci_led_activate(host);
}
static inline void sdhci_led_deactivate(struct sdhci_host *host)
{
__sdhci_led_deactivate(host);
}
#endif #endif
/*****************************************************************************\ /*****************************************************************************\
...@@ -1330,9 +1377,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) ...@@ -1330,9 +1377,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
WARN_ON(host->mrq != NULL); WARN_ON(host->mrq != NULL);
#ifndef SDHCI_USE_LEDS_CLASS sdhci_led_activate(host);
sdhci_activate_led(host);
#endif
/* /*
* Ensure we don't send the STOP for non-SET_BLOCK_COUNTED * Ensure we don't send the STOP for non-SET_BLOCK_COUNTED
...@@ -2193,9 +2238,7 @@ static void sdhci_tasklet_finish(unsigned long param) ...@@ -2193,9 +2238,7 @@ static void sdhci_tasklet_finish(unsigned long param)
host->cmd = NULL; host->cmd = NULL;
host->data = NULL; host->data = NULL;
#ifndef SDHCI_USE_LEDS_CLASS sdhci_led_deactivate(host);
sdhci_deactivate_led(host);
#endif
mmiowb(); mmiowb();
spin_unlock_irqrestore(&host->lock, flags); spin_unlock_irqrestore(&host->lock, flags);
...@@ -3315,21 +3358,12 @@ int sdhci_add_host(struct sdhci_host *host) ...@@ -3315,21 +3358,12 @@ int sdhci_add_host(struct sdhci_host *host)
sdhci_dumpregs(host); sdhci_dumpregs(host);
#endif #endif
#ifdef SDHCI_USE_LEDS_CLASS ret = sdhci_led_register(host);
snprintf(host->led_name, sizeof(host->led_name),
"%s::", mmc_hostname(mmc));
host->led.name = host->led_name;
host->led.brightness = LED_OFF;
host->led.default_trigger = mmc_hostname(mmc);
host->led.brightness_set = sdhci_led_control;
ret = led_classdev_register(mmc_dev(mmc), &host->led);
if (ret) { if (ret) {
pr_err("%s: Failed to register LED device: %d\n", pr_err("%s: Failed to register LED device: %d\n",
mmc_hostname(mmc), ret); mmc_hostname(mmc), ret);
goto unirq; goto unirq;
} }
#endif
mmiowb(); mmiowb();
...@@ -3348,10 +3382,8 @@ int sdhci_add_host(struct sdhci_host *host) ...@@ -3348,10 +3382,8 @@ int sdhci_add_host(struct sdhci_host *host)
return 0; return 0;
unled: unled:
#ifdef SDHCI_USE_LEDS_CLASS sdhci_led_unregister(host);
led_classdev_unregister(&host->led);
unirq: unirq:
#endif
sdhci_do_reset(host, SDHCI_RESET_ALL); sdhci_do_reset(host, SDHCI_RESET_ALL);
sdhci_writel(host, 0, SDHCI_INT_ENABLE); sdhci_writel(host, 0, SDHCI_INT_ENABLE);
sdhci_writel(host, 0, SDHCI_SIGNAL_ENABLE); sdhci_writel(host, 0, SDHCI_SIGNAL_ENABLE);
...@@ -3399,9 +3431,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead) ...@@ -3399,9 +3431,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead)
mmc_remove_host(mmc); mmc_remove_host(mmc);
#ifdef SDHCI_USE_LEDS_CLASS sdhci_led_unregister(host);
led_classdev_unregister(&host->led);
#endif
if (!dead) if (!dead)
sdhci_do_reset(host, SDHCI_RESET_ALL); sdhci_do_reset(host, SDHCI_RESET_ALL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment