On 9 September 2014 02:09, Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxx> wrote: > > Hi Ulf > >> > diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c >> > index ece1634..7b41f57 100644 >> > --- a/drivers/mmc/host/omap_hsmmc.c >> > +++ b/drivers/mmc/host/omap_hsmmc.c >> > @@ -219,6 +219,7 @@ struct omap_hsmmc_host { >> > #define AUTO_CMD23 (1 << 0) /* Auto CMD23 support */ >> > #define HSMMC_SDIO_IRQ_ENABLED (1 << 1) /* SDIO irq enabled */ >> > #define HSMMC_WAKE_IRQ_ENABLED (1 << 2) >> > +#define HSMMC_NO_MULTI_READ (1 << 3) >> > struct omap_hsmmc_next next_data; >> > struct omap_mmc_platform_data *pdata; >> > }; > (snip) >> > #ifdef CONFIG_DEBUG_FS >> > @@ -2101,7 +2116,7 @@ static int omap_hsmmc_probe(struct platform_device *pdev) >> > >> > if (host->pdata->controller_flags & OMAP_HSMMC_BROKEN_MULTIBLOCK_READ) { >> > dev_info(&pdev->dev, "multiblock reads disabled due to 35xx erratum 2.1.1.128; MMC read performance may suffer\n"); >> > - mmc->caps2 |= MMC_CAP2_NO_MULTI_READ; >> >> An option to adding yet another flag, would be to assign >> ->multi_io_quirk = omap_hsmmc_multi_io_quirk() here? Isn't that >> actually better for those variants that doesn't suffer from this HW >> bug? > > This means we need to copy this ops for each driver ? > Otherwise, it breaks behavior if many drivers were probed. The are only one driver for omap_hsmmc, this is not tmio, which certainly is a different story. What you need to do, is to make omap_hsmmc_ops non const - and assign the function pointer here. That should work. Kind regards Uffe -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html