diff mbox series

[v4,14/14] hw/ppc/e500: Replace generic SDHCI by Freescale eSDHC

Message ID 20250308213640.13138-15-philmd@linaro.org
State New
Headers show
Series hw/sd/sdhci: Set reset value of interrupt registers | expand

Commit Message

Philippe Mathieu-Daudé March 8, 2025, 9:36 p.m. UTC
As Zoltan reported, some U-Boot versions seem to expect
correctly initialized registers before expecting interrupts.

Now than we have a proper Freescale eSDHC implementation,
use it.

Reported-by: BALATON Zoltan <balaton@eik.bme.hu>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/ppc/e500.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

Comments

Bernhard Beschow March 9, 2025, 8:31 a.m. UTC | #1
Am 8. März 2025 21:36:40 UTC schrieb "Philippe Mathieu-Daudé" <philmd@linaro.org>:
>As Zoltan reported, some U-Boot versions seem to expect
>correctly initialized registers before expecting interrupts.
>
>Now than we have a proper Freescale eSDHC implementation,
>use it.
>
>Reported-by: BALATON Zoltan <balaton@eik.bme.hu>
>Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>---
> hw/ppc/e500.c | 10 +---------
> 1 file changed, 1 insertion(+), 9 deletions(-)
>
>diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
>index e85e000f054..7d15c926887 100644
>--- a/hw/ppc/e500.c
>+++ b/hw/ppc/e500.c
>@@ -1027,20 +1027,12 @@ void ppce500_init(MachineState *machine)
> 
>     /* eSDHC */
>     if (pmc->has_esdhc) {
>-        dev = qdev_new(TYPE_UNIMPLEMENTED_DEVICE);

"hw/misc/unimp.h" include is now unused and should therefore be removed.

With that fixed:
Reviewed-by: Bernhard Beschow <shentey@gmail.com>

>-        qdev_prop_set_string(dev, "name", "esdhc");
>-        qdev_prop_set_uint64(dev, "size", MPC85XX_ESDHC_REGS_SIZE);
>-        s = SYS_BUS_DEVICE(dev);
>-        sysbus_realize_and_unref(s, &error_fatal);
>-        memory_region_add_subregion(ccsr_addr_space, MPC85XX_ESDHC_REGS_OFFSET,
>-                                    sysbus_mmio_get_region(s, 0));
>-
>         /*
>          * Compatible with:
>          * - SD Host Controller Specification Version 2.0 Part A2
>          * (See MPC8569E Reference Manual)
>          */
>-        dev = qdev_new(TYPE_SYSBUS_SDHCI);
>+        dev = qdev_new(TYPE_FSL_ESDHC);
>         qdev_prop_set_uint8(dev, "sd-spec-version", 2);
>         qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_BIG);
>         s = SYS_BUS_DEVICE(dev);
Philippe Mathieu-Daudé March 9, 2025, 1:59 p.m. UTC | #2
On 9/3/25 09:31, Bernhard Beschow wrote:
> 
> 
> Am 8. März 2025 21:36:40 UTC schrieb "Philippe Mathieu-Daudé" <philmd@linaro.org>:
>> As Zoltan reported, some U-Boot versions seem to expect
>> correctly initialized registers before expecting interrupts.
>>
>> Now than we have a proper Freescale eSDHC implementation,
>> use it.
>>
>> Reported-by: BALATON Zoltan <balaton@eik.bme.hu>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>> hw/ppc/e500.c | 10 +---------
>> 1 file changed, 1 insertion(+), 9 deletions(-)
>>
>> diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
>> index e85e000f054..7d15c926887 100644
>> --- a/hw/ppc/e500.c
>> +++ b/hw/ppc/e500.c
>> @@ -1027,20 +1027,12 @@ void ppce500_init(MachineState *machine)
>>
>>      /* eSDHC */
>>      if (pmc->has_esdhc) {
>> -        dev = qdev_new(TYPE_UNIMPLEMENTED_DEVICE);
> 
> "hw/misc/unimp.h" include is now unused and should therefore be removed.

Good catch.

> 
> With that fixed:
> Reviewed-by: Bernhard Beschow <shentey@gmail.com>

Thanks!
diff mbox series

Patch

diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index e85e000f054..7d15c926887 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -1027,20 +1027,12 @@  void ppce500_init(MachineState *machine)
 
     /* eSDHC */
     if (pmc->has_esdhc) {
-        dev = qdev_new(TYPE_UNIMPLEMENTED_DEVICE);
-        qdev_prop_set_string(dev, "name", "esdhc");
-        qdev_prop_set_uint64(dev, "size", MPC85XX_ESDHC_REGS_SIZE);
-        s = SYS_BUS_DEVICE(dev);
-        sysbus_realize_and_unref(s, &error_fatal);
-        memory_region_add_subregion(ccsr_addr_space, MPC85XX_ESDHC_REGS_OFFSET,
-                                    sysbus_mmio_get_region(s, 0));
-
         /*
          * Compatible with:
          * - SD Host Controller Specification Version 2.0 Part A2
          * (See MPC8569E Reference Manual)
          */
-        dev = qdev_new(TYPE_SYSBUS_SDHCI);
+        dev = qdev_new(TYPE_FSL_ESDHC);
         qdev_prop_set_uint8(dev, "sd-spec-version", 2);
         qdev_prop_set_enum(dev, "endianness", ENDIAN_MODE_BIG);
         s = SYS_BUS_DEVICE(dev);