| .. | .. |
|---|
| 656 | 656 | } |
|---|
| 657 | 657 | |
|---|
| 658 | 658 | #if defined(CONFIG_FB) |
|---|
| 659 | +#include <linux/async.h> |
|---|
| 660 | + |
|---|
| 661 | +static void gt1x_resume_async(void *data, async_cookie_t cookie) |
|---|
| 662 | +{ |
|---|
| 663 | + gt1x_resume(); |
|---|
| 664 | +} |
|---|
| 665 | + |
|---|
| 666 | +static void gt1x_suspend_async(void *data, async_cookie_t cookie) |
|---|
| 667 | +{ |
|---|
| 668 | + gt1x_suspend(); |
|---|
| 669 | +} |
|---|
| 670 | + |
|---|
| 659 | 671 | /* frame buffer notifier block control the suspend/resume procedure */ |
|---|
| 660 | 672 | static struct notifier_block gt1x_fb_notifier; |
|---|
| 661 | 673 | static int tp_status; |
|---|
| .. | .. |
|---|
| 686 | 698 | if (*blank == FB_BLANK_UNBLANK) { |
|---|
| 687 | 699 | tp_status = *blank; |
|---|
| 688 | 700 | GTP_DEBUG("Resume by fb notifier."); |
|---|
| 689 | | - gt1x_resume(); |
|---|
| 701 | + async_schedule(gt1x_resume_async, NULL); |
|---|
| 690 | 702 | } |
|---|
| 691 | 703 | } |
|---|
| 692 | 704 | #endif |
|---|
| .. | .. |
|---|
| 697 | 709 | if (*blank == FB_BLANK_POWERDOWN) { |
|---|
| 698 | 710 | tp_status = *blank; |
|---|
| 699 | 711 | GTP_DEBUG("Suspend by fb notifier."); |
|---|
| 700 | | - gt1x_suspend(); |
|---|
| 712 | + async_schedule(gt1x_suspend_async, NULL); |
|---|
| 701 | 713 | } |
|---|
| 702 | 714 | } |
|---|
| 703 | 715 | |
|---|