#include <linux/mtk23d.h>
#include <linux/wakelock.h>
#include "../mtd/rknand/api_flash.h"
+#include <linux/slab.h>
MODULE_LICENSE("GPL");
}
-static int get_bp_statue(struct platform_device *pdev)
+/*static int get_bp_statue(struct platform_device *pdev)
{
struct rk2818_23d_data *pdata = pdev->dev.platform_data;
return SLEEP;
else
return READY;
-}
+}*/
static void ap_sleep(struct platform_device *pdev)
{
struct rk2818_23d_data *pdata = pdev->dev.platform_data;
static void ap_wakeup_bp(struct platform_device *pdev, int wake)//low to wakeup bp
{
struct rk2818_23d_data *pdata = pdev->dev.platform_data;
- struct modem_dev *mt6223d_data = platform_get_drvdata(pdev);
+ //struct modem_dev *mt6223d_data = platform_get_drvdata(pdev);
MODEMDBG("ap_wakeup_bp\n");
gpio_set_value(pdata->ap_bp_wakeup, wake); // phc
static void bpwakeup_work_func_work(struct work_struct *work)
{
- struct modem_dev *bdata = container_of(work, struct modem_dev, work);
+ //struct modem_dev *bdata = container_of(work, struct modem_dev, work);
MODEMDBG("%s\n", __FUNCTION__);
}
-/* */
+/*
static irqreturn_t bpwakeup_work_func(int irq, void *data)
{
struct modem_dev *mt6223d_data = (struct modem_dev *)data;
schedule_work(&mt6223d_data->work);
return IRQ_HANDLED;
}
+
+
static irqreturn_t bp_apwakeup_work_func(int irq, void *data)
{
//struct modem_dev *dev = &mtk23d_misc;
//wake_up_interruptible(&dev->wakeup);
return IRQ_HANDLED;
}
+*/
static irqreturn_t BBwakeup_isr(int irq, void *dev_id)
{
- struct rk2818_23d_data *pdata = dev_id;
+ //struct rk2818_23d_data *pdata = dev_id;
MODEMDBG("%s \n", __FUNCTION__);
//if(irq != gpio_to_irq(RK29_PIN1_PC0))
int modem_poweron_off(int on_off)
{
struct rk2818_23d_data *pdata = gpdata;
- int result, error = 0, irq = 0;
+ int error = 0, irq = 0;
if(on_off)
{
msleep(500);
gpio_set_value(pdata->bp_reset, pdata->bp_reset_active_low? GPIO_LOW:GPIO_HIGH);
}
+ return 0;
}
static int power_on =1;
static int mtk23d_open(struct inode *inode, struct file *file)
{
struct rk2818_23d_data *pdata = gpdata;
- //struct rk2818_23d_data *pdata = gpdata = pdev->dev.platform_data;
- struct platform_data *pdev = container_of(pdata, struct device, platform_data);
-
MODEMDBG("modem_open\n");
- int ret = 0;
if(power_on)
{
power_on = 0;
modem_poweron_off(1);
}
- device_init_wakeup(&pdev, 1);
-
+ device_init_wakeup(pdata->dev, 1);
return 0;
}
-
static int mtk23d_release(struct inode *inode, struct file *file)
{
MODEMDBG("mtk23d_release\n");
//extern char imei_value[16]; // phc, no find 'imei_value' in rk29 project
//char imei_value[16] = {0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5};
-static int mtk23d_ioctl(struct inode *inode,struct file *file, unsigned int cmd, unsigned long arg)
+
+static long mtk23d_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
struct rk2818_23d_data *pdata = gpdata;
- int i,ret;
+ int ret;
void __user *argp = (void __user *)arg;
char SectorBuffer[512];
.owner = THIS_MODULE,
.open = mtk23d_open,
.release = mtk23d_release,
- .ioctl = mtk23d_ioctl
+ .unlocked_ioctl = mtk23d_ioctl
};
static struct miscdevice mtk23d_misc = {
{
struct rk2818_23d_data *pdata = gpdata = pdev->dev.platform_data;
struct modem_dev *mt6223d_data = NULL;
- int result, error = 0, irq = 0;
+ int result=1;
MODEMDBG("mtk23d_probe\n");
//pdata->io_init();
+ pdata->dev = &pdev->dev;
mt6223d_data = kzalloc(sizeof(struct modem_dev), GFP_KERNEL);
if(NULL == mt6223d_data)
#endif
INIT_WORK(&mt6223d_data->work, bpwakeup_work_func_work);
- init_MUTEX(&pdata->power_sem);
+ sema_init(&pdata->power_sem,1);
power_on = 1;
result = misc_register(&mtk23d_misc);
if(result)
gpio_free(pdata->bp_statue);
err6:
kfree(mt6223d_data);
-ret:
+
return result;
}
-int mtk23d_suspend(struct platform_device *pdev)
+int mtk23d_suspend(struct platform_device *pdev, pm_message_t state)
{
- int irq, error;
+ int irq;
struct rk2818_23d_data *pdata = pdev->dev.platform_data;
MODEMDBG("%s \n", __FUNCTION__);
return 0;
}
-void mtk23d_shutdown(struct platform_device *pdev, pm_message_t state)
+void mtk23d_shutdown(struct platform_device *pdev)
{
struct rk2818_23d_data *pdata = pdev->dev.platform_data;
struct modem_dev *mt6223d_data = platform_get_drvdata(pdev);
},
};
+
static int __init mtk23d_init(void)
{
- MODEMDBG("mtk23d_init ret=%d\n");
+ //MODEMDBG("mtk23d_init ret=%d\n");
return platform_driver_register(&mtk23d_driver);
}