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: Pierre Ossman <drzeus@drzeus.cx>
This commit is contained in:
parent
ca4f105639
commit
f9134319c8
|
@ -30,6 +30,11 @@
|
|||
#define DBG(f, 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 void sdhci_prepare_data(struct sdhci_host *, struct mmc_data *);
|
||||
|
@ -149,7 +154,7 @@ static void sdhci_deactivate_led(struct sdhci_host *host)
|
|||
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,
|
||||
enum led_brightness brightness)
|
||||
{
|
||||
|
@ -994,7 +999,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
|
|||
|
||||
WARN_ON(host->mrq != NULL);
|
||||
|
||||
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE)
|
||||
#ifndef SDHCI_USE_LEDS_CLASS
|
||||
sdhci_activate_led(host);
|
||||
#endif
|
||||
|
||||
|
@ -1201,7 +1206,7 @@ static void sdhci_tasklet_finish(unsigned long param)
|
|||
host->cmd = NULL;
|
||||
host->data = NULL;
|
||||
|
||||
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE)
|
||||
#ifndef SDHCI_USE_LEDS_CLASS
|
||||
sdhci_deactivate_led(host);
|
||||
#endif
|
||||
|
||||
|
@ -1717,7 +1722,7 @@ int sdhci_add_host(struct sdhci_host *host)
|
|||
sdhci_dumpregs(host);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE)
|
||||
#ifdef SDHCI_USE_LEDS_CLASS
|
||||
host->led.name = mmc_hostname(mmc);
|
||||
host->led.brightness = LED_OFF;
|
||||
host->led.default_trigger = mmc_hostname(mmc);
|
||||
|
@ -1739,7 +1744,7 @@ int sdhci_add_host(struct sdhci_host *host)
|
|||
|
||||
return 0;
|
||||
|
||||
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE)
|
||||
#ifdef SDHCI_USE_LEDS_CLASS
|
||||
reset:
|
||||
sdhci_reset(host, SDHCI_RESET_ALL);
|
||||
free_irq(host->irq, host);
|
||||
|
@ -1775,7 +1780,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead)
|
|||
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue