Beispiel #1
0
static int s3c_g3d_suspend(struct platform_device *dev, pm_message_t state)
{
#if 1
	static critical_cnt=0;
	
	if(g_G3D_CriticalFlag)
	{
		printk("unexpected Suspend : App don't support suspend-mode.\n");
		if(critical_cnt++ < 5)
		{
			return -1;
		}
		
		critical_cnt = 0;
		/* device reset */
		softReset_g3d();
	}

	/*power off*/
	
	clk_g3d_disable();

#ifdef USE_G3D_DOMAIN_GATING
	DOMAIN_POWER_OFF;
#endif /* USE_G3D_DOMAIN_GATING */

	g_G3D_CriticalFlag=0;
	g_G3D_SelfPowerOFF=False;


#else
	if(g_G3D_CriticalFlag)
	{

		printk("unexpected Suspend : App don't support suspend-mode.\n");

		return -1;
	}
	else
	{
		/*power off*/
	
//		clk_g3d_disable();

#ifdef USE_G3D_DOMAIN_GATING
		DOMAIN_POWER_OFF;
#endif /* USE_G3D_DOMAIN_GATING */

		g_G3D_CriticalFlag=0;
		g_G3D_SelfPowerOFF=False;
	}
 #endif   
	return 0;
}
Beispiel #2
0
void s5p_g3d_power_off(void)
{
	if (!g_G3D_PowerInit)
		return;
	if (g_G3D_CriticalFlag > 0) //most unlikely
		return;

	/*turn off*/
	clk_g3d_disable();
	DOMAIN_POWER_OFF;
	g_G3D_SelfPowerOFF=True;
	return;
}
void s3c_g3d_timer(void)
{
	if (!g_G3D_PowerInit)
		return;
	if (g_G3D_CriticalFlag > 0)
	{/*turn on*/
		mod_timer(&g3d_pm_timer, jiffies + TIMER_INTERVAL);
		g_G3D_SelfPowerOFF=False;
		return;
	}
	/*turn off*/
	clk_g3d_disable();
	s3c_set_normal_cfg(S3C64XX_DOMAIN_G, S3C64XX_LP_MODE, S3C64XX_3D);
	g_G3D_SelfPowerOFF=True;
	//printk("[3D] Power off-timer wait\n");    
}
Beispiel #4
0
void s3c_g3d_timer(void)
{
	if (!g_G3D_PowerInit)
		return;
	if (g_G3D_CriticalFlag > 0)
	{/*turn on*/
		mod_timer(&g3d_pm_timer, jiffies + TIMER_INTERVAL);
		g_G3D_SelfPowerOFF=False;
		return;
	}
	/*turn off*/
	clk_g3d_disable();
	DOMAIN_POWER_OFF;
	g_G3D_SelfPowerOFF=True;
	//printk("[3D] Power off-timer wait\n");    
}
static int s3c_g3d_suspend(struct platform_device *dev, pm_message_t state)
{
	if(g_G3D_CriticalFlag)
	{
		printk("unexpected Suspend : App don't support suspend-mode.\n");
	}
	else
	{
		/*power off*/
	
		clk_g3d_disable();

#ifdef USE_G3D_DOMAIN_GATING
		s3c_set_normal_cfg(S3C64XX_DOMAIN_G, S3C64XX_LP_MODE, S3C64XX_3D);
#endif /* USE_G3D_DOMAIN_GATING */

		g_G3D_CriticalFlag=0;
		g_G3D_SelfPowerOFF=False;
	}
    
	return 0;
}
static int s3c_g3d_remove(struct platform_device *dev)
{
	free_irq(s3c_g3d_irq, NULL);

	if (s3c_g3d_mem != NULL) {
		pr_debug("s3c_g3d: releasing s3c_post_mem\n");
		iounmap(s3c_g3d_base);
		release_resource(s3c_g3d_mem);
		kfree(s3c_g3d_mem);
	}

	if (g3d_bootm != NULL)
		kfree(g3d_bootm);

	misc_deregister(&s3c_g3d_dev);

	clk_g3d_disable();

#ifdef USE_G3D_DOMAIN_GATING
	s3c_set_normal_cfg(S3C64XX_DOMAIN_G, S3C64XX_LP_MODE, S3C64XX_3D);
#endif /* USE_G3D_DOMAIN_GATING */

	return 0;
}