app_gpio.h 4.24 KB
#ifndef _APP_GPIO_H_
#define _APP_GPIO_H_

typedef enum {
	GPIO_GROUP0,
	GPIO_GROUP1,
	GPIO_GROUP2,
} GPIO_GROUP;

typedef enum {
	GPIO_LOW,
	GPIO_HIGH,
}GPIO_LEVEL;

typedef enum {
	TRIGGER_EDGE,
	TRIGGER_LEVEL,
}GPIO_INT_TRIGGER_TYPE;

/*
typedef enum {
	GPIO_INT_LOW_LEVEL,
	GPIO_INT_HIGH_LEVEL,	
	GPIO_INT_FALLING_EDGE,
	GPIO_INT_RISING_EDGE,
	GPIO_INT_BOTH_EDGES,
	GPIO_INT_INVALID,
} GPIO_INT_TYPE;
*/

typedef enum {
	GPIO_INT_LOW_LEVEL,
	GPIO_INT_HIGH_LEVEL,	
	GPIO_INT_FALLING_EDGE = GPIO_INT_LOW_LEVEL,
	GPIO_INT_RISING_EDGE = GPIO_INT_HIGH_LEVEL,
//	GPIO_INT_BOTH_EDGES,
//	GPIO_INT_INVALID,
} GPIO_INT_TRIGGER_LEVEL;


typedef enum {
	MUX_SEL_GPIO_INPUT,
	MUX_SEL_GPIO_OUTPUT,
	MUX_SEL_FUNCTION1,
	MUX_SEL_FUNCTION2,
	MUX_SEL_FUNCTION3,
} GPIOMUX_SEL;

typedef enum {
	GPIO_UNDEFINE_INDEX = -1,
	GPIO0_00_INDEX = 0, //GPIO[0][0]
	GPIO0_01_INDEX,
	GPIO0_02_INDEX,
	GPIO0_03_INDEX,
	GPIO0_04_INDEX,
	GPIO0_05_INDEX,
	GPIO0_06_INDEX,
	GPIO0_07_INDEX,
	GPIO0_08_INDEX,
	GPIO0_09_INDEX,
	GPIO0_10_INDEX,
	GPIO0_11_INDEX,
	GPIO0_12_INDEX,
	GPIO0_13_INDEX,
	GPIO0_14_INDEX,
	GPIO0_15_INDEX,
	GPIO0_16_INDEX,
	GPIO0_17_INDEX,
	GPIO0_18_INDEX,
	GPIO0_19_INDEX,
	GPIO0_20_INDEX,
	GPIO0_21_INDEX,
	GPIO0_22_INDEX,
	GPIO0_23_INDEX,
	GPIO0_24_INDEX,
	GPIO0_25_INDEX,
	GPIO0_26_INDEX,
	GPIO0_27_INDEX,
	GPIO0_28_INDEX,
	GPIO0_29_INDEX,
	GPIO0_30_INDEX,
	GPIO0_31_INDEX,
	
	GPIO1_00_INDEX, //= 32, GPIO[1][0]
	GPIO1_01_INDEX,
	GPIO1_02_INDEX,
	GPIO1_03_INDEX,
	GPIO1_04_INDEX,
	GPIO1_05_INDEX,
	GPIO1_06_INDEX,
	GPIO1_07_INDEX,
	GPIO1_08_INDEX,
	GPIO1_09_INDEX,
	GPIO1_10_INDEX,
	GPIO1_11_INDEX,
	GPIO1_12_INDEX,
	GPIO1_13_INDEX,
	GPIO1_14_INDEX,
	GPIO1_15_INDEX,
	GPIO1_16_INDEX,
	GPIO1_17_INDEX,
	GPIO1_18_INDEX,
	GPIO1_19_INDEX,
	GPIO1_20_INDEX,
	GPIO1_21_INDEX,
	GPIO1_22_INDEX,
	GPIO1_23_INDEX,
	GPIO1_24_INDEX,
	GPIO1_25_INDEX,
	GPIO1_26_INDEX,
	GPIO1_27_INDEX,
	GPIO1_28_INDEX,
	GPIO1_29_INDEX,
	GPIO1_30_INDEX,
	GPIO1_31_INDEX,

	GPIO2_00_INDEX, //= 65, GPIO[2][0]
	GPIO2_01_INDEX,
	GPIO2_02_INDEX,
	GPIO2_03_INDEX,
	GPIO2_04_INDEX,
	GPIO2_05_INDEX,
	GPIO2_06_INDEX,
	GPIO2_07_INDEX,
	GPIO2_08_INDEX,
	GPIO2_09_INDEX,
	GPIO2_10_INDEX,
	GPIO2_11_INDEX,
	GPIO2_12_INDEX,
	GPIO2_13_INDEX,
	GPIO2_14_INDEX,
	GPIO2_15_INDEX,
	GPIO2_16_INDEX,
	GPIO2_17_INDEX,
	GPIO2_18_INDEX,
	GPIO2_19_INDEX,
	GPIO2_20_INDEX,
	GPIO2_21_INDEX,
	GPIO2_22_INDEX,
	GPIO2_23_INDEX,
	GPIO2_24_INDEX,
	GPIO2_25_INDEX,
	GPIO2_26_INDEX,
	GPIO2_27_INDEX,
	GPIO2_28_INDEX,
	GPIO2_29_INDEX,
	GPIO2_30_INDEX,
	GPIO2_31_INDEX,
	GPIO_MAX_INDEX
} GPIO_INDEX;


