1 #ifndef __LINUX_MFD_NVEC
2 #define __LINUX_MFD_NVEC
4 #include <linux/notifier.h>
5 #include <linux/semaphore.h>
39 struct list_head node
;
48 struct nvec_platform_data
{
61 struct atomic_notifier_head notifier_list
;
62 struct list_head rx_data
, tx_data
;
63 struct notifier_block nvec_status_notifier
;
64 struct work_struct rx_work
, tx_work
;
65 struct nvec_msg
*rx
, *tx
;
67 /* sync write stuff */
68 struct semaphore sync_write_mutex
;
69 struct completion sync_write
;
70 u16 sync_write_pending
;
71 struct nvec_msg
*last_sync_msg
;
74 extern void nvec_write_async(struct nvec_chip
*nvec
, unsigned char *data
, short size
);
76 extern int nvec_register_notifier(struct nvec_chip
*nvec
,
77 struct notifier_block
*nb
, unsigned int events
);
79 extern int nvec_unregister_notifier(struct device
*dev
,
80 struct notifier_block
*nb
, unsigned int events
);
82 const char *nvec_send_msg(unsigned char *src
, unsigned char *dst_size
, how_care care_resp
, void (*rt_handler
)(unsigned char *data
));
85 #define I2C_CNFG_PACKET_MODE_EN (1<<10)
86 #define I2C_CNFG_NEW_MASTER_SFM (1<<11)
87 #define I2C_CNFG_DEBOUNCE_CNT_SHIFT 12
89 #define I2C_SL_CNFG 0x20
90 #define I2C_SL_NEWL (1<<2)
91 #define I2C_SL_NACK (1<<1)
92 #define I2C_SL_RESP (1<<0)
93 #define I2C_SL_IRQ (1<<3)
94 #define END_TRANS (1<<4)
98 #define I2C_SL_RCVD 0x24
99 #define I2C_SL_STATUS 0x28
100 #define I2C_SL_ADDR1 0x2c
101 #define I2C_SL_ADDR2 0x30
102 #define I2C_SL_DELAY_COUNT 0x3c