1 #ifndef __LINUX_MFD_NVEC
2 #define __LINUX_MFD_NVEC
4 #include <linux/semaphore.h>
38 struct list_head node;
47 struct nvec_platform_data {
55 struct nvec_subdev *subdevs;
62 unsigned char *i2c_regs;
64 struct atomic_notifier_head notifier_list;
65 struct list_head rx_data, tx_data;
66 struct notifier_block nvec_status_notifier;
67 struct work_struct rx_work, tx_work;
68 struct nvec_msg *rx, *tx;
70 /* sync write stuff */
71 struct semaphore sync_write_mutex;
72 struct completion sync_write;
73 u16 sync_write_pending;
74 struct nvec_msg *last_sync_msg;
77 extern void nvec_write_async(struct nvec_chip *nvec, unsigned char *data, short size);
79 extern int nvec_register_notifier(struct nvec_chip *nvec,
80 struct notifier_block *nb, unsigned int events);
82 extern int nvec_unregister_notifier(struct device *dev,
83 struct notifier_block *nb, unsigned int events);
85 const char *nvec_send_msg(unsigned char *src, unsigned char *dst_size, how_care care_resp, void (*rt_handler)(unsigned char *data));
87 extern int nvec_ps2(struct nvec_chip *nvec);
88 extern int nvec_kbd_init(struct nvec_chip *nvec);
91 #define I2C_CNFG_PACKET_MODE_EN (1<<10)
92 #define I2C_CNFG_NEW_MASTER_SFM (1<<11)
93 #define I2C_CNFG_DEBOUNCE_CNT_SHIFT 12
95 #define I2C_SL_CNFG 0x20
96 #define I2C_SL_NEWL (1<<2)
97 #define I2C_SL_NACK (1<<1)
98 #define I2C_SL_RESP (1<<0)
99 #define I2C_SL_IRQ (1<<3)
100 #define END_TRANS (1<<4)
104 #define I2C_SL_RCVD 0x24
105 #define I2C_SL_STATUS 0x28
106 #define I2C_SL_ADDR1 0x2c
107 #define I2C_SL_ADDR2 0x30
108 #define I2C_SL_DELAY_COUNT 0x3c