Exemple #1
0
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;
}
Exemple #3
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;
}