On Sun, 5 Jul 2020 at 22:33, Philippe Mathieu-Daudé <f4...@amsat.org> wrote: > > SDHCI controllers provide a SD Bus to plug SD cards, but don't > come with SD card plugged in :) Let the machine/board object > create and plug the SD cards when required.
This too is not an SDHCI controller. > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > include/hw/arm/pxa.h | 3 +-- > hw/arm/pxa2xx.c | 39 +++++++++++++++++++++++++++++---------- > hw/sd/pxa2xx_mmci.c | 11 ++--------- > 3 files changed, 32 insertions(+), 21 deletions(-) > @@ -2135,15 +2136,24 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space, > > s->gpio = pxa2xx_gpio_init(0x40e00000, s->cpu, s->pic, 121); > > - dinfo = drive_get(IF_SD, 0, 0); > - if (!dinfo && !qtest_enabled()) { > - warn_report("missing SecureDigital device"); > - } > s->mmc = pxa2xx_mmci_init(address_space, 0x41100000, > - dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, > qdev_get_gpio_in(s->pic, PXA2XX_PIC_MMC), > qdev_get_gpio_in(s->dma, PXA2XX_RX_RQ_MMCI), > qdev_get_gpio_in(s->dma, PXA2XX_TX_RQ_MMCI)); > + dinfo = drive_get(IF_SD, 0, 0); > + if (dinfo) { > + DeviceState *carddev; > + > + /* Create and plug in the sd card */ > + carddev = qdev_new(TYPE_SD_CARD); > + qdev_prop_set_drive_err(carddev, "drive", > + blk_by_legacy_dinfo(dinfo), &error_fatal); > + qdev_realize_and_unref(carddev, qdev_get_child_bus(DEVICE(s->mmc), > + "sd-bus"), > + &error_fatal); > + } else if (!qtest_enabled()) { > + warn_report("missing SecureDigital device"); > + } When we finally get round to qdevifying the PXA2xx this will have to move up another layer, since pxa270_init() is effectively the SoC, not the board model. But for the moment this is as far as we can sensibly lift the code. Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> thanks -- PMM