Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ea4e3aa3 authored by Sahitya Tummala's avatar Sahitya Tummala Committed by Xiaonian Wang
Browse files

mmc: sdhci: Fix sdhci_led_control() path



The SDHC driver registers sdhci_led_control() with LED class device
and it gets invoked when the sysfs entry - /sys/class/leds/mmcX::
is updated. This function access SDHC Host control register (0x28)
and hence, check the driver state (runtime suspended/clocks gated)
before accessing it. Otherwise, it may result in unclocked access
resulting in system failure.

CRs-fixed: 480596
Change-Id: Icef51f02abb54316710df30429fec875030d42d9
Signed-off-by: default avatarSahitya Tummala <stummala@codeaurora.org>
[subhashj@codeaurora.org: fixed minor merge conflict]
Signed-off-by: default avatarSubhash Jadavani <subhashj@codeaurora.org>
[xiaonian@codeaurora.org: fix trivial merge conflict]
Signed-off-by: default avatarXiaonian Wang <xiaonian@codeaurora.org>
parent 28137347
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -45,6 +45,8 @@ static unsigned int debug_quirks2;


static void sdhci_finish_data(struct sdhci_host *);
static void sdhci_finish_data(struct sdhci_host *);


static bool sdhci_check_state(struct sdhci_host *);

static void sdhci_enable_preset_value(struct sdhci_host *host, bool enable);
static void sdhci_enable_preset_value(struct sdhci_host *host, bool enable);


static void sdhci_dump_state(struct sdhci_host *host)
static void sdhci_dump_state(struct sdhci_host *host)
@@ -300,7 +302,7 @@ static void sdhci_led_control(struct led_classdev *led,


	spin_lock_irqsave(&host->lock, flags);
	spin_lock_irqsave(&host->lock, flags);


	if (host->runtime_suspended)
	if (host->runtime_suspended || sdhci_check_state(host))
		goto out;
		goto out;


	if (brightness == LED_OFF)
	if (brightness == LED_OFF)