static int mddi_resume(struct platform_device *pdev) { mddi_host_type host_idx = MDDI_HOST_PRIM; if (!mddi_is_in_suspend) return 0; mddi_is_in_suspend = 0; if (mddi_power_locked) return 0; #ifdef CONFIG_SHLCDC_BOARD if (no_set_power_flag == FALSE) { shlcdc_api_set_power_mode(SHLCDC_DEV_TYPE_MDDI, SHLCDC_DEV_PWR_ON); } #endif enable_irq(INT_MDDI_PRI); #ifdef CONFIG_SHLCDC_BOARD pm_qos_update_requirement(PM_QOS_SYSTEM_BUS_FREQ, "mddi", 117000); #endif clk_enable(mddi_clk); mddi_host_reg_out(PAD_CTL, mddi_pad_ctrl); if (mddi_host_timer.function) mddi_host_timer_service(0); return 0; }
void mddi_disable(int lock) { mddi_host_type host_idx = MDDI_HOST_PRIM; if (mddi_power_locked) return; if (lock) mddi_power_locked = 1; if (mddi_host_timer.function) del_timer_sync(&mddi_host_timer); mddi_pad_ctrl = mddi_host_reg_in(PAD_CTL); mddi_host_reg_out(PAD_CTL, 0x0); if (clk_set_min_rate(mddi_clk, 0) < 0) printk(KERN_ERR "%s: clk_set_min_rate failed\n", __func__); clk_disable(mddi_clk); if (mddi_pclk) clk_disable(mddi_pclk); #ifdef CONFIG_SHLCDC_BOARD pm_qos_update_requirement(PM_QOS_SYSTEM_BUS_FREQ, "mddi", PM_QOS_DEFAULT_VALUE); #endif disable_irq(INT_MDDI_PRI); if (mddi_pdata && mddi_pdata->mddi_power_save) mddi_pdata->mddi_power_save(0); #ifdef CONFIG_SHLCDC_BOARD if (no_set_power_flag == FALSE) { shlcdc_api_set_power_mode(SHLCDC_DEV_TYPE_MDDI, SHLCDC_DEV_PWR_OFF); } #endif }