<<snip>>
> As I understand it, the PBIAS configuration is required for HSMMC
> irrespective of how the power is supplied, thus it is not TWL related.
> The TWL stuff should not be in hsmmc.c.
>
> Also I would suggest the only change to omap_hsmmc is:
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index e9caf69..f792cff 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -465,8 +465,6 @@ static int omap_hsmmc_gpio_init(struct
> omap_mmc_platform_data *pdata)
> int ret;
>
> if (gpio_is_valid(pdata->slots[0].switch_pin)) {
> - pdata->suspend = omap_hsmmc_suspend_cdirq;
> - pdata->resume = omap_hsmmc_resume_cdirq;
> if (pdata->slots[0].cover)
> pdata->slots[0].get_cover_state =
> omap_hsmmc_get_cover_state;
> @@ -2160,6 +2158,8 @@ static int __init omap_hsmmc_probe(struct
> platform_device *pdev)
> "Unable to grab MMC CD IRQ\n");
> goto err_irq_cd;
> }
> + pdata->suspend = omap_hsmmc_suspend_cdirq;
> + pdata->resume = omap_hsmmc_resume_cdirq;
> }
>
> OMAP_HSMMC_WRITE(host->base, ISE, INT_EN_MASK);
>
>
> And that the late init function is used to do the rest e.g.
> find a home for these 3 functions:
>
> static int omap4_twl6030_hsmmc_late_init(struct device *dev)
> {
> int ret = 0;
> struct platform_device *pdev = container_of(dev,
> struct platform_device, dev);
> struct omap_mmc_platform_data *pdata = dev->platform_data;
>
> /* MMC1 Card detect Configuration */
> if (pdev->id == 0) {
> ret = omap4_hsmmc1_card_detect_config();
> if (ret < 0)
> pr_err("Unable to configure Card detect for MMC1\n");
> pdata->slots[0].card_detect = twl6030_mmc_card_detect;
> pdata->slots[0].card_detect_irq = TWL6030_IRQ_BASE +
> MMCDETECT_INTR_OFFSET;
> }
> return ret;
> }
>
> static __init void omap4_twl6030_hsmmc_set_late_init(struct device *dev)
> {
> struct omap_mmc_platform_data *pdata = dev->platform_data;
>
> pdata->init = omap4_twl6030_hsmmc_late_init;
> }
>
> void __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers)
> {
> struct omap2_hsmmc_info *c;
>
> omap2_hsmmc_init(controllers);
>
> for (c = controllers; c->mmc; c++)
> omap4_twl6030_hsmmc_set_late_init(c->dev);
> }
>
> And then the board file becomes:
>
> static struct omap2_hsmmc_info mmc[] = {
> {
> .mmc = 1,
> .wires = 8,
> .gpio_cd = -EINVAL,
> .gpio_wp = -EINVAL,
> },
> {
> .mmc = 2,
> .wires = 8,
> .gpio_cd = -EINVAL,
> .gpio_wp = -EINVAL,
> .nonremovable = true,
> },
> {} /* Terminator */
> };
>
> static struct regulator_consumer_supply sdp4430_vmmc_supply[] = {
> {
> .supply = "vmmc",
> .dev_name = "mmci-omap-hs.0",
> },
> {
> .supply = "vmmc",
> .dev_name = "mmci-omap-hs.1",
> },
> };
>
> static int __init sdp4430_mmc_init(void)
> {
> omap4_twl6030_hsmmc_init(mmc);
> return 0;
> }
>
Thanks Adrian !
Agree and will move changes to board-4430 file
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html