/*
 * drv_gpio.h
 *
 *  Created on: 2025年4月9日
 *      Author: 22332
 */

#ifndef DRV_GPIO_H_
#define DRV_GPIO_H_

#include "sdk_project_config.h"
typedef enum {
    GPIO_PIN_LEVEL_LOW    = 0U,    /*!< Pin level low */
    GPIO_PIN_LEVEL_HIGH   = 1U     /*!< Pin level high */
} gpio_pin_level_t;
struct gpio_cfg_out_t{
    GPIO_Type* port;
    uint32_t pin;
    gpio_pin_level_t def;
};

struct gpio_cfg_in_t{
    GPIO_Type* port;
    uint32_t pin;
};

static struct gpio_cfg_in_t g_pArrayPortIn[] = {
    {IN_LVDS_UNLOCK_PORT,      IN_LVDS_UNLOCK_PIN},
    {IN_WAKEUP_PORT,           IN_WAKEUP_PIN},
    {IN_TFT_ERR_PORT,          IN_TFT_ERR_PIN},
    {IN_LDO_1V2_PG_PORT,       IN_LDO_1V2_PG_PIN},
    {IN_SW_3V3_PG_PORT,        IN_SW_3V3_PG_PIN},
    {IN_PMIC_FLTB_PORT,        IN_PMIC_FLTB_PIN},
    {IN_BL_ERR_PORT,           IN_BL_ERR_PIN},
};
static struct gpio_cfg_out_t g_pArrayPortOut[] = {
    {OUT_BL_PWM_PORT,         	OUT_BL_PWM_PIN,       	GPIO_PIN_LEVEL_LOW},
    {OUT_BL_EN_PORT,          	OUT_BL_EN_PIN,        	GPIO_PIN_LEVEL_LOW},
    {OUT_LVDS_PDB_PORT,       	OUT_LVDS_PDB_PIN,     	GPIO_PIN_LEVEL_HIGH},
    {OUT_PON_HOLD_PORT,       	OUT_PON_HOLD_PIN,     	GPIO_PIN_LEVEL_LOW},
    {OUT_TFT_BIST_PORT,         OUT_TFT_BIST_PIN,       GPIO_PIN_LEVEL_LOW},
    {OUT_TFT_SYBYB_PORT,        OUT_TFT_SYBYB_PIN,      GPIO_PIN_LEVEL_LOW},
    {OUT_TFT_DISP_PORT,         OUT_TFT_DISP_PIN,       GPIO_PIN_LEVEL_LOW},
    {OUT_TFT_SHLR_PORT,         OUT_TFT_SHLR_PIN,       GPIO_PIN_LEVEL_LOW},
    {OUT_TFT_RST_PORT,          OUT_TFT_RST_PIN,        GPIO_PIN_LEVEL_LOW},
    {OUT_TP_RST_PORT,           OUT_TP_RST_PIN,         GPIO_PIN_LEVEL_LOW},
    {OUT_3V3_TFT_EN_PORT,       OUT_3V3_TFT_EN_PIN,     GPIO_PIN_LEVEL_LOW},
    {OUT_PMIC_EN_PORT,          OUT_PMIC_EN_PIN,        GPIO_PIN_LEVEL_LOW},
    {OUT_MCU_INT_PORT,          OUT_MCU_INT_PIN,       	GPIO_PIN_LEVEL_LOW},
    {OUT_LDO_1V2_EN_PORT,       OUT_LDO_1V2_EN_PIN,     GPIO_PIN_LEVEL_LOW},
};
extern void bsp_gpio_cfg_input(void);
extern void bsp_gpio_cfg_output(void);
extern int bsp_gpio_pin_read(int index);
extern void bsp_gpio_pin_write(int index, gpio_pin_level_t status);

#endif /* DRV_GPIO_H_ */
