Bug 6720

Summary: Number of enumerated MMC/SDIO host controllers
Product: [Yocto Project Subprojects] Kernel Reporter: Marcel Holtmann <marcel>
Component: linux-yoctoAssignee: Unassigned <unassigned>
Status: RESOLVED MOVED QA Contact:
Severity: normal    
Priority: Medium CC: danders, david.wei, dvhart, marcel, scott.a.garman, sjolley.yp.pm, warthog9, yoctoproject
Version: unspecified   
Target Milestone: Future   
Hardware: MinnowBoard Max   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)
Attachments:
Description Flags
Disable eMMC host controller by BIOS setup none

Description Marcel Holtmann 2014-09-12 20:47:23 UTC
When using ACPI mode, the following MMC/SDIO host controllers get enumerated:

mmc0 -> ../../devices/platform/80860F14:01/mmc_host/mmc0
mmc1 -> ../../devices/platform/INT33BB:00/mmc_host/mmc1
mmc2 -> ../../devices/platform/80860F16:00/mmc_host/mmc2

With mmc2 containing the memory card. So it that one is the controller physically on the board:

mmc2:59b4 -> ../../../devices/platform/80860F16:00/mmc_host/mmc2/mmc2:59b4

When using PCI mode, the following MMC/SDIO host controllers get enumerated:

mmc0 -> ../../devices/pci0000:00/0000:00:11.0/mmc_host/mmc0
mmc1 -> ../../devices/pci0000:00/0000:00:12.0/mmc_host/mmc1
mmc2 -> ../../devices/pci0000:00/0000:00:17.0/mmc_host/mmc2

With now mmc1 containing the memory card which is on the physical SD card slot:

mmc1:59b4 -> ../../../devices/pci0000:00/0000:00:12.0/mmc_host/mmc1/mmc1:59b4

And also lspci shows 3 MMC/SDIO host controllers:

00:11.0 SD Host controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series SDIO Controller (rev 0c)
00:12.0 SD Host controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series SDIO Controller (rev 0c)
00:17.0 SD Host controller: Intel Corporation Device 0f50 (rev 0c)

So do we have really 3 MMC/SDIO controllers exposed or should the 2 not in use be disabled.

I also have the funny fact that sdhci-acpi.ko gets auto-loaded in PCI mode. That is a bit weird and makes me wonder what ACPI platform device would trigger that.
Comment 1 Darren Hart 2014-09-12 22:24:29 UTC
Hi Marcel,

Please include the firmware version you are reporting issues like this with.
Also, which kernel version?


Now, digging into the schematic and the Intel documentation/specifications, and comparing that with what was reported to/by the OS (3.14.2-rt1+), we find that:

In ACPI mode:
# dmesg | grep mmc
[    4.477213] mmc0: SDHCI controller on ACPI [80860F14:01] using ADMA
[    4.490851] mmc1: SDHCI controller on ACPI [INT33BB:00] using ADMA
[    4.506402] mmc2: SDHCI controller on ACPI [80860F16:00] using ADMA
[    5.197791] mmc2: new high speed SDHC card at address e624
[    5.245622] mmcblk0: mmc2:e624 SU04G 3.69 GiB
[    5.274182]  mmcblk0:

80860F14:01: eMMC (MMC1* on SoC, Not Connected)
INT33BB:00: SDIO lines (SD2* on SoC, Not Connected)
80860F16:00: The MicroSD Card Slot (SD3* on SoC)

In PCI mode:
# lspci | grep SD
00:11.0 SD Host controller: Intel Corporation ValleyView SDIO Controller (rev 0c)
00:12.0 SD Host controller: Intel Corporation ValleyView SDIO Controller (rev 0c)
00:17.0 SD Host controller: Intel Corporation ValleyView MIPI-HSI Controller (rev 0c)

# dmesg | grep mmc
[    4.787697] mmc0: SDHCI controller on PCI [0000:00:11.0] using ADMA
[    4.826407] mmc1: SDHCI controller on PCI [0000:00:12.0] using ADMA
[    4.852371] mmc2: SDHCI controller on PCI [0000:00:17.0] using ADMA
[    5.219778] mmc1: new high speed SDHC card at address e624
[    5.230099] mmcblk0: mmc1:e624 SU04G 3.69 GiB
[    5.243487]  mmcblk0:

#define PCI_DEVICE_ID_INTEL_BYT_EMMC	0x0f14
#define PCI_DEVICE_ID_INTEL_BYT_SDIO	0x0f15
#define PCI_DEVICE_ID_INTEL_BYT_SD	0x0f16
#define PCI_DEVICE_ID_INTEL_BYT_EMMC2	0x0f50

0000:00:11.0: 8086:0f15 SDIO lines (SD2* on SoC, Not Connected)
0000:00:12.0: 8086:0f16 The MicroSD Card Slot (SD3* on SoC)
0000:00:17.0: 8086:0f50 eMMC (MMC1* on SoC, Not Connected)


