On Thu, 21 Nov 2024, Manikandan Muralidharan wrote: > The XLCDC IP supports DSI, parallel RGB and LVDS Display. > sys_clk(Generic clock) is used for DSI and Parallel RGB displays; > And LVDS PLL is used with LVDS displays. > obtain anyone of the clocks for the LCD to operate Maybe say something about this being a fall-back strategy. > > Signed-off-by: Manikandan Muralidharan <manikandan.m@xxxxxxxxxxxxx> > Signed-off-by: Dharma Balasubiramani <dharma.b@xxxxxxxxxxxxx> > --- > drivers/mfd/atmel-hlcdc.c | 16 ++++++++++++++-- > include/linux/mfd/atmel-hlcdc.h | 1 + > 2 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/drivers/mfd/atmel-hlcdc.c b/drivers/mfd/atmel-hlcdc.c > index 4c4e35d404f3..60b0b766459e 100644 > --- a/drivers/mfd/atmel-hlcdc.c > +++ b/drivers/mfd/atmel-hlcdc.c > @@ -108,10 +108,22 @@ static int atmel_hlcdc_probe(struct platform_device *pdev) > return PTR_ERR(hlcdc->periph_clk); > } > > + /* > + * Obtain one of the main clocks (GCK / LVDS PLL) required by the > + * LCD to function, > + * GCK for Parallel RGB and MIPI displays; > + * LVDS PLL for LVDS displays. > + */ > + hlcdc->sys_clk = NULL; > + hlcdc->lvds_pll_clk = NULL; Since, devm_kzalloc() is used to allocate this memory space, these are already NULL. > hlcdc->sys_clk = devm_clk_get(dev, "sys_clk"); > if (IS_ERR(hlcdc->sys_clk)) { > - dev_err(dev, "failed to get system clock\n"); > - return PTR_ERR(hlcdc->sys_clk); > + dev_dbg(dev, "failed to get system clock\n"); This should be a dev_warn(). May be add some more information. "failed to get system clock, trying xyz instead" '\n' here. > + hlcdc->lvds_pll_clk = devm_clk_get(dev, "lvds_pll_clk"); > + if (IS_ERR(hlcdc->lvds_pll_clk)) { > + dev_err(dev, "failed to get LVDS PLL clock\n"); > + return PTR_ERR(hlcdc->lvds_pll_clk); > + } > } > > hlcdc->slow_clk = devm_clk_get(dev, "slow_clk"); > diff --git a/include/linux/mfd/atmel-hlcdc.h b/include/linux/mfd/atmel-hlcdc.h > index 80d675a03b39..07c2081867fd 100644 > --- a/include/linux/mfd/atmel-hlcdc.h > +++ b/include/linux/mfd/atmel-hlcdc.h > @@ -75,6 +75,7 @@ > */ > struct atmel_hlcdc { > struct regmap *regmap; > + struct clk *lvds_pll_clk; > struct clk *periph_clk; > struct clk *sys_clk; > struct clk *slow_clk; > -- > 2.25.1 > -- Lee Jones [李琼斯]