diff options
author | Srikant Patnaik | 2015-01-13 15:08:24 +0530 |
---|---|---|
committer | Srikant Patnaik | 2015-01-13 15:08:24 +0530 |
commit | 97327692361306d1e6259021bc425e32832fdb50 (patch) | |
tree | fe9088f3248ec61e24f404f21b9793cb644b7f01 /drivers/net/wireless/eagle/esp_ext.h | |
parent | 2d05a8f663478a44e088d122e0d62109bbc801d0 (diff) | |
parent | a3a8b90b61e21be3dde9101c4e86c881e0f06210 (diff) | |
download | FOSSEE-netbook-kernel-source-97327692361306d1e6259021bc425e32832fdb50.tar.gz FOSSEE-netbook-kernel-source-97327692361306d1e6259021bc425e32832fdb50.tar.bz2 FOSSEE-netbook-kernel-source-97327692361306d1e6259021bc425e32832fdb50.zip |
dirty fix to merging
Diffstat (limited to 'drivers/net/wireless/eagle/esp_ext.h')
-rwxr-xr-x | drivers/net/wireless/eagle/esp_ext.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/drivers/net/wireless/eagle/esp_ext.h b/drivers/net/wireless/eagle/esp_ext.h new file mode 100755 index 00000000..9385c545 --- /dev/null +++ b/drivers/net/wireless/eagle/esp_ext.h @@ -0,0 +1,100 @@ +#ifdef USE_EXT_GPIO + +#ifndef _ESP_EXT_H_ +#define _ESP_EXT_H_ + +#include <linux/interrupt.h> +#include <linux/module.h> +#include "esp_sip.h" + +#define MAX_PENDING_INTR_LIST 16 + +#ifdef EXT_GPIO_OPS +typedef struct esp_ext_gpio_ops { + int (*gpio_request)(int gpio_no); /* gpio_request gpio_no from 0x0 to 0xf*/ + int (*gpio_release)(int gpio_no); /* gpio_release */ + int (*gpio_set_mode)(int gpio_no, int mode , void *data); /* gpio_set_mode, data is irq_func of irq_mode , default level of output_mode */ + int (*gpio_get_mode)(int gpio_no); /* gpio_get_mode, current mode */ + int (*gpio_set_state)(int gpio_no, int state); /* only output state, high level or low level */ + int (*gpio_get_state)(int gpio_no); /* current state */ + int (*irq_ack)(int gpio_no); /* ack interrupt */ +} esp_ext_gpio_ops_t; +#endif + +typedef enum EXT_GPIO_NO { + EXT_GPIO_GPIO0 = 0, + EXT_GPIO_U0TXD, + EXT_GPIO_GPIO2, + EXT_GPIO_U0RXD, + EXT_GPIO_GPIO4, + EXT_GPIO_GPIO5, + EXT_GPIO_SD_CLK, + EXT_GPIO_SD_DATA0, + EXT_GPIO_SD_DATA1, + EXT_GPIO_SD_DATA2, + EXT_GPIO_SD_DATA3, + EXT_GPIO_SD_CMD, + EXT_GPIO_MTDI, + EXT_GPIO_MTCK, + EXT_GPIO_MTMS, + EXT_GPIO_MTDO, + EXT_GPIO_MAX_NUM +} EXT_GPIO_NO_T; + +typedef enum EXT_GPIO_MODE { //dir def pullup mode wake + EXT_GPIO_MODE_OOB = 0, //output 1 0 n/a n/a + EXT_GPIO_MODE_OUTPUT, //output / 0 n/a n/a + EXT_GPIO_MODE_DISABLE, //input n/a 0 DIS n/a + EXT_GPIO_MODE_INTR_POSEDGE, //input n/a 0 POS 1 + EXT_GPIO_MODE_INTR_NEGEDGE, //input n/a 1 NEG 1 + EXT_GPIO_MODE_INPUT, //input n/a 0 ANY 1 + EXT_GPIO_MODE_INTR_LOLEVEL, //input n/a 1 LOW 1 + EXT_GPIO_MODE_INTR_HILEVEL, //input n/a 0 HIGH 1 + EXT_GPIO_MODE_MAX, +} EXT_GPIO_MODE_T; + +typedef enum EXT_GPIO_STATE { + EXT_GPIO_STATE_LOW, + EXT_GPIO_STATE_HIGH, + EXT_GPIO_STATE_IDLE +} EXT_GPIO_STATE_T; + +typedef irqreturn_t (*ext_irq_handler_t)(void); + +struct ext_gpio_info { + int gpio_no; + int gpio_mode; + int gpio_state; + ext_irq_handler_t irq_handler; +}; + +struct pending_intr_list_info { + u16 pending_intr_list[MAX_PENDING_INTR_LIST]; + int start_pos; + int end_pos; + int curr_num; + spinlock_t spin_lock; +}; + +u16 ext_gpio_get_int_mask_reg(void); + +/* for extern user start */ +int ext_gpio_request(int gpio_no); +int ext_gpio_release(int gpio_no); + +int ext_gpio_set_mode(int gpio_no, int mode, void *data); +int ext_gpio_get_mode(int gpio_no); + +int ext_gpio_set_output_state(int gpio_no, int state); +int ext_gpio_get_state(int gpio_no); + +int ext_irq_ack(int gpio_no); +/* for extern user end */ + +void ext_gpio_int_process(u16 value); + +int ext_gpio_init(struct esp_pub *epub); +void ext_gpio_deinit(void); +#endif /* _ESP_EXT_H_ */ + +#endif /* USE_EXT_GPIO */ |