sdhci: Advertise 2.0v supply on SDIO host controller
PATCH v4 1/1 sdhci: Advertise 2.0v supply on SDIO host controller
On Intel Edison the Broadcom Wi-Fi card, which is connected to SDIO, requires 2.0v, while the host, according to Intel Merrifield TRM, supports 1.8v supply only.
The card announces itself as
mmc2: new ultra high speed DDR50 SDIO card at address 0001
Introduce a custom OCR mask for SDIO host controller on Intel Merrifield and add a special case to sdhci_set_power_noreg() to override 2.0v supply by enforcing 1.8v power choice.
---
- address Ulf's comment
drivers/mmc/host/sdhci-pci-core.c | 2 ++ drivers/mmc/host/sdhci.c | 7 +++++++ 2 files changed, 9 insertions(+)
drivers/mmc/host/sdhci-pci-core.c +2 -0
@@ -778,6 +778,8 @@ static int intel_mrfld_mmc_probe_slot(struct sdhci_pci_slot *slot) slot->host->quirks2 |=SDHCI_QUIRK2_NO_1_8_V ;break ;case INTEL_MRFLD_SDIO : +/* Advertise 2.0v for compatibility with the SDIO card's OCR */ + slot->host->ocr_mask =MMC_VDD_20_21 |MMC_VDD_165_195 ; slot->host->mmc->caps |=MMC_CAP_NONREMOVABLE |MMC_CAP_POWER_OFF_CARD ;break ;
drivers/mmc/host/sdhci.c +7 -0
@@ -1434,6 +1434,13 @@ void sdhci_set_power_noreg(struct sdhci_host *host, unsigned char mode,if (mode !=MMC_POWER_OFF ) {switch (1 << vdd) {case MMC_VDD_165_195 : +/* +* Without a regulator, SDHCI does not support 2.0v +* so we only get here if the driver deliberately +* added the 2.0v range to ocr_avail. Map it to 1.8v +* for the purpose of turning on the power. +*/ +case MMC_VDD_20_21 : pwr =SDHCI_POWER_180 ;break ;case MMC_VDD_29_30 :
Signature · 1 line
2.15.1
Quoted 6 lines · Andy Shevchenko
On Intel Edison the Broadcom Wi-Fi card, which is connected to SDIO, requires 2.0v, while the host, according to Intel Merrifield TRM, supports 1.8v supply only.
The card announces itself as
Quoted 7 lines
mmc2: new ultra high speed DDR50 SDIO card at address 0001
Introduce a custom OCR mask for SDIO host controller on Intel Merrifield and add a special case to
sdhci_set_power_noreg()to override 2.0v supply by enforcing 1.8v power choice.Signed-off-by Andy Shevchenko <[email protected]>
Quoted 38 lines
---
- address Ulf's commentdrivers/mmc/host/sdhci-pci-core.c | 2 ++ drivers/mmc/host/sdhci.c | 7 +++++++ 2 files changed, 9 insertions(+)drivers/mmc/host/sdhci-pci-core.c +2
-0@@ -778,6 +778,8 @@ static int intel_mrfld_mmc_probe_slot(struct sdhci_pci_slot *slot) slot->host->quirks2 |=SDHCI_QUIRK2_NO_1_8_V ;break ;case INTEL_MRFLD_SDIO : +/* Advertise 2.0v for compatibility with the SDIO card's OCR */ + slot->host->ocr_mask =MMC_VDD_20_21 |MMC_VDD_165_195 ; slot->host->mmc->caps |=MMC_CAP_NONREMOVABLE |MMC_CAP_POWER_OFF_CARD ;break ;drivers/mmc/host/sdhci.c +7
-0@@ -1434,6 +1434,13 @@ void sdhci_set_power_noreg(struct sdhci_host *host, unsigned char mode,if (mode !=MMC_POWER_OFF ) {switch (1 << vdd) {case MMC_VDD_165_195 : +/* +* Without a regulator, SDHCI does not support 2.0v +* so we only get here if the driver deliberately +* added the 2.0v range to ocr_avail. Map it to 1.8v +* for the purpose of turning on the power. +*/ +case MMC_VDD_20_21 : pwr =SDHCI_POWER_180 ;break ;case MMC_VDD_29_30 :
Ulf Hansson
AppliedQuoted 6 lines · Andy Shevchenko
On Intel Edison the Broadcom Wi-Fi card, which is connected to SDIO, requires 2.0v, while the host, according to Intel Merrifield TRM, supports 1.8v supply only.
The card announces itself as
Quoted 7 lines
mmc2: new ultra high speed DDR50 SDIO card at address 0001
Introduce a custom OCR mask for SDIO host controller on Intel Merrifield and add a special case to
sdhci_set_power_noreg()to override 2.0v supply by enforcing 1.8v power choice.Signed-off-by Andy Shevchenko <[email protected]>
Thanks, applied for next!
Kind regards
Uffe
Quoted 40 lines
---
- address Ulf's commentdrivers/mmc/host/sdhci-pci-core.c | 2 ++ drivers/mmc/host/sdhci.c | 7 +++++++ 2 files changed, 9 insertions(+)drivers/mmc/host/sdhci-pci-core.c +2
-0@@ -778,6 +778,8 @@ static int intel_mrfld_mmc_probe_slot(struct sdhci_pci_slot *slot) slot->host->quirks2 |=SDHCI_QUIRK2_NO_1_8_V ;break ;case INTEL_MRFLD_SDIO : +/* Advertise 2.0v for compatibility with the SDIO card's OCR */ + slot->host->ocr_mask =MMC_VDD_20_21 |MMC_VDD_165_195 ; slot->host->mmc->caps |=MMC_CAP_NONREMOVABLE |MMC_CAP_POWER_OFF_CARD ;break ;drivers/mmc/host/sdhci.c +7
-1@@ -1434,6 +1434,13 @@ void sdhci_set_power_noreg(struct sdhci_host *host, unsigned char mode,if (mode !=MMC_POWER_OFF ) {switch (1 << vdd) {case MMC_VDD_165_195 : +/* +* Without a regulator, SDHCI does not support 2.0v +* so we only get here if the driver deliberately +* added the 2.0v range to ocr_avail. Map it to 1.8v +* for the purpose of turning on the power. +*/ +case MMC_VDD_20_21 : pwr =SDHCI_POWER_180 ;break ;case MMC_VDD_29_30 : --2.15.1