#define GPIO0_MASK		(1<<0)
#define GPIO1_MASK		(1<<1)
#define GPIO2_MASK		(1<<2)
#define GPIO3_MASK		(1<<3)
#define GPIO4_MASK		(1<<4)
#define GPIO5_MASK		(1<<5)
#define GPIO6_MASK		(1<<6)
#define GPIO7_MASK		(1<<7)
#define GPIO8_MASK		(1<<8)
#define GPIO9_MASK		(1<<9)
#define GPIO10_MASK		(1<<10)
#define GPIO11_MASK		(1<<11)
#define GPIO12_MASK		(1<<12)
#define GPIO13_MASK		(1<<13)
#define GPIO14_MASK		(1<<14)
#define GPIO15_MASK		(1<<15)
#define GPIO16_MASK		(1<<16)
#define GPIO17_MASK		(1<<17)
#define GPIO18_MASK		(1<<18)
#define GPIO19_MASK		(1<<19)
#define GPIO20_MASK		(1<<20)
#define GPIO21_MASK		(1<<21)
#define GPIO22_MASK		(1<<22)
#define GPIO23_MASK		(1<<23)
#define GPIO24_MASK		(1<<24)
#define GPIO25_MASK		(1<<25)
#define GPIO26_MASK		(1<<26)
#define GPIO27_MASK		(1<<27)
#define GPIO28_MASK		(1<<28)
#define GPIO29_MASK		(1<<29)
#define GPIO30_MASK		(1<<30)
#define GPIO31_MASK		(1<<31)



/********gpio_index->GPIO_INDEX   con-> MUX_SEL ************/
void app_gpio_MUXfunction_select(U32 gpio_index, U8 con);
void app_gpio_output_level_set(U32 gpio_index, U8 level);
U32 app_gpio_input_level_read(U32 gpio_index);

void app_gpio_interrupt_set(U32 gpio_index,U8 enable,U8 Trigger_type,U8 Trigger_level);
U32 app_gpio_interrupt_st_read_use_index(U32 gpio_index);
U32 app_gpio_interrupt_st_read_use_groud(U8 gpio_group);


#define GPIO_CNT		16

typedef struct _GPIO_CTRL {

	U8 gpio_control;
	U8 gpio_output;
	U8 gpio_number;
	U8 gpio_level;
} GPIO_CTRL;

typedef struct _APP_UI_GPIO_CTRL {

	U8 gpio_total;
	GPIO_CTRL gpio_func[GPIO_CNT];

	U8 gpio_standby_eco_detect;
	U8 gpio_standby_eco_number;
	U8 gpio_iphone_detect;
	U8 gpio_iphone_detect_number;

	//U8 power_pin_control;
	//U8 power_pin_number;
	//U8 power_pin_level;

} __attribute__ ((packed)) APP_UI_GPIO_CTRL;

#endif //_APP_GPIO_H_