Commit f9134319 authored by Pierre Ossman's avatar Pierre Ossman

sdhci: handle built-in sdhci with modular leds class

As reported by Randy Dunlap, having sdhci built-in and LEDs class
as a module resulted in undefined symbols. Change the code to handle
that case properly (by not having LEDs class support in sdhci).
Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
parent ca4f1056
...@@ -30,6 +30,11 @@ ...@@ -30,6 +30,11 @@
#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
static unsigned int debug_quirks = 0; static unsigned int debug_quirks = 0;
static void sdhci_prepare_data(struct sdhci_host *, struct mmc_data *); static void sdhci_prepare_data(struct sdhci_host *, struct mmc_data *);
...@@ -149,7 +154,7 @@ static void sdhci_deactivate_led(struct sdhci_host *host) ...@@ -149,7 +154,7 @@ static void sdhci_deactivate_led(struct sdhci_host *host)
writeb(ctrl, host->ioaddr + SDHCI_HOST_CONTROL); writeb(ctrl, host->ioaddr + SDHCI_HOST_CONTROL);
} }
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE) #ifdef SDHCI_USE_LEDS_CLASS
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)
{ {
...@@ -994,7 +999,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) ...@@ -994,7 +999,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
WARN_ON(host->mrq != NULL); WARN_ON(host->mrq != NULL);
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE) #ifndef SDHCI_USE_LEDS_CLASS
sdhci_activate_led(host); sdhci_activate_led(host);
#endif #endif
...@@ -1201,7 +1206,7 @@ static void sdhci_tasklet_finish(unsigned long param) ...@@ -1201,7 +1206,7 @@ static void sdhci_tasklet_finish(unsigned long param)
host->cmd = NULL; host->cmd = NULL;
host->data = NULL; host->data = NULL;
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE) #ifndef SDHCI_USE_LEDS_CLASS
sdhci_deactivate_led(host); sdhci_deactivate_led(host);
#endif #endif
...@@ -1717,7 +1722,7 @@ int sdhci_add_host(struct sdhci_host *host) ...@@ -1717,7 +1722,7 @@ int sdhci_add_host(struct sdhci_host *host)
sdhci_dumpregs(host); sdhci_dumpregs(host);
#endif #endif
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE) #ifdef SDHCI_USE_LEDS_CLASS
host->led.name = mmc_hostname(mmc); host->led.name = mmc_hostname(mmc);
host->led.brightness = LED_OFF; host->led.brightness = LED_OFF;
host->led.default_trigger = mmc_hostname(mmc); host->led.default_trigger = mmc_hostname(mmc);
...@@ -1739,7 +1744,7 @@ int sdhci_add_host(struct sdhci_host *host) ...@@ -1739,7 +1744,7 @@ int sdhci_add_host(struct sdhci_host *host)
return 0; return 0;
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE) #ifdef SDHCI_USE_LEDS_CLASS
reset: reset:
sdhci_reset(host, SDHCI_RESET_ALL); sdhci_reset(host, SDHCI_RESET_ALL);
free_irq(host->irq, host); free_irq(host->irq, host);
...@@ -1775,7 +1780,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead) ...@@ -1775,7 +1780,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead)
mmc_remove_host(host->mmc); mmc_remove_host(host->mmc);
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE) #ifdef SDHCI_USE_LEDS_CLASS
led_classdev_unregister(&host->led); led_classdev_unregister(&host->led);
#endif #endif
......
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