Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2faee84 authored by Tomi Valkeinen's avatar Tomi Valkeinen
Browse files

OMAP: DSS2: move enable/disable_channel to overlay manager



Move enable/disable_channel() from omap_dss_device to overlay manager.

This is part of a larger patch-set, which moves the control from omapdss
driver to the display driver.

Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@nokia.com>
parent 3f71cbe7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -371,6 +371,9 @@ struct omap_overlay_manager {
	int (*apply)(struct omap_overlay_manager *mgr);
	int (*wait_for_go)(struct omap_overlay_manager *mgr);
	int (*wait_for_vsync)(struct omap_overlay_manager *mgr);

	int (*enable)(struct omap_overlay_manager *mgr);
	int (*disable)(struct omap_overlay_manager *mgr);
};

struct omap_dss_device {
+22 −2
Original line number Diff line number Diff line
@@ -1725,7 +1725,7 @@ static void _enable_lcd_out(bool enable)
	REG_FLD_MOD(DISPC_CONTROL, enable ? 1 : 0, 0, 0);
}

void dispc_enable_lcd_out(bool enable)
static void dispc_enable_lcd_out(bool enable)
{
	struct completion frame_done_completion;
	bool is_on;
@@ -1772,7 +1772,7 @@ static void _enable_digit_out(bool enable)
	REG_FLD_MOD(DISPC_CONTROL, enable ? 1 : 0, 1, 1);
}

void dispc_enable_digit_out(bool enable)
static void dispc_enable_digit_out(bool enable)
{
	struct completion frame_done_completion;
	int r;
@@ -1836,6 +1836,26 @@ void dispc_enable_digit_out(bool enable)
	enable_clocks(0);
}

bool dispc_is_channel_enabled(enum omap_channel channel)
{
	if (channel == OMAP_DSS_CHANNEL_LCD)
		return !!REG_GET(DISPC_CONTROL, 0, 0);
	else if (channel == OMAP_DSS_CHANNEL_DIGIT)
		return !!REG_GET(DISPC_CONTROL, 1, 1);
	else
		BUG();
}

void dispc_enable_channel(enum omap_channel channel, bool enable)
{
	if (channel == OMAP_DSS_CHANNEL_LCD)
		dispc_enable_lcd_out(enable);
	else if (channel == OMAP_DSS_CHANNEL_DIGIT)
		dispc_enable_digit_out(enable);
	else
		BUG();
}

void dispc_lcd_enable_signal_polarity(bool act_high)
{
	enable_clocks(1);
+7 −7
Original line number Diff line number Diff line
@@ -194,7 +194,7 @@ static int dpi_display_enable(struct omap_dss_device *dssdev)

	mdelay(2);

	dispc_enable_lcd_out(1);
	dssdev->manager->enable(dssdev->manager);

	r = dssdev->driver->enable(dssdev);
	if (r)
@@ -205,7 +205,7 @@ static int dpi_display_enable(struct omap_dss_device *dssdev)
	return 0;

err6:
	dispc_enable_lcd_out(0);
	dssdev->manager->disable(dssdev->manager);
err5:
#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL
	dsi_pll_uninit();
@@ -235,7 +235,7 @@ static void dpi_display_disable(struct omap_dss_device *dssdev)

	dssdev->driver->disable(dssdev);

	dispc_enable_lcd_out(0);
	dssdev->manager->disable(dssdev->manager);

#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL
	dss_select_dispc_clk_source(DSS_SRC_DSS1_ALWON_FCLK);
@@ -263,7 +263,7 @@ static int dpi_display_suspend(struct omap_dss_device *dssdev)
	if (dssdev->driver->suspend)
		dssdev->driver->suspend(dssdev);

	dispc_enable_lcd_out(0);
	dssdev->manager->disable(dssdev->manager);

	dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK1);

@@ -292,7 +292,7 @@ static int dpi_display_resume(struct omap_dss_device *dssdev)

	dss_clk_enable(DSS_CLK_ICK | DSS_CLK_FCK1);

	dispc_enable_lcd_out(1);
	dssdev->manager->enable(dssdev->manager);

	if (dssdev->driver->resume)
		dssdev->driver->resume(dssdev);
@@ -383,10 +383,10 @@ static int dpi_display_set_update_mode(struct omap_dss_device *dssdev,
		return -EINVAL;

	if (mode == OMAP_DSS_UPDATE_DISABLED) {
		dispc_enable_lcd_out(0);
		dssdev->manager->disable(dssdev->manager);
		dpi.update_enabled = 0;
	} else {
		dispc_enable_lcd_out(1);
		dssdev->manager->enable(dssdev->manager);
		dpi.update_enabled = 1;
	}

+1 −1
Original line number Diff line number Diff line
@@ -3013,7 +3013,7 @@ static int dsi_update_thread(void *data)
						x, y, w, h);

				dispc_enable_sidle();
				dispc_enable_lcd_out(0);
				device->manager->disable(device->manager);

				dsi_reset_tx_fifo(0);
			} else {
+2 −2
Original line number Diff line number Diff line
@@ -324,8 +324,8 @@ int dispc_setup_plane(enum omap_plane plane,

bool dispc_go_busy(enum omap_channel channel);
void dispc_go(enum omap_channel channel);
void dispc_enable_lcd_out(bool enable);
void dispc_enable_digit_out(bool enable);
void dispc_enable_channel(enum omap_channel channel, bool enable);
bool dispc_is_channel_enabled(enum omap_channel channel);
int dispc_enable_plane(enum omap_plane plane, bool enable);
void dispc_enable_replication(enum omap_plane plane, bool enable);

Loading