diff options
| author | Yuval Adam <_@yuv.al> | 2017-08-30 08:25:59 +0000 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2017-08-30 08:25:59 +0000 |
| commit | 8e4bff4cab0ddac6060645b0715210484d02ff40 (patch) | |
| tree | 3a5c3024371a04692a3a6d9974d001cdff8ebf84 /drivers/char/modem_interface/modem_interface_driver.h | |
Diffstat (limited to 'drivers/char/modem_interface/modem_interface_driver.h')
| -rw-r--r-- | drivers/char/modem_interface/modem_interface_driver.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/drivers/char/modem_interface/modem_interface_driver.h b/drivers/char/modem_interface/modem_interface_driver.h new file mode 100644 index 00000000..786b81ae --- /dev/null +++ b/drivers/char/modem_interface/modem_interface_driver.h @@ -0,0 +1,84 @@ +#ifndef __MODEM_INTF_DRIVER_H__ +#define __MODEM_INTF_DRIVER_H__ +#include <mach/modem_interface.h> + + +#define MODEM_INTF_EVENT_ASSERT 0 +#define MODEM_INTF_EVENT_ALIVE 1 +#define MODEM_INTF_EVENT_CP_REQ_RESET 2 +#define MODEM_INTF_EVENT_SHUTDOWN 4 +#define MODEM_INTF_EVENT_FORCE_RESET 8 +#define MODEM_INTF_EVENT_WDG_RESET 16 + + + + + +enum TRAN_DIR_t{ + TRAN_DIR_IN, + TRAN_DIR_OUT, + TRAN_DIR_NONE, +}; + +enum MSG_SRC_type { + SRC_GPIO, + SRC_SPI, + SRC_MUX, + SRC_DLOADER, + SRC_USER +}; + +enum MODEM_MSG_type { + MODEM_TRANSFER_REQ, // high layer(mux /download driver) request to send. + MODEM_TRANSFER_END,// transfer complete + MODEM_SLAVE_RTS, // MODEM request to send data + MODEM_SLAVE_RDY, // indicate MODEM is ready to receive. + MODEM_SET_MODE, + MODEM_CTRL_GPIO_CHG, + MODEM_USER_REQ, + MODEM_BOOT_CMP, + MODEM_OPEN_DEVICE +}; + +enum MSG_CTRL_GPIO_TYPE { + GPIO_ALIVE = 0, + GPIO_RESET, + GPIO_WATCHDOG, + CTRL_GPIO_MAX +}; + + +struct modem_message_node{ + struct list_head link; + int buno; + enum MSG_SRC_type src; + enum MODEM_MSG_type type; + int parameter1; + int parameter2; +}; + +struct modem_device_operation { + enum MODEM_device_type dev; + int (*open) (void*para); + int (*write)(char *buffer, int size); + int (*read)(char *buffer, int size); +}; + +typedef struct modem_intf_device { + struct modem_intf_platform_data modem_config; + enum MODEM_Mode_type mode; + struct modem_device_operation *op; + struct modem_buffer send_buffer; + struct modem_buffer recv_buffer; + enum TRAN_DIR_t direction; + int buffer_index; + int status; + int out_transfering; + int out_transfer_pending; +} MODEM_DEV_T; + +extern void boot_protocol(struct modem_message_node *msg); +extern void normal_protocol(struct modem_message_node *msg); +extern void dump_memory_protocol(struct modem_message_node *msg); +extern char *modem_intf_msg_string(enum MODEM_MSG_type msg); +#endif |
