mmc: sdhci-pci-gli: increase 1.8V regulator wait
PATCH 1/1 mmc: sdhci-pci-gli: increase 1.8V regulator wait
Inserting an SD-card on an Intel NUC10i3FNK4 (which contains a GL9755) results in the message:
mmc0: 1.8V regulator output did not become stable
Following this message, some cards work (sometimes), but most cards fail with EILSEQ. This behaviour is observed on Debian 10 running kernel 4.19.188, but also with 5.8.18 and 5.11.15.
The driver currently waits 5ms after switching on the 1.8V regulator for it to become stable. Increasing this to 10ms gets rid of the warning about stability, but most cards still fail. Increasing it to 20ms gets some cards working (a 32GB Samsung micro SD works, a 128GB ADATA doesn't). At 50ms, the ADATA works most of the time, and at 100ms both cards work reliably.
--- drivers/mmc/host/sdhci-pci-gli.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/mmc/host/sdhci-pci-gli.c +6 -1
@@ -627,8 +627,13 @@ static void sdhci_gli_voltage_switch(struct sdhci_host *host)* * Wait 5ms after set 1.8V signal enable in Host Control 2 register * to ensure 1.8V signal enable bit is set by GL9750/GL9755. +* +* ...however, the controller in the NUC10i3FNK4 (a 9755) requires +* slightly longer than 5ms before the control register reports that +* 1.8V is ready, and far longer still before the card will actually +* work reliably. */ -usleep_range (5000 ,5500 ); +usleep_range (100000 ,110000 ); }static void sdhci_gl9750_reset (struct sdhci_host *host,u8 mask)
Signature · 1 line
2.20.1
Hi Daniel,
Quoted 8 lines
Inserting an SD-card on an Intel NUC10i3FNK4 (which contains a GL9755) results in the message:
mmc0: 1.8V regulator output did not become stable
Following this message, some cards work (sometimes), but most cards fail with EILSEQ. This behaviour is observed on Debian 10 running kernel 4.19.188, but also with 5.8.18 and 5.11.15.
Glad to receive your report. Thanks.
Quoted 7 lines
The driver currently waits 5ms after switching on the 1.8V regulator for it to become stable. Increasing this to 10ms gets rid of the warning about stability, but most cards still fail. Increasing it to 20ms gets some cards working (a 32GB Samsung micro SD works, a 128GB ADATA doesn't). At 50ms, the ADATA works most of the time, and at 100ms both cards work reliably.
If it is convenient, can you provide the appearance pictures and product links of these two cards? We want to buy them.
Quoted 12 lines
Signed-off-by Daniel Beer <[email protected]>--- drivers/mmc/host/sdhci-pci-gli.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)drivers/mmc/host/sdhci-pci-gli.c +0
-0@@ -627,8 +627,13 @@ static void sdhci_gli_voltage_switch(struct sdhci_host *host)*
drivers/mmc/host/sdhci-pci-gli.c static void sdhci_gli_voltage_switch(struct sdhci_host *host) · line 636
Quoted 10 lines
drivers/mmc/host/sdhci-pci-gli.c +6
-1* Wait 5ms after set 1.8V signal enable in Host Control 2 register * to ensure 1.8V signal enable bit is set by GL9750/GL9755. +* +* ...however, the controller in the NUC10i3FNK4 (a 9755) requires +* slightly longer than 5ms before the control register reports that +* 1.8V is ready, and far longer still before the card will actually +* work reliably. */ -usleep_range (5000 ,5500 ); +usleep_range (100000 ,110000 );
Looks good for me.
Quoted 7 lines
drivers/mmc/host/sdhci-pci-gli.c +0
-0}static void sdhci_gl9750_reset (struct sdhci_host *host,u8 mask)Signature · 1 line
2.20.1
Best regards,
Ben
Quoted 9 lines · Ben Chuang
Quoted 6 lines
The driver currently waits 5ms after switching on the 1.8V regulator for it to become stable. Increasing this to 10ms gets rid of the warning about stability, but most cards still fail. Increasing it to 20ms gets some cards working (a 32GB Samsung micro SD works, a 128GB ADATA doesn't). At 50ms, the ADATA works most of the time, and at 100ms both cards work reliably.
If it is convenient, can you provide the appearance pictures and product links of these two cards? We want to buy them.
Hi Ben,
The first is a Samsung EVO microSDXC 32GB:
https://www.samsung.com/nz/memory-storage/memory-card/evo-plus-microsd-card-95-mbs-sd-adapter-32gb-mb-mc32ga-apc/
The second is an ADATA Premier Pro SDXC UHS-I U3 Class 10 (V30S) 128GB:
https://www.adata.com/us/consumer/289
The images on those two pages match what I have in front of me here.
Cheers,
Daniel
Signature · 2 lines
Daniel Beer <[email protected]> http://dlbeer.co.nz/ PGP: BA6E 0B26 1F89 246C E3F3 C910 1E58 C43A 160A 553B
Ulf Hansson
Acked-by Ben ChuangQuoted 41 lines · Ben Chuang
Hi Daniel,
Quoted 8 lines
Inserting an SD-card on an Intel NUC10i3FNK4 (which contains a GL9755) results in the message:
mmc0: 1.8V regulator output did not become stable
Following this message, some cards work (sometimes), but most cards fail with EILSEQ. This behaviour is observed on Debian 10 running kernel 4.19.188, but also with 5.8.18 and 5.11.15.
Glad to receive your report. Thanks.
Quoted 7 lines
The driver currently waits 5ms after switching on the 1.8V regulator for it to become stable. Increasing this to 10ms gets rid of the warning about stability, but most cards still fail. Increasing it to 20ms gets some cards working (a 32GB Samsung micro SD works, a 128GB ADATA doesn't). At 50ms, the ADATA works most of the time, and at 100ms both cards work reliably.
If it is convenient, can you provide the appearance pictures and product links of these two cards? We want to buy them.
Quoted 16 lines
Signed-off-by Daniel Beer <[email protected]>--- drivers/mmc/host/sdhci-pci-gli.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)drivers/mmc/host/sdhci-pci-gli.c +2
-0@@ -627,8 +627,13 @@ static void sdhci_gli_voltage_switch(struct sdhci_host *host)* * Wait 5ms after set 1.8V signal enable in Host Control 2 register * to ensure 1.8V signal enable bit is set by GL9750/GL9755. +* +* ...however, the controller in the NUC10i3FNK4 (a 9755) requires
Quoted 8 lines
drivers/mmc/host/sdhci-pci-gli.c static void sdhci_gli_voltage_switch(struct sdhci_host *host) · line 636
Quoted 6 lines
drivers/mmc/host/sdhci-pci-gli.c +4
-1+* slightly longer than 5ms before the control register reports that +* 1.8V is ready, and far longer still before the card will actually +* work reliably. */ -usleep_range (5000 ,5500 ); +usleep_range (100000 ,110000 );Looks good for me.
I consider this as an ack and will add you tag to the commit. Please tell me if I should change.
[...]
Applied for fixes and by adding the below tags, thanks!
Kind regards
Uffe