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; }
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"); }
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; }