Skip to contentSkip to conversation

mmc: sdhci-acpi: support deferred probe

PATCH Superseded Zhang Rui 2 participants 3 messages Jan 13, 2017 – Jan 18, 2017

Subsystems (2)

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore

Zhang Rui

author
#0 lore raw

PATCH v3 1/1 mmc: sdhci-acpi: support deferred probe

Quoted 1 line

From c889f737322b797b743c63eda241d0283696d3f5 Mon Sep 17 00:00:00 2001

From: Zhang Rui <[email protected]>
Date: Wed, 7 Dec 2016 13:13:31 +0800
Subject: [PATCH v3] mmc: sdhci-acpi: support deferred probe

With commit 67bf5156edc4 ("gpio / ACPI: fix returned error from acpi_dev_gpio_irq_get()"), mmc_gpiod_request_cd() returns -EPROBE_DEFER if GPIO is not ready when sdhci-acpi driver is probed, and sdhci-acpi driver should be probed again later in this case.

This fixes an order issue when both GPIO and sdhci-acpi drivers are built as modules.

CC: [email protected] # v4.9
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=177101

---
 drivers/mmc/host/sdhci-acpi.c | 5 ++++-

 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/mmc/host/sdhci-acpi.c +0 -0
index 160f695cc09c..5440323894ee 100644
@@ -466,7 +466,10 @@ static int sdhci_acpi_probe(struct platform_device *pdev)

  if (sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD)) {
  bool v = sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD_OVERRIDE_LEVEL);
- if (mmc_gpiod_request_cd(host->mmc, NULL, 0, v, 0, NULL)) {
+ err = mmc_gpiod_request_cd(host->mmc, NULL, 0, v, 0, NULL);
+ if (err) {
+ if (err == -EPROBE_DEFER)
+ goto err_free;
  dev_warn(dev, "failed to setup card detect gpio\n"); c->use_runtime_pm = false;
  }
--
2.7.4

#1 lore raw
Quoted 10 lines · Zhang Rui

From c889f737322b797b743c63eda241d0283696d3f5 Mon Sep 17 00:00:00 2001
From: Zhang Rui <[email protected]>
Date: Wed, 7 Dec 2016 13:13:31 +0800
Subject: [PATCH v3] mmc: sdhci-acpi: support deferred probe

With commit 67bf5156edc4 ("gpio / ACPI: fix returned error from acpi_dev_gpio_irq_get()"), mmc_gpiod_request_cd() returns -EPROBE_DEFER if GPIO is not ready when sdhci-acpi driver is probed, and sdhci-acpi driver should be probed again later in this case.

Quoted 8 lines

This fixes an order issue when both GPIO and sdhci-acpi drivers are built as modules.

CC: [email protected] # v4.9
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=177101

I strongly encourage you to run checkpatch of all your change before submitting patches. Below is the output, it gave me. It prevents me from applying the change. Please fix and re-spin!

ERROR: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' - ie: 'commit fatal: bad o ("da241d0283696d3f5")'
#14:

Quoted 1 line

From c889f737322b797b743c63eda241d0283696d3f5 Mon Sep 17 00:00:00 2001

ERROR: patch seems to be corrupt (line wrapped?)
#49: FILE: drivers/mmc/host/sdhci-acpi.c:465:

     if (sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD)) {

total: 2 errors, 0 warnings, 11 lines checked

Kind regards
Uffe

Quoted 23 lines
---
 drivers/mmc/host/sdhci-acpi.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/mmc/host/sdhci-acpi.c +4 -2
index 160f695cc09c..5440323894ee 100644
@@ -466,7 +466,10 @@ static int sdhci_acpi_probe(struct platform_device *pdev)
        if (sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD)) {
                bool v = sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD_OVERRIDE_LEVEL);
 
-               if (mmc_gpiod_request_cd(host->mmc, NULL, 0, v, 0, NULL)) {
+               err = mmc_gpiod_request_cd(host->mmc, NULL, 0, v, 0, NULL);
+               if (err) {
+                       if (err == -EPROBE_DEFER)
+                               goto err_free;
                        dev_warn(dev, "failed to setup card detect gpio\n");
                        c->use_runtime_pm = false;
                }
--

2.7.4

author
#2 lore raw

Hi, Uffe,

Quoted 24 lines · Ulf Hansson
Quoted 18 lines · Zhang Rui

From c889f737322b797b743c63eda241d0283696d3f5 Mon Sep 17 00:00:00 2001
From: Zhang Rui <[email protected]>
Date: Wed, 7 Dec 2016 13:13:31 +0800
Subject: [PATCH v3] mmc: sdhci-acpi: support deferred probe

With commit 67bf5156edc4 ("gpio / ACPI: fix returned error from acpi_dev_gpio_irq_get()"), mmc_gpiod_request_cd() returns -EPROBE_DEFER if
GPIO is not ready when sdhci-acpi driver is probed, and sdhci-acpi driver
should be probed again later in this case.

This fixes an order issue when both GPIO and sdhci-acpi drivers are built
as modules.

Quoted 5 lines

CC: [email protected] # v4.9
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=177101

Quoted 5 lines

I strongly encourage you to run checkpatch of all your change before submitting patches.
Below is the output, it gave me. It prevents me
from applying the change. Please fix and re-spin!

Sorry for bring the trouble.
In fact, I indeed run checkpatch before sending it out.

Quoted 5 lines

ERROR: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' - ie: 'commit fatal: bad o ("da241d0283696d3f5")'
#14:

Quoted 1 line
Quoted 8 lines
Quoted 2 lines

From c889f737322b797b743c63eda241d0283696d3f5 Mon Sep 17 00:00:00 2001

ERROR: patch seems to be corrupt (line wrapped?)
#49: FILE: drivers/mmc/host/sdhci-acpi.c:465:
     if (sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD)) {

total: 2 errors, 0 warnings, 11 lines checked

I tried to resend the patch to myself, and find out the patch is corrupted when it's sent via evolution. Although I have not used evolution to send patch for a long time, but it indeed works for me before.

Patch resent. Sorry again for the noise.

thanks,
rui

Quoted 33 lines

Kind regards
Uffe

Quoted 30 lines

---
 drivers/mmc/host/sdhci-acpi.c | 5 ++++-

 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/mmc/host/sdhci-acpi.c +1 -1
index 160f695cc09c..5440323894ee 100644
@@ -466,7 +466,10 @@ static int sdhci_acpi_probe(struct
 platform_device *pdev)
         if (sdhci_acpi_flag(c, SDHCI_ACPI_SD_CD)) {
                 bool v = sdhci_acpi_flag(c,
 SDHCI_ACPI_SD_CD_OVERRIDE_LEVEL);
 
-               if (mmc_gpiod_request_cd(host->mmc, NULL, 0, v, 0,
 NULL)) {
+               err = mmc_gpiod_request_cd(host->mmc, NULL, 0, v,

0, NULL);
+               if (err) {
+                       if (err == -EPROBE_DEFER)
+                               goto err_free; dev_warn(dev, "failed to setup card detect gpio\n");
                        c->use_runtime_pm = false;
                }
--
2.7.4