Hi, On 08/11/2016 10:52 PM, Ritesh Harjani wrote: > Few controllers (like MSM) may have to override div > in certain cases. Hence provide a callback to get the > div value for their driver. > > Signed-off-by: Sahitya Tummala <stummala@xxxxxxxxxxxxxx> > Signed-off-by: Ritesh Harjani <riteshh@xxxxxxxxxxxxxx> > --- > drivers/mmc/host/sdhci.c | 8 ++++++++ > drivers/mmc/host/sdhci.h | 1 + > 2 files changed, 9 insertions(+) > > diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c > index cd65d47..cc3d6f2 100644 > --- a/drivers/mmc/host/sdhci.c > +++ b/drivers/mmc/host/sdhci.c > @@ -1318,6 +1318,14 @@ u16 sdhci_calc_clk(struct sdhci_host *host, unsigned int clock, > clock_set: > if (real_div) > *actual_clock = (host->max_clk * clk_mul) / real_div; > + /* > + * Few controllers may have to override div > + * here. Hence provide a callback to get the > + * div value for them. > + */ > + if (host->ops->get_clk_div) > + div = host->ops->get_clk_div(host, div); This is for only getting your div value. Few controllers? Rather, use the existent callback function..It's better than adding new callback. In your controller, add the your set_clock() callback. not get_clk_div. (Well, Adrian might have other opinion.) Best Regards, Jaehoon Chung > + > clk |= (div & SDHCI_DIV_MASK) << SDHCI_DIVIDER_SHIFT; > clk |= ((div & SDHCI_DIV_HI_MASK) >> SDHCI_DIV_MASK_LEN) > << SDHCI_DIVIDER_HI_SHIFT; > diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h > index 0411c9f..4701001 100644 > --- a/drivers/mmc/host/sdhci.h > +++ b/drivers/mmc/host/sdhci.h > @@ -562,6 +562,7 @@ struct sdhci_ops { > struct mmc_card *card, > unsigned int max_dtr, int host_drv, > int card_drv, int *drv_type); > + int (*get_clk_div)(struct sdhci_host *host, int div); > }; > > #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS > -- 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