Re: [PATCH v2 7/9] mci: add PCI SDHCI controller support
"Sascha Hauer" <[email protected]> Mon, 29 Jun 2026 08:47:43 +0000
| Newsgroups | org.infradead.lists.barebox |
|---|---|
| Message-ID | <[email protected]> |
On 2026-06-26 18:19, Ahmad Fatoum wrote: > QEMU can expose eMMC through the class-compliant sdhci-pci device, but > barebox only had platform SDHCI glue. Add a PCI host driver that maps BAR0, > enables bus mastering, initializes the SDHCI core and registers an MCI host. > > This is intentionally small and PIO-based, which is enough for the QEMU RPMB > test environment while reusing the common SDHCI helpers. Is this comment wrong? The driver depends on HAS_DMA and even calls sdhci_setup_adma(). > > Assisted-by: Codex:gpt-5.5 > Signed-off-by: Ahmad Fatoum <[email protected]> > --- > v1 -> v2: > - new commit > --- > drivers/mci/Kconfig | 8 ++ > drivers/mci/Makefile | 1 + > drivers/mci/mci-core.c | 2 +- > drivers/mci/sdhci-pci.c | 203 ++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 213 insertions(+), 1 deletion(-) > create mode 100644 drivers/mci/sdhci-pci.c > > diff --git a/drivers/mci/Kconfig b/drivers/mci/Kconfig > index b38f7a3bdf8b..55e63aad92d4 100644 > --- a/drivers/mci/Kconfig > +++ b/drivers/mci/Kconfig > @@ -90,6 +90,14 @@ config MCI_MMC_RPMB > > comment "--- MCI host drivers ---" > > +config MCI_SDHCI_PCI > + bool "PCI SDHCI controller" > + depends on PCI && HAS_DMA > + select MCI_SDHCI > + help > + Enable support for PCI-attached SDHCI controllers, such as QEMU's > + sdhci-pci device used to attach emulated eMMC devices. > + > config MCI_DWC_MSHC > bool "Synopsys DesignWare Cores MSHC" > depends on HAS_DMA > diff --git a/drivers/mci/Makefile b/drivers/mci/Makefile > index 67a1f7bf1724..761f4187c079 100644 > --- a/drivers/mci/Makefile > +++ b/drivers/mci/Makefile > @@ -2,6 +2,7 @@ > obj-$(CONFIG_MCI) += mci-core.o > pbl-$(CONFIG_MCI) += mci-pbl.o > obj-$(CONFIG_MCI_MMC_RPMB) += rpmb.o > +obj-$(CONFIG_MCI_SDHCI_PCI) += sdhci-pci.o > obj-$(CONFIG_MCI_AM654) += am654-sdhci.o > obj-$(CONFIG_MCI_ARASAN) += arasan-sdhci.o > obj-$(CONFIG_MCI_ATMEL) += atmel_mci.o atmel_mci_common.o > diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c > index 4413fd1655aa..d6746fbec28f 100644 > --- a/drivers/mci/mci-core.c > +++ b/drivers/mci/mci-core.c > @@ -2942,7 +2942,7 @@ static struct device_node *mci_get_partition_node(struct device_node *hwnode, > struct device_node *np; > char partnodename[sizeof("bootx-partitions")]; > > - if (index > 8) > + if (!hwnode || index > 8) > return NULL; Should this be an extra patch? Sascha -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |