KT25-1015_AC695x_SDK310/apps/kaotings/kt.c

134 lines
3.6 KiB
C
Raw Normal View History

2026-04-20 06:50:04 +00:00
#include "kt.h"
#include "key_event_deal.h"
#include "asm/mcpwm.h"
2026-04-24 08:03:25 +00:00
#include "system/timer.h"
2026-04-20 06:50:04 +00:00
#include "kt_fan_ac.h"
#include "kt_led7.h"
2026-04-24 08:03:25 +00:00
#include "kt_light_led.h"
#define KT_VBUS_DEBOUNCE_CNT 3
#define KT_VBUS_POLL_MS 200
2026-04-20 06:50:04 +00:00
void kt_boot_init(void)
{
printf("kt_boot_init\n");
// 初始化GPIO PA Mute
gpio_set_pull_down(KT_CFG_PA_MUTE_PIN, 0);
gpio_set_pull_up(KT_CFG_PA_MUTE_PIN, 0);
gpio_set_direction(KT_CFG_PA_MUTE_PIN, 0);
PA_MUTE();
// 初始化GPIO USB Plug Detect
gpio_set_pull_down(KT_CFG_USB_PLUG_DET_PIN, 0);
gpio_set_pull_up(KT_CFG_USB_PLUG_DET_PIN, 0);
gpio_set_die(KT_CFG_USB_PLUG_DET_PIN, 1);
gpio_set_direction(KT_CFG_USB_PLUG_DET_PIN, 1);
// 初始化GPIO Vibration Switch
gpio_set_pull_down(KT_CFG_VIBRATION_SW_PIN, 0);
gpio_set_pull_up(KT_CFG_VIBRATION_SW_PIN, 0);
gpio_set_die(KT_CFG_VIBRATION_SW_PIN, 1);
gpio_set_direction(KT_CFG_VIBRATION_SW_PIN, 1);
// 初始化GPIO Front Fan
gpio_set_pull_down(KT_CFG_FRONT_FAN_PIN, 0);
gpio_set_pull_up(KT_CFG_FRONT_FAN_PIN, 0);
gpio_set_direction(KT_CFG_FRONT_FAN_PIN, 0);
gpio_set_output_value(KT_CFG_FRONT_FAN_PIN, 0);
// 初始化GPIO Rear Fan
gpio_set_pull_down(KT_CFG_REAR_FAN_PIN, 0);
gpio_set_pull_up(KT_CFG_REAR_FAN_PIN, 0);
gpio_set_direction(KT_CFG_REAR_FAN_PIN, 0);
gpio_set_output_value(KT_CFG_REAR_FAN_PIN, 0);
// 初始化GPIO LR Fan
gpio_set_pull_down(KT_CFG_LR_FAN_PIN, 0);
gpio_set_pull_up(KT_CFG_LR_FAN_PIN, 0);
gpio_set_die(KT_CFG_LR_FAN_PIN, 1);
gpio_set_direction(KT_CFG_LR_FAN_PIN, 0);
gpio_set_output_value(KT_CFG_LR_FAN_PIN, 0);
}
2026-04-24 08:03:25 +00:00
static u16 vbus_timer = 0;
static u8 vbus_high_cnt = 0;
static u8 vbus_low_cnt = 0;
static u8 vbus_inserted = 0;
static void vbus_detect(void *priv)
{
(void)priv;
if (gpio_read(KT_CFG_USB_PLUG_DET_PIN)) {
vbus_low_cnt = 0;
if (!vbus_inserted) {
vbus_high_cnt++;
if (vbus_high_cnt >= KT_VBUS_DEBOUNCE_CNT) {
vbus_inserted = 1;
kt_led7_usb_charge_set(1);
}
}
} else {
vbus_high_cnt = 0;
if (vbus_inserted) {
vbus_low_cnt++;
if (vbus_low_cnt >= KT_VBUS_DEBOUNCE_CNT) {
vbus_inserted = 0;
kt_led7_usb_charge_set(0);
}
} else {
vbus_low_cnt = 0;
}
}
}
void start_chk_det_start(void)
{
if (vbus_timer) {
sys_timer_del(vbus_timer);
vbus_timer = 0;
}
vbus_timer = sys_timer_add(NULL, vbus_detect, KT_VBUS_POLL_MS);
}
2026-04-20 06:50:04 +00:00
void kt_init(void)
{
printf("kt_init\n");
2026-04-24 08:03:25 +00:00
kt_light_led_init();
kt_fan_ac_init();
2026-04-20 06:50:04 +00:00
kt_led7_init();
2026-04-24 08:03:25 +00:00
start_chk_det_start();
2026-04-20 06:50:04 +00:00
}
u8 kt_key_event_filter_after(int key_event, int key_value)
{
u8 ret = true;
switch (key_event)
{
case KEY_KT_FRONT_FAN:
printf("KEY_KT_FRONT_FAN = %d\n", key_value);
kt_fan_level_change(fan_type_front);
break;
case KEY_KT_REAR_FAN:
printf("KEY_KT_REAR_FAN = %d\n", key_value);
kt_fan_level_change(fan_type_rear);
break;
case KEY_KT_LR_FAN:
printf("KEY_KT_LR_FAN = %d\n", key_value);
kt_fan_level_change(fan_type_lr);
break;
2026-04-24 08:03:25 +00:00
case KEY_KT_LED:
printf("KEY_KT_LED = %d\n", key_value);
kt_light_led_level_change();
break;
2026-04-20 06:50:04 +00:00
case KEY_KT_AIR_COND:
printf("KEY_KT_AIR_COND = %d\n", key_value);
kt_fan_level_change(fan_type_ac);
break;
default:
printf("KEY_KT_DEFAULT = %d\n", key_value);
ret = false;
break;
}
return ret;
// return false;
}