
Deine private structure arasan_sdhci_priv instead of sdhci_host as private. This allows us in adding more private data as required for usage in driver.
Signed-off-by: Siva Durga Prasad Paladugu sivadur@xilinx.com --- drivers/mmc/zynq_sdhci.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/drivers/mmc/zynq_sdhci.c b/drivers/mmc/zynq_sdhci.c index 3da1385..2c1561c 100644 --- a/drivers/mmc/zynq_sdhci.c +++ b/drivers/mmc/zynq_sdhci.c @@ -22,13 +22,20 @@ struct arasan_sdhci_plat { struct mmc mmc; };
+struct arasan_sdhci_priv { + struct sdhci_host *host; +}; + static int arasan_sdhci_probe(struct udevice *dev) { struct arasan_sdhci_plat *plat = dev_get_platdata(dev); struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev); - struct sdhci_host *host = dev_get_priv(dev); + struct arasan_sdhci_priv *priv = dev_get_priv(dev); + struct sdhci_host *host; int ret;
+ host = priv->host; + host->quirks = SDHCI_QUIRK_WAIT_SEND_CMD | SDHCI_QUIRK_BROKEN_R1B;
@@ -50,10 +57,14 @@ static int arasan_sdhci_probe(struct udevice *dev)
static int arasan_sdhci_ofdata_to_platdata(struct udevice *dev) { - struct sdhci_host *host = dev_get_priv(dev); + struct arasan_sdhci_priv *priv = dev_get_priv(dev); + + priv->host = calloc(1, sizeof(struct sdhci_host)); + if (priv->host == NULL) + return -1;
- host->name = dev->name; - host->ioaddr = (void *)dev_get_addr(dev); + priv->host->name = dev->name; + priv->host->ioaddr = (void *)dev_get_addr(dev);
return 0; }