| |
| #ifndef GPIO_DRV_07_13_11 |
| #define GPIO_DRV_07_13_11 |
| |
| #include "drv_comm.h" |
| #include "dcl.h" |
| |
| #define BU_G_FLD(_i,_ms,_ls) (((_i)<<(31-(_ms))) >> (31- (_ms) + (_ls))) |
| #define BU_G_BIT(_i,_n) BU_G_FLD(_i, _n, _n) |
| |
| #ifdef __DRV_GPIO_REG_DBG__ |
| |
| #define DRV_GPIO_WriteReg(addr,data) DRV_DBG_WriteReg32(addr,data) |
| #define DRV_GPIO_Reg(addr) DRV_DBG_Reg32(addr) |
| #define DRV_GPIO_WriteReg32(addr,data) DRV_DBG_WriteReg32(addr,data) |
| #define DRV_GPIO_Reg32(addr) DRV_DBG_Reg32(addr) |
| #define DRV_GPIO_WriteReg8(addr,data) DRV_DBG_WriteReg8(addr,data) |
| #define DRV_GPIO_Reg8(addr) DRV_DBG_Reg8(addr) |
| |
| |
| #define DRV_GPIO_ClearBits(addr,data) DRV_DBG_ClearBits(addr,data) |
| #define DRV_GPIO_SetBits(addr,data) DRV_DBG_SetBits(addr,data) |
| #define DRV_GPIO_ClearBits32(addr,data) DRV_DBG_ClearBits32(addr,data) |
| #define DRV_GPIO_SetBits32(addr,data) DRV_DBG_SetBits32(addr,data) |
| #define DRV_GPIO_ClearBits8(addr,data) DRV_DBG_ClearBits8(addr,data) |
| #define DRV_GPIO_SetBits8(addr,data) DRV_DBG_SetBits8(addr,data) |
| |
| #define DRV_GPIO_SetData(addr, bitmask, value) DRV_DBG_SetData(addr, bitmask, value) |
| #define DRV_GPIO_SetData32(addr, bitmask, value) DRV_DBG_SetData32(addr, bitmask, value) |
| #define DRV_GPIO_SetData8(addr, bitmask, value) DRV_DBG_SetData8(addr, bitmask, value) |
| |
| #else //__DRV_GPIO_REG_DBG__ |
| |
| #define DRV_GPIO_WriteReg(addr,data) DRV_WriteReg32(addr,data) |
| #define DRV_GPIO_Reg(addr) DRV_Reg32(addr) |
| #define DRV_GPIO_WriteReg32(addr,data) DRV_WriteReg32(addr,data) |
| #define DRV_GPIO_Reg32(addr) DRV_Reg32(addr) |
| #define DRV_GPIO_WriteReg8(addr,data) DRV_WriteReg8(addr,data) |
| #define DRV_GPIO_Reg8(addr) DRV_Reg8(addr) |
| |
| |
| #define DRV_GPIO_ClearBits(addr,data) DRV_ClearBits32(addr,data) |
| #define DRV_GPIO_SetBits(addr,data) DRV_DBGD_SetBits32(addr,data) |
| #define DRV_GPIO_ClearBits32(addr,data) DRV_ClearBits32(addr,data) |
| #define DRV_GPIO_SetBits32(addr,data) DRV_DBGD_SetBits32(addr,data) |
| #define DRV_GPIO_ClearBits8(addr,data) DRV_ClearBits8(addr,data) |
| #define DRV_GPIO_SetBits8(addr,data) DRV_SetBits8(addr,data) |
| |
| #define DRV_GPIO_SetData(addr, bitmask, value) DRV_SetData32(addr, bitmask, value) |
| #define DRV_GPIO_SetData32(addr, bitmask, value) DRV_SetData32(addr, bitmask, value) |
| #define DRV_GPIO_SetData8(addr, bitmask, value) DRV_SetData8(addr, bitmask, value) |
| |
| #endif //__DRV_GPIO_REG_DBG__ |
| |
| #ifdef __MTK_TARGET__ |
| #define EN_GPIO_PRINTF 1 |
| |
| #if EN_GPIO_PRINTF |
| extern void dbg_print(char *fmt,...); |
| |
| #define GPIO_PRINT(fmt, var ...) do {dbg_print(fmt"\n\r", ##var);} while (0) |
| #define GPIO_PRINTN(fmt, var ...) do {dbg_print(fmt, ##var);} while (0) |
| #define GPIO_ERR(fmt, var ...) do {GPIO_PRINT("ERROR [%s:%d]"fmt, __FUNCTION__, __LINE__, ##var);} while (0) |
| #define GPIO_WARN(fmt, var ...) do {GPIO_PRINT("WARNING [%s:%d]"fmt, __FUNCTION__, __LINE__, ##var);} while (0) |
| #else |
| #define GPIO_PRINT(fmt, var ...) |
| #define GPIO_PRINTN(fmt, var ...) |
| #define GPIO_ERR(fmt, var ...) |
| #define GPIO_WARN(fmt, var ...) |
| #endif |
| #endif |
| #define REG32(addr) (*((volatile unsigned int*)(addr))) |
| #define REG32_WRITE(addr, value) do {(*((volatile unsigned int*)(addr))) = (unsigned int)(value);}while (0) |
| |
| #define GPIO_OK (0) |
| #define GPIO_FAIL (-1) |
| #if defined(MT6763) |
| #define GPIO_PIN_MAX 151 |
| #elif defined(MT6739) |
| #define GPIO_PIN_MAX 167 |
| #elif defined(MT6771) || defined(MT6765) |
| #define GPIO_PIN_MAX 179 |
| #elif defined(MT6295M) |
| #define GPIO_PIN_MAX 63 |
| #elif defined(MT3967) |
| #define GPIO_PIN_MAX 189 |
| #elif defined(MT6779) |
| #define GPIO_PIN_MAX 202 |
| #elif defined(MT6297)||defined(MERCURY) |
| #define GPIO_PIN_MAX 149 |
| #elif defined(MT6885)||defined(MT6873)||defined(MT6877) |
| #define GPIO_PIN_MAX 223 |
| #elif defined(MT6853)||defined(MT6833) |
| #define GPIO_PIN_MAX 202 |
| #elif defined(CHIP10992) |
| #define GPIO_PIN_MAX 234 |
| #endif |
| #define GPIO_AS_INPUT 0 |
| #define GPIO_AS_OUTPUT 1 |
| #define GPIO_DISABLE 0 |
| #define GPIO_ENABLE 1 |
| #define GPIO_PULL_DOWN 0 |
| #define GPIO_PULL_UP 1 |
| #define GPIO_OUTPUT_LOW 0 |
| #define GPIO_OUTPUT_HIGH 1 |
| #define GPIO_OWNERSHIP_AP 1 |
| #define GPIO_OWNERSHIP_MD 0 |
| #define GPIO_DRIVE_NUM_PER_REG 16 |
| #define GPIO_DRIVE_BIT_NUM 2 |
| |
| //#define GPIO_BASE_ADDR BASE_ADDR_MDGPIO |
| //#define GPIOMUX_BASE_ADDR BASE_ADDR_GPIOMUX |
| |
| #if defined(MT6763)||defined(MT6739)||defined(MT6771)|| defined(MT6765) || defined(MT6295M)|| defined(MT3967)||defined(MT6779)||defined(MT6297)||defined(MT6885)||defined(MERCURY)||defined(MT6873)||defined(MT6853)||defined(MT6833)||defined(MT6877)||defined(CHIP10992) |
| #define BASE_MADDR_GPIO BASE_ADDR_AP_GPIOMUX |
| typedef enum { |
| GPIO_PIN0=0, |
| GPIO_PIN1, |
| GPIO_PIN2, |
| GPIO_PIN3, |
| GPIO_PIN4, |
| GPIO_PIN5, |
| GPIO_PIN6, |
| GPIO_PIN7, |
| GPIO_PIN8, |
| GPIO_PIN9, |
| GPIO_PIN10, |
| GPIO_PIN11, |
| GPIO_PIN12, |
| GPIO_PIN13, |
| GPIO_PIN14, |
| GPIO_PIN15, |
| GPIO_PIN16, |
| GPIO_PIN17, |
| GPIO_PIN18, |
| GPIO_PIN19, |
| GPIO_PIN20, |
| GPIO_PIN21, |
| GPIO_PIN22, |
| GPIO_PIN23, |
| GPIO_PIN24, |
| GPIO_PIN25, |
| GPIO_PIN26, |
| GPIO_PIN27, |
| GPIO_PIN28, |
| GPIO_PIN29, |
| GPIO_PIN30, |
| GPIO_PIN31, |
| GPIO_PIN32, |
| GPIO_PIN33, |
| GPIO_PIN34, |
| GPIO_PIN35, |
| GPIO_PIN36, |
| GPIO_PIN37, |
| GPIO_PIN38, |
| GPIO_PIN39, |
| GPIO_PIN40, |
| GPIO_PIN41, |
| GPIO_PIN42, |
| GPIO_PIN43, |
| GPIO_PIN44, |
| GPIO_PIN45, |
| GPIO_PIN46, |
| GPIO_PIN47, |
| GPIO_PIN48, |
| GPIO_PIN49, |
| GPIO_PIN50, |
| GPIO_PIN51, |
| GPIO_PIN52, |
| GPIO_PIN53, |
| GPIO_PIN54, |
| GPIO_PIN55, |
| GPIO_PIN56, |
| GPIO_PIN57, |
| GPIO_PIN58, |
| GPIO_PIN59, |
| GPIO_PIN60, |
| GPIO_PIN61, |
| GPIO_PIN62, |
| GPIO_PIN63, |
| GPIO_PIN64, |
| GPIO_PIN65, |
| GPIO_PIN66, |
| GPIO_PIN67, |
| GPIO_PIN68, |
| GPIO_PIN69, |
| GPIO_PIN70, |
| GPIO_PIN71, |
| GPIO_PIN72, |
| GPIO_PIN73, |
| GPIO_PIN74, |
| GPIO_PIN75, |
| GPIO_PIN76, |
| GPIO_PIN77, |
| GPIO_PIN78, |
| GPIO_PIN79, |
| GPIO_PIN80, |
| GPIO_PIN81, |
| GPIO_PIN82, |
| GPIO_PIN83, |
| GPIO_PIN84, |
| GPIO_PIN85, |
| GPIO_PIN86, |
| GPIO_PIN87, |
| GPIO_PIN88, |
| GPIO_PIN89, |
| GPIO_PIN90, |
| GPIO_PIN91, |
| GPIO_PIN92, |
| GPIO_PIN93, |
| GPIO_PIN94, |
| GPIO_PIN95, |
| GPIO_PIN96, |
| GPIO_PIN97, |
| GPIO_PIN98, |
| GPIO_PIN99, |
| GPIO_PIN100, |
| GPIO_PIN101, |
| GPIO_PIN102, |
| GPIO_PIN103, |
| GPIO_PIN104, |
| GPIO_PIN105, |
| GPIO_PIN106, |
| GPIO_PIN107, |
| GPIO_PIN108, |
| GPIO_PIN109, |
| GPIO_PIN110, |
| GPIO_PIN111, |
| GPIO_PIN112, |
| GPIO_PIN113, |
| GPIO_PIN114, |
| GPIO_PIN115, |
| GPIO_PIN116, |
| GPIO_PIN117, |
| GPIO_PIN118, |
| GPIO_PIN119, |
| GPIO_PIN120, |
| GPIO_PIN121, |
| GPIO_PIN122, |
| GPIO_PIN123, |
| GPIO_PIN124, |
| GPIO_PIN125, |
| GPIO_PIN126, |
| GPIO_PIN127, |
| GPIO_PIN128, |
| GPIO_PIN129, |
| GPIO_PIN130, |
| GPIO_PIN131, |
| GPIO_PIN132, |
| GPIO_PIN133, |
| GPIO_PIN134, |
| GPIO_PIN135, |
| GPIO_PIN136, |
| GPIO_PIN137, |
| GPIO_PIN138, |
| GPIO_PIN139, |
| GPIO_PIN140, |
| GPIO_PIN141, |
| GPIO_PIN142, |
| GPIO_PIN143, |
| GPIO_PIN144, |
| GPIO_PIN145, |
| GPIO_PIN146, |
| GPIO_PIN147, |
| GPIO_PIN148, |
| GPIO_PIN149, |
| #if defined(MT6739)||defined(MT6771)|| defined(MT6765)|| defined(MT3967)||defined(MT6779)||defined(MT6297)||defined(MT6885) ||defined(MERCURY)||defined(MT6873)||defined(MT6853)||defined(MT6833)||defined(MT6877)||defined(CHIP10992) |
| GPIO_PIN150, |
| GPIO_PIN151, |
| #endif |
| #if defined(MT6739)||defined(MT6771)|| defined(MT6765)|| defined(MT3967)||defined(MT6779)||defined(MT6885)||defined(MT6873)||defined(MT6853)||defined(MT6833)||defined(MT6877)||defined(CHIP10992) |
| GPIO_PIN152, |
| GPIO_PIN153, |
| GPIO_PIN154, |
| GPIO_PIN155, |
| GPIO_PIN156, |
| GPIO_PIN157, |
| GPIO_PIN158, |
| GPIO_PIN159, |
| GPIO_PIN160, |
| GPIO_PIN161, |
| GPIO_PIN162, |
| GPIO_PIN163, |
| GPIO_PIN164, |
| GPIO_PIN165, |
| GPIO_PIN166, |
| GPIO_PIN167, |
| #endif |
| #if defined(MT6771)|| defined(MT6765)|| defined(MT3967)||defined(MT6779)||defined(MT6885)||defined(MT6873)||defined(MT6853)||defined(MT6833)||defined(MT6877)||defined(CHIP10992) |
| GPIO_PIN168, |
| GPIO_PIN169, |
| GPIO_PIN170, |
| GPIO_PIN171, |
| GPIO_PIN172, |
| GPIO_PIN173, |
| GPIO_PIN174, |
| GPIO_PIN175, |
| GPIO_PIN176, |
| GPIO_PIN177, |
| GPIO_PIN178, |
| GPIO_PIN179, |
| #endif |
| #if defined(MT3967)||defined(MT6779)||defined(MT6885)||defined(MT6873)||defined(MT6853)||defined(MT6833)||defined(MT6877)||defined(CHIP10992) |
| GPIO_PIN180, |
| GPIO_PIN181, |
| GPIO_PIN182, |
| GPIO_PIN183, |
| GPIO_PIN184, |
| GPIO_PIN185, |
| GPIO_PIN186, |
| GPIO_PIN187, |
| GPIO_PIN188, |
| GPIO_PIN189, |
| #endif |
| #if defined(MT6779)||defined(MT6885)||defined(MT6873)||defined(MT6853)||defined(MT6833)||defined(MT6877)||defined(CHIP10992) |
| GPIO_PIN190, |
| GPIO_PIN191, |
| GPIO_PIN192, |
| GPIO_PIN193, |
| GPIO_PIN194, |
| GPIO_PIN195, |
| GPIO_PIN196, |
| GPIO_PIN197, |
| GPIO_PIN198, |
| GPIO_PIN199, |
| GPIO_PIN200, |
| GPIO_PIN201, |
| GPIO_PIN202, |
| #endif |
| #if defined(MT6885)||defined(MT6873)||defined(MT6877)||defined(CHIP10992) |
| GPIO_PIN203, |
| GPIO_PIN204, |
| GPIO_PIN205, |
| GPIO_PIN206, |
| GPIO_PIN207, |
| GPIO_PIN208, |
| GPIO_PIN209, |
| GPIO_PIN210, |
| GPIO_PIN211, |
| GPIO_PIN212, |
| GPIO_PIN213, |
| GPIO_PIN214, |
| GPIO_PIN215, |
| GPIO_PIN216, |
| GPIO_PIN217, |
| GPIO_PIN218, |
| GPIO_PIN219, |
| GPIO_PIN220, |
| GPIO_PIN221, |
| GPIO_PIN222, |
| GPIO_PIN223, |
| #endif |
| #if defined(CHIP10992) |
| GPIO_PIN224, |
| GPIO_PIN225, |
| GPIO_PIN226, |
| GPIO_PIN227, |
| GPIO_PIN228, |
| GPIO_PIN229, |
| GPIO_PIN230, |
| GPIO_PIN231, |
| GPIO_PIN232, |
| GPIO_PIN233, |
| GPIO_PIN234, |
| #endif |
| } gpio_pin_e; |
| |
| #define GPIO_DIR1 (BASE_MADDR_GPIO+0x0000) |
| #define GPIO_DOUT1 (BASE_MADDR_GPIO+0x0100) |
| #define GPIO_DIN1 (BASE_MADDR_GPIO+0x0200) |
| #define GPIO_MODE1 (BASE_MADDR_GPIO+0x0300) |
| |
| |
| #define GPIO_DIR1_SET (GPIO_DIR1+0x04) |
| #define GPIO_DOUT1_SET (GPIO_DOUT1+0x04) |
| #define GPIO_MODE1_SET (GPIO_MODE1+0x04) |
| #define GPIO_DIR_SET(_no) (GPIO_DIR1_SET+(0x10*(_no))) |
| #define GPIO_DOUT_SET(_no) (GPIO_DOUT1_SET+(0x10*(_no))) |
| #define GPIO_MODE_SET(_no) (GPIO_MODE1_SET+(0x10*(_no))) |
| |
| #define GPIO_DIR1_CLR (GPIO_DIR1+0x08) |
| #define GPIO_DOUT1_CLR (GPIO_DOUT1+0x08) |
| #define GPIO_MODE1_CLR (GPIO_MODE1+0x08) |
| #define GPIO_DIR_CLR(_no) (GPIO_DIR1_CLR+(0x10*(_no))) |
| #define GPIO_DOUT_CLR(_no) (GPIO_DOUT1_CLR+(0x10*(_no))) |
| #define GPIO_MODE_CLR(_no) (GPIO_MODE1_CLR+(0x10*(_no))) |
| |
| #define GPIO_DIR(_no) (GPIO_DIR1+(0x10*(_no))) |
| #define GPIO_DOUT(_no) (GPIO_DOUT1+(0x10*(_no))) |
| #define GPIO_DIN(_no) (GPIO_DIN1+(0x10*(_no))) |
| #define GPIO_MODE(_no) (GPIO_MODE1+(0x10*(_no))) |
| #endif |
| |
| #if 0 |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| /* under construction !*/ |
| #endif |
| typedef struct _gpio_driving_gear |
| { |
| kal_uint8 mask; |
| kal_uint8 gear_cnt; |
| kal_uint16 gear_mapping[16][2]; |
| }gpio_driving_gear_t; |
| typedef struct _drv_gpio_driving_priv |
| { |
| kal_uint8 valid; |
| kal_uint8 gpio_num; |
| kal_uint8 driving_gear; |
| kal_uint8 offset; |
| kal_uint32 addr; |
| }drv_gpio_driving_priv_t; |
| |
| extern void gpio_init(void); |
| extern void GPIO_InitIO(char direction, kal_int16 port); |
| extern char GPIO_ReadIO(kal_int16 port); |
| extern void GPIO_WriteIO(char data, kal_int16 port); |
| extern char GPIO_ReturnMode(kal_int16 port); |
| extern char GPO_ReturnMode(kal_int16 port); |
| extern char GPIO_ReturnDir(kal_int16 port); |
| extern char GPIO_ReturnDout(kal_int16 port); |
| extern char GPO_ReturnDout(kal_int16 port); |
| extern void GPO_WriteIO(char data,kal_int16 port); |
| extern void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada); |
| extern void GPO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada); |
| extern void initGPIO(void); |
| extern void GPIO_PullenSetup(kal_uint16 pin, kal_bool enable); |
| extern void GPIO_DinvSetup(kal_uint16 pin, kal_bool enable); |
| extern void GPIO_SetDebugMode(kal_bool enable); |
| extern void GPIO_PullSelSetup(kal_uint16 pin, kal_bool pull_up); |
| #ifdef __CUST_NEW__ |
| extern void GPIO_InitIO_FAST(char direction, kal_int16 port); |
| extern char GPIO_ReadIO_FAST(kal_int16 port); |
| extern void GPIO_WriteIO_FAST(char data, kal_int16 port); |
| #endif/* __CUST_NEW__ */ |
| extern void GPIO_WriteIO_FAST2(char data, kal_uint16 no, kal_uint16 remainder_shift); |
| extern kal_int32 gpio_set_drive(gpio_pin_e gpio_pin,kal_uint32 drive); |
| extern kal_int32 gpio_set_ownership(kal_uint32 pin_num,kal_uint32 ownership); |
| extern kal_int32 gpio_get_drive_value(gpio_pin_e gpio_pin); |
| extern kal_int32 gpio_get_ownership(kal_uint32 pin_num); |
| #define METAMODE_GPIO 49 |
| #endif |