From 3210267af6fb7450b2c7146759f571f534b18080 Mon Sep 17 00:00:00 2001 From: phc Date: Fri, 6 May 2011 20:30:53 +0800 Subject: [PATCH] RK29MobileSDK:support mtk23d sleep and wakeup --- arch/arm/mach-rk29/board-rk29-phonesdk.c | 6 +++--- drivers/misc/mtk23d.c | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-rk29/board-rk29-phonesdk.c b/arch/arm/mach-rk29/board-rk29-phonesdk.c index 5b6b31b3ea96..10f2f744ce0b 100755 --- a/arch/arm/mach-rk29/board-rk29-phonesdk.c +++ b/arch/arm/mach-rk29/board-rk29-phonesdk.c @@ -2241,9 +2241,9 @@ struct rk2818_23d_data rk2818_23d_info = { .bp_power_active_low = 0, .bp_reset = RK29_PIN0_PA1, .bp_reset_active_low = 1, - .bp_statue = RK29_PIN0_PA3,//input high bp sleep; - .ap_statue = RK29_PIN0_PA2,//output high ap sleep; - .ap_bp_wakeup = RK29_PIN0_PA4, //output AP wake up BP used rising edge; + .bp_statue = RK29_PIN0_PA2,//input high bp sleep; + .ap_statue = RK29_PIN0_PA4,//output high ap sleep; + .ap_bp_wakeup = RK29_PIN0_PA3, //output AP wake up BP used rising edge; //.bp_ap_wakeup = RK2818_PIN_PE0,//input BP wake up AP }; struct platform_device rk2818_device_mtk23d = { diff --git a/drivers/misc/mtk23d.c b/drivers/misc/mtk23d.c index 0367884e40c9..d63ba9f954bb 100755 --- a/drivers/misc/mtk23d.c +++ b/drivers/misc/mtk23d.c @@ -21,6 +21,7 @@ //#include #include #include +#include MODULE_LICENSE("GPL"); @@ -44,6 +45,9 @@ MODULE_LICENSE("GPL"); //#define AP_BP_WAKEUP RK2818_PIN_PF5 //output AP wake up BP used rising edge //#define BP_AP_WAKEUP RK2818_PIN_PE0 //input BP wake up AP +//static bool wakelock_inited; +//static struct wake_lock mtk23d_wakelock; + #define SLEEP 1 #define READY 0 @@ -275,6 +279,7 @@ static int mtk23d_probe(struct platform_device *pdev) gpio_direction_output(pdata->bp_reset, pdata->bp_reset_active_low? GPIO_LOW:GPIO_HIGH); mdelay(100); gpio_set_value(pdata->bp_reset, pdata->bp_reset_active_low? GPIO_HIGH:GPIO_LOW); + gpio_set_value(pdata->ap_bp_wakeup, GPIO_HIGH); #endif #if 0 @@ -301,6 +306,12 @@ static int mtk23d_probe(struct platform_device *pdev) MODEMDBG("misc_register err\n"); } MODEMDBG("mtk23d_probe ok\n"); + +// if (!wakelock_inited) { +// wake_lock_init(&mtk23d_wakelock, WAKE_LOCK_SUSPEND, "23d_resume"); +// wakelock_inited = true; +// } + return result; err0: cancel_work_sync(&mt6223d_data->work); @@ -342,6 +353,9 @@ int mtk23d_resume(struct platform_device *pdev) //disable_irq_wake(irq); ap_wakeup(pdev); ap_wakeup_bp(pdev, 1); + +// wake_lock_timeout(&mtk23d_wakelock, 10 * HZ); + return 0; } -- 2.34.1