From 8e4bff4cab0ddac6060645b0715210484d02ff40 Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Wed, 30 Aug 2017 08:25:59 +0000 Subject: Initial file dump from open source release --- include/linux/sprdmux.h | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 include/linux/sprdmux.h (limited to 'include/linux/sprdmux.h') diff --git a/include/linux/sprdmux.h b/include/linux/sprdmux.h new file mode 100644 index 00000000..f7bb753b --- /dev/null +++ b/include/linux/sprdmux.h @@ -0,0 +1,69 @@ +#ifndef SPRDMUX_H +#define SPRDMUX_H + +#include + +#define SPRDMUX_READ 0x01 +#define SPRDMUX_WRITE 0x02 +#define SPRDMUX_ALL (SPRDMUX_READ | SPRDMUX_WRITE) + +#define SPRDMUX_MAX_NAME_LEN (64) + +/* name defined in ts0710mux.c */ +typedef enum SPRDMUX_ID_E_ { + SPRDMUX_ID_SPI = 0, + SPRDMUX_ID_SDIO, + + SPRDMUX_ID_MAX, +}SPRDMUX_ID_E; + +typedef enum SPRDMUX_EVENT_COMPLETE_E_ { + SPRDMUX_EVENT_COMPLETE_READ, + SPRDMUX_EVENT_COMPLETE_WRITE, + SPRDMUX_EVENT_READ_IND, + + SPRDMUX_EVENT_COMPLETE_MAX, +}SPRDMUX_EVENT_COMPLETE_E; + +typedef int (*notify_func)(int tty_index, int event_id, __u8 *uih_data_start, __u32 uih_len, void * user_data); + +struct sprdmux { + int id; + int (*io_write)(const char *buf, size_t len); + int (*io_read)(char *buf, size_t len); + int (*io_stop)(int mode); +}; + +struct sprdmux_notify { + int index; + notify_func func; + void *user_data; +}; + +struct mux_init_data { + SPRDMUX_ID_E id; + char *name; + int num; +}; + +extern int sprdmux_register(struct sprdmux *mux); +extern void sprdmux_unregister(SPRDMUX_ID_E mux_id); +extern int sprdmux_open(SPRDMUX_ID_E mux_id, int index); +extern void sprdmux_close(SPRDMUX_ID_E mux_id, int index); +extern int sprdmux_write(SPRDMUX_ID_E mux_id, int index, const unsigned char *buf, int count); +extern int sprdmux_register_notify_callback(SPRDMUX_ID_E mux_id, struct sprdmux_notify *notify); +extern int sprdmux_line_busy(SPRDMUX_ID_E mux_id, int line); +extern void sprdmux_set_line_notify(SPRDMUX_ID_E mux_id, int line, __u8 notify); + +extern int ts0710_mux_create(int mux_id); +extern void ts0710_mux_destory(int mux_id); +extern int ts0710_mux_init(void); +extern void ts0710_mux_exit(void); +extern int ts0710_mux_status(int mux_id); +extern int ts0710_mux_open(int mux_id, int line); +extern void ts0710_mux_close(int mux_id, int line); +extern int ts0710_mux_write(int mux_id, int line, const unsigned char *buf, int count, int timeout); +extern int ts0710_mux_read(int mux_id, int line, const unsigned char *buf, int count, int timeout); +extern int ts0710_mux_poll_wait(int mux_id, int line, struct file *filp, poll_table *wait); +extern int ts0710_mux_mux_ioctl(int mux_id, int line, unsigned int cmd, unsigned long arg); +#endif -- cgit v1.3.1