All instances of TYPE_IMX_USDHC set vendor=SDHCI_VENDOR_IMX.
No need to special-case it.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/sd/sdhci-internal.h | 1 -
include/hw/sd/sdhci.h | 4 ----
hw/arm/fsl-imx25.c | 2 --
hw/arm/fsl-imx6.c | 2 --
hw/arm/fsl-imx6ul.c | 2 --
hw/arm/fsl-imx7.c | 2 --
hw/arm/fsl-imx8mp.c | 2 --
hw/sd/sdhci.c | 14 ++++----------
8 files changed, 4 insertions(+), 25 deletions(-)
diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h
index 9f768c418e0..9072b06bdde 100644
--- a/hw/sd/sdhci-internal.h
+++ b/hw/sd/sdhci-internal.h
@@ -311,7 +311,6 @@ extern const VMStateDescription sdhci_vmstate;
DEFINE_PROP_UINT8("endianness", _state, endianness, DEVICE_LITTLE_ENDIAN), \
DEFINE_PROP_UINT8("sd-spec-version", _state, sd_spec_version, 2), \
DEFINE_PROP_UINT8("uhs", _state, uhs_mode, UHS_NOT_SUPPORTED), \
- DEFINE_PROP_UINT8("vendor", _state, vendor, SDHCI_VENDOR_NONE), \
\
/* Capabilities registers provide information on supported
* features of this specific host controller implementation */ \
diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h
index 38c08e28598..48247e9a20f 100644
--- a/include/hw/sd/sdhci.h
+++ b/include/hw/sd/sdhci.h
@@ -99,7 +99,6 @@ struct SDHCIState {
uint8_t endianness;
uint8_t sd_spec_version;
uint8_t uhs_mode;
- uint8_t vendor; /* For vendor specific functionality */
/*
* Write Protect pin default active low for detecting SD card
* to be protected. Set wp_inverted to invert the signal.
@@ -108,9 +107,6 @@ struct SDHCIState {
};
typedef struct SDHCIState SDHCIState;
-#define SDHCI_VENDOR_NONE 0
-#define SDHCI_VENDOR_IMX 1
-
/*
* Controller does not provide transfer-complete interrupt when not
* busy.
diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
index 5359a6d8d3b..02214ca1a1c 100644
--- a/hw/arm/fsl-imx25.c
+++ b/hw/arm/fsl-imx25.c
@@ -243,8 +243,6 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
&error_abort);
object_property_set_uint(OBJECT(&s->esdhc[i]), "capareg",
IMX25_ESDHC_CAPABILITIES, &error_abort);
- object_property_set_uint(OBJECT(&s->esdhc[i]), "vendor",
- SDHCI_VENDOR_IMX, &error_abort);
if (!sysbus_realize(SYS_BUS_DEVICE(&s->esdhc[i]), errp)) {
return;
}
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index dc86338b3a5..a114dc0d63d 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -327,8 +327,6 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
&error_abort);
object_property_set_uint(OBJECT(&s->esdhc[i]), "capareg",
IMX6_ESDHC_CAPABILITIES, &error_abort);
- object_property_set_uint(OBJECT(&s->esdhc[i]), "vendor",
- SDHCI_VENDOR_IMX, &error_abort);
if (!sysbus_realize(SYS_BUS_DEVICE(&s->esdhc[i]), errp)) {
return;
}
diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
index 34c4aa15cd0..ce8d3ef535f 100644
--- a/hw/arm/fsl-imx6ul.c
+++ b/hw/arm/fsl-imx6ul.c
@@ -531,8 +531,6 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
FSL_IMX6UL_USDHC2_IRQ,
};
- object_property_set_uint(OBJECT(&s->usdhc[i]), "vendor",
- SDHCI_VENDOR_IMX, &error_abort);
sysbus_realize(SYS_BUS_DEVICE(&s->usdhc[i]), &error_abort);
sysbus_mmio_map(SYS_BUS_DEVICE(&s->usdhc[i]), 0,
diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
index 3374018cde0..ed1f10bca26 100644
--- a/hw/arm/fsl-imx7.c
+++ b/hw/arm/fsl-imx7.c
@@ -471,8 +471,6 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
FSL_IMX7_USDHC3_IRQ,
};
- object_property_set_uint(OBJECT(&s->usdhc[i]), "vendor",
- SDHCI_VENDOR_IMX, &error_abort);
sysbus_realize(SYS_BUS_DEVICE(&s->usdhc[i]), &error_abort);
sysbus_mmio_map(SYS_BUS_DEVICE(&s->usdhc[i]), 0,
diff --git a/hw/arm/fsl-imx8mp.c b/hw/arm/fsl-imx8mp.c
index 1ea98e14635..c3f6da63220 100644
--- a/hw/arm/fsl-imx8mp.c
+++ b/hw/arm/fsl-imx8mp.c
@@ -524,8 +524,6 @@ static void fsl_imx8mp_realize(DeviceState *dev, Error **errp)
{ fsl_imx8mp_memmap[FSL_IMX8MP_USDHC3].addr, FSL_IMX8MP_USDHC3_IRQ },
};
- object_property_set_uint(OBJECT(&s->usdhc[i]), "vendor",
- SDHCI_VENDOR_IMX, &error_abort);
if (!sysbus_realize(SYS_BUS_DEVICE(&s->usdhc[i]), errp)) {
return;
}
diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c
index 1f45a77566c..149b748cbee 100644
--- a/hw/sd/sdhci.c
+++ b/hw/sd/sdhci.c
@@ -1731,16 +1731,10 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t val, unsigned size)
case USDHC_VENDOR_SPEC:
s->vendor_spec = value;
- switch (s->vendor) {
- case SDHCI_VENDOR_IMX:
- if (value & USDHC_IMX_FRC_SDCLK_ON) {
- s->prnsts &= ~SDHC_IMX_CLOCK_GATE_OFF;
- } else {
- s->prnsts |= SDHC_IMX_CLOCK_GATE_OFF;
- }
- break;
- default:
- break;
+ if (value & USDHC_IMX_FRC_SDCLK_ON) {
+ s->prnsts &= ~SDHC_IMX_CLOCK_GATE_OFF;
+ } else {
+ s->prnsts |= SDHC_IMX_CLOCK_GATE_OFF;
}
break;
--
2.47.1
Am 8. März 2025 21:36:28 UTC schrieb "Philippe Mathieu-Daudé" <philmd@linaro.org>:
>All instances of TYPE_IMX_USDHC set vendor=SDHCI_VENDOR_IMX.
>No need to special-case it.
>
>Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>---
> hw/sd/sdhci-internal.h | 1 -
> include/hw/sd/sdhci.h | 4 ----
> hw/arm/fsl-imx25.c | 2 --
> hw/arm/fsl-imx6.c | 2 --
> hw/arm/fsl-imx6ul.c | 2 --
> hw/arm/fsl-imx7.c | 2 --
> hw/arm/fsl-imx8mp.c | 2 --
> hw/sd/sdhci.c | 14 ++++----------
> 8 files changed, 4 insertions(+), 25 deletions(-)
>
>diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h
>index 9f768c418e0..9072b06bdde 100644
>--- a/hw/sd/sdhci-internal.h
>+++ b/hw/sd/sdhci-internal.h
>@@ -311,7 +311,6 @@ extern const VMStateDescription sdhci_vmstate;
> DEFINE_PROP_UINT8("endianness", _state, endianness, DEVICE_LITTLE_ENDIAN), \
> DEFINE_PROP_UINT8("sd-spec-version", _state, sd_spec_version, 2), \
> DEFINE_PROP_UINT8("uhs", _state, uhs_mode, UHS_NOT_SUPPORTED), \
>- DEFINE_PROP_UINT8("vendor", _state, vendor, SDHCI_VENDOR_NONE), \
> \
> /* Capabilities registers provide information on supported
> * features of this specific host controller implementation */ \
>diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h
>index 38c08e28598..48247e9a20f 100644
>--- a/include/hw/sd/sdhci.h
>+++ b/include/hw/sd/sdhci.h
>@@ -99,7 +99,6 @@ struct SDHCIState {
> uint8_t endianness;
> uint8_t sd_spec_version;
> uint8_t uhs_mode;
>- uint8_t vendor; /* For vendor specific functionality */
> /*
> * Write Protect pin default active low for detecting SD card
> * to be protected. Set wp_inverted to invert the signal.
>@@ -108,9 +107,6 @@ struct SDHCIState {
> };
> typedef struct SDHCIState SDHCIState;
>
>-#define SDHCI_VENDOR_NONE 0
>-#define SDHCI_VENDOR_IMX 1
>-
> /*
> * Controller does not provide transfer-complete interrupt when not
> * busy.
>diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
>index 5359a6d8d3b..02214ca1a1c 100644
>--- a/hw/arm/fsl-imx25.c
>+++ b/hw/arm/fsl-imx25.c
>@@ -243,8 +243,6 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
> &error_abort);
> object_property_set_uint(OBJECT(&s->esdhc[i]), "capareg",
> IMX25_ESDHC_CAPABILITIES, &error_abort);
>- object_property_set_uint(OBJECT(&s->esdhc[i]), "vendor",
>- SDHCI_VENDOR_IMX, &error_abort);
> if (!sysbus_realize(SYS_BUS_DEVICE(&s->esdhc[i]), errp)) {
> return;
> }
>diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
>index dc86338b3a5..a114dc0d63d 100644
>--- a/hw/arm/fsl-imx6.c
>+++ b/hw/arm/fsl-imx6.c
>@@ -327,8 +327,6 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
> &error_abort);
> object_property_set_uint(OBJECT(&s->esdhc[i]), "capareg",
> IMX6_ESDHC_CAPABILITIES, &error_abort);
>- object_property_set_uint(OBJECT(&s->esdhc[i]), "vendor",
>- SDHCI_VENDOR_IMX, &error_abort);
> if (!sysbus_realize(SYS_BUS_DEVICE(&s->esdhc[i]), errp)) {
> return;
> }
>diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
>index 34c4aa15cd0..ce8d3ef535f 100644
>--- a/hw/arm/fsl-imx6ul.c
>+++ b/hw/arm/fsl-imx6ul.c
>@@ -531,8 +531,6 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
> FSL_IMX6UL_USDHC2_IRQ,
> };
>
>- object_property_set_uint(OBJECT(&s->usdhc[i]), "vendor",
>- SDHCI_VENDOR_IMX, &error_abort);
> sysbus_realize(SYS_BUS_DEVICE(&s->usdhc[i]), &error_abort);
>
> sysbus_mmio_map(SYS_BUS_DEVICE(&s->usdhc[i]), 0,
>diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
>index 3374018cde0..ed1f10bca26 100644
>--- a/hw/arm/fsl-imx7.c
>+++ b/hw/arm/fsl-imx7.c
>@@ -471,8 +471,6 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
> FSL_IMX7_USDHC3_IRQ,
> };
>
>- object_property_set_uint(OBJECT(&s->usdhc[i]), "vendor",
>- SDHCI_VENDOR_IMX, &error_abort);
> sysbus_realize(SYS_BUS_DEVICE(&s->usdhc[i]), &error_abort);
>
> sysbus_mmio_map(SYS_BUS_DEVICE(&s->usdhc[i]), 0,
>diff --git a/hw/arm/fsl-imx8mp.c b/hw/arm/fsl-imx8mp.c
>index 1ea98e14635..c3f6da63220 100644
>--- a/hw/arm/fsl-imx8mp.c
>+++ b/hw/arm/fsl-imx8mp.c
>@@ -524,8 +524,6 @@ static void fsl_imx8mp_realize(DeviceState *dev, Error **errp)
> { fsl_imx8mp_memmap[FSL_IMX8MP_USDHC3].addr, FSL_IMX8MP_USDHC3_IRQ },
> };
>
>- object_property_set_uint(OBJECT(&s->usdhc[i]), "vendor",
>- SDHCI_VENDOR_IMX, &error_abort);
> if (!sysbus_realize(SYS_BUS_DEVICE(&s->usdhc[i]), errp)) {
> return;
> }
>diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c
>index 1f45a77566c..149b748cbee 100644
>--- a/hw/sd/sdhci.c
>+++ b/hw/sd/sdhci.c
>@@ -1731,16 +1731,10 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t val, unsigned size)
>
> case USDHC_VENDOR_SPEC:
> s->vendor_spec = value;
>- switch (s->vendor) {
>- case SDHCI_VENDOR_IMX:
>- if (value & USDHC_IMX_FRC_SDCLK_ON) {
>- s->prnsts &= ~SDHC_IMX_CLOCK_GATE_OFF;
>- } else {
>- s->prnsts |= SDHC_IMX_CLOCK_GATE_OFF;
>- }
>- break;
>- default:
>- break;
>+ if (value & USDHC_IMX_FRC_SDCLK_ON) {
>+ s->prnsts &= ~SDHC_IMX_CLOCK_GATE_OFF;
>+ } else {
>+ s->prnsts |= SDHC_IMX_CLOCK_GATE_OFF;
> }
> break;
>
Reviewed-by: Bernhard Beschow <shentey@gmail.com>
On Sat, 8 Mar 2025, Philippe Mathieu-Daudé wrote: > All instances of TYPE_IMX_USDHC set vendor=SDHCI_VENDOR_IMX. > No need to special-case it. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: BALATON Zoltan <balaton@eik.bme.hu>
© 2016 - 2026 Red Hat, Inc.