return PTR_ERR(hlcdc->periph_clk);
}
+ /*
+ * Retrieve one of the primary clocks required for LCD operation:
+ * prefer sys_clk (for RGB/MIPI), and fall back to lvds_pll_clk
+ * (for LVDS) if needed.
+ */
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);
+ hlcdc->sys_clk = NULL;
+ hlcdc->lvds_pll_clk = devm_clk_get(dev, "lvds_pll_clk");
+ if (IS_ERR(hlcdc->lvds_pll_clk)) {
+ dev_err(dev, "Failed to obtain both the LCDC (generic) and LVDS PLL clocks\n");
+ return PTR_ERR(hlcdc->lvds_pll_clk);
+ }
}
hlcdc->slow_clk = devm_clk_get(dev, "slow_clk");