On 3/10/2016 9:03 AM, Kevin O'Connor wrote:
On Thu, Mar 10, 2016 at 12:38:14AM -0600, Matt DeVillier wrote:
Some BayTrail ChromeOS devices have the eMMC controller hidden (thus requiring the use of etc/sdcard), while others do not, making it problematic to have a single payload which serves all devices properly. Therefore, if the CBFS contains etc/sdcard entries, skip detection of any visible PCI sdhci controllers in order to avoid duplicate entries in the boot menu.
John, would disabling PCI scans for sd controllers when any etc/sdcard files exist work okay for the machines you've tested with?
[...]
diff --git a/src/hw/sdcard.c b/src/hw/sdcard.c index 7e0875f..32cdb14 100644 --- a/src/hw/sdcard.c +++ b/src/hw/sdcard.c @@ -557,11 +557,14 @@ sdcard_setup(void) run_thread(sdcard_romfile_setup, file); }
- struct pci_device *pci;
- foreachpci(pci) {
if (pci->class != PCI_CLASS_SYSTEM_SDHCI || pci->prog_if >= 2)
// Not an SDHCI controller following SDHCI spec
continue;
run_thread(sdcard_pci_setup, pci);
- //only scan for PCI controllers if etc/sdcard* not used
- if (file == NULL) {
Unless I've missed something, this test (file==NULL) is always true here. Maybe add a counter or flag in the romfile search loop.
-Kevin
whoops, you're correct - I'll rework this shortly
struct pci_device *pci;
foreachpci(pci) {
if (pci->class != PCI_CLASS_SYSTEM_SDHCI || pci->prog_if >= 2)
// Not an SDHCI controller following SDHCI spec
continue;
run_thread(sdcard_pci_setup, pci);
}} }