static int idpram_pm_resume(struct device *dev) { struct idpram_link_pm_data *pm_data = pm; idpram_resume_init(pm_data); gpio_set_value(pm_data->mdata->gpio_pda_active, 1); mif_debug("MIF: <%s>\n", __func__); return 0; }
static int idpram_post_resume(struct idpram_link_pm_data *pm_data) { int gpio_val = 0; pr_info("MIF: <%s+> pm_states = %d\n", __func__, pm_data->pm_states); switch (pm_data->pm_states) { /* schedule_work */ case IDPRAM_PM_DPRAM_POWER_DOWN: gpio_set_value(pm_data->mdata->gpio_pda_active, 0); pr_info("MIF: reset PDA_ACTIVE\n"); msleep(50); idpram_resume_init(pm_data); msleep(50); pr_info("MIF: set PDA_ACTIVE\n"); gpio_set_value(pm_data->mdata->gpio_pda_active, 1); msleep(20); gpio_val = gpio_get_value(pm_data->mdata->gpio_pda_active); pr_info("MIF: PDA_ACTIVE (%d)\n", gpio_val); if (gpio_val == 0) { gpio_set_value(pm_data->mdata->gpio_pda_active, 1); pr_info("MIF: PDA_ACTIVE set again.\n"); } pm_data->resume_retry_cnt = DPRAM_RESUME_CHECK_RETRY_CNT; wake_lock(&pm_data->hold_wlock); schedule_delayed_work(&pm_data->resume_work, \ msecs_to_jiffies(20)); break; case IDPRAM_PM_RESUME_START: break; case IDPRAM_PM_SUSPEND_PREPARE: break; } pr_info("MIF: <%s->\n", __func__); return 0; }
static int idpram_post_resume(struct idpram_link_pm_data *pm_data) { int gpio_val = 0; mif_info("MIF: idpram %s\n", __func__); switch (pm_data->pm_states) { /* schedule_work */ case IDPRAM_PM_DPRAM_POWER_DOWN: gpio_set_value(pm_data->mdata->gpio_pda_active, 0); mif_info("MIF: idpram PDA_ACTIVE LOW\n"); msleep(50); idpram_resume_init(pm_data); msleep(50); gpio_set_value(pm_data->mdata->gpio_pda_active, 1); msleep(20); gpio_val = gpio_get_value(pm_data->mdata->gpio_pda_active); mif_info("MIF: idpram PDA_ACTIVE (%d)\n", gpio_val); if (gpio_val == 0) { gpio_set_value(pm_data->mdata->gpio_pda_active, 1); mif_info("MIF: idpram PDA_ACTIVE set again.\n"); } break; case IDPRAM_PM_RESUME_START: break; case IDPRAM_PM_SUSPEND_PREPARE: break; } return 0; }