1 #include <linux/platform_device.h>
\r
4 #define MODEM_DISABLE 0
\r
5 #define MODEM_ENABLE 1
\r
6 #define MODEM_SLEEP 2
\r
7 #define MODEM_WAKEUP 3
\r
8 #define MODEM_MAX_STATUS 4
\r
11 unsigned long io_addr;
\r
12 unsigned long enable;
\r
13 unsigned long disable;
\r
17 unsigned long irq_addr;
\r
18 unsigned long irq_trigger;
\r
21 struct rk29_modem_t {
\r
22 struct platform_driver *driver;
\r
23 // ¿ØÖÆmodemµçÔ´µÄIO
\r
24 struct rk29_io_t *modem_power;
\r
25 // µ±AP¾ÍÐ÷»òÕßδ¾ÍÐ÷ʱ£¬Í¨¹ý ap_ready Õâ¸öIOÀ´Í¨ÖªBP¡£
\r
26 struct rk29_io_t *ap_ready;
\r
27 // µ±BP½ÓÊÕµ½¶ÌÐÅ»òÕßÀ´µçʱ£¬Í¨¹ý bp_wakeup_ap Õâ¸öIRQÀ´»½ÐÑAP
\r
28 struct rk29_irq_t *bp_wakeup_ap;
\r
29 // µ±Ç°modem״̬£¬Ä¿Ç°Ö»Óõ½MODEM_ENABLE(Éϵç)¡¢MODEM_DISABLE(ϵç)
\r
30 // ͬʱ£¬statusµÄ³õʼֵҲ¾ö¶¨¿ª»úʱµÄmodemÊÇ·ñÉϵç
\r
32 struct wake_lock wakelock_bbwakeupap;
\r
34 // É豸³õʼ»¯º¯Êý, Ö÷ÒªÉèÖø÷¸öGPIOÒÔ¼°IRQµÄÉêÇëµÈ
\r
35 int (*dev_init)(struct rk29_modem_t *driver);
\r
36 int (*dev_uninit)(struct rk29_modem_t *driver);
\r
37 irqreturn_t (*irq_handler)(int irq, void *dev_id);
\r
38 int (*suspend)(struct platform_device *pdev, pm_message_t state);
\r
39 int (*resume)(struct platform_device *pdev);
\r
41 int (*enable)(struct rk29_modem_t *driver);
\r
42 int (*disable)(struct rk29_modem_t *driver);
\r
43 int (*sleep)(struct rk29_modem_t *driver);
\r
44 int (*wakeup)(struct rk29_modem_t *driver);
\r
47 void rk29_modem_exit(void);
\r
48 int rk29_modem_init(struct rk29_modem_t *rk29_modem);
\r
49 int rk29_modem_suspend(struct platform_device *pdev, pm_message_t state);
\r
50 int rk29_modem_resume(struct platform_device *pdev);
\r