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.