Commit f5a5f04b authored by Manikandan Muralidharan's avatar Manikandan Muralidharan Committed by Sam Ravnborg
Browse files

drm: atmel_hlcdc: replace regmap_read with regmap_read_poll_timeout

parent 73fc9753
Loading
Loading
Loading
Loading
+25 −19
Original line number Diff line number Diff line
@@ -203,19 +203,22 @@ static void atmel_hlcdc_crtc_atomic_disable(struct drm_crtc *c,
	pm_runtime_get_sync(dev->dev);

	regmap_write(regmap, ATMEL_HLCDC_DIS, ATMEL_HLCDC_DISP);
	while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) &&
	       (status & ATMEL_HLCDC_DISP))
		cpu_relax();
	if (regmap_read_poll_timeout(regmap, ATMEL_HLCDC_SR, status,
				     !(status & ATMEL_HLCDC_DISP),
				    10, 1000))
		dev_warn(dev->dev, "Atmel LCDC status register DISPSTS timeout\n");

	regmap_write(regmap, ATMEL_HLCDC_DIS, ATMEL_HLCDC_SYNC);
	while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) &&
	       (status & ATMEL_HLCDC_SYNC))
		cpu_relax();
	if (regmap_read_poll_timeout(regmap, ATMEL_HLCDC_SR, status,
				     !(status & ATMEL_HLCDC_SYNC),
				    10, 1000))
		dev_warn(dev->dev, "Atmel LCDC status register LCDSTS timeout\n");

	regmap_write(regmap, ATMEL_HLCDC_DIS, ATMEL_HLCDC_PIXEL_CLK);
	while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) &&
	       (status & ATMEL_HLCDC_PIXEL_CLK))
		cpu_relax();
	if (regmap_read_poll_timeout(regmap, ATMEL_HLCDC_SR, status,
				     !(status & ATMEL_HLCDC_PIXEL_CLK),
				    10, 1000))
		dev_warn(dev->dev, "Atmel LCDC status register CLKSTS timeout\n");

	clk_disable_unprepare(crtc->dc->hlcdc->sys_clk);
	pinctrl_pm_select_sleep_state(dev->dev);
@@ -241,20 +244,23 @@ static void atmel_hlcdc_crtc_atomic_enable(struct drm_crtc *c,
	clk_prepare_enable(crtc->dc->hlcdc->sys_clk);

	regmap_write(regmap, ATMEL_HLCDC_EN, ATMEL_HLCDC_PIXEL_CLK);
	while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) &&
	       !(status & ATMEL_HLCDC_PIXEL_CLK))
		cpu_relax();

	if (regmap_read_poll_timeout(regmap, ATMEL_HLCDC_SR, status,
				     status & ATMEL_HLCDC_PIXEL_CLK,
				     10, 1000))
		dev_warn(dev->dev, "Atmel LCDC status register CLKSTS timeout\n");

	regmap_write(regmap, ATMEL_HLCDC_EN, ATMEL_HLCDC_SYNC);
	while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) &&
	       !(status & ATMEL_HLCDC_SYNC))
		cpu_relax();
	if (regmap_read_poll_timeout(regmap, ATMEL_HLCDC_SR, status,
				     status & ATMEL_HLCDC_SYNC,
				     10, 1000))
		dev_warn(dev->dev, "Atmel LCDC status register LCDSTS timeout\n");

	regmap_write(regmap, ATMEL_HLCDC_EN, ATMEL_HLCDC_DISP);
	while (!regmap_read(regmap, ATMEL_HLCDC_SR, &status) &&
	       !(status & ATMEL_HLCDC_DISP))
		cpu_relax();
	if (regmap_read_poll_timeout(regmap, ATMEL_HLCDC_SR, status,
				     status & ATMEL_HLCDC_DISP,
				     10, 1000))
		dev_warn(dev->dev, "Atmel LCDC status register DISPSTS timeout\n");


	pm_runtime_put_sync(dev->dev);