Skip to content

Commit

Permalink
mmc: sdhci_pltfm: pass more data on custom init call
Browse files Browse the repository at this point in the history
The custom init call may need more data to perform its job, so we pass
it a pointer to pdata, too. Also, always use the platform_id specific
data even if platform_data is present. Doing that, platform_data can
additionally be parsed by init() for board-specific information (via
sdhci->mmc->parent).

(Note: the old behaviour was that you could override the platform_id
specific data with your own. However, one can still do this by using the
"sdhci" id instead of "sdhci-<something>".)

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Tested-by: Eric Bénard <eric@eukrea.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
  • Loading branch information
Wolfram Sang authored and Chris Ball committed Oct 23, 2010
1 parent 2dfb579 commit 012994f
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
8 changes: 5 additions & 3 deletions drivers/mmc/host/sdhci-pltfm.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,17 @@ static struct sdhci_ops sdhci_pltfm_ops = {

static int __devinit sdhci_pltfm_probe(struct platform_device *pdev)
{
struct sdhci_pltfm_data *pdata = pdev->dev.platform_data;
const struct platform_device_id *platid = platform_get_device_id(pdev);
struct sdhci_pltfm_data *pdata;
struct sdhci_host *host;
struct sdhci_pltfm_host *pltfm_host;
struct resource *iomem;
int ret;

if (!pdata && platid && platid->driver_data)
if (platid && platid->driver_data)
pdata = (void *)platid->driver_data;
else
pdata = pdev->dev.platform_data;

iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!iomem) {
Expand Down Expand Up @@ -109,7 +111,7 @@ static int __devinit sdhci_pltfm_probe(struct platform_device *pdev)
}

if (pdata && pdata->init) {
ret = pdata->init(host);
ret = pdata->init(host, pdata);
if (ret)
goto err_plat_init;
}
Expand Down
2 changes: 1 addition & 1 deletion include/linux/mmc/sdhci-pltfm.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ struct sdhci_host;
struct sdhci_pltfm_data {
struct sdhci_ops *ops;
unsigned int quirks;
int (*init)(struct sdhci_host *host);
int (*init)(struct sdhci_host *host, struct sdhci_pltfm_data *pdata);
void (*exit)(struct sdhci_host *host);
};

Expand Down

0 comments on commit 012994f

Please sign in to comment.