From 3d91347adc7735034c71ad5a177b533df7b9866c Mon Sep 17 00:00:00 2001 From: phc Date: Mon, 25 Apr 2011 17:19:26 +0800 Subject: [PATCH] RKMobileSDK:add reset ioctl for 23d --- drivers/misc/mtk23d.c | 16 +++++++++++++++- include/linux/mtk23d.h | 4 ++++ 2 files changed, 19 insertions(+), 1 deletion(-) mode change 100644 => 100755 include/linux/mtk23d.h diff --git a/drivers/misc/mtk23d.c b/drivers/misc/mtk23d.c index 2faa0ab859a7..aa54011023e2 100755 --- a/drivers/misc/mtk23d.c +++ b/drivers/misc/mtk23d.c @@ -160,7 +160,21 @@ static int mtk23d_release(struct inode *inode, struct file *file) static int mtk23d_ioctl(struct inode *inode,struct file *file, unsigned int cmd, unsigned long arg) { - MODEMDBG("mtk23d_ioctl\n"); + struct rk2818_23d_data *pdata = gpdata; + + MODEMDBG("mtk23d_ioctl, cmd = %d\n", cmd); + + if(cmd == MODEM_RESET) + { + 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); + mdelay(10); + gpio_direction_output(pdata->bp_power, pdata->bp_power_active_low? GPIO_LOW:GPIO_HIGH); + mdelay(2000); + gpio_set_value(pdata->bp_power, pdata->bp_power_active_low? GPIO_HIGH:GPIO_LOW); + } + return 0; } diff --git a/include/linux/mtk23d.h b/include/linux/mtk23d.h old mode 100644 new mode 100755 index 6be28a66497d..144c15f07b7e --- a/include/linux/mtk23d.h +++ b/include/linux/mtk23d.h @@ -1,6 +1,10 @@ #include #include #include + +#define MODEM_POWER_START 0x3 +#define MODEM_POWER_END 0x2 +#define MODEM_RESET 0x1 struct modem_dev { -- 2.34.1