Message ID | 20220530193816.45841-1-philippe.mathieu.daude@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | hw/sd: Rework models for eMMC support | expand |
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 :) Sure. I will for the first patches to be merged and I might introduce a base class. Thanks, C. > > Regards, > > Phil. > > Cédric Le Goater (6): > hw/sd: Add sd_emmc_cmd_SEND_OP_CMD() handler > hw/sd: Add sd_emmc_cmd_ALL_SEND_CID() handler > hw/sd: Add sd_emmc_cmd_SEND_RELATIVE_ADDR() handler > hw/sd: Add sd_emmc_cmd_APP_CMD() handler > hw/sd: add sd_emmc_cmd_SEND_TUNING_BLOCK() handler > hw/sd: Add sd_emmc_cmd_SEND_EXT_CSD() handler > > Joel Stanley (4): > hw/sd: Add sd_cmd_SEND_TUNING_BLOCK() handler > hw/sd: Support boot area in emmc image > hw/sd: Subtract bootarea size from blk > hw/sd: Add boot config support > > Philippe Mathieu-Daudé (13): > hw/sd/sdcard: Return ILLEGAL for CMD19/CMD23 prior SD spec v3.01 > hw/sd: When card is in wrong state, log which state it is > hw/sd: When card is in wrong state, log which spec version is used > hw/sd: Move proto_name to SDProto structure > hw/sd: Introduce sd_cmd_handler type > hw/sd: Add sd_cmd_illegal() handler > hw/sd: Add sd_cmd_unimplemented() handler > hw/sd: Add sd_cmd_GO_IDLE_STATE() handler > hw/sd: Add sd_cmd_SEND_OP_CMD() handler > hw/sd: Add sd_cmd_ALL_SEND_CID() handler > hw/sd: Add sd_cmd_SEND_RELATIVE_ADDR() handler > hw/sd: Add sd_cmd_SET_BLOCK_COUNT() handler > hw/sd: Basis for eMMC support > > Sai Pavan Boddu (2): > hw/sd: Add CMD21 tuning sequence > hw/sd: Add mmc switch function support > > hw/sd/sd.c | 645 +++++++++++++++++++++++++++++++++-------- > hw/sd/sdmmc-internal.c | 2 +- > hw/sd/sdmmc-internal.h | 97 +++++++ > include/hw/sd/sd.h | 7 + > 4 files changed, 627 insertions(+), 124 deletions(-) >
On 31/5/22 08:31, 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 :) > > Sure. I will for the first patches to be merged and I might introduce > a base class. Then consider patches 1-13 queued. > Thanks, > > C. > >> >> Regards, >> >> Phil.
On Tue, May 31, 2022 at 9:56 AM Philippe Mathieu-Daudé <f4bug@amsat.org> wrote: > On 31/5/22 08:31, Cédric Le Goater wrote: > > On 5/30/22 21:37, Philippe Mathieu-Daudé wrote: > >> 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 :) > > > > Sure. I will for the first patches to be merged and I might introduce > > a base class. > > Then consider patches 1-13 queued. Oops too fast, new patches 3 & 13 are not reviewed.
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 Thanks, C. > Regards, > > Phil. > > Cédric Le Goater (6): > hw/sd: Add sd_emmc_cmd_SEND_OP_CMD() handler > hw/sd: Add sd_emmc_cmd_ALL_SEND_CID() handler > hw/sd: Add sd_emmc_cmd_SEND_RELATIVE_ADDR() handler > hw/sd: Add sd_emmc_cmd_APP_CMD() handler > hw/sd: add sd_emmc_cmd_SEND_TUNING_BLOCK() handler > hw/sd: Add sd_emmc_cmd_SEND_EXT_CSD() handler > > Joel Stanley (4): > hw/sd: Add sd_cmd_SEND_TUNING_BLOCK() handler > hw/sd: Support boot area in emmc image > hw/sd: Subtract bootarea size from blk > hw/sd: Add boot config support > > Philippe Mathieu-Daudé (13): > hw/sd/sdcard: Return ILLEGAL for CMD19/CMD23 prior SD spec v3.01 > hw/sd: When card is in wrong state, log which state it is > hw/sd: When card is in wrong state, log which spec version is used > hw/sd: Move proto_name to SDProto structure > hw/sd: Introduce sd_cmd_handler type > hw/sd: Add sd_cmd_illegal() handler > hw/sd: Add sd_cmd_unimplemented() handler > hw/sd: Add sd_cmd_GO_IDLE_STATE() handler > hw/sd: Add sd_cmd_SEND_OP_CMD() handler > hw/sd: Add sd_cmd_ALL_SEND_CID() handler > hw/sd: Add sd_cmd_SEND_RELATIVE_ADDR() handler > hw/sd: Add sd_cmd_SET_BLOCK_COUNT() handler > hw/sd: Basis for eMMC support > > Sai Pavan Boddu (2): > hw/sd: Add CMD21 tuning sequence > hw/sd: Add mmc switch function support > > hw/sd/sd.c | 645 +++++++++++++++++++++++++++++++++-------- > hw/sd/sdmmc-internal.c | 2 +- > hw/sd/sdmmc-internal.h | 97 +++++++ > include/hw/sd/sd.h | 7 + > 4 files changed, 627 insertions(+), 124 deletions(-) >
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? In aspeed_sdhci_realize() you set sd-spec-version" = 2, is that OK with eMMC? What expects the real hw? Thanks, Phil.
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.
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 :) Regards, Phil. Cédric Le Goater (6): hw/sd: Add sd_emmc_cmd_SEND_OP_CMD() handler hw/sd: Add sd_emmc_cmd_ALL_SEND_CID() handler hw/sd: Add sd_emmc_cmd_SEND_RELATIVE_ADDR() handler hw/sd: Add sd_emmc_cmd_APP_CMD() handler hw/sd: add sd_emmc_cmd_SEND_TUNING_BLOCK() handler hw/sd: Add sd_emmc_cmd_SEND_EXT_CSD() handler Joel Stanley (4): hw/sd: Add sd_cmd_SEND_TUNING_BLOCK() handler hw/sd: Support boot area in emmc image hw/sd: Subtract bootarea size from blk hw/sd: Add boot config support Philippe Mathieu-Daudé (13): hw/sd/sdcard: Return ILLEGAL for CMD19/CMD23 prior SD spec v3.01 hw/sd: When card is in wrong state, log which state it is hw/sd: When card is in wrong state, log which spec version is used hw/sd: Move proto_name to SDProto structure hw/sd: Introduce sd_cmd_handler type hw/sd: Add sd_cmd_illegal() handler hw/sd: Add sd_cmd_unimplemented() handler hw/sd: Add sd_cmd_GO_IDLE_STATE() handler hw/sd: Add sd_cmd_SEND_OP_CMD() handler hw/sd: Add sd_cmd_ALL_SEND_CID() handler hw/sd: Add sd_cmd_SEND_RELATIVE_ADDR() handler hw/sd: Add sd_cmd_SET_BLOCK_COUNT() handler hw/sd: Basis for eMMC support Sai Pavan Boddu (2): hw/sd: Add CMD21 tuning sequence hw/sd: Add mmc switch function support hw/sd/sd.c | 645 +++++++++++++++++++++++++++++++++-------- hw/sd/sdmmc-internal.c | 2 +- hw/sd/sdmmc-internal.h | 97 +++++++ include/hw/sd/sd.h | 7 + 4 files changed, 627 insertions(+), 124 deletions(-)