mcu_hi3321_watch/tjd/driver/common/common_pm_port.c
2025-05-26 20:15:20 +08:00

67 lines
2.2 KiB
C

/*----------------------------------------------------------------------------
* Copyright (c) TJD Technologies Co., Ltd. 2025. All rights reserved.
*
* Description: common_pm_port.c
*
* Author: luziquan@ss-tjd.com
*
* Create: 2024-05-29
*--------------------------------------------------------------------------*/
#include "common_pm_port.h"
#include "common_pm.h"
#include "gpio.h"
#include "pinctrl.h"
#include "sys_config.h"
// clang-format off
#define ENABLE_PRINT_INFO 1
#if ENABLE_PRINT_INFO
#define static_print_info(...) sys_pm_log_i(__VA_ARGS__) // 一般信息打印宏控制
#define static_print_warn(...) sys_pm_log_w(__VA_ARGS__) // 警告信息打印一般常开
#define static_print_error(...) sys_pm_log_e(__VA_ARGS__) // 错误信息打印一般常开
#else
#define static_print_info(...)
#define static_print_warn(...)
#define static_print_error(...)
#endif
// clang-format on
void power_manager_gpio_init(void)
{
uapi_gpio_init();
uapi_pin_set_mode(MASTER_DCDC_GPIO_PIN, (pin_mode_t)HAL_PIO_FUNC_GPIO);
uapi_gpio_set_dir(MASTER_DCDC_GPIO_PIN, GPIO_DIRECTION_OUTPUT);
uapi_gpio_set_val(MASTER_DCDC_GPIO_PIN, GPIO_LEVEL_HIGH);
}
uint8_t power_manager_gpio_set_dir(uint32_t gpio_pin, uint8_t dir)
{
// static_print_info("power_manager_gpio_set_dir gpio_pin %d, dir %d", gpio_pin, dir);
uint32_t ret = 0;
ret = uapi_gpio_set_dir(gpio_pin, dir);
if (ret != 0) {
static_print_error("power_manager_gpio_set_dir failed 0x%x", ret);
return GPIO_DIRECTION_INPUT;
}
return dir;
}
uint8_t power_manager_gpio_set(uint32_t gpio_pin, uint8_t value)
{
// static_print_info("power_manager_gpio_set gpio_pin %d, value %d", gpio_pin, value);
uint32_t ret = 0;
ret = uapi_gpio_set_val(gpio_pin, value);
if (ret != 0) {
static_print_error("power_manager_gpio_set %d value %d failed 0x%x", gpio_pin, value, ret);
if (value == GPIO_LEVEL_LOW)
return GPIO_LEVEL_HIGH;
else
return GPIO_LEVEL_LOW;
}
return value;
}
uint8_t power_manager_gpio_get(uint32_t gpio_pin) { return uapi_gpio_get_val(gpio_pin); }