|
|
|
@ -58,6 +58,7 @@ DECLARE_GLOBAL_DATA_PTR; |
|
|
|
|
|
|
|
|
|
struct omap_hsmmc_plat { |
|
|
|
|
struct mmc_config cfg; |
|
|
|
|
struct mmc mmc; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
struct omap_hsmmc_data { |
|
|
|
@ -814,6 +815,15 @@ static int omap_hsmmc_ofdata_to_platdata(struct udevice *dev) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_BLK |
|
|
|
|
|
|
|
|
|
static int omap_hsmmc_bind(struct udevice *dev) |
|
|
|
|
{ |
|
|
|
|
struct omap_hsmmc_plat *plat = dev_get_platdata(dev); |
|
|
|
|
|
|
|
|
|
return mmc_bind(dev, &plat->mmc, &plat->cfg); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
static int omap_hsmmc_probe(struct udevice *dev) |
|
|
|
|
{ |
|
|
|
|
struct omap_hsmmc_plat *plat = dev_get_platdata(dev); |
|
|
|
@ -825,9 +835,13 @@ static int omap_hsmmc_probe(struct udevice *dev) |
|
|
|
|
cfg->name = "OMAP SD/MMC"; |
|
|
|
|
cfg->ops = &omap_hsmmc_ops; |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_BLK |
|
|
|
|
mmc = &plat->mmc; |
|
|
|
|
#else |
|
|
|
|
mmc = mmc_create(cfg, priv); |
|
|
|
|
if (mmc == NULL) |
|
|
|
|
return -1; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef OMAP_HSMMC_USE_GPIO |
|
|
|
|
gpio_request_by_name(dev, "cd-gpios", 0, &priv->cd_gpio, GPIOD_IS_IN); |
|
|
|
@ -852,6 +866,9 @@ U_BOOT_DRIVER(omap_hsmmc) = { |
|
|
|
|
.id = UCLASS_MMC, |
|
|
|
|
.of_match = omap_hsmmc_ids, |
|
|
|
|
.ofdata_to_platdata = omap_hsmmc_ofdata_to_platdata, |
|
|
|
|
#ifdef CONFIG_BLK |
|
|
|
|
.bind = omap_hsmmc_bind, |
|
|
|
|
#endif |
|
|
|
|
.probe = omap_hsmmc_probe, |
|
|
|
|
.priv_auto_alloc_size = sizeof(struct omap_hsmmc_data), |
|
|
|
|
.platdata_auto_alloc_size = sizeof(struct omap_hsmmc_plat), |
|
|
|
|