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.
patch implementation suggested by Kevin O'Connor :)
Signed-off-by: Matt DeVillier <matt.devill...@gmail.com>
---
src/hw/sdcard.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/hw/sdcard.c b/src/hw/sdcard.c
index 7e0875f..38d05c4 100644
--- a/src/hw/sdcard.c
+++ b/src/hw/sdcard.c
@@ -550,18 +550,23 @@ sdcard_setup(void)
return;
struct romfile_s *file = NULL;
+ int num_romfiles = 0;
for (;;) {
file = romfile_findprefix("etc/sdcard", file);
if (!file)
break;
run_thread(sdcard_romfile_setup, file);
+ num_romfiles++;
}
- 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 (num_romfiles == 0) {
+ 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);
+ }
}
}
--
2.5.0
_______________________________________________
SeaBIOS mailing list
SeaBIOS@seabios.org
https://www.coreboot.org/mailman/listinfo/seabios