3 #include <linux/miscdevice.h>
\r
4 #include <linux/wakelock.h>
\r
6 struct bp_private_data;
\r
8 #define BP_UNKNOW_DATA -1
\r
11 #define BP_SUSPEND 2
\r
14 #define BP_IOCTL_BASE 'm'
\r
16 #define BP_IOCTL_RESET _IOW(BP_IOCTL_BASE, 0x00, int)
\r
17 #define BP_IOCTL_POWON _IOW(BP_IOCTL_BASE, 0x01, int)
\r
18 #define BP_IOCTL_POWOFF _IOW(BP_IOCTL_BASE, 0x02, int)
\r
19 #define BP_IOCTL_WRITE_STATUS _IOW(BP_IOCTL_BASE, 0x03, int)
\r
20 #define BP_IOCTL_GET_STATUS _IOR(BP_IOCTL_BASE, 0x04, int)
\r
21 #define BP_IOCTL_SET_PVID _IOW(BP_IOCTL_BASE, 0x05, int)
\r
22 #define BP_IOCTL_GET_BPID _IOR(BP_IOCTL_BASE, 0x06, int)
\r
39 BP_BUS_TYPE_INVALID = 0,
\r
45 BP_BUS_TYPE_USB_UART,
\r
46 BP_BUS_TYPE_SPI_UART,
\r
47 BP_BUS_TYPE_SDIO_UART,
\r
52 struct bp_platform_data {
\r
55 int (*init_platform_hw)(void);
\r
56 int (*exit_platform_hw)(void);
\r
90 int (*active)(struct bp_private_data *bp, int enable);
\r
91 int (*init)(struct bp_private_data *bp);
\r
92 int (*reset)(struct bp_private_data *bp);
\r
93 int (*ap_wake_bp)(struct bp_private_data *bp, int wake);
\r
94 int (*bp_wake_ap)(struct bp_private_data *bp);
\r
95 int (*shutdown)(struct bp_private_data *bp);
\r
96 int (*read_status)(struct bp_private_data *bp);
\r
97 int (*write_status)(struct bp_private_data *bp);
\r
98 int (*suspend)(struct bp_private_data *bp);
\r
99 int (*resume)(struct bp_private_data *bp);
\r
102 struct miscdevice *private_miscdev;
\r
107 struct bp_private_data {
\r
108 struct device *dev;
\r
110 int suspend_status;
\r
111 struct wake_lock bp_wakelock;
\r
112 struct delayed_work wakeup_work; /*report second event*/
\r
113 struct bp_platform_data *pdata;
\r
114 struct bp_operate *ops;
\r
115 struct file_operations fops;
\r
116 struct miscdevice miscdev;
\r
117 struct file_operations id_fops;
\r
118 struct miscdevice id_miscdev;
\r
119 #ifdef CONFIG_HAS_EARLYSUSPEND
\r
120 struct early_suspend early_suspend;
\r
124 extern int bp_register_slave(struct bp_private_data *bp,
\r
125 struct bp_platform_data *slave_pdata,
\r
126 struct bp_operate *(*get_bp_ops)(void));
\r
129 extern int bp_unregister_slave(struct bp_private_data *bp,
\r
130 struct bp_platform_data *slave_pdata,
\r
131 struct bp_operate *(*get_bp_ops)(void));
\r