#include #include #if defined(CONFIG_AR7240_GPIO) || defined(CONFIG_QCA955X_GPIO) #include #ifdef CONFIG_AR7240_GPIO #include #define MAX_GPIO_NUM CONFIG_AR7240_MAX_GPIO_NUM #define REG_GPIO_OE AR7240_GPIO_OE #define REG_GPIO_SET AR7240_GPIO_SET #define REG_GPIO_CLEAR AR7240_GPIO_CLEAR #define REG_GPIO_IN AR7240_GPIO_IN #define REG_GPIO_OUT AR7240_GPIO_OUT #define REG_GPIO_FUNC0 AR7240_GPIO_FUNC0 #define REG_GPIO_FUNC AR7240_GPIO_FUNC #define REG_GPIO_ENABLE0 AR7240_GPIO_ENABLE0 #define REG_GPIO_ENABLE1 AR7240_GPIO_ENABLE1 #define REG_GPIO_ENABLE4 AR7240_GPIO_ENABLE4 #define REG_GPIO_ENABLE9 AR7240_GPIO_ENABLE9 #define ATH_REG_READ ar7240_reg_rd #define ATH_REG_WRITE ar7240_reg_wr_nf #elif defined(CONFIG_QCA955X_GPIO) #include #define MAX_GPIO_NUM CONFIG_QCA955X_MAX_GPIO_NUM #define REG_GPIO_OE GPIO_OE_ADDRESS #define REG_GPIO_SET GPIO_SET_ADDRESS #define REG_GPIO_CLEAR GPIO_CLEAR_ADDRESS #define REG_GPIO_IN GPIO_IN_ADDRESS #define REG_GPIO_OUT GPIO_OUT_ADDRESS #define REG_GPIO_FUNC0 GPIO_OUT_FUNCTION0_ADDRESS #define REG_GPIO_FUNC GPIO_FUNCTION_ADDRESS #define REG_GPIO_ENABLE0 GPIO_IN_ENABLE0_ADDRESS #define REG_GPIO_ENABLE1 GPIO_IN_ENABLE1_ADDRESS #define REG_GPIO_ENABLE4 GPIO_IN_ENABLE4_ADDRESS #define REG_GPIO_ENABLE9 GPIO_IN_ENABLE9_ADDRESS #define ATH_REG_READ ath_reg_rd #define ATH_REG_WRITE ath_reg_wr_nf #endif #include int ar7240_configure_pio(int pio, int dir, unsigned char out_type) { switch ( dir ) { case ZGPIO_CONFIG_OUTPUT: { int shift; unsigned long reg = REG_GPIO_FUNC0; //printf("GPIO_FUNC0=0x%08X + 0x%X(shift %d bits)", REG_GPIO_FUNC0, (pio/4)*4, (pio % 4)*8); reg += ((pio / 4)*4); shift = (pio % 4)*8; ATH_REG_WRITE(REG_GPIO_OE, ATH_REG_READ(REG_GPIO_OE)&(~(1UL<MAX_GPIO_NUM ) { return -1; } #if 1 if ( ATH_REG_READ(REG_GPIO_OE) & (1UL<MAX_GPIO_NUM ) { return -1; } #if 1 if ( ATH_REG_READ(REG_GPIO_OE) & (1UL<