int irq;
void __iomem *base;
struct regmap *gpr;
+ bool rpm_suspended;
struct clk *clk_pix;
struct clk *clk_disp_axi;
platform_set_drvdata(pdev, lcdif);
pm_runtime_enable(dev);
+ lcdif->rpm_suspended = true;
dev_dbg(dev, "%s: probe end\n", __func__);
{
struct lcdif_soc *lcdif = dev_get_drvdata(dev);
+ if (lcdif->rpm_suspended == true)
+ return 0;
+
lcdif_disable_clocks(lcdif);
release_bus_freq(BUS_FREQ_HIGH);
+ lcdif->rpm_suspended = true;
+
return 0;
}
int ret = 0;
struct lcdif_soc *lcdif = dev_get_drvdata(dev);
+ if (lcdif->rpm_suspended == false)
+ return 0;
+
request_bus_freq(BUS_FREQ_HIGH);
ret = lcdif_enable_clocks(lcdif);
/* Pull LCDIF out of reset */
writel(0x0, lcdif->base + LCDIF_CTRL);
+ lcdif->rpm_suspended = false;
+
return ret;
}
#endif