예제 #1
0
static void dss_clk_disable_all_no_ctx(void)
{
	enum dss_clock clks;

	clks = DSS_CLK_ICK | DSS_CLK_FCK1 | DSS_CLK_FCK2 | DSS_CLK_54M;
	if (cpu_is_omap34xx() || cpu_is_omap44xx())
		clks |= DSS_CLK_96M;
	dss_clk_disable_no_ctx(clks);
}
예제 #2
0
void dss_clk_disable(enum dss_clock clks)
{
	if (cpu_is_omap34xx()) {
		unsigned num_clks = count_clk_bits(clks);

		BUG_ON(core.num_clks_enabled < num_clks);
	}

	dss_clk_disable_no_ctx(clks);
}
예제 #3
0
void dss_clk_disable(enum dss_clock clks)
{
	if (cpu_is_omap34xx()) {
		unsigned num_clks = count_clk_bits(clks);

		//BUG_ON(core.num_clks_enabled < num_clks);

		if (core.pdata && (core.num_clks_enabled == num_clks))
			save_all_ctx();
	}

	dss_clk_disable_no_ctx(clks);
}
예제 #4
0
static void save_all_ctx(void)
{
	DSSDBG("save context\n");

	dss_clk_enable_no_ctx(DSS_CLK_ICK | DSS_CLK_FCK1);

	dss_save_context();
	dispc_save_context();
#ifdef CONFIG_OMAP2_DSS_DSI
	dsi_save_context();
#endif

	dss_clk_disable_no_ctx(DSS_CLK_ICK | DSS_CLK_FCK1);
}
예제 #5
0
static int omap_dss_suspend(struct platform_device *pdev, pm_message_t state)
{
	int r;

	DSSDBG("suspend %d\n", state.event);

	r = dss_suspend_all_devices();

	if (!r) {
		/*
		 * FCLKs in CM_FCLKEN_DSS set to off
		 */
		dss_clk_disable_no_ctx(DSS_CLK_ICK | DSS_CLK_FCK1 | DSS_CLK_54M);
		
		#if defined(CONFIG_MACH_SAMSUNG_NOWPLUS)
			dss_set_mainclk_state(false);
		#endif
	}

	omap_pm_set_min_bus_tput(&core.pdev->dev, OCP_INITIATOR_AGENT, -1);

	return r;
}