mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 11:24:42 +00:00
omap_hsmmc: update struct hsmmc to accommodate omap3 from DT
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>
This commit is contained in:
parent
82f766d1d2
commit
46831c1a4c
2 changed files with 31 additions and 7 deletions
|
@ -26,9 +26,6 @@
|
||||||
#define OMAP_MMC_H_
|
#define OMAP_MMC_H_
|
||||||
|
|
||||||
struct hsmmc {
|
struct hsmmc {
|
||||||
#ifdef CONFIG_DM_MMC
|
|
||||||
unsigned char res0[0x100];
|
|
||||||
#endif
|
|
||||||
unsigned char res1[0x10];
|
unsigned char res1[0x10];
|
||||||
unsigned int sysconfig; /* 0x10 */
|
unsigned int sysconfig; /* 0x10 */
|
||||||
unsigned int sysstatus; /* 0x14 */
|
unsigned int sysstatus; /* 0x14 */
|
||||||
|
|
|
@ -61,6 +61,10 @@ struct omap_hsmmc_plat {
|
||||||
struct mmc mmc;
|
struct mmc mmc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct omap2_mmc_platform_config {
|
||||||
|
u32 reg_offset;
|
||||||
|
};
|
||||||
|
|
||||||
struct omap_hsmmc_data {
|
struct omap_hsmmc_data {
|
||||||
struct hsmmc *base_addr;
|
struct hsmmc *base_addr;
|
||||||
#ifndef CONFIG_DM_MMC
|
#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_data *priv = dev_get_priv(dev);
|
||||||
struct omap_hsmmc_plat *plat = dev_get_platdata(dev);
|
struct omap_hsmmc_plat *plat = dev_get_platdata(dev);
|
||||||
struct mmc_config *cfg = &plat->cfg;
|
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;
|
const void *fdt = gd->fdt_blob;
|
||||||
int node = dev_of_offset(dev);
|
int node = dev_of_offset(dev);
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
priv->base_addr = map_physmem(dev_get_addr(dev), sizeof(struct hsmmc *),
|
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;
|
cfg->host_caps = MMC_MODE_HS_52MHz | MMC_MODE_HS;
|
||||||
val = fdtdec_get_int(fdt, node, "bus-width", -1);
|
val = fdtdec_get_int(fdt, node, "bus-width", -1);
|
||||||
|
@ -854,10 +860,31 @@ static int omap_hsmmc_probe(struct udevice *dev)
|
||||||
return 0;
|
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[] = {
|
static const struct udevice_id omap_hsmmc_ids[] = {
|
||||||
{ .compatible = "ti,omap3-hsmmc" },
|
{
|
||||||
{ .compatible = "ti,omap4-hsmmc" },
|
.compatible = "ti,omap3-hsmmc",
|
||||||
{ .compatible = "ti,am33xx-hsmmc" },
|
.data = (ulong)&omap3_mmc_pdata
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.compatible = "ti,omap4-hsmmc",
|
||||||
|
.data = (ulong)&omap4_mmc_pdata
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.compatible = "ti,am33xx-hsmmc",
|
||||||
|
.data = (ulong)&am33xx_mmc_pdata
|
||||||
|
},
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue