Hi Maxime, On 21/11/18 3:41 PM, Maxime Ripard wrote: > Hi Kishon, > > On Tue, Nov 20, 2018 at 11:02:34AM +0530, Kishon Vijay Abraham I wrote: >>>> +static int cdns_dphy_config_from_opts(struct phy *phy, >>>> + struct phy_configure_opts_mipi_dphy *opts, >>>> + struct cdns_dphy_cfg *cfg) >>>> +{ >>>> + struct cdns_dphy *dphy = phy_get_drvdata(phy); >>>> + unsigned int dsi_hfp_ext = 0; >>>> + int ret; >>>> + >>>> + ret = phy_mipi_dphy_config_validate(opts); >>>> + if (ret) >>>> + return ret; >>>> + >>>> + ret = cdns_dsi_get_dphy_pll_cfg(dphy, cfg, >>>> + opts, &dsi_hfp_ext); >>>> + if (ret) >>>> + return ret; >>>> + >>>> + opts->wakeup = cdns_dphy_get_wakeup_time_ns(dphy); >> >> Is the wakeup populated here used by the consumer driver? > > It's supposed to, if it can yes. But I guess right now it's not using. I'm thinking the usefulness of validate callback (only from this series point of view). Why should a consumer driver invoke validate if it doesn't intend to configure the PHY? The 3 steps required are * The consumer driver gets the default config * The consumer driver changes some of the configuration and * The consumer driver invokes phy configure callback. phy_configure anyways can validate the config before actually configuring the phy. Thanks Kishon