summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSam Protsenko <[email protected]>2025-10-25 20:06:53 -0500
committerPeng Fan <[email protected]>2025-11-07 09:28:28 +0800
commitf391a1158f3db496ce994b613f76b389ef275552 (patch)
treee9c5cceb973ac4fa092234946ed50e2cab09de83 /drivers
parentddc916334a7a7e180b532dbb2cf1b778466d2b9b (diff)
mmc: exynos_dw_mmc: Extend dm_dwmci_ops without code duplication
Instead of extending dm_dwmci_ops by copy-pasting the structure code first, copy the actual structure data with memcpy() and then set the .execute_tuning field. Now if struct dm_dwmci_ops gets modified in future, these changes will be automatically reflected in struct exynos_dwmmc_ops, which prevents possible issues in future. It also avoids code duplication. No functional change, but it can prevent possible isssues in future. Fixes: eda4bd29929c ("mmc: exynos_dw_mmc: add support for MMC HS200 and HS400 modes") Signed-off-by: Sam Protsenko <[email protected]> Reviewed-by: Anand Moon <[email protected]> Signed-off-by: Peng Fan <[email protected]>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/exynos_dw_mmc.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/mmc/exynos_dw_mmc.c b/drivers/mmc/exynos_dw_mmc.c
index b230e9dbbf8..190c6349380 100644
--- a/drivers/mmc/exynos_dw_mmc.c
+++ b/drivers/mmc/exynos_dw_mmc.c
@@ -367,6 +367,8 @@ static int exynos_dwmmc_execute_tuning(struct udevice *dev, u32 opcode)
}
#endif
+struct dm_mmc_ops exynos_dwmmc_ops;
+
static int exynos_dwmmc_probe(struct udevice *dev)
{
struct exynos_mmc_plat *plat = dev_get_plat(dev);
@@ -376,6 +378,12 @@ static int exynos_dwmmc_probe(struct udevice *dev)
unsigned long freq;
int err;
+ /* Extend generic 'dm_dwmci_ops' with .execute_tuning implementation */
+ memcpy(&exynos_dwmmc_ops, &dm_dwmci_ops, sizeof(struct dm_mmc_ops));
+#if CONFIG_IS_ENABLED(MMC_SUPPORTS_TUNING)
+ exynos_dwmmc_ops.execute_tuning = exynos_dwmmc_execute_tuning;
+#endif
+
#ifndef CONFIG_CPU_V7A
err = clk_get_by_index(dev, 1, &priv->clk); /* ciu */
if (err)
@@ -480,14 +488,6 @@ static const struct udevice_id exynos_dwmmc_ids[] = {
{ }
};
-struct dm_mmc_ops exynos_dwmmc_ops = {
- .send_cmd = dwmci_send_cmd,
- .set_ios = dwmci_set_ios,
-#if CONFIG_IS_ENABLED(MMC_SUPPORTS_TUNING)
- .execute_tuning = exynos_dwmmc_execute_tuning,
-#endif
-};
-
U_BOOT_DRIVER(exynos_dwmmc_drv) = {
.name = "exynos_dwmmc",
.id = UCLASS_MMC,