]> git.sur5r.net Git - u-boot/commitdiff
omap_hsmmc: update struct hsmmc to accommodate omap3 from DT
authorAdam Ford <aford173@gmail.com>
Mon, 17 Apr 2017 13:09:37 +0000 (08:09 -0500)
committerTom Rini <trini@konsulko.com>
Wed, 10 May 2017 00:35:35 +0000 (20:35 -0400)
This patch changes the way DM_MMC calculates offset to the base register of
MMC. Previously this was through an #ifdef but that wasn't necessary for OMAP3.

This patch will now add in the offset to the base address based on the
.compatible flags.

Signed-off-by: Adam Ford <aford173@gmail.com>
V2: Remove ifdef completely and reference offset from the omap_hsmmc_ids table.

V1: Change ifdef to ignore OMAP3
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/arm/include/asm/omap_mmc.h
drivers/mmc/omap_hsmmc.c

index f2bf645b33b1d438c6aaf10d27e388e8ac8b6bec..93e003a368f12cd78919144ab5614b434ddbecb5 100644 (file)
@@ -26,9 +26,6 @@
 #define OMAP_MMC_H_
 
 struct hsmmc {
-#ifdef CONFIG_DM_MMC
-       unsigned char res0[0x100];
-#endif
        unsigned char res1[0x10];
        unsigned int sysconfig;         /* 0x10 */
        unsigned int sysstatus;         /* 0x14 */
index 83dda09c1feb8611341aebbe60f0f7e997742b0d..d151fe726622e4d075bb7ebb29a2ed8fcc3c384e 100644 (file)
@@ -61,6 +61,10 @@ struct omap_hsmmc_plat {
        struct mmc mmc;
 };
 
+struct omap2_mmc_platform_config {
+       u32 reg_offset;
+};
+
 struct omap_hsmmc_data {
        struct hsmmc *base_addr;
 #ifndef CONFIG_DM_MMC
@@ -778,12 +782,14 @@ static int omap_hsmmc_ofdata_to_platdata(struct udevice *dev)
        struct omap_hsmmc_data *priv = dev_get_priv(dev);
        struct omap_hsmmc_plat *plat = dev_get_platdata(dev);
        struct mmc_config *cfg = &plat->cfg;
+       struct omap2_mmc_platform_config *data =
+               (struct omap2_mmc_platform_config *)dev_get_driver_data(dev);
        const void *fdt = gd->fdt_blob;
        int node = dev_of_offset(dev);
        int val;
 
        priv->base_addr = map_physmem(dev_get_addr(dev), sizeof(struct hsmmc *),
-                                     MAP_NOCACHE);
+                                     MAP_NOCACHE) + data->reg_offset;
 
        cfg->host_caps = MMC_MODE_HS_52MHz | MMC_MODE_HS;
        val = fdtdec_get_int(fdt, node, "bus-width", -1);
@@ -854,10 +860,31 @@ static int omap_hsmmc_probe(struct udevice *dev)
        return 0;
 }
 
+static const struct omap2_mmc_platform_config omap3_mmc_pdata = {
+       .reg_offset = 0,
+};
+
+static const struct omap2_mmc_platform_config am33xx_mmc_pdata = {
+       .reg_offset = 0x100,
+};
+
+static const struct omap2_mmc_platform_config omap4_mmc_pdata = {
+       .reg_offset = 0x100,
+};
+
 static const struct udevice_id omap_hsmmc_ids[] = {
-       { .compatible = "ti,omap3-hsmmc" },
-       { .compatible = "ti,omap4-hsmmc" },
-       { .compatible = "ti,am33xx-hsmmc" },
+       {
+                       .compatible = "ti,omap3-hsmmc",
+                       .data = (ulong)&omap3_mmc_pdata
+       },
+       {
+                       .compatible = "ti,omap4-hsmmc",
+                       .data = (ulong)&omap4_mmc_pdata
+       },
+       {
+                       .compatible = "ti,am33xx-hsmmc",
+                       .data = (ulong)&am33xx_mmc_pdata
+       },
        { }
 };