qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 00/25] hw/sd: Rework models for eMMC support


From: Cédric Le Goater
Subject: Re: [PATCH v2 00/25] hw/sd: Rework models for eMMC support
Date: Wed, 1 Jun 2022 07:50:47 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0

On 5/31/22 21:07, Philippe Mathieu-Daudé wrote:
On 31/5/22 11:19, Cédric Le Goater wrote:
On 5/30/22 21:37, Philippe Mathieu-Daudé wrote:
From: Philippe Mathieu-Daudé <f4bug@amsat.org>

Rebase/respin of Cédric RFC:
https://lore.kernel.org/qemu-devel/20220318132824.1134400-1-clg@kaod.org/
(sorry it took me so long guys...)

Pushed at https://gitlab.com/philmd/qemu/-/commits/emmc-v2

I plan to queue patches 1-12 via sdmmc-next later this week.

Cédric, if you are happy with this series, it should be easy to rebase
your other patches on top and address the comments I left on the RFC :)

I pushed an update on :

   https://github.com/legoater/qemu/commits/aspeed-7.1

Here is an image :

   https://www.kaod.org/qemu/aspeed/mmc-p10bmc.qcow2

run with :

  qemu-system-arm -M rainier-bmc -net nic -net user -drive 
file=./mmc-p10bmc.qcow2,format=qcow2,if=sd,id=sd0,index=2 -nographic 
-nodefaults -snapshot -serial mon:stdio

Useful, thanks.

I see in hw/arm/aspeed_ast2600.c:

     /* Init sd card slot class here so that they're under the correct parent */
     for (i = 0; i < ASPEED_SDHCI_NUM_SLOTS; ++i) {
         object_initialize_child(obj, "sd-controller.sdhci[*]",
                                 &s->sdhci.slots[i], TYPE_SYSBUS_SDHCI);
     }

     object_initialize_child(obj, "emmc-controller.sdhci", &s->emmc.slots[0],
                             TYPE_SYSBUS_SDHCI);

     /* eMMC Boot Controller stub */
     create_unimplemented_device("aspeed.emmc-boot-controller",
                                 sc->memmap[ASPEED_DEV_EMMC_BC],
                                 0x1000);

     /* eMMC */
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->emmc), errp)) {
         return;
     }
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->emmc), 0, sc->memmap[ASPEED_DEV_EMMC]);
     sysbus_connect_irq(SYS_BUS_DEVICE(&s->emmc), 0,
                        aspeed_soc_get_irq(s, ASPEED_DEV_EMMC));

Where is 'emmc-controller.sdhci' realized?

the slots are realized in aspeed_sdhci_realize(). It's not very
symmetric and the names are confusing.

I think that one of the problems is that the instance_init routine
of TYPE_ASPEED_SDHCI object doesn't know on how much slots
object_initialize_child() should be called since it depends on
its flavor : SD/eMMC.

In aspeed_sdhci_realize() you set sd-spec-version" = 2, is that OK
with eMMC?

ah yes. it boots anyhow.

What expects the real hw?
              ast2400     ast2500     ast2600
SDHC card v2.0/v3.0 v2.0/v3.0 v2.0/v3.0
SDIO Host      v2.0        v2.0        v2.0     
SD slots        2           2           2       
eMMC            x         v4.51       v5.1
eMMC slots      x           1           1

on the ast2500, the SDIO and eMMC logics are combined in one controller
but since it is not used, QEMU does not model the eMMC part.

Thanks,

C.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]