So, Tim - please remove (or mark as disabled):
ACPI:
80860F14
INT33BB

PCI:
8086:0f15
8086:0f50
(and 8086:0f14 is it is anywhere in the firmware, that's the old emmc device id)
Comment 2 Darren Hart 2014-09-12 22:25:53 UTC
Oh, I collected my data with:
BIOS Information
        Vendor: Intel Corp.
        Version: MNW2CRB1.X64.0071.R30.1408121658
Comment 3 Marcel Holtmann 2014-09-13 18:35:15 UTC
I forgot to include the output for the host setup:

[    4.543371] sdhci: Secure Digital Host Controller Interface driver
[    4.543381] sdhci: Copyright(c) Pierre Ossman
[    4.574945] sdhci-acpi 80860F14:01: No vmmc regulator found
[    4.574958] sdhci-acpi 80860F14:01: No vqmmc regulator found
[    4.583018] mmc0: SDHCI controller on ACPI [80860F14:01] using ADMA
[    4.587119] sdhci-acpi INT33BB:00: No vmmc regulator found
[    4.587132] sdhci-acpi INT33BB:00: No vqmmc regulator found
[    4.592382] mmc1: SDHCI controller on ACPI [INT33BB:00] using ADMA
[    4.595991] sdhci-acpi 80860F16:00: failed to setup card detect gpio
[    4.598555] sdhci-acpi 80860F16:00: No vmmc regulator found
[    4.598567] sdhci-acpi 80860F16:00: No vqmmc regulator found
[    4.603941] mmc2: SDHCI controller on ACPI [80860F16:00] using ADMA
[    5.296718] mmc2: new high speed SDHC card at address 59b4
[    5.325698] mmcblk0: mmc2:59b4       14.9 GiB 
[    5.356288]  mmcblk0: p1 p2
Comment 4 He, Tim 2014-09-25 07:46:36 UTC
ok, I'll remove following

ACPI:
80860F14
INT33BB

PCI:
8086:0f15
8086:0f50
Comment 5 David_Wei 2014-11-06 01:25:24 UTC
Created attachment 2228 [details]
Disable eMMC host controller by BIOS setup
Comment 6 Darren Hart 2014-11-06 01:30:23 UTC
(In reply to comment #5)
> Created attachment 2228 [details]
> Disable eMMC host controller by BIOS setup

David, I'm not sure what you mean. Are you saying that if the user disables the eMMC in the BIOS setup, then this device does not appear?

If so, then my response would be that this device does not exist on the board, and it should default to off in the firmware. I would also argue that it shouldn't even be an option in the firmware - unless we expect people to use this exact firmware for derivative boards which may choose to add the eMMC.

As the firmware is being released as open source, I would fully expect anyone using a derivative board to reconfigure the firmware and enable it.

So my preference would be to eliminate eMMC from the MinnowBaord MAX stock firmware image as it does not reflect the configuration of the board itself.
Comment 7 David_Wei 2014-11-06 01:50:59 UTC
Hi Darren,

I was only providing a test log and debug method for us to discuss this issue, i was not proividing a fix. 

After disabling eMMC host controller by setting the BIOS setup option "Device Manager -> System Setup -> South Cluster Configuration -> LPSS & SCC Configuration -> SCC eMMC Boot Controller" to be "Dsiable", Yocto could mount SD card but SD driver reports IO error and fails to find Root FS. Please check the attached log.
We did not see such SD IO error on Windows with the same configuration. 
We need Yocto team to check if Yocto SD driver have some hardcode or dependence on eMMC controller. 
Could you help on this?

[    5.314728] mmc1: new high speed SDHC card at address aaaa
[    5.342648] mmcblk0: mmc1:aaaa SU04G 3.69 GiB 
[    5.356410]  mmcblk0:
[    5.884224] FAT-fs (mmcblk0): Volume was not properly unmounted. Some data ma
y be corrupt. Please run fsck.
[    7.500061] random: nonblocking pool is initialized
[    7.731255] mmcblk0: error -110 transferring data, sector 25946, nr 8, cmd re
sponse 0x900, card status 0xc00
[    7.748358] end_request: I/O error, dev mmcblk0, sector 25947
[    7.765465] mmcblk0: error -110 transferring data, sector 25962, nr 40, cmd r
esponse 0x900, card status 0xc00
Comment 8 John 'Warthog9' Hawley 2014-11-06 06:44:03 UTC
Does that card work fine if the eMMC is re-enabled?
Comment 9 David_Wei 2014-11-06 06:48:13 UTC
Yes, that SD card works well as long as eMMC controller is enabled. The SD card and the file system in it are fine.
Comment 10 Darren Hart 2014-11-07 00:32:51 UTC
I'll have a closer look at the linux driver.
Comment 11 Stephen K Jolley 2017-06-13 21:27:56 UTC
We are no longer tracking in Yocto Project Bugzilla MinnowBoard and MinnowBoard-MAX HW and firmware bugs.