|
From: | Philippe Mathieu-Daudé |
Subject: | Re: [PATCH v5 6/6] hw/ppc/e500: Add Freescale eSDHC to e500plat |
Date: | Mon, 31 Oct 2022 16:12:26 +0100 |
User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 |
On 31/10/22 12:54, Philippe Mathieu-Daudé wrote:
From: Bernhard Beschow <shentey@gmail.com> Adds missing functionality to e500plat machine which increases the chance of given "real" firmware images to access SD cards. Signed-off-by: Bernhard Beschow <shentey@gmail.com> Message-Id: <20221018210146.193159-8-shentey@gmail.com> [PMD: Simplify using create_unimplemented_device("esdhc")] Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- docs/system/ppc/ppce500.rst | 12 ++++++++++ hw/ppc/Kconfig | 2 ++ hw/ppc/e500.c | 48 ++++++++++++++++++++++++++++++++++++- hw/ppc/e500.h | 1 + hw/ppc/e500plat.c | 1 + 5 files changed, 63 insertions(+), 1 deletion(-)
@@ -992,6 +1018,26 @@ void ppce500_init(MachineState *machine) i2c = (I2CBus *)qdev_get_child_bus(dev, "i2c"); i2c_slave_create_simple(i2c, "ds1338", RTC_REGS_OFFSET);+ /* eSDHC */+ if (pmc->has_esdhc) { + uint64_t sdhci_regsize; + + dev = qdev_new(TYPE_SYSBUS_SDHCI); + /* + * Compatible with: + * - SD Host Controller Specification Version 2.0 Part A2 + */ + qdev_prop_set_uint8(dev, "sd-spec-version", 2); + s = SYS_BUS_DEVICE(dev); + sysbus_realize_and_unref(s, &error_fatal); + sysbus_mmio_map(s, 0, pmc->ccsrbar_base + MPC85XX_ESDHC_REGS_OFFSET); + sysbus_connect_irq(s, 0, qdev_get_gpio_in(mpicdev, MPC85XX_ESDHC_IRQ)); + sdhci_regsize = memory_region_size(sysbus_mmio_get_region(s, 0)); + create_unimplemented_device("esdhc", + pmc->ccsrbar_base + + MPC85XX_ESDHC_REGS_OFFSET + sdhci_regsize, + MPC85XX_ESDHC_REGS_SIZE - sdhci_regsize); + }
Since the UNIMP device has lower priority, we can simplify as: if (pmc->has_esdhc) { create_unimplemented_device("esdhc", pmc->ccsrbar_base + MPC85XX_ESDHC_REGS_OFFSET, MPC85XX_ESDHC_REGS_SIZE); dev = qdev_new(TYPE_SYSBUS_SDHCI); /* * Compatible with: * - SD Host Controller Specification Version 2.0 Part A2 */ qdev_prop_set_uint8(dev, "sd-spec-version", 2); s = SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); sysbus_mmio_map(s, 0, pmc->ccsrbar_base + MPC85XX_ESDHC_REGS_OFFSET); sysbus_connect_irq(s, 0, qdev_get_gpio_in(mpicdev, MPC85XX_ESDHC_IRQ)); }
[Prev in Thread] | Current Thread | [Next in Thread] |