Exemple #1
0
static int chipsfb_pci_resume(struct pci_dev *pdev)
{
        struct fb_info *p = pci_get_drvdata(pdev);

	console_lock();
	fb_set_suspend(p, 0);
	chipsfb_blank(0, p);
	console_unlock();

	pdev->dev.power.power_state = PMSG_ON;
	return 0;
}
Exemple #2
0
/*
 * Save the contents of the frame buffer when we go to sleep,
 * and restore it when we wake up again.
 */
int
chips_sleep_notify(struct pmu_sleep_notifier *self, int when)
{
	struct fb_info *p = &chipsfb_info;
	int nb = p->var.yres * p->fix.line_length;

	if (p->screen_base == NULL)
		return PBOOK_SLEEP_OK;

	switch (when) {
	case PBOOK_SLEEP_REQUEST:
		save_framebuffer = vmalloc(nb);
		if (save_framebuffer == NULL)
			return PBOOK_SLEEP_REFUSE;
		break;
	case PBOOK_SLEEP_REJECT:
		if (save_framebuffer) {
			vfree(save_framebuffer);
			save_framebuffer = NULL;
		}
		break;
	case PBOOK_SLEEP_NOW:
		chipsfb_blank(1, p);
		if (save_framebuffer)
			memcpy(save_framebuffer, p->screen_base, nb);
		break;
	case PBOOK_WAKE:
		if (save_framebuffer) {
			memcpy(p->screen_base, save_framebuffer, nb);
			vfree(save_framebuffer);
			save_framebuffer = NULL;
		}
		chipsfb_blank(0, p);
		break;
	}
	return PBOOK_SLEEP_OK;
}
Exemple #3
0
static int chipsfb_pci_suspend(struct pci_dev *pdev, pm_message_t state)
{
        struct fb_info *p = pci_get_drvdata(pdev);

	if (state.event == pdev->dev.power.power_state.event)
		return 0;
	if (!(state.event & PM_EVENT_SLEEP))
		goto done;

	console_lock();
	chipsfb_blank(1, p);
	fb_set_suspend(p, 1);
	console_unlock();
 done:
	pdev->dev.power.power_state = state;
	return 0;
}
static int chipsfb_pci_suspend(struct pci_dev *pdev, pm_message_t state)
{
        struct fb_info *p = pci_get_drvdata(pdev);

	if (state.event == pdev->dev.power.power_state.event)
		return 0;
	if (state.event != PM_SUSPEND_MEM)
		goto done;

	acquire_console_sem();
	chipsfb_blank(1, p);
	fb_set_suspend(p, 1);
	release_console_sem();
 done:
	pdev->dev.power.power_state = state;
	return 0;
}