+++ /dev/null
-{
- "files.associations": {
- "*.def": "cpp",
- "limits": "cpp",
- "*.tcc": "cpp",
- "type_traits": "cpp",
- "iterator": "cpp",
- "pm_core.h": "c",
- "pm_veto.h": "c",
- "chip_io.h": "c",
- "pm.h": "c",
- "tyhx_hrv_alg.h": "c",
- "tyhx_hrs_custom.h": "c",
- "osal_timer.h": "c",
- "debug_print.h": "c",
- "platform_core.h": "c",
- "*.inc": "c",
- "ohosfwk_at_process.h": "c",
- "pm_clocks.h": "c",
- "pmu_cmu.h": "c",
- "pm_control.h": "c",
- "__functional_base": "c",
- "__functional_base_03": "c",
- "__hash_table": "c",
- "__tree": "c",
- "__tuple": "c",
- "algorithm": "c",
- "array": "c",
- "chrono": "c",
- "cstddef": "c",
- "filesystem": "c",
- "forward_list": "c",
- "functional": "c",
- "memory": "c",
- "random": "c",
- "ratio": "c",
- "tuple": "c",
- "utility": "c",
- "istream": "c",
- "ostream": "c",
- "soc_osal.h": "c",
- "lis2doc_reg.h": "c",
- "string.h": "c",
- "clocks_config_priv.h": "c",
- "lis2doc_at_cmd.h": "c",
- "customer.h": "c",
- "pinctrl.h": "c",
- "at_cmd_api.h": "c",
- "ios": "cpp",
- "vibrator.h": "c",
- "gpio_porting.h": "c",
- "arch.h": "c",
- "opt.h": "c",
- "debug.h": "c",
- "lwipopts.h": "c",
- "cc.h": "c",
- "sys_arch.h": "c",
- "nv_key.h": "c",
- "common.h": "c",
- "custom_utils.h": "c",
- "key_id.h": "c",
- "custom_utils_cmd.h": "c",
- "timer.h": "c",
- "future": "cpp",
- "__bit_reference": "c",
- "bitset": "c",
- "map": "c",
- "set": "c",
- "unordered_map": "c",
- "unordered_set": "c",
- "lis2doc_porting.h": "c",
- "acc_service.h": "c",
- "mmc5603.h": "c",
- "mag_service.h": "c",
- "mmc5603_hal.h": "c",
- "clocks_config.h": "c",
- "clocks_types.h": "c"
- }
-}
\ No newline at end of file
+++ /dev/null
-#[[\r
-Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.\r
-Description: CMake audio sample module.\r
-Author: audio\r
-Create: 2023-06-09\r
-]]\r
-\r
-set(SAP_TOP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../drivers/drivers/driver/audio/source)\r
-#===================================================================================\r
-include(${SAP_TOP_DIR}/build/cmake/audio_config.cmake)\r
-#===================================================================================\r
-set(COMPONENT_NAME audio_vendor)\r
-set(MODULE_NAME "dsp")\r
-set(AUTO_DEF_FILE_ID TRUE)\r
-#===================================================================================\r
-set(COMPONENT_SRC )\r
-#===================================================================================\r
-set(COMPONENT_INC\r
- ${SAP_UAPI_DIR}\r
- ${SAP_TOP_DIR}/include\r
- ${SAP_TOP_DIR}/drv/vendor\r
- ${SAP_TOP_DIR}/drv/include\r
- ${SAP_TOP_DIR}/drv/common/include\r
- ${SAP_TOP_DIR}/drv/arch/include\r
- ${SAP_TOP_DIR}/drv/arch/${CFG_SAP_CHIP_TYPE}/include\r
- ${SAP_TOP_DIR}/core/include\r
- ${SAP_TOP_DIR}/core/common/include\r
- ${SAP_TOP_DIR}/core/arch/${CFG_SAP_CHIP_TYPE}/include\r
- ${CMAKE_CURRENT_SOURCE_DIR}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/common\r
-)\r
-#===================================================================================\r
-if("${CFG_SAP_VENDOR_DRIVER_AW88262_SUPPORT}" STREQUAL "y")\r
-set(COMPONENT_SRC ${COMPONENT_SRC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88262/aw88262.c\r
-)\r
-set(COMPONENT_INC ${COMPONENT_INC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88262\r
-)\r
-endif()\r
-\r
-if("${CFG_SAP_VENDOR_DRIVER_AW88166_SUPPORT}" STREQUAL "y")\r
-set(COMPONENT_SRC ${COMPONENT_SRC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw88166.c\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx.c\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx_calib.c\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx_device.c\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/product_init_files/aw88166/aw883xx_pid_2066_init.c\r
-)\r
-set(COMPONENT_INC ${COMPONENT_INC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/product_init_files/aw88166\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/config/aw88166/mono/16bit\r
-)\r
-endif()\r
-\r
-if("${CFG_SAP_VENDOR_DRIVER_ANC_CODEC_SUPPORT}" STREQUAL "y")\r
-set(COMPONENT_SRC ${COMPONENT_SRC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/anc_codec/anc_codec.c\r
-)\r
-set(COMPONENT_INC ${COMPONENT_INC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/anc_codec\r
- ${CMAKE_CURRENT_SOURCE_DIR}/anc_codec/sai01_dac_32.768k\r
-)\r
-endif()\r
-#===================================================================================\r
-set(COMPONENT_DEF\r
- "SAP_PROC_SUPPORT"\r
-)\r
-#===================================================================================\r
-include(${SAP_TOP_DIR}/build/cmake/audio_common.cmake)\r
-install_sdk(${CMAKE_CURRENT_SOURCE_DIR}/aw88166 "*")\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.\r
- * Description: source file for aw88166 driver\r
- */\r
-\r
-#include <stdio.h>\r
-#include "soc_osal.h"\r
-#include "audio_debug.h"\r
-#include "gpio.h"\r
-#include "hal_gpio.h"\r
-#include "i2c.h"\r
-#include "pinctrl.h"\r
-#include "vendor_common.h"\r
-#include "soc_uapi_vendor.h"\r
-\r
-#include "aw883xx_init.h"\r
-#include "aw883xx.h"\r
-#include "aw_params.h"\r
-\r
-static td_bool g_aw88166_i2c_inited = TD_FALSE;\r
-\r
-#define AW88166_PWR_ON_PIN S_AGPIO_L25\r
-#define AW88166_I2C_BUS_ID I2C_BUS_3\r
-#define AW88166_I2C_DEV_ADDR 0x34\r
-\r
-static td_s32 aw_dev0_i2c_write_func(td_u16 dev_addr, td_u8 reg_addr, td_u8 *pdata, td_u16 len)\r
-{\r
- td_s32 ret;\r
- i2c_data_t data;\r
- const td_u8 reg_addr_len = sizeof(reg_addr); /* data len of reg_addr */\r
- const td_u8 send_len = len + reg_addr_len; /* pdata bytes && reg_addr len */\r
- td_u8 *send_data = osal_kmalloc_align(send_len, 0, 8); /* 8 : Align up to 8 bytes */\r
-\r
- if (send_data == TD_NULL) {\r
- ret = -1; /* -1:FAILED ERR CODE */\r
- vendor_log_fun_err(malloc, ret);\r
- return ret;\r
- }\r
-\r
- /* pack reg addr & reg data */\r
- *send_data = reg_addr; /* reg_addr */\r
- ret = memcpy_s(send_data + reg_addr_len, (send_len - reg_addr_len), pdata, len); /* pdata */\r
- if (ret != EOK) {\r
- vendor_log_fun_err(memcpy_s, ret);\r
- goto out;\r
- }\r
-\r
- data.send_buf = send_data;\r
- data.send_len = send_len;\r
- data.receive_buf = NULL;\r
- data.receive_len = 0;\r
- ret = (td_s32)uapi_i2c_master_write(AW88166_I2C_BUS_ID, dev_addr, &data);\r
- if (ret != ERRCODE_SUCC) {\r
- vendor_log_fun_err(uapi_i2c_master_write, ret);\r
- goto out;\r
- }\r
-\r
-out:\r
- if (send_data != TD_NULL) {\r
- osal_kfree(send_data);\r
- }\r
- return ret;\r
-}\r
-\r
-static td_s32 aw_dev0_i2c_read_func(td_u16 dev_addr, td_u8 reg_addr, td_u8 *pdata, td_u16 len)\r
-{\r
- td_s32 ret;\r
-\r
- i2c_data_t data;\r
-\r
- data.send_buf = ®_addr;\r
- data.send_len = sizeof(reg_addr);\r
- data.receive_buf = pdata;\r
- data.receive_len = len;\r
- ret = (td_s32)uapi_i2c_master_writeread(AW88166_I2C_BUS_ID, dev_addr, &data);\r
- if (ret != ERRCODE_SUCC) {\r
- vendor_log_fun_err(uapi_i2c_master_writeread, ret);\r
- return ret;\r
- }\r
-\r
- return AUDIO_SUCCESS;\r
-}\r
-\r
-static td_void aw_dev0_reset_gpio_ctl(bool state)\r
-{\r
- uapi_gpio_set_val(AW88166_PWR_ON_PIN, state);\r
-}\r
-\r
-static td_void aw88166_pwr_on_pin_init(td_void)\r
-{\r
- uapi_gpio_set_dir(AW88166_PWR_ON_PIN, GPIO_DIRECTION_OUTPUT);\r
-}\r
-\r
-static td_s32 aw88166_i2c_init(td_void)\r
-{\r
- td_s32 ret;\r
- audio_func_enter();\r
-\r
- /* init i2c */\r
- vendor_trace_log_u32(AW88166_I2C_BUS_ID);\r
- ret = (td_s32)uapi_i2c_master_init(AW88166_I2C_BUS_ID, I2C_BAUDRATE, I2C_HIGH_SPEED_CODE);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(uapi_i2c_master_init, ret);\r
- return ret;\r
- }\r
-\r
- vendor_printf("aw88166 i2c init success\n");\r
- audio_func_exit();\r
- return AUDIO_SUCCESS;\r
-}\r
-\r
-static td_s32 aw88166_i2c_deinit(td_void)\r
-{\r
- td_s32 ret;\r
- audio_func_enter();\r
-\r
- /* deinit i2c */\r
- vendor_trace_log_u32(AW88166_I2C_BUS_ID);\r
- ret = (td_s32)uapi_i2c_deinit(AW88166_I2C_BUS_ID);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(uapi_i2c_deinit, ret);\r
- return ret;\r
- }\r
-\r
- vendor_printf("aw88166 i2c deinit success\n");\r
- audio_func_exit();\r
- return AUDIO_SUCCESS;\r
-}\r
-\r
-td_s32 aw883xx_pid_2066_dev_init(td_void *aw883xx);\r
-\r
-struct aw_init_info init_info[] = {\r
- {\r
- .dev = AW_DEV_0,\r
- .i2c_addr = AW88166_I2C_DEV_ADDR,\r
- .re_min = 2000, /* awinic:If the re_min(ohms) and re_max(ohms) are not set, the default value is used */\r
- .re_max = 39000,\r
- .mix_chip_count = AW_DEV0_MIX_CHIP_NUM,\r
- .prof_info = g_dev0_prof_info,\r
- .i2c_read_func = aw_dev0_i2c_read_func,\r
- .i2c_write_func = aw_dev0_i2c_write_func,\r
- .reset_gpio_ctl = aw_dev0_reset_gpio_ctl,\r
- .dev_init_ops = {aw883xx_pid_2066_dev_init},\r
- }\r
-};\r
-\r
-static td_s32 audio_aw88166_configuration(const uapi_vendor_codec_attr *attr)\r
-{\r
- td_s32 ret;\r
-\r
- /* awinic:Control interface of dev0 */\r
- /* awinic:initialization */\r
- ret = aw883xx_smartpa_init((td_void *)&init_info[AW_DEV_0]);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_printf("aw883xx_smartpa_init already init\n");\r
- }\r
- /* awinic:set mode "Music", "aw_params.h" contains id information */\r
- ret = aw883xx_set_profile_byname(AW_DEV_0, "Music");\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw883xx_set_profile_byname, ret);\r
- }\r
-\r
- vendor_unused(attr);\r
- return ret;\r
-}\r
-\r
-static td_s32 audio_aw88166_deconfiguration(td_void)\r
-{\r
- /* awinic:Free the requested memory when PA is not used */\r
- aw883xx_smartpa_deinit(AW_DEV_0);\r
-\r
- return AUDIO_SUCCESS;\r
-}\r
-\r
-td_s32 audio_aw88166_init(const uapi_vendor_codec_attr *attr)\r
-{\r
- td_s32 ret;\r
-\r
- audio_func_enter();\r
-\r
- aw88166_pwr_on_pin_init();\r
-\r
- if (g_aw88166_i2c_inited != TD_TRUE) {\r
- ret = aw88166_i2c_init();\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw88166_i2c_init, ret);\r
- return ret;\r
- }\r
- g_aw88166_i2c_inited = TD_TRUE;\r
- } else {\r
- ret = 0;\r
- }\r
-\r
- ret = audio_aw88166_configuration(attr);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(audio_aw88166_configuration, ret);\r
- }\r
-\r
- return AUDIO_SUCCESS;\r
-}\r
-\r
-td_s32 audio_aw88166_deinit(td_void)\r
-{\r
- td_s32 ret;\r
- audio_func_enter();\r
-\r
- ret = audio_aw88166_deconfiguration();\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(audio_aw88166_deconfiguration, ret);\r
- }\r
-\r
- if (g_aw88166_i2c_inited != TD_FALSE) {\r
- ret = aw88166_i2c_deinit();\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw88166_i2c_deinit, ret);\r
- return ret;\r
- }\r
- g_aw88166_i2c_inited = TD_FALSE;\r
- } else {\r
- ret = AUDIO_SUCCESS;\r
- }\r
-\r
- audio_func_exit();\r
- return ret;\r
-}\r
-\r
-td_s32 audio_aw88166_start(const uapi_vendor_codec_attr *attr)\r
-{\r
- td_s32 ret;\r
-\r
- audio_func_enter();\r
-\r
- /* awinic:The platform needs to output I2s first, and then ctl start */\r
- ret = aw883xx_ctrl_state(AW_DEV_0, AW_START);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw883xx_ctrl_state, ret);\r
- }\r
-\r
- vendor_unused(attr);\r
- return ret;\r
-}\r
-\r
-td_s32 audio_aw88166_stop(td_void)\r
-{\r
- td_s32 ret;\r
- audio_func_enter();\r
-\r
- /* awinic:The platform needs to control the stop first and then stop I2S */\r
- ret = aw883xx_ctrl_state(AW_DEV_0, AW_STOP);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw883xx_ctrl_state, ret);\r
- }\r
- audio_func_exit();\r
- return ret;\r
-}\r
-\r
-td_s32 audio_aw88166_set_aef_profile(uapi_snd_aef_profile aef_profile)\r
-{\r
- td_s32 ret;\r
-\r
- audio_func_enter();\r
-\r
- /* awinic:set mode "Receiver"/"Music", "aw_params.h" contains id information */\r
- if (aef_profile == UAPI_SND_AEF_PROFILE_VOIP) {\r
- /* awinic:set mode "Receiver" */\r
- ret = aw883xx_set_profile_byname(AW_DEV_0, "Receiver");\r
- } else {\r
- /* awinic:set mode "Music" */\r
- ret = aw883xx_set_profile_byname(AW_DEV_0, "Music");\r
- }\r
-\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw883xx_set_profile_byname, ret);\r
- }\r
-\r
- audio_func_exit();\r
- return ret;\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2022. All rights reserved.\r
- * Description: Application Core OS Priority Initialize Interface for Standard\r
- * Author:\r
- * Create: 2022-12-03\r
- */\r
-#include "debug_print.h"\r
-#include "thread_init.h"\r
-#include "common_def.h"\r
-#include "pm.h"\r
-#include "watchdog.h"\r
-/* after reboot system emmc need write exc info to the file system from sector */\r
-#if defined(SAVE_EXC_INFO) && defined(CFG_DRIVERS_MMC)\r
-#include "exception.h"\r
-#endif\r
-#ifdef CFG_DRIVERS_MMC\r
-#ifdef __LITEOS__\r
-#include "soc/mmc.h"\r
-#endif\r
-#include "soc_mmc.h"\r
-#endif\r
-#include "soc_lcd_api.h"\r
-#ifdef CFG_DRIVERS_NANDFLASH\r
-#include "nandflash_config.h"\r
-#include "yaffs_nand_drv.h"\r
-#endif\r
-#if defined(TPTYPE_TMA525B)\r
-#include "tma525b_drv1.h"\r
-#elif defined(TPTYPE_ZTW523)\r
-#include "ztw523_touch1.h"\r
-#elif defined(TPTYPE_FT6X46)\r
-#include "ft6x46_touch1.h"\r
-#else\r
-#include "ztw523_touch1.h"\r
-#endif\r
-#include "thread_pri_init.h"\r
-#if DSP_EXIST == YES\r
-#include "soc_uapi_audio_sys.h"\r
-#include "soc_uapi_vendor.h"\r
-#include "soc_uapi_sound.h"\r
-/* Audio codec vendor select according to hardware connection:\r
- * define AUDIO_SMARTPA_AW88166 : macro to init smartpa aw88166;\r
- * define AUDIO_SMARTPA_AW88166_I2S_ID UAPI_SND_OUT_PORT_I2S0 : macro to specify i2s id connecting to smartpa aw88166;\r
- */\r
-#if 0\r
-#define AUDIO_SMARTPA_AW88262\r
-#define AUDIO_SMARTPA_AW88262_I2S_ID UAPI_SND_OUT_PORT_I2S2\r
-#else\r
-#define AUDIO_SMARTPA_AW88166\r
-#define AUDIO_SMARTPA_AW88166_I2S_ID UAPI_SND_OUT_PORT_I2S0\r
-#endif\r
-#endif /* DSP_EXIST */\r
-#include "panic.h"\r
-#include "board_init.h"\r
-#include "kernel_init.h"\r
-#ifdef SUPPORT_AT_OHOSFWK\r
-#include "ohosfwk_startup.h"\r
-#endif\r
-#include "clocks_config.h"\r
-\r
-#define EMMC_BASE_ADDR 0x52062000\r
-#define TASK_PRIORITY_APP (osPriority_t)(17)\r
-#define TICK_TEN_MS (10U)\r
-#define WAIT_BT_BOOTUP_TIME 200U\r
-\r
-static void thread_main(const void *unused);\r
-void bt_acore_btc_ipc_receive_init(void);\r
-\r
-app_task_definition_t g_thread_pri = { { "thread_pri", 0, NULL, 0, NULL, (0x1000), TASK_PRIORITY_APP, 0, 0 },\r
- (osThreadFunc_t)thread_main, NULL, NULL, USE_DTCM_MEM };\r
-store_class g_store_init_select = STORE_CLASS_NAND;\r
-\r
-#if defined(ENABLE_UIKIT) || defined(ENABLE_LVGL)\r
-static void sample_gfx_init(void)\r
-{\r
-#if defined(TPTYPE_TMA525B)\r
- tma525b_host_init_sample();\r
-#elif defined(TPTYPE_ZTW523)\r
- ztw523_host_init_sample();\r
-#elif defined(TPTYPE_FT6X46)\r
- ft6x46_host_init_sample();\r
-#else\r
- ztw523_host_init_sample();\r
-#endif\r
- uapi_lcd_init();\r
-#ifdef SUPPORT_GPU_GMMU\r
- drv_gmmu_module_init();\r
-#endif\r
- uapi_vau_module_init();\r
- uapi_dpu_module_init();\r
-#ifdef SUPPORT_GPU_JPEG\r
- uapi_jpeg_module_init();\r
-#endif\r
-}\r
-#endif\r
-\r
-#ifdef CFG_DRIVERS_MMC\r
-static void emmc_init(void)\r
-{\r
- /**\r
- * FPGA解复位, 设置CMD_CONFLICT_CHECK\r
- * 之后才能设置管脚\r
- */\r
- writew(EMMC_BASE_ADDR + 0x508, 0);\r
- init_emmc_pinmux();\r
- int ret = emmc_drv_context_init();\r
- if (ret != ENOERR) {\r
- PRINT("emmc init error:[%d]"NEWLINE, ret);\r
- }\r
- mmc_set_first_init_flag(true);\r
- mmc_set_sleep_init_flag(true);\r
- PRINT("emmc init success\r\n");\r
-\r
-#if defined(SAVE_EXC_INFO)\r
- if (emmc_exc_info_write() != ERRCODE_SUCC) {\r
- PRINT("emmc_exc_info_write failed"NEWLINE);\r
- }\r
-#endif\r
-}\r
-#endif\r
-\r
-#ifdef CFG_DRIVERS_NANDFLASH\r
-static void nandflash_init(void)\r
-{\r
- int32_t ret = 0;\r
- ret = nandflash_filesystem_init();\r
- if (ret != 0) {\r
- PRINT("nandflash init error[%d]"NEWLINE, ret);\r
- }\r
- PRINT("nandflash init success\r\n");\r
-}\r
-#endif\r
-\r
-static void board_version_class_print(void)\r
-{\r
- PRINT("**********startup info**********\r\n");\r
- PRINT("os init class is %s."NEWLINE, (g_os_init_select == OS_CLASS_LITEOS) ? "liteos" : "freertos");\r
- PRINT("store init class is %s."NEWLINE, (g_store_init_select == STORE_CLASS_NAND) ? "nandflash" : "emmc");\r
- PRINT("display init class is %s."NEWLINE, (g_display_init_select == DISPLAY_CLASS_QSPI) ? "QSPI" : "MIPI");\r
- PRINT("board init class is %s."NEWLINE, (g_board_init_select == BOARD_CLASS_E0B2) ? "E0B2" : "E0B4");\r
-#ifdef CONFIG_PSRAM_SUPPORT\r
- PRINT("psram density is %s."NEWLINE, (get_psram_density() == PSRAM_DENSITY_16M) ? "16MB" : "32MB");\r
-#endif\r
- PRINT("**********startup info**********\r\n");\r
-}\r
-\r
-#if DSP_EXIST == YES\r
-/**\r
- * The sample code of the vendor,\r
- * which will be implemented by the customer in the future\r
- */\r
-#ifdef AUDIO_SMARTPA_AW88262\r
-td_s32 audio_aw88262_init(const uapi_vendor_codec_attr *attr);\r
-td_s32 audio_aw88262_deinit(td_void);\r
-\r
-static uapi_vendor_driver g_aw88262_driver = {\r
- .out_port = AUDIO_SMARTPA_AW88262_I2S_ID,\r
- .init = audio_aw88262_init,\r
- .deinit = audio_aw88262_deinit,\r
- .set_aef_profile = TD_NULL,\r
-};\r
-\r
-static td_s32 audio_aw88262_register_driver(void)\r
-{\r
- return uapi_audio_vendor_register(&g_aw88262_driver);\r
-}\r
-#endif /* AUDIO_SMARTPA_AW88262 */\r
-\r
-#ifdef AUDIO_SMARTPA_AW88166\r
-td_s32 audio_aw88166_init(const uapi_vendor_codec_attr *attr);\r
-td_s32 audio_aw88166_deinit(td_void); /* Call when device power off */\r
-td_s32 audio_aw88166_start(const uapi_vendor_codec_attr *attr);\r
-td_s32 audio_aw88166_stop(td_void);\r
-td_s32 audio_aw88166_set_aef_profile(uapi_snd_aef_profile aef_profile);\r
-\r
-static uapi_vendor_driver g_aw88166_driver = {\r
- .out_port = AUDIO_SMARTPA_AW88166_I2S_ID,\r
- .init = audio_aw88166_start,\r
- .deinit = audio_aw88166_stop,\r
- .set_aef_profile = audio_aw88166_set_aef_profile,\r
-};\r
-\r
-static td_s32 audio_aw88166_register_driver(void)\r
-{\r
- const uapi_vendor_codec_attr attr = {};\r
-\r
- audio_aw88166_init(&attr); /* Init aw88166 once when device power on */\r
-\r
- return uapi_audio_vendor_register(&g_aw88166_driver);\r
-}\r
-#endif /* AUDIO_SMARTPA_AW88166 */\r
-\r
-static void audio_smartpa_init(void)\r
-{\r
- uint32_t ret;\r
-\r
-#ifdef AUDIO_SMARTPA_AW88262\r
- ret = (uint32_t)audio_aw88262_register_driver();\r
- if (ret != 0) {\r
- PRINT("aw88262 register driver error\r\n");\r
- }\r
-#endif /* AUDIO_SMARTPA_AW88262 */\r
-\r
-#ifdef AUDIO_SMARTPA_AW88166\r
- ret = (uint32_t)audio_aw88166_register_driver();\r
- if (ret != 0) {\r
- PRINT("aw88166 register driver error\r\n");\r
- }\r
-#endif /* AUDIO_SMARTPA_AW88166 */\r
-}\r
-#endif /* DSP_EXIST */\r
-\r
-#if DSP_EXIST == YES\r
-static void audio_init()\r
-{\r
- (void)osDelay(TICK_TEN_MS);\r
- uapi_watchdog_kick();\r
-\r
- audio_smartpa_init();\r
-\r
- uint32_t ret = (uint32_t)uapi_audio_init();\r
- if (ret != 0) {\r
- PRINT("audio init error:[%d]\r\n", ret);\r
- } else {\r
- PRINT("audio init OK\r\n");\r
- }\r
-}\r
-#endif\r
-\r
-void rc_calibration_func_notify(void)\r
-{\r
-#ifdef SUPPORT_RC_CALIBRATION\r
- /* BT核用来通知MCU 32K校准值 */\r
- writew(GLB_CTL_D_RB_BASE + GLB_GP_D_REG3, 0x0);\r
- /* 通知BT核 32K时钟来源 */\r
- writew(GLB_CTL_D_RB_BASE + GLB_GP_D_REG2, CLOCK_SOURCE_RC);\r
-#else\r
- writew(GLB_CTL_D_RB_BASE + GLB_GP_D_REG2, CLOCK_SOURCE_XO);\r
-#endif\r
-}\r
-\r
-static void force_to_sleep(void)\r
-{\r
- if (reg16_getbits(0x5702C010, 0x8, 0x8) == 0x5A) { // 特殊模式下,强制进入深睡中\r
- reg16_clrbits(0x5702C010, 0x8, 0x8);\r
- uapi_tcxo_delay_ms(WAIT_BT_BOOTUP_TIME);\r
- hal_pmu_cldo_enable_slp_bypass(HAL_PMU_CLDO1, TURN_OFF);\r
- uapi_sys_force_mcu_only_deep_sleep_mode(0);\r
- }\r
-}\r
-\r
-static void thread_main(const void *unused)\r
-{\r
- PRINT("thread_main start "NEWLINE);\r
- unused(unused);\r
- rc_calibration_func_notify();\r
- bt_acore_btc_ipc_receive_init();\r
- uapi_pm_control(PM_BT_POWER_UP_AND_RUN);\r
-#ifdef FORCE_TO_DEEP_SLEEP\r
- force_to_sleep();\r
-#endif\r
- los_vfs_init();\r
- uint32_t ret = dpal_driver_base_init();\r
- if (ret != 0) {\r
- PRINT("dpal driver base init error"NEWLINE);\r
- panic(PANIC_ASSERT, __LINE__);\r
- }\r
-#ifdef CFG_DRIVERS_MMC\r
- emmc_init();\r
- g_store_init_select = STORE_CLASS_EMMC;\r
- sdiom_internal_freq_handler_register(mmc_set_internal_clk);\r
-#endif\r
-#ifdef CFG_DRIVERS_NANDFLASH\r
- yaffs_nand_drv_checkptset(YAFFS_CHECKPT_SKIPED);\r
- nandflash_init();\r
- g_store_init_select = STORE_CLASS_NAND;\r
-#endif\r
- uapi_pm_control(PM_DISPLAY_POWER_UP_AND_RUN);\r
- (void)osDelay(TICK_TEN_MS);\r
-\r
-#if defined(ENABLE_UIKIT) || defined(ENABLE_LVGL)\r
- sample_gfx_init();\r
-#else\r
- uapi_pm_control(PM_DISPLAY_POWER_OFF);\r
-#endif\r
-\r
-#if DSP_EXIST == YES\r
- audio_init();\r
-#endif\r
- board_version_class_print();\r
- uapi_watchdog_kick();\r
- thread_init();\r
- button_app_init();\r
- uapi_calendar_init();\r
-#ifdef SUPPORT_AT_OHOSFWK\r
- ohos_startup();\r
-#endif\r
- uapi_pm_remove_sleep_veto(PM_ID_DEBUG);\r
- set_startup_finish_flag();\r
-}\r
-\r
-void thread_pri_init(void)\r
-{\r
- /* Create tasks */\r
- g_thread_pri.task_handle = osThreadNew(g_thread_pri.func, NULL, &(g_thread_pri.attr));\r
- if (g_thread_pri.task_handle == NULL) {\r
- PRINT("create thread pri failed!");\r
- }\r
-}\r
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Reboot Presenter
- * Create: 2022-04-28
- */
-
-#include "RebootPresenter.h"
-#include "RebootView.h"
-#include "RebootModel.h"
-#include "drag_event.h"
-#include "wearable_log.h"
-
-namespace OHOS {
-static RebootPresenter *g_pRebootPresenter = nullptr;
-
-RebootPresenter::RebootPresenter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::RebootPresenter");
- g_pRebootPresenter = this;
-}
-
-RebootPresenter::~RebootPresenter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::~RebootPresenter");
- g_pRebootPresenter = nullptr;
-}
-
-RebootPresenter *RebootPresenter::GetInstance()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter GetInstance");
- return g_pRebootPresenter;
-}
-
-void RebootPresenter::OnStart()
-{
- Presenter<RebootView>::OnStart();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::On Start ");
-}
-
-void RebootPresenter::OnPause(void) {}
-
-void RebootPresenter::OnResume(void) {}
-
-void RebootPresenter::OnStop(void) {}
-
-
-extern "C"
-{
-extern void uapi_sys_shipmode(uint32_t arg);
-extern uint32_t mcu_os_sys_reset(uint8_t *para, uint32_t para_len);
-}
-bool RebootPresenter::OnClick(UIView& view, const ClickEvent& event)
-{
- UNUSED(event);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClick OnClick");
- if (strcmp(view.GetViewId(), REBOOT_BUTTON) == 0) {
- RebootView::GetInstance()->ChangeView(REBOOTVIEW, REBOOTDEVICEVIEW);
- } else if (strcmp(view.GetViewId(), SHUTDOWN_BUTTON) == 0) {
- RebootView::GetInstance()->ChangeView(REBOOTVIEW, SHUTDOWNDEVICEVIEW);
- } else if (strcmp(view.GetViewId(), REBOOTDEVICE_BUTTON) == 0) {
- // 重启
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "REBOOTDEVICE_BUTTON OnClick");
- mcu_os_sys_reset(NULL,NULL);
- } else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_BUTTON) == 0) {
- // 关机
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SHUTDOWNDEVICE_BUTTON OnClick");
- uapi_sys_shipmode(0);
- }
- return true;
-}
-
-bool RebootPresenter::OnDrag(UIView& view, const DragEvent& event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::OnDrag");
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
- if (strcmp(view.GetViewId(), REBOOT_VIEW) == 0) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE);
- } else if (strcmp(view.GetViewId(), REBOOTDEVICE_VIEW) == 0) {
- if (RebootModel::GetInstance()->GetExitsView() == 0) {
- RebootView::GetInstance()->ChangeView(REBOOTDEVICEVIEW, REBOOTVIEW);
- } else {
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
- RebootModel::GetInstance()->SetExitsView(false);
- }
- } else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_VIEW) == 0) {
- if (RebootModel::GetInstance()->GetExitsView() == 0) {
- RebootView::GetInstance()->ChangeView(SHUTDOWNDEVICEVIEW, REBOOTVIEW);
- } else {
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
- RebootModel::GetInstance()->SetExitsView(false);
- }
- }
- }
- return true;
-}
-}
+++ /dev/null
-#!/usr/bin/env python3
-# encoding=utf-8
-# ============================================================================
-# @brief Target Definitions File
-# Copyright CompanyNameMagicTag 2022-2022. All rights reserved.
-# ============================================================================
-
-target = {
- #target1: liteos + lvgl + nandflash + mipi + no psram + mini_audio 典型单封LVGL版本
- 'brandy-target1': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_template',
- 'std_libs': [],
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CONFIG_ZDIAG_NV_SUPPORT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH',
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT',
- 'SUPPORT_BLE', 'SUPPORT_BREDR', 'MEMORY_MINI', 'ENABLE_LVGL', 'SW_UART_DEBUG', "SAVE_EXC_INFO",
- "CONFIG_LOW_POWER_TEST", 'MIPI_ULPS_SUPPORT', 'ENABLE_ECC', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'CONFIG_NV_SUPPORT_ASYNCHRONOUS_STORE=0'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc','fs_yaffs2', 'x_vfs_private',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service',
- 'audio_at_service', 'media_at_service', 'bt_manager_at_service',
- "audio_proc", "audio_dump", "audio_probe", "gpu_proc"],
- 'ram_component_set': ['bgh', 'media_mini', 'gpu', 'graphic_lvgl_mini', 'dfx_set'],
- 'image_analysis': True,
- 'dsp_version': 'mini',
- 'packet': True,
- 'fs_image': False,
- },
- #target3: liteos + uikit + nandflash + mipi + psram + audio 典型合封UIKIT版本
- 'brandy-target3': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CONFIG_PSRAM_SUPPORT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH', 'CONFIG_ZDIAG_NV_SUPPORT',
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'SUPPORT_BLE', 'SUPPORT_BREDR', 'ENABLE_UIKIT', 'SUPPORT_GPU_JPEG', 'SUPPORT_GPU_GMMU', 'SUPPORT_GPU_OPENVG',
- 'SW_UART_DEBUG', 'SAVE_EXC_INFO', 'HASH_MEM_COPY','MIPI_ULPS_SUPPORT', 'CONFIG_LOW_POWER_TEST',
- 'ENABLE_ECC', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram', 'x_vfs_private',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service',
- 'audio_at_service', 'media_at_service', 'bt_manager_at_service',
- "audio_proc", "audio_dump", "audio_probe", "gpu_proc", 'bts_header'],
- 'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_uikit', 'graphic_test', 'bgh_audio', 'dfx_set', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
- 'fs_image': False
- },
- #target4: liteos + nandflash + psram + mini_audio + no gui 外设类版本
- 'brandy-target4': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_template',
- 'std_libs': ['c++', 'c++abi', 'unwind'],
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'I2C_SLAVE_REG_ADDR_4BYTE', 'SUPPORT_CXX',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH', 'HASH_MEM_COPY',
- 'CONFIG_ZDIAG_NV_SUPPORT', 'SUPPORT_BLE', 'SUPPORT_BREDR',
- 'SW_UART_DEBUG', 'SAVE_EXC_INFO', 'CONFIG_PSRAM_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT',
- 'CONFIG_LOW_POWER_TEST', 'CONFIG_ADC_SUPPORT_AUTO_SCAN',
- 'CONFIG_ADC_SUPPORT_LONG_SAMPLE', 'ENABLE_ECC', 'CONFIG_DIAG_GPU_PROC_SUPPORT', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'partition', 'partition_brandy', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram', 'x_vfs_private',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc','fs_yaffs2',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'app_at_service',
- 'audio_at_service', 'bt_manager_at_service', "gpu_proc", 'bts_header'],
- 'ram_component_set': ['bgh', 'gpu', 'media_target4', 'update_app', 'dfx_set', 'bgh_audio', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
- 'fs_image': False,
- },
- #target5: freertos + lvgl + nand + mipi + psram + audio + media 典型合封LVGL版本
- 'brandy-target5': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_freertos_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CONFIG_PSRAM_SUPPORT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH', 'CONFIG_ZDIAG_NV_SUPPORT',
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'SUPPORT_BLE', "SUPPORT_BREDR", 'ENABLE_LVGL', "SUPPORT_GPU_JPEG", "SUPPORT_GPU_GMMU", "SUPPORT_GPU_OPENVG",
- 'SW_UART_DEBUG', 'MEMORY_NO_CACHE', "SAVE_EXC_INFO", "HASH_MEM_COPY", 'MIPI_ULPS_SUPPORT',
- 'CONFIG_LOW_POWER_TEST', 'ENABLE_ECC', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- 'lcd', 'qspi_display', 'partition', 'partition_brandy', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram', 'x_vfs_private',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd','graphic_at_service', 'app_at_service',
- 'audio_at_service', 'media_at_service', 'bt_manager_at_service',
- "audio_proc", "audio_dump", "audio_probe", "gpu_proc", 'bts_header'],
- 'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_lvgl', 'bgh_audio', 'update_app', 'dfx_set', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
- 'fs_image': False
- },
- #native-js: liteos + uikit + nandflash + mipi + psram + audio 典型合封UIKIT版本
- 'brandy-native-js': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CONFIG_PSRAM_SUPPORT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH', 'CONFIG_ZDIAG_NV_SUPPORT',
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'SUPPORT_BLE', 'SUPPORT_BREDR', 'ENABLE_UIKIT', 'SUPPORT_GPU_JPEG', 'SUPPORT_GPU_GMMU', 'SUPPORT_GPU_OPENVG',
- 'SW_UART_DEBUG', 'SAVE_EXC_INFO', 'HASH_MEM_COPY', 'JS_ENABLE', 'CONFIG_LOW_POWER_TEST',
- 'FT_SINGLE_UART',
- 'TPTYPE_FT6X46',
- 'ENABLE_ECC', 'MIPI_ULPS_SUPPORT', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2', 'x_vfs_private',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service', 'ohosfwk_at_service',
- "audio_proc", "audio_dump", "audio_probe", "power_manager", "gpu_proc", 'bts_header', 'baidumapsdk'],
- 'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_uikit', 'bgh_audio', 'dfx_set', 'ohos_set', 'wearable_set', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
- 'fs_image': True
- },
- #native-xts: liteos + uikit + nandflash + mipi + psram + audio 典型合封UIKIT版本
- 'brandy-xts': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CONFIG_PSRAM_SUPPORT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH', 'CONFIG_ZDIAG_NV_SUPPORT',
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT',
- 'SUPPORT_BLE', 'SUPPORT_BREDR', 'ENABLE_UIKIT', 'SUPPORT_GPU_JPEG', 'SUPPORT_GPU_GMMU', 'SUPPORT_GPU_OPENVG', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'SW_UART_DEBUG', 'SAVE_EXC_INFO', 'HASH_MEM_COPY', 'JS_ENABLE', 'CONFIG_LOW_POWER_TEST',
- 'ENABLE_ECC', 'XTS_SUPPORT', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2', 'x_vfs_private',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service', 'ohosfwk_at_service',
- "audio_proc", "audio_dump", "audio_probe", "power_manager", "gpu_proc", 'bts_header', 'baidumapsdk'],
- 'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_uikit', 'bgh_audio', 'dfx_set', 'ohos_set', 'wearable_set', 'xts_set', 'xts_test_set', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
- 'fs_image': False
- },
-
- 'brandy-target1-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'MEMORY_MINI', 'SW_UART_DEBUG',
- 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'x_vfs_private',
- 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header'],
- 'ram_component_set': ['pinctrl', 'dfx_set', 'gpu']
- },
- 'brandy-target3-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'SW_UART_DEBUG', "HASH_MEM_COPY",
- 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'x_vfs_private',
- 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header'],
- 'ram_component_set': ['pinctrl', 'dfx_set', 'gpu']
- },
- 'brandy-target4-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'SW_UART_DEBUG', 'HASH_MEM_COPY',
- 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch', 'x_vfs_private',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'pm_service', 'pm_brandy',
- 'ulp_aon', 'hal_l2ram', 'cmn_header'],
- 'ram_component_set': ['pinctrl', 'dfx_set', 'gpu']
- },
- 'brandy-target5-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_freertos_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", "__FREERTOS__", 'ENABLE_UIKIT', 'SW_UART_DEBUG',
- "HASH_MEM_COPY", 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'pm_service', 'pm_brandy', 'x_vfs_private',
- 'ulp_aon', 'hal_l2ram', 'cmn_header'],
- 'ram_component_set': ['pinctrl', 'dfx_set', 'gpu']
- },
- 'brandy-native-js-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'SW_UART_DEBUG', "HASH_MEM_COPY",
- 'FT_SINGLE_UART','TPTYPE_FT6X46',
- 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'x_vfs_private',
- 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header',
- 'at_cmd'
- ],
- 'ram_component_set': ['pinctrl', 'dfx_set' ,'gpu']
- },
- 'brandy-xts-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'SW_UART_DEBUG', "HASH_MEM_COPY",
- 'ENABLE_ECC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'x_vfs_private',
- 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header'],
- 'ram_component_set': ['pinctrl', 'dfx_set']
- },
- 'testsuite-brandy-sdk': {
- 'base_target_name': 'target_brandy_testsuite_application',
- 'board': 'evb',
- 'defines': ['SW_UART_DEBUG', 'USE_CMSIS_OS', 'CFG_DRIVERS_NANDFLASH',
- 'PRE_ASIC', 'BRANDY_PRODUCT_EVB4',
- '_ALL_SOURCE', '__LITEOS__', 'SUPPORT_CXX', 'ENABLE_UIKIT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'MULTIPLEXING_UART',
- 'CONFIG_SPI_SUPPORT_POLL_AND_DMA_AUTO_SWITCH', 'CONFIG_SPI_AUTO_SWITCH_DMA_THRESHOLD=0x8',
- 'CONFIG_I2C_SUPPORT_POLL_AND_DMA_AUTO_SWITCH', 'CONFIG_I2C_POLL_AND_DMA_AUTO_SWITCH_THRESHOLD=0x8'],
- 'ram_component': ["osal", "arch_port", "liteos_port", 'psram', 'pm_service', 'pm_brandy',
- 'hal_mips', 'lcd', 'qspi_display', 'hal_dma_v100', "dfx_port_brandy",
- 'dfx_log_brandy', 'hal_mipi', 'mipi_tx', 'non_os', 'touch', 'ulp_aon',
- 'hal_l2ram', "test_security", "test_spi", 'dfx_file_operation',
- "test_timer", "test_int", "test_pm",
- "test_lcd", "test_qspi_display", "test_systick", "test_tcxo", "test_watchdog",
- "test_vfs_emmc", "test_flash", "test_pwm", "test_i2c", "test_cmsis",
- "test_xip", "test_mipi", "test_touch", 'algorithm', 'test_sdio', 'x_vfs_private',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2' , 'nand_flash' , 'mtd_com',
- 'cmn_header', 'test_calendar', 'test_gpio', 'test_pinctrl', 'test_dma', 'test_uart',
- 'test_reboot', 'test_rtc_unified',
- 'test_nandflash', 'test_adc', 'test_pmp', 'efuse', 'hal_efuse_v100', 'efuse_porting'],
- 'ram_component_set': ['dfx_set', '-:gpu_test', 'rtc_unified'],
- 'os': 'liteos',
- },
- 'brandy-ssb': {
- 'base_target_name': 'target_ssb_template_brandy',
- 'board': 'evb',
- 'defines': ["-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", "PRE_ASIC", "BRANDY_PRODUCT_EVB4",
- "SSB_USE_PLL", "VERSION_STANDARD", "BUILD_APPLICATION_SSB", "LIBBOOTLOADER", "LIBCODELOADER",
- "LIBCPU_UTILS", "LIBAPP_VERSION", "LIBPANIC", "LIBCONNECTIVITY", "LIBERROR_CODE", "LIBSEC_RANDOM",
- "LIBCODELOADER_SSB", "LIBJLINK_LOAD", "LIBLIB_UTILS", "LIBBUILD_VERSION",
- 'ENABLE_ECC',
- "CFG_DRIVERS_NANDFLASH",
- "NO_TIMEOUT", "CONFIG_UART_BAUD_RATE_DIV_8", 'SW_UART_DEBUG', 'LARGE_BUFFER',
- 'FT_SINGLE_UART'
- ],
- 'ram_component': ['arch_port', 'hal_l2ram', 'sec_boot', 'libboundscheck',
- 'dfx_exception', 'error_code', 'psram', 'osal', 'cmn_header',
- 'boot_ulp',
- 'boot_nandflash'
- ],
- 'ram_component_set': ['pinctrl'],
- 'target': 'ssb',
- }
-}
-
-target_group = {
- # ci protect target list
- 'pack_brandy_target1': ['brandy-ssb', 'brandy-target1-r', 'brandy-target1'],
- 'pack_brandy_target3': ['brandy-ssb', 'brandy-target3-r', 'brandy-target3'],
- 'pack_brandy_target4': ['brandy-ssb', 'brandy-target4-r', 'brandy-target4'],
- 'pack_brandy_target5': ['brandy-ssb', 'brandy-target5-r', 'brandy-target5'],
- 'pack_brandy_native_js': ['brandy-ssb', 'brandy-native-js-r', 'brandy-native-js'],
- 'pack_brandy_xts': ['brandy-ssb', 'brandy-xts-r', 'brandy-xts'],
-
- 'brandy_all': ['brandy-ssb',
- 'brandy-target1', 'brandy-target3', 'brandy-target4', 'brandy-target5', 'brandy-native-js', 'brandy-xts',
- 'brandy-target1-r', 'brandy-target3-r', 'brandy-target4-r', 'brandy-target5-r', 'brandy-native-js-r', 'brandy-xts-r',
- 'testsuite-brandy-sdk']
-}
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2018-2021. All rights reserved.
- * Description: brandy evb board config
- * Author: @CompanyNameTag
- * Create: 2020-02-19
- */
-#ifndef BOARD_EVB_CONFIG_H
-#define BOARD_EVB_CONFIG_H
-
-#include "pinctrl_porting.h"
-#include "gpio_porting.h"
-#include "platform_types.h"
-
-#ifdef SUPPORT_CAT1_SERVICE
-#include "cat1_ctl.h"
-#endif
-
-#ifdef ENABLE_CYWEE
-extern void cywee_int1_callback(pin_t pin, uintptr_t param);
-#endif
-/**
- * @addtogroup connectivity_config_boards
- * @{
- */
-/**
- * @brief Global evb pio functions.
- */
-const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO0
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO1
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO2
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO3
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO4 clk
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO5 cs
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO6
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO7
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO8
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO9
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO10
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO11
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO12
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO13
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO14
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO15
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO16
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO17
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO18
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO19
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO20
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO21
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO22 clk
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO23 ce
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO24
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO25
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO0 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO1 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO2 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO3 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO4 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO5 NC
-#if (defined CFG_DRIVERS_NANDFLASH)
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_HGPIO6
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_HGPIO7
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_HGPIO8
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_HGPIO9
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO10
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO11 cs0
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO12 cs1
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO13
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO14
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO15 clk
-#else
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO6
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO7
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO8
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO9
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO10
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO11
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO12
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO13
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO14
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO15 emmc clk
-#endif
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO0 NC
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO1 NC
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO2 NC
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO3 NC
-
-// #if (defined BRANDY_PRODUCT_EVB4)
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO4 NC
-// #else
- // { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO4 NC
-// #endif
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO5 NC
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO6 SPI1 DI
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO7 SPI1 DO
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO8 SPI1 CLK
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO9 SPI1 CS0
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO10 SPI1 CS1 NC
-
- { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO11 i2c0 SCL NC
- { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO12 I2C0 SDA
- { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 I2C1 SCL touch i2c
- { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14 I2C1 SDA
- { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO15 I2C2 SCL Sensor 6Öá Ö¸ÄÏÕë ÐÄÂÊ
- { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO16 I2C2 SDA Sensor
- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 i2c3 SCL smart pa\ Ô¤ÁôÂí´ï¿ØÖÆ \°²È«Ð¾Æ¬
- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO18 I2C3 SDA
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO19 uart1 tx
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO20 uart1 rx
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO21 uart1 rts
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO22 uart1 cts
- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO23 NC
- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO24 NC
- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO25 NC
- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO26 NC
-#if (defined QSPI_DISPLAY)
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO27
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO28
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO29
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO30
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO31
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO32
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO27
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO28
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO29
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO30
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO31
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO32
-#endif
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO33 huart tx
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO34 huart rx
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO35
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO36
-#if 0
- { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx
- { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO38 uart rx
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO38 uart rx NC
-#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L0 NC
-
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L1 i2s1
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L2
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L3
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L4
-
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L5
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L6 i2s0
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L7
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L8
-
-#if (defined FT_BT_UART)
- { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L9 uart2 txd
- { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 uart2 rxd
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L9 dsp uart TP35
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 dsp uart TP36
-#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L11 G_INT1
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L12 i2c data HX3507_SDIO
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L13 i2c CLK HX3507_SCLK
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L14 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L15 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L16 NC
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L17 HX3507_INT not use
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //ÔÝʱÎÞÓ㬲ÉÓÃVDDIO ĬÈÏ¿ªÆô EXt V3.0 EXt V1.8
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_AGPIO_L19 G_INT2 //ÔÝʱ²»ÓÃ
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20 0.2C_CHRG
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçÔ´
-#ifdef QSPI_DISPLAY
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 QSPI TE
-#else
- { HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 MIPI TE
-#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23 CAT_1_PWR_ON ¿ØÖÆCAT_1¿ª»ú½Å£¬»òÕß¿ØÖÆ CAT1µçÔ´ À¸ßÓÐЧ
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L24 LCM_EN
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L25 //////////// audio pa reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L26 ÐÄÂʸ´Î» PPG reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L27 LCM reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L28 CAT_1¸´Î» CAT1_RESET_N ÀµÍÓÐЧ
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L29 charge done info ¼ì²âÊÇ·ñ³äÂúµç
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L30 KP_MKIN1 »½ÐÑ CAT1 £¬Êä³ö
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L31 KP_MKOUIT1 »½ÐÑ À¶ÑÀ ,ÊäÈë
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L32 NC
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1 SE_REST °²È«Ð¾Æ¬¸´Î»»½ÐѽÅ
- #if VIB_USE_PWM
- // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
- // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
- #else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
- #endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R3 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_R4 tp reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R5 touch int
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 PRG_INT ÐÄÂÊÖжÏ
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R7 GYRO_INT2
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R8 GYRO_INT1
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9 BAT_CHARGE_OFF ¹Øµô³äµç ζȸߵÄʱºò
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R10 Key2 ///////////////////HAL_PIO_IE_ENBALE input enable
-
-#if CORE == APPS
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO0 mode not config
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO1 mode not config
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO2 mode not config
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO3 mode not config
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO4
- { HAL_PIO_FUNC_SWD, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // ULP_GPIO5
- { HAL_PIO_FUNC_SWD, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // ULP_GPIO6
-#endif
-};
-/**
- * @}
- */
-
-
-/**
- * @addtogroup connectivity_config_boards
- * @{
- */
-/**
- * @brief Global evb gpio functions.
- *
- *
- * typedef struct {
- pin_t gpio;
- hal_gpio_direction_t direction;
- hal_gpio_level_t level;
- uint32_t triger;
- hal_gpio_callback_t callback;
-} hal_gpio_config_t;
- */
-
-
-//ĬÈÏ¿ªÆôCat1 È»ºóÔÙ¸ù¾ÝÅäÖþö¶¨ÊÇ·ñ¹Ø±Õ.
-//ĬÈϲ»¿ªÆô ppg checkidʧ°Ü£¬ÔÒòδ֪£¬ÔÝʱ¿ª»ú¿ªÆôcat1
-#define DEFAULT_POWERON_CAT1 0
-
-//ÐèÒªÅäÖÃĬÈÏÊä³öµÄ£¬ÒÔ¼°ÐèÒªÅäÖÃĬÈÏÊäÈëÖжϺ¯ÊýµÄ¡£
-const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
-
-#if DEFAULT_POWERON_CAT1
- // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
- { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
- // S_AGPIO_L28 Cat1 reset ---- low reset
- { S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#else
- // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
- { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_L28 Cat1 reset ---- low reset
- { S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-#endif
- // S_AGPIO_L17 HX3507_INT
- // { S_AGPIO_L17, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_L12 SDIO_BT
- { S_AGPIO_L12, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_L13 SCLK_BT
- { S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-
- // S_AGPIO_L26 ÐÄÂʸ´Î» PPG reset
- { S_AGPIO_L26, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
- { S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-
- //S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçÔ´ ,ĬÈϹرÕ
- { S_AGPIO_L21, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#if 1 //ĬÈÏÕý³£³äµç
-// #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9 //low enable
-// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c µÍµçÁ÷³äµç
- { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#else
- { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#endif
-
-//ĬÈϹرÕÂí´ï
- { S_AGPIO_R2, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-//ĬÈÏ¿ªÆô EXT LDO V3.0 V1.8
- { S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-
-#ifdef ENABLE_CYWEE
- /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19*/
- //{ S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, GPIO_INTERRUPT_RISING_EDGE, cywee_int1_callback },
- { S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int1_callback },
- // { S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-#endif
- /**S_AGPIO_R1 GPO alipayĬÈÏresetpin*/
- { S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#ifdef SUPPORT_CAT1_SERVICE
- /**cat1 ring input key*/
- { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cat1_ring_isr_callback},
-#endif
-};
-/**
- * @}
- */
-#endif
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2020-2023. All rights reserved.
- * Description: product EVB4 standard config
- * Author: @CompanyNameTag
- * Create: 2023-03-07
- */
-#ifndef PRODUCT_EVB4_STANDARD_CONFIG_H
-#define PRODUCT_EVB4_STANDARD_CONFIG_H
-
-/**
- * @defgroup connectivity_config_product PRODUCT
- * @ingroup connectivity_config
- * @{
- */
-/* Platform board config, need check if it support or not carefully. */
-#define BTH_WITH_SMART_WEAR YES
-#define APP_WRITE_OTP_ENABLE NO
-#define APP_HEAP_SIZE 0x18000 // the minimum APP heap size (96kB)
-#define USE_FLASH_SUSPEND_AND_RESUME NO
-#define WAIT_APPS_DUMP_FOREVER NO
-#define TWS_MPU_XIP_PROTECT NO
-#define SSB_IMAGE_PAGES 27
-#ifdef CONFIG_LOW_POWER_TEST
-#define ENABLE_LOW_POWER YES
-#else
-#define ENABLE_LOW_POWER NO
-#endif
-#define DTB_IMAGE_PAGES 0
-#define RECOVERY_IMAGE_PAGES 64
-#define RESERVE_IMAGE_PAGES 0
-#define BT_IMAGE_PAGES 112
-#define HIFI0_IMAGE_PAGES 112
-#define HIFI0_CODEC_PAGES 320
-#define APP_IMAGE_PAGES 1353
-#define NV_IMAGE_PAGES 4
-#define FOTA_IMAGE_PAGES 3
-#define FOTA_IMAGE_START 0x770000
-#define SSB_FOTA_OFFSET 0x0
-#define XO_CTRIM_VALUR_DEFAULT 0x56
-#define DSP1_IPC_ENABLE NO
-#define APP_BTN_TASK_MONITOR_ENABLE NO
-#define SSB_FOTA_MODE_TWS YES
-#define DSP_EXTEND_OCRAM_SIZE 1310720 // Unit byte, = 1280 KB
-#define OSC_EN_CALLBACK_BY_PLT YES
-#define BT_MIPS_DEBUG NO
-#define NON_OS_CRITICAL_RECORD NO
-#define ENABLE_MASSDATA_RECORD NO
-#define USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG NO
-#define COMPRESS_LOG_TRIGGER_THRESHOLD 0
-#define COMPRESS_LOG_COUNT_THRESHOLD 0xFFFFFFFF
-#define EXCEPTION_TEST_ENABLE NO
-#define LOG_LEVEL_APP_DEFAULT_CONFIG 3 // Info level
-#define LOG_LEVEL_BT_DEFAULT_CONFIG 3 // Info level
-#define LOG_LEVEL_DSP_DEFAULT_CONFIG 3 // Info level
-#define BCPU_HEAP_MININUM_SIZE 0xA000 // 40KB
-#define SYS_DEBUG_MODE_ENABLE YES
-#define PROMPT_TONE_REGION_LENGTH 0x2800
-#define AUDIO_DATA_STREAM_REGION_LENGTH 0x2000
-#define BT_MASSDATA_LENGTH 0x400
-#define APP_MASSDATA_LENGTH 0x800
-#define APP_LOGGING_LENGTH 0x1C00
-#define DSP_LOGGING_LENGTH 0x2000
-#define PSRAM_DENSITY_MB 32
-#define RC_CLOCK_ON NO
-#define SMART_WATCH_BT_COEX_PIN_SWITCH NO // pinmux switch in the Coexistence of BT and WiFi of smart watch
-#define CAP_SENSOR_BUFF_LEN 128
-#define BT_L2RAM_AREA_SIZE 3 // 384k, Reference the enum Value of hal_b_memory_share_config_t
-#define DSP_L2RAM_AREA_TOTAL 10
-#define GPU_L2RAM_AREA_TOTAL 11
-#ifndef CONFIG_PSRAM_SUPPORT
-#define DSP_L2RAM_AREA_SIZE 6 // 无PSRAM & 小型化场景分配给DSP 6块*128K=768KB 剩余512K系统使用
-#else
-#if defined(CONFIG_SEA_PHS_SUPPORT)
-#define DSP_L2RAM_AREA_SIZE 10 // 语音唤醒场景分配给DSP 10块*128K=1280KB DSP L2M不给系统使用
-#else
-#define DSP_L2RAM_AREA_SIZE 8 // 正常场景分配给DSP 8块*128K=1024KB 剩余256K系统使用
-#endif /* CONFIG_SEA_PHS_SUPPORT */
-#endif /* CONFIG_PSRAM_SUPPORT */
-#define PUYA_FLASH_SUPPORT YES
-
-/********************display config********************/
-#define DOUBLE_BUFFER 1
-#if defined(QSPI_DISPLAY)
-#define RESOLUTION_WIDTH 194
-#define RESOLUTION_HEIGHT 368
-#elif defined(MEMORY_MINI)
-#define RESOLUTION_WIDTH 240
-#define RESOLUTION_HEIGHT 296
-#elif defined(SUPPORT_SOFT_SEND_FRM)
-#define RESOLUTION_WIDTH 368
-#define RESOLUTION_HEIGHT 448
-#else
-#define RESOLUTION_WIDTH 466//454
-#define RESOLUTION_HEIGHT 466//454
-#endif
-
-/********************Other module board config********************/
-#define BTC_SWITCH_COEX YES
-#define BTC_SMART_WEAR_WLCOEX YES
-#define BTC_WITH_SMART_WEAR YES
-#define BTC_TWS_MONITOR YES
-#define BTC_ICO_SUPPORT YES
-#define BTC_DUAL_ANT_SWITCH_SUPPORT NO
-#define BTC_GET_EMC_FROM_PLATFORM YES // 后续耳机产品通过HCI传递NV数据实现后,该选项需要置为NO
-#define BTSNOOP_ENABLE NO
-#define TWS_USER_CHR_RECORD NO
-#define BTH_WEAR_ENABLE_AUDIO_SINK NO
-#define BTH_WEAR_ENABLE_AUDIO_GATEWAY NO
-#define BTH_WEAR_BREDR_DOUBLE_CONNECT NO
-#define BTC_DFX_LOG_HELP_SUPPORT NO
-#define FACTORY_CALI NO
-#define BTH_WEAR_ENABLE_CONNECT_MANAGER NO
-#define BTH_WEAR_ENABLE_BLE_FEATURES YES
-#define BTH_WEAR_ENABLE_HFP_FEATURES NO
-#define WEAR_USER_CONFIG NO
-#define BTH_HIGH_POWER YES
-#define MULTI_CONNECT YES
-#define BTH_CONFIG_HDAP YES
-#define DEVICE_MANAGE_FEATURE YES
-#define BTH_CALL_LC3_32K YES
-#define BTH_ENABLE_LC3_CODEC YES
-#define ENABLE_CHANGE_DEVICE_NAME YES
-#define BTH_DIP_PRODUCT_ID 0x4106
-#define BTH_ENABLE_L2HC_CODEC YES
-#define ENABLE_BT_XO_16M NO
-#define BTH_WSTP_CMD_SUPPORT YES
-#define PRODUCT_SUPPORT_MODE_SWITCH YES
-#define BT_MANAGER_DEPLOYED 2
-#define BT_CODEC_TID 2
-#define BTH_WEAR_ENABLE_AVRCP_TARGET NO
-#define BTH_WEAR_ENABLE_AVRCP_CONTROLLER NO
-#define BTH_WEAR_ENABLE_AUDIO_SOURCE NO
-#define BTH_WEAR_ALLOW_INQUIRY_SCAN YES
-#define BTH_WEAR_ENABLE_HALL_STATE NO
-
-// 音频内置输入设备
-#define BUILTIN_AI_PORT 0x50 // 参考 soc_uapi_ai.h 中 UAPI_AI_PORT_LPADC0 枚举
-#define BUILTIN_AI_PORT_ATTR_ADC_RX_TYPE 0 // 参考 soc_uapi_ai.h 中 UAPI_AI_RX_DEFAULT 枚举
-#define BUILTIN_AI_PCM_ATTR_AUDIO_CH 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_1 枚举
-#define BUILTIN_AI_PCM_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define BUILTIN_AI_PCM_ATTR_SAMPLE_RATE 16000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
-#define BUILTIN_AI_PCM_ATTR_FRAME_PER_SEC 100 // 每秒帧数
-
-// 音频内置输出设备
-#define BUILTIN_SND_OUT_PORT 0x10 // 参考 soc_uapi_sound.h 中 UAPI_SND_OUT_PORT_I2S0 枚举
-#define BUILTIN_SND_OUT_PORT_NUM 1 // 端口个数
-#define BUILTIN_SND_OUT_AUDIO_CH 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define BUILTIN_SND_OUT_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define BUILTIN_SND_OUT_SAMPLE_RATE 48000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_48K 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_I2S_BCLK 8 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_8_DIV 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_AUDIO_CH 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_I2S_STD_MODE 0 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_STD_MODE 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_MASTER 1 // 1:主设备,0:从设备
-#define BUILTIN_SND_OUT_I2S_ATTR_I2S_MCLK 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_256_FS 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_I2S_PCM_DELAY 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_1_DELAY 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_SAMPLE_RISE_EDGE 1 // 参考 soc_uapi_audio.h 中 pcm_sample_rise_edge 成员
-
-// 音频外挂输入设备
-#define EXTERNAL_AI_PORT 1 // 参考 soc_uapi_ai.h 中 UAPI_AI_PORT_I2S1 枚举
-#define EXTERNAL_AI_I2S_ATTR_MASTER 0 // 1:主设备,0:从设备
-#define EXTERNAL_AI_I2S_ATTR_I2S_MODE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_MODE 枚举
-#define EXTERNAL_AI_I2S_ATTR_MCLK 6 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_1536_FS 枚举
-#define EXTERNAL_AI_I2S_ATTR_BCLK 48 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_48_DIV 枚举
-#define EXTERNAL_AI_I2S_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define EXTERNAL_AI_I2S_ATTR_AUDIO_CH 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define EXTERNAL_AI_I2S_ATTR_SAMPLE_RISE_EDGE 1 // 参考 soc_uapi_audio.h 中 pcm_sample_rise_edge 成员
-#define EXTERNAL_AI_I2S_ATTR_PCM_DELAY_CYCLE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_1_DELAY 枚举
-#define EXTERNAL_AI_PCM_ATTR_CHANNELS 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define EXTERNAL_AI_PCM_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define EXTERNAL_AI_PCM_ATTR_SAMPLE_RATE 8000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
-#define EXTERNAL_AI_PCM_ATTR_FRAME_PER_SEC 50 // 每秒帧数 , EG810 pcm 20ms 一帧
-
-// 音频外挂输出设备
-#define EXTERNAL_SND_OUT_PORT 0x11 // 参考 soc_uapi_sound.h 中 UAPI_SND_OUT_PORT_I2S1 枚举
-#define EXTERNAL_SND_OUT_AUDIO_CHANNEL 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define EXTERNAL_SND_OUT_AUDIO_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define EXTERNAL_SND_OUT_AUDIO_SAMPLE_RATE 8000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
-#define EXTERNAL_SND_OUT_PORT_NUM 1 // 端口个数
-#define EXTERNAL_SND_OUT_I2S_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define EXTERNAL_SND_OUT_I2S_ATTR_CHANNEL 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define EXTERNAL_SND_OUT_I2S_ATTR_I2S_MODE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_MODE 枚举
-#define EXTERNAL_SND_OUT_I2S_ATTR_MCLK 6 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_1536_FS 枚举 12.288M /16k =
-#define EXTERNAL_SND_OUT_I2S_ATTR_MASTER 0 // 1:主设备,0:从设备
-#define EXTERNAL_SND_OUT_I2S_ATTR_SAMPLE_RISE_EDGE 1 // 参考 soc_uapi_audio.h 中 pcm_sample_rise_edge 成员
-#define EXTERNAL_SND_OUT_I2S_ATTR_BCLK 48 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_48_DIV 枚举 12.288M / 256k = 48
-
-// Sleep option
-#define CONFIG_PM_TICKLESS_EN YES
-#define CONFIG_PM_POWER_GATING_EN YES
-#define CONFIG_PM_SLEEP_RECORD_EN YES
-#define CONFIG_PM_VETO_TRACK_EN NO
-#define CONFIG_PM_SLEEP_INT_EN NO
-
-// Double-click the key
-#define CONFIG_SUPPORT_BUTTON_DOUBLE_CLICK NO
-
-// LCD VCI_EN
-#define VCI_LCD_GPIO S_AGPIO_L24
-#define DISPLAY_TE_GPIO S_AGPIO_L22
-#define RESET_LCD_GPIO S_AGPIO_L27
-
-// TP CONFIG
-#define ZTW523_I2C_BUS I2C_BUS_1
-#define ZTW523_INT_GPIO S_AGPIO_R5
-#define ZTW523_RESET_GPIO S_AGPIO_R4
-#define TMA525B_I2C_BUS I2C_BUS_1
-#define TMA525B_INT_GPIO S_AGPIO_R5
-#define TMA525B_RESET_GPIO S_AGPIO_R4
-#define FT6X46_I2C_BUS I2C_BUS_1
-#define FT6X46_INT_GPIO S_AGPIO_R5
-#define FT6X46_RESET_GPIO S_AGPIO_R4
-
-/**
- * @}
- */
-#endif
+++ /dev/null
-/**
- * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
- *
- * Description: Provides uart port template \n
- * Author: @CompanyNameTag \n
- * History: \n
- * 2022-06-06, Create file. \n
- */
-#include <stdio.h>
-#include "dma_porting.h"
-#include "debug_print.h"
-#include "hal_uart_v120.h"
-#include "uart_porting.h"
-#ifdef SUPPORT_HAL_PINCTRL
-#include "pinctrl_porting.h"
-#include "pinctrl.h"
-#endif
-#include "uart.h"
-#include "oal_interface.h"
-#include "platform_core.h"
-#include "securec.h"
-#include "soc_osal.h"
-#ifdef SUPPORT_CLOCKS_CORE
-#include "clocks_core_common.h"
-#endif
-#if defined(SUPPORT_TEST_COMMON)
-#include "test_suite_uart.h"
-#endif
-#if defined(SUPPORT_AT_CMD)
-#include "at_cmd_api.h"
-#endif
-#ifndef BUILD_APPLICATION_SSB
-#include "log_uart.h"
-#include "cmsis_os.h"
-#endif
-#if defined(SW_RTT_DEBUG)
-#include "SEGGER_RTT.h"
-#endif
-
-#ifdef BUILD_APPLICATION_SSB
-#define UART_RX_BUFFER_SIZE 1
-#else
-#define UART_RX_BUFFER_SIZE 56
-#endif
-
-#define AT_BLE_HEADER_LENGTH 49
-#define AT_CMD_BUFSIZE_MAX 256
-#define UARTILPR 0x20
-#define UARTIBRD 0x24
-#define UARTFBRD 0x28
-#define UARTLCRH 0x2c
-#define UARTCR 0x30
-#define UARTIFLS 0x34
-#define UARTIMSC 0x38
-#define UARTDMACR 0x48
-#define UARTRESET (M_CTL_RB_BASE + 0x0168)
-#define UARTBUS0 0x1
-#define UARTBUS1 0x0
-
-/**
- * CUSTOM_UART_RATE = 500000 可以看蓝牙日志
- * 2000000 可以加快下载文件速度
-*/
-#define CUSTOM_UART_RATE 2000000
-typedef struct {
- pin_mode_t tx_pin_mode;
- pin_mode_t rx_pin_mode;
- pin_mode_t cts_pin_mode;
- pin_mode_t rts_pin_mode;
-} uart_pin_mode_t;
-
-typedef struct uart_config {
- uart_pin_config_t pin;
- uart_pin_mode_t pin_mode;
- core_irq_t irq_num;
- osal_irq_handler irq_func;
- uart_rx_callback_t rx_callback;
- uart_attr_t line_config;
- uart_buffer_config_t buffer_config;
-#ifndef BUILD_APPLICATION_SSB
- osal_mutex uart_mutex;
- bool support_mutex;
-#endif
-} uart_config_t;
-
-const uintptr_t g_uart_base_addrs[UART_BUS_MAX_NUM] = {
- (uintptr_t)UART0_BASE,
- (uintptr_t)UART1_BASE,
-};
-
-uintptr_t uart_porting_base_addr_get(uart_bus_t bus)
-{
- return g_uart_base_addrs[bus];
-}
-
-static bool g_sw_debug_uart_enabled = false;
-uint8_t g_uart0_rx_buffer[UART_RX_BUFFER_SIZE];
-uint8_t g_uart1_rx_buffer[UART_RX_BUFFER_SIZE];
-#if defined(SUPPORT_AT_CMD)
-static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining);
-#endif
-
-void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining);
-
-static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
-#ifdef BUILD_APPLICATION_SSB
- /* UART_BUS_0 for debug print */
- {
- {
- .tx_pin = S_MGPIO19,
- .rx_pin = S_MGPIO20,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- UART_0_IRQN,
- (osal_irq_handler)irq_uart0_handler,
- NULL,
- {
- .baud_rate = 115200,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart0_rx_buffer,
- }
- },
- /* UART_BUS_1 for codeloader */
- {
- {
- .tx_pin = S_MGPIO33,
- .rx_pin = S_MGPIO34,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- },
- UART_1_IRQN,
- (osal_irq_handler)irq_uart1_handler,
- NULL,
- {
- .baud_rate = 115200,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart1_rx_buffer,
- }
- }
-#else
- /** UART_BUS_0, which is used to at cmd and debug print in wstp version,
- * and which is used to testustie and debug print in testsuite version
- */
- {
- {
- .tx_pin = S_MGPIO19,
- .rx_pin = S_MGPIO20,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- UART_0_IRQN,
- (osal_irq_handler)irq_uart0_handler,
-#if defined(SUPPORT_TEST_COMMON)
- test_suite_uart_rx_callback,
-#elif defined(SUPPORT_AT_CMD)
- at_cmd_uart_rx_callback,
-#else
- NULL,
-#endif
- {
- #ifdef ENABLE_SLIP
- .baud_rate = 921600,
- #else
- .baud_rate = CUSTOM_UART_RATE,
- #endif
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart0_rx_buffer,
- },
- NULL,
-#if defined(SUPPORT_TEST_COMMON)
- false,
-#else
- true,
-#endif
- },
- /* UART_BUS_1 is used to hso uart */
- {
- {
- .tx_pin = S_MGPIO33,
- .rx_pin = S_MGPIO34,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- UART_1_IRQN,
- (osal_irq_handler)irq_uart1_handler,
-#ifndef FT_SINGLE_UART
-#if SYS_DEBUG_MODE_ENABLE == YES
- log_uart_rx_callback,
-#endif
-#else
- log_factory_at_callback,
-#endif
- {
- .baud_rate = CUSTOM_UART_RATE,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart1_rx_buffer,
- },
- NULL,
- false
- }
-#endif
-};
-static uart_recovery_regs_t g_uart_recovery_reg[UART_BUS_MAX_NUMBER] = { 0 };
-
-#ifdef FT_SINGLE_UART
-void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining)
-{
- log_uart_rx_callback(buffer, length, remaining);
- if (zdiag_is_enable() == false) {
- at_cmd_msg_receive_handler((uint8_t *)buffer, length);
- hal_uart_clear_pending(UART_BUS_1);
- }
-}
-#endif
-
-void uart_port_register_hal_funcs(uart_bus_t bus)
-{
- hal_uart_register_funcs(bus, hal_uart_v120_funcs_get());
-}
-
-void uart_port_unregister_hal_funcs(uart_bus_t bus)
-{
- hal_uart_unregister_funcs(bus);
-}
-
-uint32_t uart_port_get_clock_value(uart_bus_t bus)
-{
- return uart_get_clock_value(bus);
-}
-
-void uart_port_config_pinmux(uart_bus_t bus)
-{
- UNUSED(bus);
- uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.tx_pin, g_uart_config[UART_BUS_1].pin_mode.tx_pin_mode);
- uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.rx_pin, g_uart_config[UART_BUS_1].pin_mode.rx_pin_mode);
- uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.tx_pin, g_uart_config[UART_BUS_0].pin_mode.tx_pin_mode);
- uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.rx_pin, g_uart_config[UART_BUS_0].pin_mode.rx_pin_mode);
-}
-
-void uart_port_register_irq(uart_bus_t bus)
-{
- osal_irq_request(g_uart_config[bus].irq_num, g_uart_config[bus].irq_func, NULL, NULL, NULL);
- osal_irq_set_priority(g_uart_config[bus].irq_num, irq_prio(g_uart_config[bus].irq_num));
- osal_irq_enable(g_uart_config[bus].irq_num);
-}
-
-void uart_port_unregister_irq(uart_bus_t bus)
-{
- osal_irq_disable(g_uart_config[bus].irq_num);
-}
-
-void irq_uart0_handler(void)
-{
- hal_uart_irq_handler(UART_BUS_0);
-}
-
-void irq_uart1_handler(void)
-{
- hal_uart_irq_handler(UART_BUS_1);
-}
-
-#ifdef SUPPORT_AT_CMD
-static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining)
-{
- unused(remaining);
- #ifndef FT_SINGLE_UART
- at_cmd_msg_receive_handler((uint8_t *)buf, buf_len);
- #endif
-
- #ifdef ENABLE_SLIP
- slip_receive_handler((uint8_t *)buf, buf_len);
- #endif
- hal_uart_clear_pending(SW_DEBUG_UART_BUS);
-}
-#endif
-
-void uart_config_init(void)
-{
- for (uint8_t i = 0; i < UART_BUS_MAX_NUM; i++) {
- if ((g_uart_config[i].pin.tx_pin != PIN_NONE) || (g_uart_config[i].pin.rx_pin != PIN_NONE)) {
- uapi_uart_init(i, &(g_uart_config[i].pin), &(g_uart_config[i].line_config), NULL,
- &(g_uart_config[i].buffer_config));
- }
- if (g_uart_config[i].rx_callback != NULL) {
- uapi_uart_register_rx_callback(i, UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE,
- (uint32_t)(g_uart_config[i].buffer_config.rx_buffer_size),
- g_uart_config[i].rx_callback);
- }
-
-#ifndef BUILD_APPLICATION_SSB
- if (g_uart_config[i].support_mutex == true) {
- osal_mutex_init(&(g_uart_config[i].uart_mutex));
- }
-#endif
- }
-}
-
-#if (defined SW_UART_DEBUG)||(defined FT_SINGLE_UART)
-void sw_debug_uart_deinit(void)
-{
- uapi_uart_deinit(SW_DEBUG_UART_BUS);
-}
-
-void sw_debug_uart_init(uint32_t baud_rate)
-{
- g_uart_config[SW_DEBUG_UART_BUS].line_config.baud_rate = baud_rate;
- uapi_uart_init(SW_DEBUG_UART_BUS, &(g_uart_config[SW_DEBUG_UART_BUS].pin),
- &(g_uart_config[SW_DEBUG_UART_BUS].line_config), NULL,
- &(g_uart_config[SW_DEBUG_UART_BUS].buffer_config));
-}
-
-void sw_debug_uart_reset_baund(void)
-{
- while (uapi_uart_has_pending_transmissions(SW_DEBUG_UART_BUS)) { }
- uapi_uart_set_attr(SW_DEBUG_UART_BUS, &g_uart_config[SW_DEBUG_UART_BUS].line_config);
-}
-#endif
-
-void print_str(const char *str, ...)
-{
- static uint8_t s[1024]; // 1024 means string max length.
- va_list args;
- int32_t str_len;
-
- if ((str == NULL) || (strlen(str) == 0)) {
- return;
- }
-
- va_start(args, str);
- str_len = vsprintf_s((char *)s, sizeof(s), str, args);
- va_end(args);
-
- if (str_len < 0) {
- return;
- }
-#if defined(SW_RTT_DEBUG)
- SEGGER_RTT_Write(0, (const char *)s, str_len);
-#elif defined(SW_UART_DEBUG)
- if (hal_uart_get_funcs(SW_DEBUG_UART_BUS) == NULL) {
- return;
- }
- uapi_uart_write(SW_DEBUG_UART_BUS, (const void *)s, (uint32_t)str_len, 0);
-#else
-#endif
-}
-
-void hal_uart_clear_pending(uart_bus_t uart)
-{
- switch (uart) {
- case UART_BUS_0:
- int_clear_pending_irq(UART_0_IRQN);
- break;
- case UART_BUS_1:
- int_clear_pending_irq(UART_1_IRQN);
- break;
- default:
- break;
- }
-}
-
-#if defined(CONFIG_UART_SUPPORT_DMA)
-uint8_t uart_port_get_dma_trans_dest_handshaking(uart_bus_t bus)
-{
- switch (bus) {
- case UART_BUS_0:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_TX;
- case UART_BUS_1:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_TX;
- default:
- return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
- }
-}
-
-uint8_t uart_port_get_dma_trans_src_handshaking(uart_bus_t bus)
-{
- switch (bus) {
- case UART_BUS_0:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_RX;
- case UART_BUS_1:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_RX;
- default:
- return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
- }
-}
-#endif /* CONFIG_UART_SUPPORT_DMA */
-
-uint32_t uart_porting_lock(uart_bus_t bus)
-{
-#ifndef BUILD_APPLICATION_SSB
- if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
- (osal_in_interrupt() == 0)) {
- return (uint32_t)osal_mutex_lock_timeout(&(g_uart_config[bus].uart_mutex), OSAL_MUTEX_WAIT_FOREVER);
- }
-#else
- UNUSED(bus);
-#endif
- return ERRCODE_SUCC;
-}
-
-void uart_porting_unlock(uart_bus_t bus, uint32_t irq_sts)
-{
-#ifndef BUILD_APPLICATION_SSB
- unused(irq_sts);
- if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
- (osal_in_interrupt() == 0)) {
- osal_mutex_unlock(&(g_uart_config[bus].uart_mutex));
- }
-#else
- UNUSED(bus);
- UNUSED(irq_sts);
-#endif
-}
-
-void uart_save_reg(uart_bus_t bus)
-{
- uint32_t base = uart_porting_base_addr_get(bus);
- g_uart_recovery_reg[bus].uartilpr = readw(base + UARTILPR);
- g_uart_recovery_reg[bus].uartibrd = readw(base + UARTIBRD);
- g_uart_recovery_reg[bus].uartfbrd = readw(base + UARTFBRD);
- g_uart_recovery_reg[bus].uartlcr_h = readw(base + UARTLCRH);
- g_uart_recovery_reg[bus].uartcr = readw(base + UARTCR);
- g_uart_recovery_reg[bus].uartifls = readw(base + UARTIFLS);
- g_uart_recovery_reg[bus].uartimsc = readw(base + UARTIMSC);
- g_uart_recovery_reg[bus].uartdmacr = readw(base + UARTDMACR);
-}
-
-void uart_recovery_reg(uart_bus_t bus)
-{
- uint16_t uart_bit = UARTBUS0;
- if (bus == UART_BUS_0) {
- uart_bit = UARTBUS0;
- } else if (bus == UART_BUS_1) {
- uart_bit = UARTBUS1;
- }
- reg16_clrbit(UARTRESET, uart_bit);
- reg16_setbit(UARTRESET, uart_bit);
- uint32_t base = uart_porting_base_addr_get(bus);
- writew(base + UARTILPR, g_uart_recovery_reg[bus].uartilpr);
- writew(base + UARTIBRD, g_uart_recovery_reg[bus].uartibrd);
- writew(base + UARTFBRD, g_uart_recovery_reg[bus].uartfbrd);
- writew(base + UARTLCRH, g_uart_recovery_reg[bus].uartlcr_h);
- writew(base + UARTCR, g_uart_recovery_reg[bus].uartcr);
- writew(base + UARTIFLS, g_uart_recovery_reg[bus].uartifls);
- writew(base + UARTIMSC, g_uart_recovery_reg[bus].uartimsc);
- writew(base + UARTDMACR, g_uart_recovery_reg[bus].uartdmacr);
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Lcd driver configuration.\r
- * Author: @CompanyNameTag\r
- * Create: 2022-03-05\r
- */\r
-\r
-#include <stdint.h>\r
-#include "common_def.h"\r
-#include "lcd_config.h"\r
-\r
-#define LCD_EDO_466X466_SCREEN_ID 0x1133\r
-#define LCD_EDO_454X454_SCREEN_ID 0xf00\r
-#define LCD_BOE_454X454_SCREEN_ID 0x500\r
-#define LCD_SH_240X296_SCREEN_ID 0x101\r
-#define LCD_BOE_194X368_SCREEN_ID 0x4a00\r
-\r
-const combo_dev_cfg_t g_panel_466x466_60_config = {\r
- .devno = 0,\r
- .lane_id = {0, -1},\r
- .out_mode = OUT_MODE_DSI_CMD,\r
- .out_format = OUT_FORMAT_RGB_24BIT,\r
- .sync_info = {\r
- .hsa_pixels = 10, // hsa 10 pixels\r
- .hbp_pixels = 10, // hbp 10 pixels\r
- .hact_pixels = 466, // hact 466 pixels\r
- .hfp_pixels = 10, // hfp 10 pixels\r
- .vsa_lines = 4, // vsa 4 lines\r
- .vbp_lines = 12, // vbp 12 lines\r
- .vact_lines = 466, // vact 466 lines\r
- .vfp_lines = 10, // vfp 10 lines\r
- },\r
- .phy_data_rate = 480, // 480Mbps\r
- .pixel_clk = 20000, // 20000KHz\r
-};\r
-const combo_dev_cfg_t g_panel_454x454_60_config = {\r
- .devno = 0,\r
- .lane_id = {0, -1},\r
- .out_mode = OUT_MODE_DSI_CMD,\r
- .out_format = OUT_FORMAT_RGB_24BIT,\r
- .sync_info = {\r
- .hsa_pixels = 10, // hsa 10 pixels\r
- .hbp_pixels = 10, // hbp 10 pixels\r
- .hact_pixels = 454, // hact 454 pixels\r
- .hfp_pixels = 10, // hfp 10 pixels\r
- .vsa_lines = 4, // vsa 4 lines\r
- .vbp_lines = 12, // vbp 12 lines\r
- .vact_lines = 454, // vact 454 lines\r
- .vfp_lines = 10, // vfp 10 lines\r
- },\r
- .phy_data_rate = 480, // 480Mbps\r
- .pixel_clk = 20000, // 20000KHz\r
-};\r
-\r
-const combo_dev_cfg_t g_panel_240x296_60_config = {\r
- .devno = 0,\r
- .lane_id = {0, -1},\r
- .out_mode = OUT_MODE_DSI_CMD,\r
- .out_format = OUT_FORMAT_RGB_24BIT,\r
- .sync_info = {\r
- .hsa_pixels = 4, // hsa 14 pixels hpw\r
- .hbp_pixels = 11, // hbp 11 pixels HBP\r
- .hact_pixels = 368, // hact 240 pixels HPX\r
- .hfp_pixels = 14, // hfp 14 pixels hfp\r
- .vsa_lines = 2, // vsa 2 lines vpw\r
- .vbp_lines = 6, // vbp 6 lines vbp\r
- .vact_lines = 448, // vact 296 lines vpx\r
- .vfp_lines = 8, // vfp 8 lines vfp\r
- },\r
- .phy_data_rate = 480, // 480Mbps\r
- .pixel_clk = 20000, // 20000KHz\r
-};\r
-\r
-const combo_dev_cfg_t g_panel_194x368_qspi_config = {\r
- .out_format = OUT_FORMAT_RGB_24BIT,\r
- .sync_info = {\r
- .hact_pixels = 194, // hact 368 pixels\r
- .vact_lines = 368, // vact 368 lines\r
- },\r
-};\r
-\r
-/* display off sequence for common lcd */\r
-const lcd_cmd_sequ g_common_cmd_display_off[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
- {1, 1, {0x28}, 0}, /* display off */\r
- {1, 1, {0x10}, 120}, /* sleep in */\r
-};\r
-\r
-/* display off sequence for common lcd */\r
-const lcd_cmd_sequ g_common_466x466_cmd_display_off[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
- {1, 1, {0x28}, 0}, /* display off */\r
- {1, 1, {0x10}, 120}, /* sleep in */\r
- {1, 2, {0x4f, 0x01}, 0}, /* ½ødeepstandby ״̬ */\r
-};\r
-\r
-/* sleep in sequence for common lcd */\r
-const lcd_cmd_sequ g_common_cmd_sleep_in[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
- {1, 1, {0x28}, 0}, /* display off */\r
- {1, 1, {0x10}, 120}, /* sleep in */\r
-};\r
-\r
-/* sleep in sequence for common lcd */\r
-const lcd_cmd_sequ g_common_cmd_sleep_out[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
- {1, 1, {0x11}, 120}, /* sleep out */\r
- {1, 1, {0x29}, 0}, /* display on */\r
-};\r
-\r
-/* idle in sequence for EDO and BOE 454*454 lcd */\r
-lcd_cmd_sequ g_common_cmd_idle_in[] = {\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 1, {0x39}, 0},\r
-};\r
-\r
-/* idle out sequence for EDO and BOE 454*454 lcd */\r
-const lcd_cmd_sequ g_common_cmd_idle_out[] = {\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 1, {0x38}, 0},\r
-};\r
-\r
-/* te on sequence for EDO and BOE 454*454 lcd */\r
-const lcd_cmd_sequ g_common_cmd_te_on[] = {\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 1, {0x35}, 0},\r
-};\r
-\r
-/* te off sequence for EDO and BOE 454*454 lcd */\r
-const lcd_cmd_sequ g_common_cmd_te_off[] = {\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 1, {0x34}, 0},\r
-};\r
-\r
-/* set brightness sequence for EDO and BOE 454*454 lcd */\r
-lcd_cmd_sequ g_common_cmd_brightness[] = {\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 2, {0x51, 0xff}, 0},\r
-};\r
-const lcd_cmd_sequ g_edo_466x466_screen_init_on[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, \r
- {1, 2, {0x3a, 0x77}, 0}, \r
- {1, 2, {0x35, 0x00}, 0}, \r
- {1, 2, {0x53, 0x20}, 0}, \r
- // {1, 2, {0x51, 0xff}, 0}, \r
- {1, 2, {0x63, 0xff}, 0}, \r
- {1, 5, {0x2A, 0x00, 0x06, 0x01, 0xd7}, 0}, \r
- {1, 5, {0x2B, 0x00, 0x00, 0x01, 0xd1}, 0}, \r
- {1, 1, {0x11}, 120}, \r
- {1, 1, {0x29}, 0}, \r
-};\r
-\r
-\r
-/* init sequence for EDO 454*454 lcd */\r
-const lcd_cmd_sequ g_edo_454x454_screen_init_on[] = {\r
- {1, 2, {0xfe, 0x01}, 0},\r
- {1, 2, {0x30, 0x43}, 0}, /* set LCD frequency to 15HZ */\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 2, {0x3a, 0x77}, 0},\r
- {1, 2, {0x53, 0x20}, 0},\r
- {1, 2, {0x51, 0xff}, 0},\r
- {0, 5, {0x2a, 0x00, 0x0e, 0x01, 0xd3}, 0},\r
- {0, 5, {0x2b, 0x00, 0x00, 0x01, 0xc5}, 0},\r
- {1, 3, {0x44, 0x01, 0xc5}, 0},\r
- {1, 2, {0x35, 0x00}, 0},\r
- {1, 1, {0x11}, 120},\r
- {1, 1, {0x29}, 0},\r
-};\r
-\r
-/* init sequence for BOE 454*454 lcd */\r
-const lcd_cmd_sequ g_boe_454x454_screen_init_on[] = {\r
- {1, 2, {0xfe, 0x0d}, 0},\r
- {1, 2, {0x01, 0x00}, 0},\r
- {1, 2, {0x03, 0x00}, 0},\r
- {1, 2, {0x1b, 0x00}, 0},\r
- {1, 2, {0x1d, 0x00}, 0},\r
- {1, 2, {0x37, 0x00}, 0},\r
- {1, 2, {0x39, 0x00}, 0},\r
- {1, 2, {0x52, 0x58}, 0},\r
- {1, 2, {0x53, 0x00}, 0},\r
-\r
- {1, 2, {0xfe, 0x01}, 0},\r
- {1, 2, {0x72, 0x05}, 0},\r
- {1, 2, {0x73, 0x16}, 0},\r
- {1, 2, {0x74, 0x0c}, 0},\r
-\r
- {1, 2, {0xfe, 0x01}, 0},\r
- {1, 2, {0x18, 0x55}, 0},\r
- {1, 2, {0xc5, 0x10}, 0},\r
- {1, 2, {0x72, 0x0e}, 0},\r
- {1, 2, {0x73, 0x1c}, 0},\r
-\r
- {1, 2, {0xfe, 0x07}, 0},\r
- {1, 2, {0x15, 0x04}, 0},\r
- {1, 2, {0xfe, 0x01}, 0},\r
- {1, 2, {0x0a, 0xf8}, 0},\r
-\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 2, {0x51, 0xff}, 0},\r
- {1, 2, {0x35, 0x00}, 0},\r
- {0, 5, {0x2a, 0x00, 0x0c, 0x01, 0xd1}, 0},\r
- {0, 5, {0x2b, 0x00, 0x00, 0x01, 0xc5}, 0},\r
- {1, 2, {0x53, 0x20}, 0},\r
- {1, 1, {0x11}, 120},\r
- {1, 1, {0x29}, 0},\r
-};\r
-\r
-const lcd_cmd_sequ g_sh_240x296_screen_init_on[] = {\r
- {1, 1, {0x11}, 5},\r
- {1, 5, {0x2a, 0x00, 0x00, 0x01, 0x6f}, 1},\r
- {1, 5, {0x2b, 0x00, 0x00, 0x01, 0xbf}, 1},\r
- {1, 3, {0x44, 0x01, 0xbf}, 1},\r
- {1, 2, {0x35, 0x00}, 1},\r
- {1, 2, {0x3a, 0x77}, 1},\r
- {1, 2, {0x53, 0x20}, 80},\r
- {1, 1, {0x29}, 0},\r
-};\r
-\r
-const lcd_cmd_sequ g_boe_194x368_screen_init_on[] = {\r
- {0, 2, {0xfe, 0x00}, 0},\r
- {0, 3, {0x44, 0x00, 0xB7}, 0},\r
- {0, 2, {0x3a, 0x77}, 0},\r
- {0, 2, {0x51, 0x80}, 0},\r
- {0, 2, {0x35, 0x0}, 0},\r
- {0, 5, {0x2a, 0x00, 0x00, 0x00, 0xc1}, 0},\r
- {0, 1, {0x11}, 120},\r
- {0, 1, {0x29}, 100},\r
- {0, 1, {0x39}, 0},\r
-};\r
-\r
-const lcd_cmds_sequ g_display_off_cmds = {\r
- .cmd = g_common_cmd_display_off,\r
- .cmd_cnt = array_size(g_common_cmd_display_off),\r
-};\r
-\r
-const lcd_cmds_sequ g_466x466_display_off_cmds = {\r
- .cmd = g_common_466x466_cmd_display_off,\r
- .cmd_cnt = array_size(g_common_466x466_cmd_display_off),\r
-};\r
-\r
-const lcd_cmds_sequ g_idle_in_cmds = {\r
- .cmd = g_common_cmd_idle_in,\r
- .cmd_cnt = array_size(g_common_cmd_idle_in),\r
-};\r
-\r
-const lcd_cmds_sequ g_idle_out_cmds = {\r
- .cmd = g_common_cmd_idle_out,\r
- .cmd_cnt = array_size(g_common_cmd_idle_out),\r
-};\r
-\r
-const lcd_cmds_sequ g_te_on_cmds = {\r
- .cmd = g_common_cmd_te_on,\r
- .cmd_cnt = array_size(g_common_cmd_te_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_te_off_cmds = {\r
- .cmd = g_common_cmd_te_off,\r
- .cmd_cnt = array_size(g_common_cmd_te_off),\r
-};\r
-\r
-const lcd_cmds_sequ g_brightness_cmds = {\r
- .cmd = g_common_cmd_brightness,\r
- .cmd_cnt = array_size(g_common_cmd_brightness),\r
-};\r
-\r
-const lcd_cmds_sequ g_edo_466x466_screen_init_on_cmds = {\r
- .cmd = g_edo_466x466_screen_init_on,\r
- .cmd_cnt = array_size(g_edo_466x466_screen_init_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_edo_454x454_screen_init_on_cmds = {\r
- .cmd = g_edo_454x454_screen_init_on,\r
- .cmd_cnt = array_size(g_edo_454x454_screen_init_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_boe_454x454_screen_init_on_cmds = {\r
- .cmd = g_boe_454x454_screen_init_on,\r
- .cmd_cnt = array_size(g_boe_454x454_screen_init_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_sh_240x296_screen_init_on_cmds = {\r
- .cmd = g_sh_240x296_screen_init_on,\r
- .cmd_cnt = array_size(g_sh_240x296_screen_init_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_boe_194x368_screen_init_on_cmds = {\r
- .cmd = g_boe_194x368_screen_init_on,\r
- .cmd_cnt = array_size(g_boe_194x368_screen_init_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_sleep_in_cmds = {\r
- .cmd = g_common_cmd_sleep_in,\r
- .cmd_cnt = array_size(g_common_cmd_sleep_in),\r
-};\r
-\r
-const lcd_cmds_sequ g_sleep_out_cmds = {\r
- .cmd = g_common_cmd_sleep_out,\r
- .cmd_cnt = array_size(g_common_cmd_sleep_out),\r
-};\r
-\r
-const lcd_drv_cfg g_lcd_driver_ops[] = {\r
- {\r
- .bus_type = BUS_DISPLAY_MIPI,\r
- .bus_cfg = &g_panel_466x466_60_config,\r
- .x_start = 0x6,\r
- .y_start = 0,\r
- .fps = 60,\r
- .lcd_id = LCD_EDO_466X466_SCREEN_ID,\r
- .display_on_cmds = &g_edo_466x466_screen_init_on_cmds,\r
- .display_off_cmds = &g_466x466_display_off_cmds,\r
- .enter_idle_cmds = &g_idle_in_cmds,\r
- .exit_idle_cmds = &g_idle_out_cmds,\r
- .te_on_cmds = &g_te_on_cmds,\r
- .te_off_cmds = &g_te_off_cmds,\r
- .set_brightnes_cmds = &g_brightness_cmds,\r
- .sleep_in_cmds = &g_sleep_in_cmds,\r
- .sleep_out_cmds = &g_sleep_out_cmds,\r
- .lcd_id_info.reg_addr = 0x04,\r
- .lcd_id_info.read_len = 3,\r
- },\r
- {\r
- .bus_type = BUS_DISPLAY_MIPI,\r
- .bus_cfg = &g_panel_454x454_60_config,\r
- .x_start = 0xe,\r
- .y_start = 0,\r
- .fps = 60,\r
- .lcd_id = LCD_EDO_454X454_SCREEN_ID,\r
- .display_on_cmds = &g_edo_454x454_screen_init_on_cmds,\r
- .display_off_cmds = &g_display_off_cmds,\r
- .enter_idle_cmds = &g_idle_in_cmds,\r
- .exit_idle_cmds = &g_idle_out_cmds,\r
- .te_on_cmds = &g_te_on_cmds,\r
- .te_off_cmds = &g_te_off_cmds,\r
- .set_brightnes_cmds = &g_brightness_cmds,\r
- .sleep_in_cmds = &g_sleep_in_cmds,\r
- .sleep_out_cmds = &g_sleep_out_cmds,\r
- .lcd_id_info.reg_addr = 0x04,\r
- .lcd_id_info.read_len = 3,\r
- },\r
- {\r
- .bus_type = BUS_DISPLAY_MIPI,\r
- .bus_cfg = &g_panel_454x454_60_config,\r
- .x_start = 0xc,\r
- .y_start = 0,\r
- .fps = 60,\r
- .lcd_id = LCD_BOE_454X454_SCREEN_ID,\r
- .display_on_cmds = &g_boe_454x454_screen_init_on_cmds,\r
- .display_off_cmds = &g_display_off_cmds,\r
- .enter_idle_cmds = &g_idle_in_cmds,\r
- .exit_idle_cmds = &g_idle_out_cmds,\r
- .te_on_cmds = &g_te_on_cmds,\r
- .te_off_cmds = &g_te_off_cmds,\r
- .set_brightnes_cmds = &g_brightness_cmds,\r
- .sleep_in_cmds = &g_sleep_in_cmds,\r
- .sleep_out_cmds = &g_sleep_out_cmds,\r
- .lcd_id_info.reg_addr = 0x04,\r
- .lcd_id_info.read_len = 3,\r
- },\r
- {\r
- .bus_type = BUS_DISPLAY_MIPI,\r
- .bus_cfg = &g_panel_240x296_60_config,\r
- .x_start = 0,\r
- .y_start = 0,\r
- .fps = 60,\r
- .lcd_id = LCD_SH_240X296_SCREEN_ID,\r
- .display_on_cmds = &g_sh_240x296_screen_init_on_cmds,\r
- .display_off_cmds = &g_display_off_cmds,\r
- .enter_idle_cmds = &g_idle_in_cmds,\r
- .exit_idle_cmds = &g_idle_out_cmds,\r
- .te_on_cmds = &g_te_on_cmds,\r
- .te_off_cmds = &g_te_off_cmds,\r
- .set_brightnes_cmds = &g_brightness_cmds,\r
- .sleep_in_cmds = &g_sleep_in_cmds,\r
- .sleep_out_cmds = &g_sleep_out_cmds,\r
- .lcd_id_info.reg_addr = 0xda,\r
- .lcd_id_info.read_len = 3,\r
- },\r
- {\r
- .bus_type = BUS_DISPLAY_QSPI,\r
- .bus_cfg = &g_panel_194x368_qspi_config,\r
- .x_start = 0,\r
- .y_start = 0,\r
- .fps = 60,\r
- .lcd_id = LCD_BOE_194X368_SCREEN_ID,\r
- .display_on_cmds = &g_boe_194x368_screen_init_on_cmds,\r
- .display_off_cmds = &g_display_off_cmds,\r
- .enter_idle_cmds = &g_idle_in_cmds,\r
- .exit_idle_cmds = &g_idle_out_cmds,\r
- .te_on_cmds = &g_te_on_cmds,\r
- .te_off_cmds = &g_te_off_cmds,\r
- .set_brightnes_cmds = &g_brightness_cmds,\r
- .sleep_in_cmds = &g_sleep_in_cmds,\r
- .sleep_out_cmds = &g_sleep_out_cmds,\r
- .lcd_id_info.reg_addr = 0x04,\r
- .lcd_id_info.read_len = 3,\r
- }\r
-};\r
-\r
-lcd_drv_cfg *lcd_get_driver_ops(void)\r
-{\r
- return g_lcd_driver_ops;\r
-}\r
-\r
-uint32_t lcd_get_ops_num(void)\r
-{\r
- return array_size(g_lcd_driver_ops);\r
-}\r
-\r
-combo_dev_cfg_t *lcd_get_bus_escape_config(void)\r
-{\r
- return g_lcd_driver_ops[0].bus_cfg;\r
-}\r
-\r
-lcd_drv_cfg *lcd_get_driver_config(uint32_t id)\r
-{\r
- uint32_t i;\r
- if (id == 0) {\r
- return NULL;\r
- }\r
-\r
- for (i = 0; i < array_size(g_lcd_driver_ops); i++) {\r
- if (g_lcd_driver_ops[i].lcd_id == id) {\r
- return &(g_lcd_driver_ops[i]);\r
- }\r
- }\r
-\r
- return NULL;\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Lcd private interface.\r
- * Author: @CompanyNameTag\r
- * Create: 2022-03-05\r
- */\r
-\r
-#include "lcd_private.h"\r
-#include "tcxo.h"\r
-#include "chip_io.h"\r
-#include "platform_core.h"\r
-#include "gpio.h"\r
-#include "pinctrl_porting.h"\r
-#include "product.h"\r
-#include "pinctrl.h"\r
-static void lcd_drv_power_on(void)\r
-{\r
-#ifndef QSPI_DISPLAY\r
- uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_OUTPUT);\r
- uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_HIGH);\r
-#endif\r
- uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_OUTPUT);\r
-\r
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
-\r
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_HIGH);\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
-}\r
-#define USE_OUTPUT_CTL 1\r
-static void lcd_drv_power_off(void)\r
-{\r
-#if USE_OUTPUT_CTL\r
- uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_OUTPUT); \r
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);\r
- #ifndef QSPI_DISPLAY\r
- uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_OUTPUT);\r
- uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_LOW);\r
- #endif\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
- int resetvalue = uapi_gpio_get_output_val(RESET_LCD_GPIO);\r
- int lcd_envalue = uapi_gpio_get_output_val(VCI_LCD_GPIO);\r
- printf("Output RESET_LCD_GPIO %d , VCI_LCD_GPIO %d\r\n",resetvalue,lcd_envalue);\r
-#else\r
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);\r
- uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_INPUT); //ÉèÖóÉInput£¬ÊÇΪÁ˽â¾ö©µç £¿£¿\r
- uapi_pin_set_pull(RESET_LCD_GPIO, PIN_PULL_DOWN);\r
- #ifndef QSPI_DISPLAY\r
- uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_LOW);\r
- uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_INPUT);\r
- uapi_pin_set_pull(VCI_LCD_GPIO, PIN_PULL_DOWN);\r
- #endif\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
- int resetvalue = uapi_gpio_get_val(RESET_LCD_GPIO);\r
- int lcd_envalue = uapi_gpio_get_val(VCI_LCD_GPIO);\r
- printf("Input RESET_LCD_GPIO %d , VCI_LCD_GPIO %d\r\n",resetvalue,lcd_envalue);\r
-#endif\r
- \r
-}\r
-\r
-static lcd_drv_private g_lcd_private_api = {\r
- .power_on = lcd_drv_power_on,\r
- .power_off = lcd_drv_power_off,\r
-};\r
-\r
-lcd_drv_private *lcd_drv_get_private_api(void)\r
-{\r
- return &g_lcd_private_api;\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Lcd driver.\r
- * Author: @CompanyNameTag\r
- * Create: 2022-03-05\r
- */\r
-\r
-#include "soc_lcd_api.h"\r
-#include <stdint.h>\r
-#include "soc_errno.h"\r
-#include "soc_osal.h"\r
-#include "soc_mipi_tx.h"\r
-#include "lcd_config.h"\r
-#include "lcd_bus.h"\r
-#include "lcd_mipi.h"\r
-#include "lcd_qspi.h"\r
-#include "lcd_common.h"\r
-#include "lcd_private.h"\r
-#include "pinctrl_porting.h"\r
-\r
-typedef struct lcd_attr {\r
- bool info_register; /* 注册指定屏幕组件标志 */\r
- bool is_inited; /* LCD组件初始化标志 */\r
- lcd_type screen_type; /* LCD屏类型 */\r
- uint32_t lcd_id; /* LCD ID号 */\r
- lcd_drv_cfg *lcd_cfg; /* LCD参数 */\r
- uint8_t brightness; /* 显示亮度参数 */\r
- ext_lcd_status status; /* LCD状态标志 */\r
- osal_mutex lcd_mutex; /* LCD驱动多线程调用保护信号量 */\r
- lcd_bus_api *bus_api; /* 总线接口 */\r
- lcd_drv_common *common_api; /* LCD公共接口 */\r
- lcd_drv_private *private_api; /* LCD差异化接口 */\r
-} lcd_attr;\r
-\r
-lcd_attr g_lcd_info = {0};\r
-volatile bool g_idle_before_sleep = false; /* false: normal display, true: idle mode */\r
-static bool g_lcd_on_flag = false;\r
-\r
-bool lcd_get_status(void)\r
-{\r
- return g_lcd_on_flag;\r
-}\r
-\r
-void lcd_set_status(bool lcd_on)\r
-{\r
- g_lcd_on_flag = lcd_on;\r
-}\r
-\r
-static ext_errno lcd_lock_init(void)\r
-{\r
- ext_errno ret;\r
- if (g_lcd_info.lcd_mutex.mutex != NULL) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- ret = osal_mutex_init(&(g_lcd_info.lcd_mutex));\r
- if (ret != EXT_ERR_SUCCESS) {\r
- g_lcd_info.lcd_mutex.mutex = NULL;\r
- return ret;\r
- }\r
- if (g_lcd_info.lcd_mutex.mutex == NULL) {\r
- return EXT_ERR_LCD_MUTEX_INIT_FAIL;\r
- }\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static void lcd_lock_deinit(void)\r
-{\r
- if (g_lcd_info.lcd_mutex.mutex != NULL) {\r
- osal_mutex_destroy(&(g_lcd_info.lcd_mutex));\r
- }\r
-\r
- g_lcd_info.lcd_mutex.mutex = NULL;\r
-}\r
-\r
-static void lcd_lock(void)\r
-{\r
- if (g_lcd_info.lcd_mutex.mutex == NULL) {\r
- return;\r
- }\r
- osal_mutex_lock(&(g_lcd_info.lcd_mutex));\r
-}\r
-\r
-static void lcd_unlock(void)\r
-{\r
- if (g_lcd_info.lcd_mutex.mutex == NULL) {\r
- return;\r
- }\r
- osal_mutex_unlock(&(g_lcd_info.lcd_mutex));\r
-}\r
-\r
-static void lcd_set_display_info(void)\r
-{\r
- if (g_lcd_info.bus_api->bus_register_panel_info != NULL) {\r
- g_lcd_info.bus_api->bus_register_panel_info(g_lcd_info.lcd_cfg->x_start, g_lcd_info.lcd_cfg->y_start,\r
- g_lcd_info.lcd_cfg->fps);\r
- }\r
-}\r
-\r
-static ext_errno lcd_auto_adapt_init_prepare(void)\r
-{\r
- ext_errno ret;\r
- combo_dev_cfg_t *escape_config = lcd_get_bus_escape_config();\r
-\r
- /* init with default parameter */\r
- ret = g_lcd_info.bus_api->bus_init(escape_config);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("default bus_init fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- ret = g_lcd_info.common_api->get_chip_id(&g_lcd_info.lcd_id);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("get_chip_id fail, ret = %X\r\n", ret);\r
- }\r
-\r
- if (g_lcd_info.bus_api->bus_deinit() != EXT_ERR_SUCCESS) {\r
- lcd_err("bus deinit fail\r\n");\r
- }\r
-\r
- return ret;\r
-}\r
-\r
-static ext_errno lcd_assigned_id_check(void)\r
-{\r
- if (g_lcd_info.common_api->chip_id_check == NULL) {\r
- return EXT_ERR_LCD_INVALID_NULL_POINTER;\r
- }\r
-\r
- return g_lcd_info.common_api->chip_id_check();\r
-}\r
-\r
-static ext_errno lcd_get_ops(void)\r
-{\r
- ext_errno ret = 0;\r
- g_lcd_info.bus_api = lcd_get_bus_api();\r
- g_lcd_info.common_api = lcd_drv_get_common_api();\r
- g_lcd_info.private_api = lcd_drv_get_private_api();\r
-\r
- if (g_lcd_info.bus_api == NULL || g_lcd_info.common_api == NULL || g_lcd_info.private_api == NULL) {\r
- return EXT_ERR_LCD_GET_ATTR_FAIL;\r
- }\r
-\r
- if (g_lcd_info.private_api->power_on == NULL) {\r
- return EXT_ERR_LCD_GET_ATTR_FAIL;\r
- }\r
- g_lcd_info.private_api->power_on();\r
-\r
- if (!g_lcd_info.info_register) {\r
- ret = lcd_auto_adapt_init_prepare();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- goto fail;\r
- }\r
- }\r
-\r
- g_lcd_info.lcd_cfg = g_lcd_info.common_api->get_lcd_config();\r
- if (g_lcd_info.lcd_cfg == NULL) {\r
- lcd_err("lcd_cfg empty!\r\n");\r
- goto fail;\r
- }\r
- ret = g_lcd_info.bus_api->bus_init(g_lcd_info.lcd_cfg->bus_cfg);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("bus_init fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- if (g_lcd_info.info_register) {\r
- ret = lcd_assigned_id_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("chip id check error, ret = 0x%x\r\n", ret);\r
- g_lcd_info.bus_api->bus_deinit();\r
- goto fail;\r
- }\r
- }\r
-\r
- if (g_lcd_info.brightness == 0)\r
- g_lcd_info.brightness = DEFAULT_BRIGHTNESS;\r
-\r
- return EXT_ERR_SUCCESS;\r
-fail:\r
-\r
- if (g_lcd_info.private_api->power_off != NULL) {\r
- g_lcd_info.private_api->power_off();\r
- }\r
- g_lcd_info.bus_api = NULL;\r
- g_lcd_info.common_api = NULL;\r
- g_lcd_info.private_api = NULL;\r
- return ret;\r
-}\r
-\r
-ext_lcd_status uapi_lcd_get_status(void)\r
-{\r
- return g_lcd_info.status;\r
-}\r
-\r
-bool uapi_is_lcd_connect(void)\r
-{\r
- return g_lcd_info.is_inited;\r
-}\r
-\r
-static ext_errno lcd_display_on(void)\r
-{\r
- ext_errno ret;\r
- uint32_t retry_count = 3;\r
- lcd_lock();\r
-\r
- for (; retry_count > 0; retry_count--) {\r
- ret = g_lcd_info.common_api->display_on(g_lcd_info.brightness);\r
- if (ret == EXT_ERR_SUCCESS) {\r
- ret = g_lcd_info.bus_api->bus_enable();\r
- if (ret == EXT_ERR_SUCCESS) {\r
- break;\r
- }\r
- }\r
-\r
- g_lcd_info.private_api->power_off();\r
- g_lcd_info.private_api->power_on();\r
-\r
- g_lcd_info.bus_api->bus_deinit();\r
- ret = g_lcd_info.bus_api->bus_init(g_lcd_info.lcd_cfg->bus_cfg);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- g_lcd_info.private_api->power_off();\r
- continue;\r
- }\r
- }\r
- if (retry_count > 0) {\r
- g_lcd_info.status.disp_status = LCD_NORMAL_DISPLAY;\r
- g_lcd_info.status.te_status = LCD_TE_ON;\r
- }\r
-\r
- lcd_unlock();\r
-\r
- return ret;\r
-}\r
-\r
-ext_errno uapi_lcd_display_on(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status == LCD_NORMAL_DISPLAY) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- ret = lcd_display_on();\r
-\r
- return ret;\r
-}\r
-\r
-ext_errno uapi_lcd_display_off(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status == LCD_DISPLAY_OFF) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- ret = g_lcd_info.common_api->display_off();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("display_off fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- ret = g_lcd_info.bus_api->bus_disable();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("bus_disable fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
-\r
- g_lcd_info.status.disp_status = LCD_DISPLAY_OFF;\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_enter_sleep_mode(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status == LCD_SLEEP_MODE) {\r
- return EXT_ERR_SUCCESS;\r
- } else if (g_lcd_info.status.disp_status == LCD_DISPLAY_OFF) {\r
- return EXT_ERR_LCD_NOT_SUPPORT_OFF_TO_SLEEP;\r
- }\r
-\r
- if (g_lcd_info.status.disp_status == LCD_IDLE_MODE) {\r
- g_idle_before_sleep = true;\r
- } else {\r
- g_idle_before_sleep = false;\r
- }\r
-\r
- ret = g_lcd_info.common_api->enter_sleep_mode();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("enter sleep mode fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- ret = g_lcd_info.bus_api->bus_disable();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("bus_disable fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
- g_lcd_info.status.disp_status = LCD_SLEEP_MODE;\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_exit_sleep_mode(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status != LCD_SLEEP_MODE) {\r
- return EXT_ERR_LCD_NOT_IN_SLEEP_MODE;\r
- }\r
-\r
- ret = g_lcd_info.common_api->exit_sleep_mode();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("exit sleep mode fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.bus_api->bus_enable();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("enable bus fail when exit sleep, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
-\r
- if (g_idle_before_sleep) {\r
- g_lcd_info.status.disp_status = LCD_IDLE_MODE;\r
- } else {\r
- g_lcd_info.status.disp_status = LCD_NORMAL_DISPLAY;\r
- }\r
-\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_enter_idle_mode(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status == LCD_IDLE_MODE) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
- if (g_lcd_info.status.disp_status != LCD_NORMAL_DISPLAY) {\r
- return EXT_ERR_LCD_NOT_SUPPORT_CUR_TO_IDLE;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->enter_idle_mode();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("enter_idle_mode fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- g_lcd_info.status.disp_status = LCD_IDLE_MODE;\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_exit_idle_mode(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status != LCD_IDLE_MODE) {\r
- return EXT_ERR_LCD_NOT_IN_IDLE_MODE;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->exit_idle_mode();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("exit_idle_mode fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- g_lcd_info.status.disp_status = LCD_NORMAL_DISPLAY;\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static ext_errno lcd_te_param_check(void)\r
-{\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.screen_type == VIDEO_LCD) {\r
- return EXT_ERR_LCD_VIDEO_SCREEN_NOT_SUPPORT_TE;\r
- }\r
- if (g_lcd_info.status.disp_status != LCD_NORMAL_DISPLAY && g_lcd_info.status.disp_status != LCD_IDLE_MODE) {\r
- return EXT_ERR_LCD_INVALID_TE_ON_MODE;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_te_on(void)\r
-{\r
- ext_errno ret = lcd_te_param_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
- if (g_lcd_info.status.te_status == LCD_TE_ON) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->te_on();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("te_on fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- g_lcd_info.status.te_status = LCD_TE_ON;\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_te_off(void)\r
-{\r
- ext_errno ret = lcd_te_param_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
- if (g_lcd_info.status.te_status == LCD_TE_OFF) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->te_off();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("te_off fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- g_lcd_info.status.te_status = LCD_TE_OFF;\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_set_brightness(uint16_t value)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status > LCD_IDLE_MODE) {\r
- return EXT_ERR_LCD_IN_DISPLAY_OFF_STATE;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->set_brightness(value);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("set_brightness fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- g_lcd_info.brightness = (uint8_t)value;\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_get_brightness(uint16_t *value)\r
-{\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- *value = g_lcd_info.brightness;\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_write_reg(lcd_cmd_sequ *cmds, uint32_t cmd_count)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
-\r
- if (cmds == NULL || cmd_count == 0) {\r
- return EXT_ERR_LCD_INVALID_WRITE_CMD;\r
- }\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->write(cmds, cmd_count);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("write reg fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_read_reg(uint8_t cmd, uint8_t *buff, uint8_t buff_len)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status > LCD_SLEEP_MODE) {\r
- return EXT_ERR_LCD_IN_DISPLAY_OFF_STATE;\r
- }\r
- if (buff == NULL || buff_len == 0) {\r
- return EXT_ERR_LCD_INVALID_READ_CMD;\r
- }\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->read(cmd, buff, buff_len);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("read reg fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_init(void)\r
-{\r
- if (g_lcd_info.is_inited) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- ext_errno ret = lcd_get_ops();\r
- if (ret != EXT_ERR_SUCCESS && ret != EXT_ERR_MIPI_ALREADY_INIT) {\r
- lcd_err("lcd_get_ops fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- ret = lcd_lock_init();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("lcd_lock_init fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- lcd_set_display_info();\r
-\r
- ret = lcd_display_on();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- g_lcd_info.bus_api->bus_deinit();\r
- lcd_lock_deinit();\r
- lcd_err("lcd_display_on fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- g_lcd_info.is_inited = true;\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_deinit(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- if (g_lcd_info.status.disp_status != LCD_DISPLAY_OFF) {\r
- ret = g_lcd_info.common_api->display_off();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("display_off fail, ret = %X\r\n", ret);\r
- }\r
-\r
- ret = g_lcd_info.bus_api->bus_disable();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("bus_disable fail, ret = %X\r\n", ret);\r
- }\r
- }\r
- lcd_lock();\r
- ret = g_lcd_info.bus_api->bus_deinit();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("bus_deinit fail, ret = %X\r\n", ret);\r
- }\r
- g_lcd_info.private_api->power_off();\r
-\r
- g_lcd_info.status.disp_status = LCD_DISPLAY_OFF;\r
- g_lcd_info.is_inited = false;\r
- lcd_unlock();\r
-\r
- lcd_lock_deinit();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static ext_errno lcd_lp_ctrl_check(void)\r
-{\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
-\r
- if (g_lcd_info.bus_api == NULL) {\r
- return EXT_ERR_LCD_GET_ATTR_FAIL;\r
- }\r
-\r
- if (g_lcd_info.bus_api->bus_lp_ctrl == NULL) {\r
- return EXT_ERR_LCD_NOT_SUPPORT_FUNC;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_enter_sdlp(void)\r
-{\r
- ext_errno ret;\r
-\r
- ret = lcd_lp_ctrl_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- return g_lcd_info.bus_api->bus_lp_ctrl(LP_CTRL_ENTER_SDLP);\r
-}\r
-\r
-ext_errno uapi_lcd_exit_sdlp(void)\r
-{\r
- ext_errno ret;\r
-\r
- ret = lcd_lp_ctrl_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- return g_lcd_info.bus_api->bus_lp_ctrl(LP_CTRL_EXIT_SDLP);\r
-}\r
-\r
-ext_errno uapi_lcd_exit_ulps(void)\r
-{\r
- ext_errno ret;\r
-\r
- ret = lcd_lp_ctrl_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- return g_lcd_info.bus_api->bus_lp_ctrl(LP_CTRL_EXIT_ULPS);\r
-}\r
-\r
-ext_errno uapi_lcd_clear_exit_ulps(void)\r
-{\r
- ext_errno ret;\r
-\r
- ret = lcd_lp_ctrl_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- return g_lcd_info.bus_api->bus_lp_ctrl(LP_CTRL_CLEAR_EXIT_ULPS);\r
-}\r
-\r
-static void lcd_register_qspi_bus(void)\r
-{\r
- lcd_bus_api qspi_bus_api = {0};\r
-\r
- qspi_bus_api.bus_init = lcd_qspi_init;\r
- qspi_bus_api.bus_deinit = lcd_qspi_deinit;\r
- qspi_bus_api.bus_enable = lcd_qspi_enable;\r
- qspi_bus_api.bus_disable = lcd_qspi_disable;\r
- qspi_bus_api.bus_write_cmd = lcd_qspi_write_cmd;\r
- qspi_bus_api.bus_read_cmd = lcd_qspi_read_cmd;\r
- qspi_bus_api.bus_send_frame = lcd_qspi_send_frame;\r
- qspi_bus_api.bus_suspend = lcd_qspi_suspend;\r
- qspi_bus_api.bus_resume = lcd_qspi_resume;\r
- qspi_bus_api.bus_register_te_isr = lcd_qspi_register_te_isr;\r
-\r
- lcd_bus_register_api(&qspi_bus_api, BUS_DISPLAY_QSPI);\r
-}\r
-\r
-static void lcd_register_mipi_bus(void)\r
-{\r
- lcd_bus_api mipi_bus_api = {0};\r
-\r
- mipi_bus_api.bus_init = mipi_bus_init,\r
- mipi_bus_api.bus_deinit = mipi_bus_deinit,\r
- mipi_bus_api.bus_enable = mipi_bus_enable,\r
- mipi_bus_api.bus_disable = mipi_bus_disable,\r
- mipi_bus_api.bus_write_cmd = mipi_bus_write,\r
- mipi_bus_api.bus_read_cmd = mipi_bus_read,\r
- mipi_bus_api.bus_lp_ctrl = mipi_bus_lp_ctrl,\r
- mipi_bus_api.bus_register_panel_info = mipi_bus_register_panel_info,\r
- mipi_bus_api.bus_get_panel_timing = mipi_bus_get_panel_timing,\r
- mipi_bus_api.bus_get_partial_display_cmd = mipi_bus_get_partial_display_cmd,\r
- mipi_bus_api.bus_update_panel = mipi_bus_update_panel,\r
- mipi_bus_api.bus_refresh_area = mipi_bus_refresh_area,\r
- mipi_bus_api.bus_suspend = mipi_bus_suspend,\r
- mipi_bus_api.bus_resume = mipi_bus_resume,\r
- lcd_bus_register_api(&mipi_bus_api, BUS_DISPLAY_MIPI);\r
-}\r
-\r
-static ext_errno lcd_info_check(const lcd_drv_cfg *info)\r
-{\r
- if (info == NULL) {\r
- return EXT_ERR_LCD_INVALID_NULL_POINTER;\r
- }\r
-\r
- if ((info->bus_type != BUS_DISPLAY_MIPI) && (info->bus_type != BUS_DISPLAY_QSPI)) {\r
- return EXT_ERR_LCD_INVALID_SCREEN_OPS;\r
- }\r
-\r
- if (info->lcd_id == 0) {\r
- return EXT_ERR_LCD_INVALID_CHIP_ID;\r
- }\r
-\r
- if ((info->display_on_cmds == NULL) || (info->display_off_cmds == NULL)) {\r
- return EXT_ERR_LCD_INVALID_WRITE_CMD;\r
- }\r
-\r
- if (info->lcd_id_info.read_len == 0) {\r
- return EXT_ERR_LCD_INVALID_READ_CMD;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_info_register(lcd_drv_cfg *info)\r
-{\r
- ext_errno ret;\r
-\r
- ret = lcd_info_check(info);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- if (g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_INIT_ALREADY;\r
- }\r
-\r
- if (g_lcd_info.common_api == NULL) {\r
- g_lcd_info.common_api = lcd_drv_get_common_api();\r
- }\r
-\r
- if (g_lcd_info.common_api->set_lcd_config == NULL) {\r
- return EXT_ERR_LCD_NOT_SUPPORT_FUNC;\r
- }\r
-\r
- ret = g_lcd_info.common_api->set_lcd_config(info);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- if (info->bus_type == BUS_DISPLAY_MIPI) {\r
- lcd_register_mipi_bus();\r
- } else {\r
- lcd_register_qspi_bus();\r
- }\r
-\r
- g_lcd_info.info_register = true;\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
+++ /dev/null
-#===============================================================================
-# @brief cmake file
-# Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved.
-#===============================================================================
-set(COMPONENT_NAME "touch")
-
-set(SOURCES
- ${CMAKE_CURRENT_SOURCE_DIR}/touch_screen_drv.c
- ${CMAKE_CURRENT_SOURCE_DIR}/touch_screen_queue1.c
-)
-
-if("TPTYPE_TMA525B" IN_LIST DEFINES)
-set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/tma525b_touch/tma525b_ctrl.c
- ${CMAKE_CURRENT_SOURCE_DIR}/tma525b_touch/tma525b_drv1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/tma525b_touch/tma525b_touch1.c
-)
-elseif("TPTYPE_ZTW523" IN_LIST DEFINES)
-set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_ctrl.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_drv1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_touch1.c
-)
-elseif("TPTYPE_FT6X46" IN_LIST DEFINES)
-set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_ctrl.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_drv1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_touch1.c
-)
-else()
-set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_ctrl.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_drv1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_touch1.c
-)
-endif()
-
-if("TPTYPE_TMA525B" IN_LIST DEFINES)
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/tma525b_touch
- ${ROOT_DIR}/middleware/services/gui/hal/input/include
-)
-elseif("TPTYPE_ZTW523" IN_LIST DEFINES)
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch
- ${ROOT_DIR}/middleware/services/gui/hal/input/include
-)
-elseif("TPTYPE_FT6X46" IN_LIST DEFINES)
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch
- ${ROOT_DIR}/middleware/services/gui/hal/input/include
-)
-else()
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch
- ${ROOT_DIR}/middleware/services/gui/hal/input/include
-)
-endif()
-
-set(PRIVATE_HEADER
-)
-
-set(PRIVATE_DEFINES
-)
-
-set(PUBLIC_DEFINES
-)
-
-# use this when you want to add ccflags like -include xxx
-set(COMPONENT_PUBLIC_CCFLAGS
-)
-
-set(COMPONENT_CCFLAGS
- -Wno-incompatible-function-pointer-types
- -Wno-unused-function
-)
-
-set(WHOLE_LINK
- true
-)
-
-set(MAIN_COMPONENT
- false
-)
-
-build_component()
-
-install_sdk(${CMAKE_CURRENT_SOURCE_DIR} "*")
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ztw523 touch driver.
- * Author: @CompanyNameTag
- * Create: 2022-04-12
- */
-
-#include "ft6x46_ctrl.h"
-#include "securec.h"
-#include "cmsis_os2.h"
-#include "soc_osal.h"
-#include "common_def.h"
-#include "pinctrl.h"
-#include "chip_io.h"
-#include "tcxo.h"
-#include "time.h"
-#include "i2c.h"
-#include "gpio.h"
-#include "hal_gpio.h"
-#include "hal_i2c.h"
-#include "touch_screen_def.h"
-
-bool g_host_dev_init_flag = TD_FALSE;
-ft6x46_ctrl_attr g_ctrl_attr;
-touch_callback g_ft6x46_callback = NULL;
-
-static void ft6x46_gpio_isr_handle(pin_t pin, uintptr_t param)
-{
- unused(pin);
- unused(param);
- if (g_ft6x46_callback != NULL) {
- g_ft6x46_callback();
- }
-}
-
-ext_errno ft6x46_register_handle(const ft6x46_ctrl_ops *peri_data, touch_callback func)
-{
- unused(peri_data);
- ext_errno ret;
-
-
- //tp_err("ft6x46_register_handle*****************888888888");
- g_ft6x46_callback = func;
- /* register int io interrupt handler */
- uapi_gpio_init();
- gpio_select_core(FT6X46_INT_GPIO, CORE);
- uapi_gpio_set_dir(FT6X46_INT_GPIO, GPIO_DIRECTION_INPUT);
- ret = uapi_gpio_register_isr_func(FT6X46_INT_GPIO, GPIO_INTERRUPT_FALLING_EDGE, ft6x46_gpio_isr_handle);
- if (ret != 0) {
- tp_err("ft6x46 int callback register fail! ret=0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_unregister_handle(const ft6x46_ctrl_ops *peri_data)
-{
- unused(peri_data);
- ext_errno ret;
-
- /* unregister interrupt handler */
- uapi_gpio_unregister_isr_func(FT6X46_INT_GPIO);
- g_ft6x46_callback = NULL;
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno tp_peripheral_init_status_check(void)
-{
- if (g_host_dev_init_flag != TD_TRUE) {
- return EXT_ERR_TP_DEV_INFO_NOT_REGISTER;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_ctrl_attr_check(const ft6x46_ctrl_attr *device_attr)
-{
- unused(device_attr);
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno tp_i2c_rd_wr_param_check(const uint8_t *data_buf, uint32_t data_len)
-{
- unused(data_buf);
- unused(data_len);
- ext_errno ret = tp_peripheral_init_status_check();
- if (ret != EXT_ERR_SUCCESS) {
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno tp_i2c_data_read(uint8_t reg_addr, uint8_t *data_buf, uint32_t data_len)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- //uint8_t tp_reg_addr[FT6X46_REG_BYTE_LEN];
-
- ret = tp_i2c_rd_wr_param_check(data_buf, data_len);
- if (ret != 0) {
- tp_err("tp data read param invalid! ret=0x%x", ret);
- return ret;
- }
-
- memset_s(data_buf, data_len, 0, data_len);
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX0] = reg_addr & 0xff;
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX1] = (reg_addr >> OFFSET_8_BITS) & 0xff;
-
- data.send_buf = ®_addr;
- data.send_len = FT6X46_CMD_SEND_LEN;
- data.receive_buf = data_buf;
- data.receive_len = data_len;
-
- for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_writeread(FT6X46_I2C_BUS, FT6X46_I2C_ADDR, &data);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- }
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp data read fail! ret=0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-
-ext_errno tp_ft6x46_i2c_data_read(uint8_t reg_addr, uint8_t *data_buf, uint32_t data_len)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- //uint8_t tp_reg_addr[FT6X46_REG_BYTE_LEN];
-
- ret = tp_i2c_rd_wr_param_check(data_buf, data_len);
- if (ret != 0) {
- tp_err("tp data read param invalid! ret=0x%x", ret);
- return ret;
- }
-
- memset_s(data_buf, data_len, 0, data_len);
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX0] = reg_addr & 0xff;
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX1] = (reg_addr >> OFFSET_8_BITS) & 0xff;
-
- data.send_buf = ®_addr;
- data.send_len = sizeof(reg_addr);
- data.receive_buf = data_buf;
- data.receive_len = data_len;
-
- for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_writeread(FT6X46_I2C_BUS, FT6X46_I2C_ADDR, &data);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- }
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp data read fail! ret=0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno tp_i2c_cmd_write(uint8_t cmd)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- //uint8_t tp_reg_addr[FT6X46_CMD_SEND_LEN];
-
- ret = tp_peripheral_init_status_check();
- if (ret != 0) {
- tp_err("host peripheral not init! ret=0x%x", ret);
- return ret;
- }
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX0] = cmd & 0xff;
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX1] = (cmd >> OFFSET_8_BITS) & 0xff;
-
- data.send_buf = &cmd;
- data.send_len = FT6X46_CMD_SEND_LEN;
- data.receive_buf = NULL;
- data.receive_len = 0;
-
- for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_write(FT6X46_I2C_BUS, FT6X46_I2C_ADDR, &data);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- }
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp data write fail! ret=0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno tp_i2c_data_write(uint8_t reg_addr, uint8_t *data_buf, uint16_t data_len)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- uint8_t *write_data = NULL;
- uint16_t send_len;
-
- ret = tp_i2c_rd_wr_param_check(data_buf, data_len);
- if (ret != 0) {
- tp_err("tp data write param invalid! ret=0x%x", ret);
- return ret;
- }
-
- send_len = data_len + sizeof(uint8_t);
-
- write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
- if (write_data == NULL) {
- tp_err("tp send buff malloc fail!");
- return EXT_ERR_MALLOC_FAILURE;
- }
-
- write_data[FT6X46_I2C_SEND_INDEX0] = reg_addr;
- ret = (uint32_t)memcpy_s(write_data + sizeof(uint8_t), send_len - sizeof(uint8_t), data_buf, data_len);
- if (ret != EOK) {
- tp_err("tp send_buf content copy fail! ret=0x%x", ret);
- return ret;
- }
-
- data.send_buf = write_data;
- data.send_len = send_len;
- data.receive_buf = NULL;
- data.receive_len = 0;
-
- for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_write(FT6X46_I2C_BUS, FT6X46_I2C_ADDR, &data);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- }
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp data write fail! ret=0x%x", ret);
- return ret;
- }
-
- tp_mem_free(write_data);
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno tp_ft6x46_i2c_data_write(uint8_t reg_addr, uint8_t *data_buf, uint16_t data_len)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- uint8_t *write_data = NULL;
- uint16_t send_len;
-
- ret = tp_i2c_rd_wr_param_check(data_buf, data_len);
- if (ret != 0) {
- tp_err("tp data write param invalid! ret=0x%x", ret);
- return ret;
- }
-
- send_len = data_len + sizeof(uint8_t);
-
- write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
- if (write_data == NULL) {
- tp_err("tp send buff malloc fail!");
- return EXT_ERR_MALLOC_FAILURE;
- }
-
- write_data[FT6X46_I2C_SEND_INDEX0] = reg_addr;
- ret = (uint32_t)memcpy_s(write_data + sizeof(uint8_t), send_len - sizeof(uint8_t), data_buf, data_len);
- if (ret != EOK) {
- tp_err("tp send_buf content copy fail! ret=0x%x", ret);
- return ret;
- }
-
- data.send_buf = write_data;
- data.send_len = send_len;
- data.receive_buf = NULL;
- data.receive_len = 0;
-
- for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_write(FT6X46_I2C_BUS, FT6X46_I2C_ADDR, &data);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- }
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp data write fail! ret=0x%x", ret);
- return ret;
- }
-
- tp_mem_free(write_data);
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno tp_ft6x46_i2c_data_write_reg(uint8_t addr, uint8_t val)
-{
- return tp_ft6x46_i2c_data_write(addr, &val, 1);
-}
-
-
-ext_errno ft6x46_host_peripheral_init(ft6x46_ctrl_attr *attr)
-{
- ext_errno ret;
-
- if (attr == NULL) {
- tp_err("ft6x46 communication interface cfg is empty!");
- return EXT_ERR_FAILURE;
- }
- ret = ft6x46_ctrl_attr_check(attr);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp invalid dev attr! ret=0x%x", ret);
- return ret;
- }
-
- ret = (ext_errno)memcpy_s(&(g_ctrl_attr), sizeof(ft6x46_ctrl_attr), attr, sizeof(ft6x46_ctrl_attr));
- if (ret != EOK) {
- tp_err("tp attr content copy fail! ret=0x%x", ret);
- return ret;
- }
-
- /* init i2c */
- errcode_t result;
- result = uapi_i2c_master_init(FT6X46_I2C_BUS, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */
- if (result != EXT_ERR_SUCCESS) {
- tp_err("tp i2c init fail! ret=0x%x", result);
- return EXT_ERR_SUCCESS;
- }
-
- tp_print("TOUCH:i2c_id = %d i2c_speed = %d slave_addr = 0x%x \r\n",
- g_ctrl_attr.i2c_id, g_ctrl_attr.i2c_speed, FT6X46_I2C_ADDR);
- g_host_dev_init_flag = true;
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_host_init_sample(void)
-{
- ext_errno ret;
- PRINT("**********ft6x46_host_init_sample**********\r\n");
- ret = ft6x46_host_peripheral_init(&g_ctrl_attr);
- ret = ft6x46_init();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp host init fail! ret=0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_reset(void)
-{
- uapi_gpio_set_dir(FT6X46_RESET_GPIO, GPIO_DIRECTION_OUTPUT);
- /* Config Gpio For Reset Pin */
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_HIGH);
- /* reset high delay 20ms */
- osDelay(20);
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_LOW);
- /* reset low delay 100ms */
- osDelay(100);
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_HIGH);
- /* reset high delay 200ms */
- osDelay(200);
- return EXT_ERR_SUCCESS;
-}
-
-void ft6x46_resume_reset(void)
-{
- uapi_gpio_set_dir(FT6X46_RESET_GPIO, GPIO_DIRECTION_OUTPUT);
- /* drvdata is global variable point and no need to handle null */
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_HIGH);
- osDelay(1);
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_LOW);
- /* delay 10ms */
- osDelay(10);
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_HIGH);
- /* delay 100ms */
- osDelay(200);
- uapi_gpio_set_dir(FT6X46_RESET_GPIO, GPIO_DIRECTION_INPUT);
-}
-
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ztw523 touch driver.
- * Author: @CompanyNameTag
- * Create: 2022-04-12
- */
-
-#ifndef FT6X46_CTRL_H
-#define FT6X46_CTRL_H
-
-#include "stdio.h"
-#include "debug_print.h"
-#include "stdint.h"
-#include "product.h"
-#include "td_base.h"
-#include "platform_core.h"
-#include "ft6x46_touch1.h"
-
-/* host peripheral definitions */
-
-//#define FT6X46_I2C_ADDR 0x20
-#define FT6X46_I2C_ADDR 0x38
-#define FT6X46_I2C_SPEED I2C_SPEED_MODE_SS
-#define FT6X46_REG_BYTE_LEN 2
-#define OFFSET_8_BITS 8
-#define FT6X46_REG_WRITE_LEN 4
-
-#define FT6X46_CMD_SEND_LEN 2
-// #define FT6X46_CMD_SEND_LEN 1
-
-#define FT6X46_REG_DATA_LEN 2
-#define FT6X46_I2C_TIME_MAX 3
-
-#define FT6X46_I2C_SEND_INDEX0 0
-#define FT6X46_I2C_SEND_INDEX1 1
-#define FT6X46_I2C_SEND_INDEX2 2
-#define FT6X46_I2C_SEND_INDEX3 3
-
-
-#define FTS_REG_POWER_MODE 0xA5
-
-
-typedef struct {
- uint32_t int_gpio;
- uint32_t reset_gpio;
- i2c_bus_t i2c_id;
- uint32_t i2c_speed;
-} ft6x46_ctrl_attr;
-
-typedef ext_errno (*ft6x46_bus_init)(ft6x46_ctrl_attr *attr);
-
-typedef struct {
- ft6x46_ctrl_attr attr;
- ft6x46_bus_init bus_init;
-} ft6x46_ctrl_ops;
-
-ext_errno ft6x46_host_peripheral_init(ft6x46_ctrl_attr *attr);
-ext_errno ft6x46_register_handle(const ft6x46_ctrl_ops *peri_data, touch_callback func);
-ext_errno ft6x46_unregister_handle(const ft6x46_ctrl_ops *peri_data);
-ext_errno ft6x46_reset(void);
-void ft6x46_resume_reset(void);
-void ft6x46_delay(uint32_t ms);
-
-ext_errno tp_ft6x46_i2c_data_read(uint8_t reg_addr, uint8_t *data_buf, uint32_t data_len);
-ext_errno tp_ft6x46_i2c_data_write(uint8_t reg_addr, uint8_t *data_buf, uint16_t data_len);
-ext_errno tp_ft6x46_i2c_data_write_reg(uint8_t addr, uint8_t val);
-
-#endif
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ztw523 touch driver.
- * Author: @CompanyNameTag
- * Create: 2022-04-12
- */
-
-#include "ft6x46_drv1.h"
-#include "touch_screen_def.h"
-#include "ft6x46_ctrl.h"
-#include "i2c.h"
-#include "debug_print.h"
-#include "hal_i2c.h"
-
-static ext_errno ft6x46_drv_init(ft6x46_ctrl_ops *config)
-{
- ext_errno ret;
- ft6x46_ctrl_ops *ops = config;
-
- tp_err("ft6x46_drv_init!11111");
-
- if (ops == NULL) {
- tp_err("peripheral ops is empty!");
- return EXT_ERR_FAILURE;
- }
-
- if (ops->bus_init == NULL) {
- tp_err("peripheral bus_init func is empty!");
- return EXT_ERR_FAILURE;
- }
-
- ret = ops->bus_init(&(ops->attr));
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("ZTW523 bus_init fail! ret = 0x%x", ret);
- return ret;
- }
-
- ret = ft6x46_init();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("ZTW523 init fail! ret = 0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_drv_deinit(void)
-{
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_drv_get_info(uint8_t *data, uint8_t data_len)
-{
- return ft6x46_irq_callback(data, data_len);
-}
-
-static ext_errno ft6x46_drv_suspend(void)
-{
- //return ft6x46_set_power_mode(MC_TP_SUSPEND_SCAN);
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_drv_resume(void)
-{
- //return ft6x46_set_power_mode(MC_TP_RESUME_SCAN);
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_drv_sleep(void)
-{
- //return ft6x46_set_power_mode(MC_TP_SLEEP_WORK_MODE);
- return EXT_ERR_SUCCESS;
-}
-
-touch_peripheral_api g_ft6x46_api = {
- .touch_init = ft6x46_drv_init,
- .touch_deinit = ft6x46_drv_deinit,
- .touch_get_tpinfo = ft6x46_drv_get_info,
- .touch_suspend = ft6x46_drv_suspend,
- .touch_resume = ft6x46_drv_resume,
- .touch_sleep = ft6x46_drv_sleep,
- .touch_bus_init = ft6x46_host_peripheral_init,
- .register_callback = ft6x46_register_handle,
- .unregister_callback = ft6x46_unregister_handle,
-};
-
-ft6x46_ctrl_ops g_ft6x46_ctrl = {
- .attr = {
- .int_gpio = FT6X46_INT_GPIO,
- .i2c_id = FT6X46_I2C_BUS,
- .i2c_speed = I2C_SPEED_MODE_SS,
- },
- .bus_init = (ft6x46_bus_init)ft6x46_host_peripheral_init,
-};
-
-void *touch_screen_get_api(void)
-{
- return ((void *)&g_ft6x46_api);
-}
-
-void *touch_screen_get_peri_attr(void)
-{
- return ((void *)&g_ft6x46_ctrl);
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ztw523 touch driver.
- * Author: @CompanyNameTag
- * Create: 2022-04-12
- */
-
-#ifndef FT6X46_DRV1_H
-#define FT6X46_DRV1_H
-
-void *touch_screen_get_api(void);
-void *touch_screen_get_peri_attr(void);
-
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ft6x46 touch driver.
- * Author: @CompanyNameTag
- * Create: 2021-05-29
- */
-
-#include "ft6x46_touch1.h"
-#include "time.h"
-#include "soc_osal.h"
-#include "osal_timer.h"
-#include "osal_mutex.h"
-#include "securec.h"
-#include "ft6x46_ctrl.h"
-#include "tcxo.h"
-#include "cmsis_os2.h"
-#include "common_def.h"
-
-#ifdef __cplusplus
-#if __cplusplus
-extern "C" {
-#endif
-#endif
-
-ft6x46_drv_data g_ft6x46_drv = {
- .chip_status = FT6X46_NOT_READY,
- .ops_mux = {0},
- .int_mask = FT6X46_INT_MASK,
- .work_status = FT6X46_WORK_INVALID,
- .fw_upgrade_flag = TD_FALSE,
- .gesture_wakeup = TD_FALSE,
- .host_dev_init_flag = TD_FALSE,
- .chip_info = FT6X46_DEVICE_INFO,
- .p_void = NULL,
-};
-static ext_errno ft6x46_config(void);
-static void ft6x46_set_irq_mode(ft6x46_irq_status irq_status, uint16_t irq_mask)
-{
- unused(irq_mask);
- ext_errno ret;
- uint16_t reg_write = 0;
-
- tp_print("TOUCH:set irq mode %d", irq_status);
-
- switch (irq_status) {
- case FT6X46_IRQ_DISABLE:
- /* Write Int Register */
- reg_write = FT6X46_INT_NONE;
- // ret = tp_i2c_reg_write(FT6X46_INT_ENABLE_FLAG, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("TOUCH:set irq mode disable 0x%x", ret);
- // return;
- // }
- break;
-
- case FT6X46_IRQ_ENABLE:
- /* Write Int Register */
- reg_write = FT6X46_INT_MASK;
- // ret = tp_i2c_reg_write(FT6X46_INT_ENABLE_FLAG, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("TOUCH:set irq mode enable 0x%x", ret);
- // return;
- // }
- break;
-
- default:
- tp_err("TOUCH:not support irq mode 0x%x", irq_status);
- break;
- }
-
- return;
-}
-
-static ext_errno ft6x46_parse_gesture_input(void)
-{
- ext_errno ret;
- uint16_t gesture_val;
- uint16_t reg_read;
- uint16_t reg_write;
-
- reg_read = 0;
- // ret = tp_i2c_data_read(FT6X46_GESTURE_WAKEUP_REG, (uint8_t *)®_read, FT6X46_DATA_LEN);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("TOUCH:parse gesture input read fail 0x%x", ret);
- // return EXT_ERR_FAILURE;
- // }
- gesture_val = reg_read;
- tp_print("TOUCH:parse gesture input ok 0x%x", reg_read);
-
- reg_write = 0;
- // ret = tp_i2c_reg_write(FT6X46_GESTURE_WAKEUP_REG, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("TOUCH:parse gesture input write fail 0x%x", ret);
- // return EXT_ERR_FAILURE;
- // }
-
- switch (gesture_val) {
- case FT6X46_GESTURE_SIGNAL_CLICK:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_SHORT_CLICK;
- break;
- case FT6X46_GESTURE_DOUBLE_CLICK:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_DOUBLE_CLICK;
- break;
- case FT6X46_GESTURE_SLIDE_UP:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_SLIDE_UP;
- break;
- case FT6X46_GESTURE_SLIDE_DOWN:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_SLIDE_DOWN;
- break;
- default:
- tp_err("TOUCH:gesture %d not Support", gesture_val);
- return EXT_ERR_FAILURE;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_parse_touch_input(void)
-{
- static uint8_t touch_input[FT6X46_TOUCHINFO_LEN] = { 0 };
- uint16_t touch_status;
- uint16_t x_axis;
- uint16_t y_axis;
- uint8_t sub_status;
-
- ext_errno ret = tp_i2c_data_read(FT6X46_POINT_STATUS_REG, touch_input, FT6X46_TOUCHINFO_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:touch input read error! ret = 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- touch_status = ((uint16_t)touch_input[FT6X46_STATUSH_OFFSET] << FT6X46_REGDATA_SHIFT) |
- (touch_input[FT6X46_STATUSL_OFFSET]);
- if ((touch_status & FT6X46_PALM_MASK) != 0) {
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_COVER;
- return EXT_ERR_SUCCESS;
- }
-
- if (touch_status != 0) {
- sub_status = touch_input[FT6X46_SUBSTATUS_OFFSET] & FT6X46_TOUCHINFO_MASK;
- x_axis = ((uint16_t)touch_input[FT6X46_XH_OFFSET] << FT6X46_REGDATA_SHIFT) | (touch_input[FT6X46_XL_OFFSET]);
- y_axis = ((uint16_t)touch_input[FT6X46_YH_OFFSET] << FT6X46_REGDATA_SHIFT) | (touch_input[FT6X46_YL_OFFSET]);
-
- switch (sub_status) {
- case FT6X46_TOUCH_DOWN:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_PRESS;
- break;
- /* Need To Modify For UI */
- case FT6X46_TOUCH_EXIST:
- case FT6X46_TOUCH_MOVE:
- case FT6X46_TOUCH_NONE:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_MOVE;
- break;
- case FT6X46_TOUCH_UP:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_RELEASE;
- break;
-
- default:
- tp_err("TOUCH:parse input wrong status|substatus 0x%08x",
- ((uint32_t)touch_status << FT6X46_SHIFT_16_BIT) | (uint32_t)sub_status);
- return EXT_ERR_FAILURE;
- }
- g_ft6x46_drv.touch_msg.tp_event_info.x_axis[0] = x_axis;
- g_ft6x46_drv.touch_msg.tp_event_info.y_axis[0] = y_axis;
- g_ft6x46_drv.touch_msg.tv_usec = (uint32_t)uapi_tcxo_get_ms();
- } else {
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_INVALID;
- tp_print("TOUCH:parse wrong touchstatus %d", touch_status);
- return EXT_ERR_SUCCESS;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-
-/*Max point numbers of gesture trace*/
-#define MAX_POINTS_GESTURE_TRACE 6
-/*Length of gesture information*/
-#define MAX_LEN_GESTURE_INFO (MAX_POINTS_GESTURE_TRACE * 4 + 2)
-
-/*Max point numbers of touch trace*/
-#define MAX_POINTS_TOUCH_TRACE 1
-/*Length of touch information*/
-#define MAX_LEN_TOUCH_INFO (MAX_POINTS_TOUCH_TRACE * 6 + 2)
-
-/*Max touch points that touch controller supports*/
-#define FTS_MAX_POINTS_SUPPORT 10
-
-struct fts_ts_event {
- int x; /*x coordinate */
- int y; /*y coordinate */
- int p; /* pressure */
- int type; /* touch event flag: 0 -- down; 1-- up; 2 -- contact */
- int id; /*touch ID */
- int area; /*touch area*/
-};
-
-static ext_errno fts_touch_process(void)
-{
- ext_errno ret;
- uint8_t i = 0;
- uint8_t base = 0;
- uint8_t regaddr = 0x01;
- uint8_t buf[MAX_LEN_TOUCH_INFO];/*A maximum of two points are supported*/
- uint8_t point_num = 0;
- uint8_t touch_event_nums = 0;
- uint8_t point_id = 0;
- struct fts_ts_event events[FTS_MAX_POINTS_SUPPORT]; /* multi-touch */
-
-
- /*read touch information from reg0x01*/
- ret = tp_ft6x46_i2c_data_read(regaddr, buf, MAX_LEN_TOUCH_INFO);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("Read touch information from reg0x01 fails");
- return ret;
- }
-
- /*print touch buffer, for debug usage*/
- //log_touch_buf(buf, MAX_LEN_TOUCH_INFO);
-
- //if ((buf[1] == 0xFF) && (buf[2] == 0xFF) && (buf[3] == 0xFF)) {
- // tp_err("FW initialization, need recovery");
- // if (fts_data->gesture_support && fts_data->suspended)
- // fts_write_reg(FTS_REG_GESTURE_EN, FTS_REG_GESTURE_ENABLE);
- //}
-
- /*parse touch information based on register map*/
- memset(events, 0xFF, sizeof(struct fts_ts_event) * FTS_MAX_POINTS_SUPPORT);
- point_num = buf[1] & 0x0F;
- if (point_num > FTS_MAX_POINTS_SUPPORT) {
- tp_err("invalid point_num(%d)", point_num);
- return EXT_ERR_FAILURE;
- }
-
- for (i = 0; i < MAX_POINTS_TOUCH_TRACE; i++) {
- base = 2 + i * 6;
- point_id = buf[base + 2] >> 4;
- if (point_id >= MAX_POINTS_TOUCH_TRACE) {
- tp_err("abnormal touch data point_id %d\r\n",point_id);
- break;
- }
-
- events[i].x = ((buf[base] & 0x0F) << 8) + buf[base + 1];
- events[i].y = ((buf[base + 2] & 0x0F) << 8) + buf[base + 3];
- events[i].id = point_id;
- events[i].type = (buf[base] >> 6) & 0x03;
- events[i].p = buf[base + 4];
- events[i].area = buf[base + 5];
- if (((events[i].type == 0) || (events[i].type == 2)) & (point_num == 0)) {
- tp_err("abnormal touch data from fw");
- return EXT_ERR_FAILURE;
- }
-
- touch_event_nums++;
- }
-
- if (touch_event_nums == 0) {
- tp_err("no touch point information(%02x)", buf[1]);
- return EXT_ERR_FAILURE;
- }
-
- /*print touch information*/
- //log_touch_info(events, touch_event_nums);
-
- /*Now you have get the touch information, you can report anything(X/Y coordinates...) you want to system*/
- /*TODO...(report touch information to system)*/
- /*Below sample code is a pseudo code*/
-
- for (i = 0; i < touch_event_nums; i++) {
- #if 0
- if ((events[i].type == 0) || (events[i].type == 2)) {
- /* The event of point(point id is events[i].id) is down event, the finger of this id stands for is
- * pressing on the screen.*/
- /*TODO...(down event)*/
- } else {
- /*TODO...(up event)*/
- }
- #endif
- switch (events[i].type) {
- case 0:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_PRESS;
- break;
- /* Need To Modify For UI */
- case 2:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_MOVE;
- break;
- case 1:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_RELEASE;
- break;
-
- default:
- tp_err("TOUCH:parse input wrong status|substatus");
- return EXT_ERR_FAILURE;
- }
- g_ft6x46_drv.touch_msg.tp_event_info.x_axis[0] = events[i].x;
- g_ft6x46_drv.touch_msg.tp_event_info.y_axis[0] = events[i].y;
- g_ft6x46_drv.touch_msg.tv_usec = (uint32_t)uapi_tcxo_get_ms();
- tp_print("event %d, x %d, y %d, time %d",
- g_ft6x46_drv.touch_msg.tp_event,
- g_ft6x46_drv.touch_msg.tp_event_info.x_axis[0],
- g_ft6x46_drv.touch_msg.tp_event_info.y_axis[0],
- g_ft6x46_drv.touch_msg.tv_usec);
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_parse_input(void)
-{
- ext_errno ret = EXT_ERR_FAILURE;
- uint16_t reg_write;
-
- if (g_ft6x46_drv.gesture_wakeup == TD_TRUE) {
- ret = ft6x46_parse_gesture_input();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:parse gesture input fail 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- } else {
- ret = ft6x46_parse_touch_input();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:parse touch input fail 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- }
- /* clear int */
- reg_write = FT6X46_CLEAR_INT_STATUS_CMD;
- ret = tp_i2c_cmd_write(reg_write);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:parse input clear int fail 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_irq_callback(uint8_t *data_buf, uint8_t data_len)
-{
- unused(data_len);
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_INVALID;
-
- int32_t mem_ret;
-
- fts_touch_process();
-
-
- mem_ret = memcpy_s(data_buf, sizeof(input_event_info), &(g_ft6x46_drv.touch_msg), sizeof(input_event_info));
- if (mem_ret != EOK) {
- tp_err("TOUCH:mem cpy error, ret = 0x%x", mem_ret);
- return EXT_ERR_FAILURE;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-/* chip id */
-#define FTS_CHIP_IDH 0x64
-#define FTS_CHIP_IDL 0x56
-
-
-#define FTS_CMD_READ_ID 0x90
-
-/* register address */
-#define FTS_REG_CHIP_ID 0xA3
-#define FTS_REG_CHIP_ID2 0x9F
-
-#define FTS_CMD_START_DELAY 12
-
-
-static ext_errno ft6x46_power_sequence(void)
-{
- ext_errno ret;
- uint8_t chip_id[2] = { 0 };
-
- /*delay 200ms,wait fw*/
- osDelay(FT6X46_GENERAL_DELAY_200);
-
- /*get chip id*/
- ret = tp_ft6x46_i2c_data_read(FTS_REG_CHIP_ID, &chip_id[0], 1);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("222222222get ic information, error1");
- return EXT_ERR_TP_ZTW523_POWERUP_READ_CHIPID;
- }
- ret = tp_ft6x46_i2c_data_read(FTS_REG_CHIP_ID2, &chip_id[1], 1);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("3333333get ic information, error2");
- return EXT_ERR_TP_ZTW523_POWERUP_READ_CHIPID;
- }
- // tp_print("11111111111111get ic information, chip id = 0x%02x%02x", chip_id[0], chip_id[1]);
- if ((FTS_CHIP_IDH == chip_id[0]) && (FTS_CHIP_IDL == chip_id[1])) {
- tp_warning("get ic information, chip id = 0x%02x%02x", chip_id[0], chip_id[1]);
- return EXT_ERR_SUCCESS;
- }
-
- // tp_err("fw is invalid, need read boot id");
- ret = tp_ft6x46_i2c_data_write_reg(0x55, 0xAA);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("start cmd write fail");
- return ret;
- }
-
- osDelay(FTS_CMD_START_DELAY);
- ret = tp_ft6x46_i2c_data_read(FTS_CMD_READ_ID, chip_id, 2);
- if((ret == EXT_ERR_SUCCESS) && ((FTS_CHIP_IDH == chip_id[0]) && (FTS_CHIP_IDL == chip_id[1]))) {
- tp_err("get ic information, boot id = 0x%02x%02x", chip_id[0], chip_id[1]);
- ret = EXT_ERR_SUCCESS;
- } else {
- tp_err("read boot id fail,read:0x%02x%02x", chip_id[0], chip_id[1]);
- return EXT_ERR_FAILURE;
- }
- return ret;
-
-}
-
-static void ft6x46_clear_interrupt(uint8_t retry_times, uint16_t delay)
-{
- uint16_t reg_write = FT6X46_CLEAR_INT_STATUS_CMD;
- ext_errno ret;
- uint8_t times;
- for (times = 1; times <= retry_times; times++) {
- ret = tp_i2c_cmd_write(reg_write);
- if (ret == EXT_ERR_SUCCESS) {
- return;
- }
- osDelay(delay);
- }
-
- if (times > retry_times) {
- tp_warning("TOUCH:Clear Int Cmd1! ret = 0x%x", ret);
- }
-}
-
-static ext_errno ft6x46_reg_config(void)
-{
- ext_errno ret;
- // uint16_t reg_write;
-
- // /* Initial Touch Mode */
- // reg_write = FT6X46_POINT_MODE;
-// ret = tp_i2c_reg_write(FT6X46_INITIAL_TOUCH_MODE, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_INIT_TOUCHMODE;
-// }
-
-// ret = tp_i2c_reg_write(FT6X46_TOUCH_MODE, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_TOUCHMODE;
-// }
-
-// /* Set Finger Num */
-// reg_write = FT6X46_MAX_SUPPORTED_FINGER_NUM;
-// ret = tp_i2c_reg_write(FT6X46_SUPPORTED_FINGER_NUM, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_FINGER_NUM;
-// }
-
-// /* Set X Resolution */
-// reg_write = FT6X46_RES_MAX_X;
-// ret = tp_i2c_reg_write(FT6X46_X_RESOLUTION, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_XRES;
-// }
-
-// /* Set Y Resolution */
-// reg_write = FT6X46_RES_MAX_Y;
-// ret = tp_i2c_reg_write(FT6X46_Y_RESOLUTION, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_YRES;
-// }
-
-// /* Set Lock Point Range */
-// ret = tp_i2c_reg_write(FT6X46_HOLD_POINT_TRESHHOLD, FT6X46_POINT_TRESHHOLD);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_YRES;
-// }
-
-// /* Write Calib Cmd */
-// reg_write = FT6X46_CALIBRATE_CMD;
-// ret = tp_i2c_cmd_write(reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_CALIBCMD;
-// }
-
-// /* Write Int Register */
-// reg_write = FT6X46_INT_MASK;
-// ret = tp_i2c_reg_write(FT6X46_INT_ENABLE_FLAG, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_INTMASK;
-// }
-// #ifdef FT6X46_GESTURE_WAKEUP
-// /* Write Gesture Register */
-// reg_write = FT6X46_GESTURE_WAKEUP_INIT;
-// ret = tp_i2c_reg_write(FT6X46_GESTURE_WAKEUP_REG, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_GESWAKEUP;
-// }
-// #endif
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_configuration(void)
-{
- ext_errno ret;
- uint8_t retry_times = 0;
- uint16_t reg_read;
- uint16_t reg_write;
-
- /* Software Reset */
- reg_write = FT6X46_SWRESET_CMD;
- for (retry_times = 0; retry_times < FT6X46_RETRY_TIMES; retry_times++) {
- ret = tp_i2c_cmd_write(reg_write);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- osDelay(FT6X46_RESETHIGH_DELAY);
- }
-
- if (retry_times >= FT6X46_RETRY_TIMES) {
- tp_err("TOUCH:configuration sw reset fail! ret = 0x%x", ret);
- return EXT_ERR_TP_ZTW523_CONFIG_RESET;
- }
-
- /* Read Firmware Version */
- reg_read = 0;
- ret = tp_i2c_data_read(FT6X46_FIRMWARE_VERSION, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- return EXT_ERR_TP_ZTW523_CONFIG_READ_FWVERSION;
- }
- g_ft6x46_drv.firmware_version = reg_read;
-
- /* Read Minor Firmware Version */
- reg_read = 0;
- ret = tp_i2c_data_read(FT6X46_MINOR_FW_VERSION, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- return EXT_ERR_TP_ZTW523_CONFIG_READ_FWMINORVERSION;
- }
- g_ft6x46_drv.minor_firmware_version = reg_read;
-
- /* Read Hw ID */
- reg_read = 0;
- ret = tp_i2c_data_read(FT6X46_HW_ID, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("configuration error (read hw id) 0x%x", ret);
- return EXT_ERR_TP_ZTW523_GET_HWID_READ_ID;
- }
- g_ft6x46_drv.chip_hw_id = reg_read;
-
- /* Read Register Version */
- reg_read = 0;
- ret = tp_i2c_data_read(FT6X46_DATA_VERSION_REG, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- return EXT_ERR_TP_ZTW523_CONFIG_READ_DATAREG;
- }
- g_ft6x46_drv.reg_version = reg_read;
-
- ret = ft6x46_reg_config();
- if (ret != EXT_ERR_SUCCESS) {
- return ret;
- }
-
- /* Write Clear Int Cmd */
- ft6x46_clear_interrupt(FT6X46_RETRY_TIMES, FT6X46_GENERAL_DELAY_1);
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_get_panel_info(void)
-{
- ext_errno ret;
- uint16_t reg_read = 0;
- /* Read X Channel Num */
- ret = tp_i2c_data_read(FT6X46_TOTAL_NUMBER_OF_X, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:GetPanelInfo error read x channel 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
-
- g_ft6x46_drv.panel_info.xchannel_num = reg_read;
- /* Read Y Channel Num */
- reg_read = 0;
- ret = tp_i2c_data_read(FT6X46_TOTAL_NUMBER_OF_Y, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:GetPanelInfo error read y channel 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
-
- g_ft6x46_drv.panel_info.ychannel_num = reg_read;
- g_ft6x46_drv.panel_info.total_dnd_num =
- g_ft6x46_drv.panel_info.xchannel_num * g_ft6x46_drv.panel_info.ychannel_num;
- g_ft6x46_drv.panel_info.total_self_dnd_num =
- g_ft6x46_drv.panel_info.xchannel_num + g_ft6x46_drv.panel_info.ychannel_num;
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_standby(void)
-{
- ext_errno ret;
- uint16_t reg_write;
- uint8_t retry_times;
-
- if ((g_ft6x46_drv.work_status == FT6X46_WORK_STANDBY) || (g_ft6x46_drv.work_status == FT6X46_WORK_SLEEP)) {
- tp_print("alread standby or sleep");
- return EXT_ERR_SUCCESS;
- }
- /* Disabel Irq */
- ft6x46_set_irq_mode(FT6X46_IRQ_DISABLE, FT6X46_INT_NONE);
-
- reg_write = FT6X46_POWER_CTL_BEGIN;
- ret = tp_i2c_cmd_write(reg_write);
- if (ret != EXT_ERR_SUCCESS) {
- ft6x46_set_irq_mode(FT6X46_IRQ_ENABLE, FT6X46_INT_MASK);
- tp_err("standby failed 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- /* delay 10 ms */
- osDelay(FT6X46_GENERAL_DELAY_10);
- /* Send Clear Int Cmd */
- reg_write = FT6X46_CLEAR_INT_STATUS_CMD;
- for (retry_times = 0; retry_times < FT6X46_INIT_RETRY_TIMERS; retry_times++) {
- ret = tp_i2c_cmd_write(reg_write);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- /* delay 10 ms */
- osDelay(FT6X46_GENERAL_DELAY_10);
- }
-
- /* Send Idle Cmd */
- reg_write = FT6X46_IDLE_CMD;
- for (retry_times = 0; retry_times < FT6X46_INIT_RETRY_TIMERS; retry_times++) {
- ret = tp_i2c_cmd_write(reg_write);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- /* delay 10 ms */
- osDelay(FT6X46_GENERAL_DELAY_10);
- }
-
- reg_write = FT6X46_POWER_CTL_END;
- ret = tp_i2c_cmd_write(reg_write);
- if (ret != EXT_ERR_SUCCESS) {
- ft6x46_set_irq_mode(FT6X46_IRQ_ENABLE, FT6X46_INT_MASK);
- tp_err("standby failed 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- /* delay 10 ms */
- osDelay(FT6X46_GENERAL_DELAY_10);
- ft6x46_set_irq_mode(FT6X46_IRQ_ENABLE, FT6X46_INT_MASK);
- g_ft6x46_drv.work_status = FT6X46_WORK_STANDBY;
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_suspend(void)
-{
- ext_errno ret;
- // uint16_t reg_write;
- // uint8_t retry_times = 0;
-
- if (g_ft6x46_drv.work_status == FT6X46_WORK_SLEEP) {
- tp_print("TOUCH:alread suspend");
- return EXT_ERR_SUCCESS;
- }
- /*Host writes 0x03 to register address 0xA5 to enter into sleep mode.*/
- ret = tp_ft6x46_i2c_data_write_reg(FTS_REG_POWER_MODE, 0x03);
- if(ret != 0) {
- tp_err("ft6x46_suspend enter sleep mode fails.ret:0x%X",ret);
- return EXT_ERR_FAILURE;
- } else {
- tp_warning("ft6x46_suspend enter sleep mode success.");
- }
- g_ft6x46_drv.work_status = FT6X46_WORK_SLEEP;
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_resume_post(void)
-{
- ext_errno ret;
- // uint16_t reg_write;
- // uint16_t cmd_write;
-
- // reg_write = FT6X46_ENABLE;
- // ret = tp_i2c_reg_write(FT6X46_REG_CMD_ENABLE, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("resume post reg cmd failed 0x%x", ret);
- // return EXT_ERR_FAILURE;
- // }
- // /* delay for ms */
- // osDelay(FT6X46_GENERAL_DELAY_1);
-
- // cmd_write = FT6X46_REG_INTN_CLEAR;
- // ret = tp_i2c_cmd_write(cmd_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // return EXT_ERR_TP_ZTW523_POWERUP_INTN_CLEAR;
- // }
- // osDelay(FT6X46_GENERAL_DELAY_1);
-
- // reg_write = FT6X46_ENABLE;
- // ret = tp_i2c_reg_write(FT6X46_REG_NVM, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("resume post reg nvm failed 0x%x", ret);
- // return EXT_ERR_FAILURE;
- // }
- // osDelay(FT6X46_GENERAL_DELAY_1);
-
- // reg_write = FT6X46_ENABLE;
- // ret = tp_i2c_reg_write(FT6X46_REG_PROGRAM_START, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("resume post reg program start failed 0x%x", ret);
- // return EXT_ERR_FAILURE;
- // }
-
- // osDelay(FT6X46_GENERAL_DELAY_50); /* delay 50 ms */
-
- return EXT_ERR_SUCCESS;
-}
-ext_errno ft6x46_resume(void)
-{
- ext_errno ret;
- uint8_t retry_times = 0;
-
- g_ft6x46_drv.work_status = FT6X46_WORK_RESUME;
-
- ft6x46_resume_reset();
-
- // for (; retry_times < FT6X46_INIT_RETRY_TIMERS; retry_times++) {
- // ret = ft6x46_resume_post();
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("resume: post err %d", ret);
- // /* retry delay 200ms */
- // osDelay(FT6X46_GENERAL_DELAY_200);
- // } else {
- // break;
- // }
- // }
-
- // if (retry_times == FT6X46_INIT_RETRY_TIMERS) {
- // tp_err("resume: overtimes %d", retry_times);
- // goto resume_exit;
- // }
- ret = ft6x46_config();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 init fail 0x%x", ret);
- goto resume_exit;
- }
- // ret = ft6x46_configuration();
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("TOUCH:resume config fail 0x%x", ret);
- // return EXT_ERR_TP_ZTW523_INIT_CONFIG;
- // }
-
- g_ft6x46_drv.work_status = FT6X46_WORK_NORMAL;
-#ifdef FT6X46_GESTURE_WAKEUP
- g_ft6x46_drv.gesture_wakeup = TD_FALSE;
-#endif
- /* Enable Irq */
- ft6x46_set_irq_mode(FT6X46_IRQ_ENABLE, FT6X46_INT_MASK);
-
- return EXT_ERR_SUCCESS;
-
-resume_exit:
-
- /* Enable Irq */
- ft6x46_set_irq_mode(FT6X46_IRQ_DISABLE, FT6X46_INT_MASK);
-
- tp_err("resume failed 0x%x", ret);
-
- return EXT_ERR_FAILURE;
-}
-
-ext_errno ft6x46_get_power_mode(uint32_t *power_mode)
-{
- if (power_mode == NULL) {
- return EXT_ERR_FAILURE;
- }
-
- *power_mode = (uint32_t)(g_ft6x46_drv.work_status);
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_set_standby_mode(void)
-{
- ext_errno ret;
-
- ret = ft6x46_standby();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 set standby 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
-#ifdef FT6X46_GESTURE_WAKEUP
- g_ft6x46_drv.gesture_wakeup = TD_TRUE;
-#endif
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_set_sleep_mode(void)
-{
- ext_errno ret;
-
- ret = ft6x46_suspend();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 set suspend fail 0x%x", ret);
- }
-#ifdef FT6X46_GESTURE_WAKEUP
- g_ft6x46_drv.gesture_wakeup = TD_FALSE;
-#endif
- g_ft6x46_drv.work_status = FT6X46_WORK_SLEEP;
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_set_normal_mode(void)
-{
- ext_errno ret;
- uint16_t reg_write;
-
- if (g_ft6x46_drv.work_status == FT6X46_WORK_NORMAL) {
- return EXT_ERR_SUCCESS;
- }
-
- reg_write = FT6X46_SDRAM_RESET;
- ret = tp_i2c_cmd_write(reg_write);
- if (ret != EXT_ERR_SUCCESS) {
- return EXT_ERR_FAILURE;
- }
- /* delay 50ms */
- osDelay(FT6X46_GENERAL_DELAY_50);
- ret = ft6x46_power_sequence();
- if (ret != EXT_ERR_SUCCESS) {
- return EXT_ERR_FAILURE;
- }
- ft6x46_set_irq_mode(FT6X46_IRQ_ENABLE, FT6X46_INT_MASK);
- g_ft6x46_drv.work_status = FT6X46_WORK_NORMAL;
-#ifdef FT6X46_GESTURE_WAKEUP
- g_ft6x46_drv.gesture_wakeup = TD_FALSE;
-#endif
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_set_power_mode(tp_work_mode power_mode)
-{
- ext_errno ret = EXT_ERR_SUCCESS;
-
- switch (power_mode) {
- case MC_TP_SLEEP_WORK_MODE:
- case MC_TP_SUSPEND_SCAN:
- ret = ft6x46_set_sleep_mode();
- break;
- case MC_TP_NORMAL_WORK_MODE:
- case MC_TP_RESUME_SCAN:
- ret = ft6x46_set_normal_mode();
- break;
- case MC_TP_STANDBY_WORK_MODE:
- ret = ft6x46_set_standby_mode();
- break;
- default:
- tp_err("TOUCH:ft6x46 not support powermode 0x%x", power_mode);
- ret = EXT_ERR_FAILURE;
- break;
- }
-
- return ret;
-}
-
-static ext_errno ft6x46_config(void)
-{
- ext_errno ret;
-
- /* Step 1 hardware reset */
- ret = ft6x46_reset();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:Init reset fail 0x%x", ret);
- return EXT_ERR_TP_ZTW523_INIT_RESET;
- }
-
- /* Step 2 power up */
- ret = ft6x46_power_sequence();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:init powerup fail 0x%x", ret);
- return EXT_ERR_TP_ZTW523_INIT_POWERUP;
- }
-
-#if 0
- /* Step 3 configuration */
- ret = ft6x46_configuration();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:init config fail 0x%x", ret);
- return EXT_ERR_TP_ZTW523_INIT_CONFIG;
- }
-
- /* Step 3 Panel Info */
- ret = ft6x46_get_panel_info();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:init get panelinfo fail 0x%x", ret);
- return EXT_ERR_TP_ZTW523_INIT_GETINFO;
- }
-#endif
-
- /* Record Status For Init */
- g_ft6x46_drv.chip_status = FT6X46_READY;
- g_ft6x46_drv.work_status = FT6X46_WORK_NORMAL;
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_resource_deinit(void)
-{
- g_ft6x46_drv.work_status = FT6X46_WORK_INVALID;
- g_ft6x46_drv.fw_upgrade_flag = TD_FALSE;
- osal_mutex_destroy(&g_ft6x46_drv.ops_mux);
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_init(void)
-{
- ext_errno ret = EXT_ERR_FAILURE;
- ext_errno err_ret;
-
- /* create tp operation mutex */
- if (g_ft6x46_drv.ops_mux.mutex == NULL) {
- ret = osal_mutex_init(&(g_ft6x46_drv.ops_mux));
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 init create mux lock fail 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- }
-
- /* get tp operater mutex */
- ret = osal_mutex_lock_timeout(&g_ft6x46_drv.ops_mux, FT6X46_OPERATER_MUTEX_WAIT_TIME);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 init wait mux lock fail 0x%x", ret);
- goto init_fail;
- }
-
- /* tp hardware reset and init */
- ret = ft6x46_config();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 init fail 0x%x", ret);
- goto init_fail;
- }
-
- /* release tp operater mutex */
- osal_mutex_unlock(&g_ft6x46_drv.ops_mux);
-
- tp_print("TOUCH:ft6x46 init succ!");
- return EXT_ERR_SUCCESS;
-
-init_fail:
- /* release tp operater mutex */
- osal_mutex_unlock(&g_ft6x46_drv.ops_mux);
- err_ret = ft6x46_resource_deinit();
- if (err_ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:delete mux lock err! ret = 0x%x", err_ret);
- }
- return ret;
-}
-
-ext_errno ft6x46_deinit(void)
-{
- ext_errno ret = ft6x46_resource_deinit();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH: ft6x46 deinit fail! ret = 0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-#ifdef __cplusplus
-#if __cplusplus
- }
-#endif
-#endif
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ztw523 touch driver.
- * Author: @CompanyNameTag
- * Create: 2021-05-29
- */
-
-#ifndef FT6X46_TOUCH1_H
-#define FT6X46_TOUCH1_H
-
-#include "stdio.h"
-#include "soc_errno.h"
-#include "soc_osal.h"
-#include "touch_screen_def.h"
-#include "platform_core.h"
-
-#ifdef __cplusplus
-#if __cplusplus
-extern "C" {
-#endif
-#endif
-
-/* ztw523 definitions */
-/* max wait time */
-#define FT6X46_OPERATER_MUTEX_WAIT_TIME 3000 /* operater tp mutex timeout ms */
-#define FT6X46_CMCP_WAIT_TIMEOUT 1000
-/* define some properties value */
-#define FT6X46_ENABLE 0x0001
-#define FT6X46_DISABLE 0x0000
-#define FT6X46_DATA_LEN 2
-#define FT6X46_POWERON_DELAY 100
-#define FT6X46_POWEROFF_DELAY 100
-#define FT6X46_RESETHIGH_DELAY 10
-#define FT6X46_CLEARINT_DELAY 10
-#define FT6X46_FIRMWAREON_DELAY 200
-#define FT6X46_INIT_RETRY_TIMERS 3
-#define FT6X46_SETMODE_RETRY_TIMERS 3
-#define FT6X46_SOFTRESET_RETRY_TIMES 10
-#define FT6X46_RETRY_TIMES 10
-#define FT6X46_DEVICE_INFO "zinitix,ft6x46"
-#define FT6X46_DEVICE_INFO_SIZE sizeof(FT6X46_DEVICE_INFO)
-#define FT6X46_MAX_SUPPORTED_FINGER_NUM 1
-#define FT6X46_POINT_MODE 1
-#define FT6X46_CALIB_TOUCH_MODE 0x07
-#define FT6X46_REGDATA_SHIFT 8
-#define FT6X46_GENERAL_DELAY_1 1
-#define FT6X46_GENERAL_DELAY_5 5
-#define FT6X46_GENERAL_DELAY_10 10
-#define FT6X46_GENERAL_DELAY_20 20
-#define FT6X46_GENERAL_DELAY_25 25
-#define FT6X46_GENERAL_DELAY_30 30
-#define FT6X46_GENERAL_DELAY_50 50
-#define FT6X46_GENERAL_DELAY_100 100
-#define FT6X46_GENERAL_DELAY_200 200
-#define FT6X46_GENERAL_DELAY_500 500
-#define FT6X46_GENERAL_RETRY_1 1
-#define FT6X46_GENERAL_RETRY_2 2
-#define FT6X46_GENERAL_RETRY_3 3
-#define FT6X46_GENERAL_RETRY_4 4
-#define FT6X46_GENERAL_RETRY_10 10
-#define FT6X46_RAWDATA_DELAY_FOR_HOST 100
-#define FT6X46_FW_JUMP_CODE 0x0048
-#define FT6X46_REPORT_RATE 60
-#define FT6X46_PIXEL_THRESHOLD 5
-
-#ifndef FT6X46_RES_MAX_X
-#define FT6X46_RES_MAX_X 466
-#endif
-
-#ifndef FT6X46_RES_MAX_Y
-#define FT6X46_RES_MAX_Y 466
-#endif
-
-#ifndef FT6X46_POINT_TRESHHOLD
-#define FT6X46_POINT_TRESHHOLD 0x19
-#endif
-
-#define FT6X46_TOUCHINFO_HEAD_LEN 4
-#define FT6X46_POINTINFO_LEN 6
-#define FT6X46_TOUCHINFO_LEN (FT6X46_TOUCHINFO_HEAD_LEN + FT6X46_POINTINFO_LEN * FT6X46_MAX_SUPPORTED_FINGER_NUM)
-
-#define FT6X46_INT_NONE 0x0000
-#define FT6X46_INT_MASK 0x081F
-#define FT6X46_PALM_MASK 0x0010
-#define FT6X46_GESTURE_WAKEUP_INIT 0
-#define FT6X46_FIRMWARE_SIZE 48
-#define ZTW_PAGE_SIZE_128 128
-#define ZTW_PAGE_SIZE_64 64
-#define ZTW_SECTOR_SIZE 8
-#define ZTW_CHIPID_F400 0xF400
-#define ZTW_CHIPID_E240 0xE240
-#define ZTW_CHIPID_E700 0xE700
-#define ZTW_CHIPID_E548 0xE548
-#define ZTW_CHIPID_E538 0xE538
-#define ZTW_CHIPID_E532 0xE532
-#define ZTW_VENDOR_ID 0x5A49
-#define FT6X46_CHIP_ID 0xE628
-/* define touch info offset */
-#define FT6X46_STATUSL_OFFSET 0
-#define FT6X46_STATUSH_OFFSET 1
-#define FT6X46_EVENTL_OFFSET 2
-#define FT6X46_EVENTH_OFFSET 3
-#define FT6X46_XL_OFFSET 4
-#define FT6X46_XH_OFFSET 5
-#define FT6X46_YL_OFFSET 6
-#define FT6X46_YH_OFFSET 7
-#define FT6X46_WIDTH_OFFSET 8
-#define FT6X46_SUBSTATUS_OFFSET 9
-/* define data shift and mask */
-#define FT6X46_SHIFT_8_BIT 8
-#define FT6X46_SHIFT_16_BIT 16
-#define FT6X46_SHIFT_24_BIT 24
-#define FT6X46_MASK_BYTE 0xFF
-/* define FT6X46_HIGH_SPEED_DMA rely on iic dma support */
-#ifdef FT6X46_HIGH_SPEED_DMA
-#define FT6X46_TOUCH_POINT_MODE 0
-#else
-#define FT6X46_TOUCH_POINT_MODE 1
-#endif
-
-#define FT6X46_SEC_MODE 48
-#define FT6X46_NORMAL_MODE 5
-#define FT6X46_DND_MODE 11 /* mutual cap */
-#define FT6X46_SELF_DND_MODE 17 /* self cap */
-#define FT6X46_DNDSKIP_CNT 1
-#define FT6X46_SELFDNDSKIP_CNT 1
-/* Config Reg Info */
-#define FT6X46_REG_CMD_ENABLE 0xC000
-#define FT6X46_REG_CHIP_ID 0xCC00
-#define FT6X46_REG_INTN_CLEAR 0xC004
-#define FT6X46_REG_NVM 0xC002
-#define FT6X46_REG_NVM_VPP 0xC003
-#define FT6X46_REG_NVM_WP 0xC104
-#define FT6X46_REG_PROGRAM_START 0xC001
-#define FT6X46_POWER_CTL_BEGIN 0x000A
-#define FT6X46_POWER_CTL_END 0x000B
-#define FT6X46_CALIB_CTL1 0xC003
-#define FT6X46_CALIB_CTL2 0xC104
-#define FT6X46_SDRAM_RESET 0x0FF8
-#define FT6X46_REPORT_REG 0x0186 /* 设置中断上报频率 */
-#define FT6X46_PIXEL_THRESHOLD_REG 0x00C3
-/* Register Map */
-#define FT6X46_SWRESET_CMD 0x0000
-#define FT6X46_WAKEUP_CMD 0x0001
-#define FT6X46_IDLE_CMD 0x0004
-#define FT6X46_SLEEP_CMD 0x0005
-#define FT6X46_CLEAR_INT_STATUS_CMD 0x0003
-#define FT6X46_CALIBRATE_CMD 0x0006
-#define FT6X46_SAVE_STATUS_CMD 0x0007
-#define FT6X46_SAVE_CALIBRATION_CMD 0x0008
-#define FT6X46_RECALL_FACTORY_CMD 0x000f
-#define FT6X46_SENSITIVITY 0x0020
-#define FT6X46_I2C_CHECKSUM_WCNT 0x016a
-#define FT6X46_I2C_CHECKSUM_RESULT 0x016c
-#define FT6X46_DEBUG_REG 0x0115 /* 0~7 */
-#define FT6X46_TOUCH_MODE 0x0010
-#define FT6X46_CHIP_REVISION 0x0011
-#define FT6X46_FIRMWARE_VERSION 0x0012
-#define FT6X46_MINOR_FW_VERSION 0x0121
-#define FT6X46_DATA_VERSION_REG 0x0013
-#define FT6X46_HW_ID 0x0014
-#define FT6X46_SUPPORTED_FINGER_NUM 0x0015
-#define FT6X46_EEPROM_INFO 0x0018
-#define FT6X46_INITIAL_TOUCH_MODE 0x0019
-#define FT6X46_CHIP_HW_REVISION 0x001A
-#define FT6X46_IC_VENDOR_ID 0x001C
-#define FT6X46_TSM_MODULE_ID 0x001E
-#define FT6X46_TOTAL_NUMBER_OF_X 0x0060
-#define FT6X46_TOTAL_NUMBER_OF_Y 0x0061
-#define FT6X46_DELAY_RAW_FOR_HOST 0x007f
-#define FT6X46_BUTTON_SUPPORTED_NUM 0x00B0
-#define FT6X46_BUTTON_SENSITIVITY 0x00B2
-#define FT6X46_X_RESOLUTION 0x00C0
-#define FT6X46_Y_RESOLUTION 0x00C1
-#define FT6X46_HOLD_POINT_TRESHHOLD 0x00C3
-#define FT6X46_POINT_STATUS_REG 0x0080
-#define FT6X46_ICON_STATUS_REG 0x00AA
-#define FT6X46_AFE_FREQUENCY 0x0100
-#define FT6X46_DND_N_COUNT 0x0122
-#define FT6X46_DND_U_COUNT 0x0135
-#define FT6X46_RAWDATA_REG 0x0200
-#define FT6X46_EEPROM_INFO_REG 0x0018
-#define FT6X46_INT_ENABLE_FLAG 0x00f0
-#define FT6X46_PERIODICAL_INTERRUPT_INTERVAL 0x00f1
-#define FT6X46_CHECKSUM_RESULT 0x012c
-#define FT6X46_GESTURE_WAKEUP_REG 0x0126
-
-#define FT6X46_TOUCHINFO_MASK 0x0F
-#define FT6X46_TOUCH_EXIST 0x01
-#define FT6X46_TOUCH_DOWN 0x03
-#define FT6X46_TOUCH_MOVE 0x05
-#define FT6X46_TOUCH_UP 0x08
-#define FT6X46_TOUCH_NONE 0x07
-
-#define FT6X46_SUB_BIT_EXIST 0
-#define FT6X46_SUB_BIT_DOWN 1
-#define FT6X46_SUB_BIT_MOVE 2
-#define FT6X46_SUB_BIT_UP 3
-#define FT6X46_SUB_BIT_UPDATE 4
-#define FT6X46_SUB_BIT_WAIT 5
-
-#ifndef FT6X46_TSP_X_CHANNEL_NUM
-#define FT6X46_TSP_X_CHANNEL_NUM 6
-#endif
-
-#ifndef FT6X46_TSP_Y_CHANNEL_NUM
-#define FT6X46_TSP_Y_CHANNEL_NUM 6
-#endif
-
-#define FT6X46_TSP_DND_NUM (FT6X46_TSP_X_CHANNEL_NUM * FT6X46_TSP_Y_CHANNEL_NUM)
-#define FT6X46_TSP_SELFDND_NUM (FT6X46_TSP_X_CHANNEL_NUM + FT6X46_TSP_Y_CHANNEL_NUM)
-
-/* firmware info */
-#define FT6X46_FIRMWARE_VERSION_L 0
-#define FT6X46_FIRMWARE_VERSION_H 1
-#define FT6X46_FIRMWARE_VERSION_OFFSET 52
-#define FT6X46_FIRMWARE_MINOR_VERSION_OFFSET 56
-#define FT6X46_FIRMWARE_DATA_VERSION_OFFSET 60
-#define FT6X46_FIRMWARE_OFFSET_ZERO 0
-#define FT6X46_FIRMWARE_CONVERT_DATA_STEP 2
-#define FT6X46_FIRMWARE_CONVERT_DATA_OFFSET 1
-/* file op code */
-#define FT6X46_FILE_ERROR (-1)
-#define FT6X46_FILE_OK 0
-/* upgrade info */
-#define FT6X46_FWGRADE_CMD_NUM 3
-/* rawdata info */
-#define FT6X46_RAWDATA_CMD_NUM 2
-/* define gesture macro */
-#define FT6X46_GESTURE_WAKEUP 1
-
-/* self_dnd dnd parameter */
-#define FT6X46_SEC_SELF_DND_N_COUNT 15
-#define FT6X46_SEC_SELF_DND_U_COUNT 2
-#define FT6X46_SEC_SELF_DND_FREQUENCY 80
-
-#define FT6X46_SEC_DND_N_COUNT 27
-#define FT6X46_SEC_DND_U_COUNT 3
-#define FT6X46_SEC_DND_FREQUENCY 240
-
-/* host peripheral typedef */
-typedef ext_errno (*tp_irq_callback)(void);
-
-/* ZTW523 driver typedef */
-typedef enum {
- FT6X46_POWERDOWN = 0,
- FT6X46_POWERUP,
-} ft6x46_sw_power_status;
-
-typedef enum {
- FT6X46_WORK_NORMAL = 0,
- FT6X46_WORK_STANDBY,
- FT6X46_WORK_GETCMCP,
- FT6X46_WORK_SLEEP,
- FT6X46_WORK_SUSPEND,
- FT6X46_WORK_RESUME,
- FT6X46_WORK_INVALID,
-} ft6x46_work_status;
-
-typedef enum {
- FT6X46_NOT_READY = 0,
- FT6X46_READY,
-} ft6x46_device_status;
-
-typedef enum {
- MC_BUTTON_RELEASE = 0, /* button release */
- MC_BUTTON_PRESSED = 1, /* button pressed */
-} button_event_type;
-
-typedef enum {
- MC_TOUCHKEY_EVENT_PRESS = 0,
- MC_TOUCHKEY_EVENT_RELASSE,
- MC_TOUCHKEY_EVENT_LONG_PRESS,
- MC_TOUCHKEY_EVENT_INVALID,
-} touch_key_event_type;
-
-typedef enum {
- FT6X46_GESTURE_NONE = 0,
- FT6X46_GESTURE_SIGNAL_CLICK = 1,
- FT6X46_GESTURE_DOUBLE_CLICK = 2,
- FT6X46_GESTURE_SLIDE_UP = 4,
- FT6X46_GESTURE_SLIDE_DOWN = 5,
-} ft6x46_gesture_event;
-
-typedef enum {
- FT6X46_IRQ_DISABLE = 0,
- FT6X46_IRQ_ENABLE,
-} ft6x46_irq_status;
-
-typedef enum {
- MC_TP_NORMAL_WORK_MODE = 0, /* tp normal mode */
- MC_TP_STANDBY_WORK_MODE, /* tp idle mode */
- MC_TP_BOOTLOADER_WORK_MODE,
- MC_TP_SLEEP_WORK_MODE,
- MC_TP_SUSPEND_SCAN,
- MC_TP_RESUME_SCAN,
- MC_TP_MAX_MODE,
-} tp_work_mode;
-
-typedef enum {
- MC_TP_UPGRADE_NEED_FLAG,
- MC_TP_UPGRADE_START_ASYN,
- MC_TP_UPGRADE_STATUS,
- MC_TP_UPGRADE_SYNC,
-} mc_tp_upgrade;
-
-typedef struct {
- uint32_t reset_gpio;
- uint32_t int_gpio;
- i2c_bus_t i2c_id;
- uint32_t i2c_baudrate;
-} tp_peripheral_attr;
-
-typedef struct {
- uint16_t button_code;
-} button_dev_info;
-
-typedef struct {
- uint16_t xchannel_num;
- uint16_t ychannel_num;
- uint16_t total_dnd_num;
- uint16_t total_self_dnd_num;
-} ft6x46_panel_data;
-
-typedef struct {
- uint32_t skip_cnt;
- int16_t dnd_data[FT6X46_TSP_DND_NUM];
- int16_t self_dnd_data[FT6X46_TSP_SELFDND_NUM];
-} ft6x46_tsp_rawdata;
-
-typedef enum {
- MC_TP_RAW_DATA,
- MC_TP_BASE_DATA,
- MC_TP_NOS_DATA,
- MC_TP_SIG_DATA,
- MC_TP_FT_DATA,
- MC_TP_NT_DATA,
- MC_TP_MAX_DATA,
- MC_TP_CM_CP_DATA, /* 7, CM CP data */
- MC_TP_INT_COUNT_DATA, /* 8, TP Int count */
- MC_TP_NOISE_METRICS_DATA,
- MC_TP_DATA_STRUCTURE_DATA,
- MC_TP_PANEL_SCAN_CM_DATA,
- MC_TP_PANEL_SCAN_CP_DATA,
- MC_TP_START_RAW_TRANS,
- MC_TP_STOP_RAW_TRANS,
- MC_TP_START_GET_WATER_TEMPR, /* 15, start get and print water level and temprature */
- MC_TP_STOP_GET_WATER_TEMPR, /* 16, stop get and print water level and temprature */
- MC_TP_RAW_MAX,
-} mc_tp_rawdata;
-
-typedef struct {
- mc_tp_rawdata cmd;
- uint8_t *data_buf;
- uint8_t data_in_len;
- uint32_t data_out_len;
- uint32_t data_addr;
-} touch_rawdata_info;
-
-/* define for drv process talbe */
-typedef ext_errno (*touch_drv_upgrade_handle)(uint8_t *data_buff, uint8_t buf_len);
-typedef struct {
- mc_tp_upgrade cmd_id;
- touch_drv_upgrade_handle process_cb;
-} touch_drv_upgrade_proc;
-
-typedef ext_errno (*touch_hal_rawdata_handle)(uint8_t *data_buf, uint8_t buf_len);
-typedef struct {
- mc_tp_rawdata cmd_id;
- touch_hal_rawdata_handle process_cb;
-} touch_drv_rawdata_proc;
-
-typedef struct {
- uint16_t chip_id;
- uint16_t vendor_id;
- uint16_t chip_hw_id;
- uint8_t chip_info[FT6X46_DEVICE_INFO_SIZE];
- uint16_t firmware_version;
- uint16_t minor_firmware_version;
- uint16_t reg_version;
- uint32_t flash_fw_version;
- uint16_t int_mask;
- uint16_t touch_mode;
- uint32_t irq_count;
- uint32_t touch_count;
- uint32_t page_size;
- uint16_t header_size;
- uint16_t image_size;
- osal_mutex ops_mux;
- bool fw_upgrade_flag;
- bool gesture_wakeup;
- bool host_dev_init_flag;
- ft6x46_sw_power_status power_status;
- ft6x46_work_status work_status;
- ft6x46_sw_power_status chip_sw_power_status;
- ft6x46_device_status chip_status;
- input_event_info touch_msg;
- ft6x46_panel_data panel_info;
- tp_peripheral_attr dev_attr;
- ft6x46_tsp_rawdata tsp_raw_data;
- void *p_void;
- uint32_t tp_event;
- touch_drv_upgrade_proc upgrade_table[FT6X46_FWGRADE_CMD_NUM];
- touch_drv_rawdata_proc raw_data_table[FT6X46_RAWDATA_CMD_NUM];
-} ft6x46_drv_data;
-
-ext_errno ft6x46_init(void);
-ext_errno ft6x46_deinit(void);
-ext_errno ft6x46_set_power_mode(tp_work_mode power_mode);
-ext_errno ft6x46_get_power_mode(uint32_t *power_mode);
-ext_errno ft6x46_resume(void);
-ext_errno ft6x46_suspend(void);
-ext_errno ft6x46_irq_callback(uint8_t *data_buf, uint8_t data_len);
-ext_errno ft6x46_host_init_sample(void);
-#ifdef __cplusplus
-#if __cplusplus
- }
-#endif
-#endif
-
-#endif
+++ /dev/null
-/*\r
- * Copyright (c) @CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: touch screen driver.\r
- * Author: @CompanyNameTag\r
- * Create: 2022-04-12\r
- */\r
-\r
-#include "touch_screen_drv.h"\r
-#include "tcxo.h"\r
-#include "i2c.h"\r
-#include "common_def.h"\r
-#include "soc_osal.h"\r
-#include "touch_screen_def.h"\r
-#include "input_app.h"\r
-#if defined(TPTYPE_TMA525B)\r
-#include "tma525b_drv1.h"\r
-#include "tma525b_ctrl.h"\r
-#elif defined(TPTYPE_ZTW523)\r
-#include "ztw523_drv1.h"\r
-#include "ztw523_ctrl.h"\r
-#elif defined(TPTYPE_FT6X46)\r
-#include "ft6x46_drv1.h"\r
-#include "ft6x46_ctrl.h"\r
-#else\r
-#include "ztw523_drv1.h"\r
-#include "ztw523_ctrl.h"\r
-#endif\r
-\r
-#if defined(TPTYPE_TMA525B)\r
-#define TOUCH_I2C_BUS TMA525B_I2C_BUS\r
-#define TOUCH_INT_GPIO TMA525B_INT_GPIO\r
-#define TOUCH_RESET_GPIO TMA525B_RESET_GPIO\r
-#elif defined(TPTYPE_ZTW523)\r
-#define TOUCH_I2C_BUS ZTW523_I2C_BUS\r
-#define TOUCH_INT_GPIO ZTW523_INT_GPIO\r
-#define TOUCH_RESET_GPIO ZTW523_RESET_GPIO\r
-#elif defined(TPTYPE_FT6X46)\r
-#define TOUCH_I2C_BUS FT6X46_I2C_BUS\r
-#define TOUCH_INT_GPIO FT6X46_INT_GPIO\r
-#define TOUCH_RESET_GPIO FT6X46_RESET_GPIO\r
-#else\r
-#define TOUCH_I2C_BUS ZTW523_I2C_BUS\r
-#define TOUCH_INT_GPIO ZTW523_INT_GPIO\r
-#define TOUCH_RESET_GPIO ZTW523_RESET_GPIO\r
-#endif\r
-\r
-#define TOUCH_SCREEN_DEV_NAME_LEN 16\r
-#define TOUCH_SCREEN_DEVNAME "input/event"\r
-#define TOUCH_SCREEN_DYNAMIC_MINOR 65\r
-#define TOUCH_SCREEN_CMDID_MAX 16\r
-\r
-#define TOUCH_SCREEN_TASK_PRIO 5\r
-#define TOUCH_SCREEN_TASK_SIZE 0x800\r
-#define TOUCH_SCREEN_QUEUE_MAX_SIZE 60\r
-#define TOUCH_SCREEN_READY_EVENT (1 << 0)\r
-\r
-struct ts_driver_data g_touch_drv = {0};\r
-struct ts_driver_data *g_attr = NULL;\r
-\r
-report_event_cb g_report_event_cb = NULL;\r
-\r
-#if defined(SUPPORT_POWER_MANAGER)\r
-event_callback_func g_power_manager_cb = NULL;\r
-#endif\r
-\r
-static struct ts_driver_data *touch_screen_get_driver_data(void)\r
-{\r
- return &g_touch_drv;\r
-}\r
-\r
-static uint32_t touch_screen_get_state(struct ts_driver_data *tsdd)\r
-{\r
- if (tsdd != NULL && tsdd->queue != NULL) {\r
- return (uint32_t)ts_queue_is_empty(tsdd->queue);\r
- }\r
-\r
- if (tsdd == NULL) {\r
- tp_err("tsdd is null!");\r
- return EXT_ERR_FAILURE;\r
- }\r
- if (tsdd->queue == NULL) {\r
- tp_err("tsdd queue is null!");\r
- }\r
-\r
- return EXT_ERR_FAILURE;\r
-}\r
-\r
-static void convert_touch_info(input_dev_data_t* data, input_event_info* touch_info)\r
-{\r
- data->x = (int16_t)touch_info->tp_event_info.x_axis[0];\r
- data->y = (int16_t)touch_info->tp_event_info.y_axis[0];\r
- data->type = INDEV_TYPE_TOUCH;\r
- data->timestamp = (uint32_t)touch_info->tv_usec;\r
- if ((touch_info->tp_event == MC_TP_PRESS) || (touch_info->tp_event == MC_TP_MOVE)) {\r
- data->state = INDEV_STATE_PRESS;\r
- } else if (touch_info->tp_event == MC_TP_RELEASE) {\r
- data->state = INDEV_STATE_RELEASE;\r
- } else {\r
- data->state = INDEV_STATE_UNKNOWN;\r
- }\r
-}\r
-\r
-static void report_or_enqueue_event(input_event_info* touch_info, struct ts_driver_data *tsdd)\r
-{\r
- if (g_report_event_cb != NULL) {\r
- input_dev_data_t data;\r
- convert_touch_info(&data, touch_info);\r
- if (data.state == INDEV_STATE_UNKNOWN) {\r
- return;\r
- }\r
- g_report_event_cb(&data);\r
- } else {\r
- int32_t ret = ts_en_queue(tsdd->queue, touch_info);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("Failed to enqueue ts queue! ret=0x%x", ret);\r
- }\r
- }\r
-}\r
-#if defined(SUPPORT_POWER_MANAGER)\r
-static void report_event_to_power_manager(input_event_info *touch_info)\r
-{\r
- if (g_power_manager_cb != NULL) {\r
- input_dev_data_t data;\r
- convert_touch_info(&data, touch_info);\r
- if (data.state == INDEV_STATE_UNKNOWN) {\r
- return;\r
- }\r
- g_power_manager_cb(data.state, 0);\r
- }\r
- return;\r
-}\r
-\r
-uint32_t ts_register_power_manager_cb(event_callback_func callback)\r
-{\r
- if (g_power_manager_cb != NULL) {\r
- return EXT_ERR_FAILURE;\r
- }\r
- g_power_manager_cb = callback;\r
- return EXT_ERR_SUCCESS;\r
-}\r
-#endif\r
-ext_errno touch_info_process(void)\r
-{\r
- struct ts_driver_data *tsdd = touch_screen_get_driver_data();\r
- input_event_info touch_info;\r
- int32_t ret = 0;\r
-\r
- if (tsdd->touch_api->touch_get_tpinfo != NULL) {\r
- ret = tsdd->touch_api->touch_get_tpinfo((uint8_t *)(&touch_info), sizeof(input_event_info));\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("get touch info fail! ret=0x%x", ret);\r
- }\r
-\r
- report_or_enqueue_event(&touch_info, tsdd);\r
-#if defined(SUPPORT_POWER_MANAGER)\r
- report_event_to_power_manager(&touch_info);\r
-#endif\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static void ts_callback_func(void)\r
-{\r
- ext_errno ret;\r
- if (g_attr != NULL) {\r
- common_notify_mail_t mail = {0};\r
- mail.comm.app = APP_TOUCH;\r
- ret = osal_msg_queue_write_copy(get_app_queue_id(), (void *)&mail,\r
- sizeof(common_notify_mail_t), 0);\r
- if (ret != OSAL_SUCCESS) {\r
- tp_err("touch app msg send failed! err=0x%x! \r\n", ret);\r
- }\r
- }\r
-}\r
-\r
-static ext_errno ts_register_callback(struct ts_driver_data *attr)\r
-{\r
- ext_errno ret = EXT_ERR_FAILURE;\r
- g_attr = attr;\r
-\r
- if (attr->touch_api->register_callback != NULL) {\r
- ret = attr->touch_api->register_callback(attr->private_data, ts_callback_func);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("register touch screen callback fail! ret=0x%x", ret);\r
- return ret;\r
- }\r
- } else {\r
- tp_err("touch screen callback register func is empty!");\r
- }\r
-\r
- return ret;\r
-}\r
-\r
-static ext_errno ts_unregister_callback(struct ts_driver_data *attr)\r
-{\r
- ext_errno ret = EXT_ERR_FAILURE;\r
-\r
- if (attr->touch_api->unregister_callback != NULL) {\r
- ret = attr->touch_api->unregister_callback(attr->private_data);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("unregister touch screen callback fail! ret=0x%x", ret);\r
- return ret;\r
- }\r
- g_attr = NULL;\r
- } else {\r
- tp_err("touch screen callback unregister func is empty!");\r
- }\r
-\r
- return ret;\r
-}\r
-\r
-static int32_t ts_dev_open(const void *private_data)\r
-{\r
- int32_t ret;\r
- struct ts_driver_data *tsdd = NULL;\r
- if (private_data == NULL) {\r
- tp_err("ts_open: invalid dev or driver_data!\n");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- // todo: get tsdd from private_data\r
- tsdd = touch_screen_get_driver_data();\r
- tsdd->queue = ts_init_queue(TOUCH_SCREEN_QUEUE_MAX_SIZE);\r
- if (tsdd->queue == NULL) {\r
- tp_err("create touch screen queue fail!\r\n");\r
- return EXT_ERR_FAILURE;\r
- }\r
- ret = osal_event_init(&(tsdd->event));\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("touch osal_event_init fail! ret=0x%x\r\n", ret);\r
- return ret;\r
- }\r
-\r
- tsdd->task_handle = osal_kthread_create((osal_kthread_handler)touch_info_process,\r
- (void *)touch_screen_get_driver_data(),\r
- "touch_screen", TOUCH_SCREEN_TASK_SIZE);\r
- if (tsdd->task_handle == NULL) {\r
- tp_err("create touch screen thread fail!\r\n");\r
- return EXT_ERR_FAILURE;\r
- }\r
- osal_kthread_set_priority(tsdd->task_handle, TOUCH_SCREEN_TASK_PRIO);\r
-\r
- if (tsdd->touch_api->touch_init != NULL) {\r
- ret = tsdd->touch_api->touch_init(tsdd->private_data);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("touch_init fail! ret=0x%x\r\n", ret);\r
- return ret;\r
- }\r
- }\r
-\r
- ret = ts_register_callback(tsdd);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("register callback fail! ret=0x%x\r\n", ret);\r
- return ret;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static int32_t ts_dev_release(const void *private_data)\r
-{\r
- int32_t ret;\r
- struct ts_driver_data *tsdd = NULL;\r
- if (private_data == NULL) {\r
- tp_err("ts_dev_release: invalid dev or driver_data!\n");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- // todo: get tsdd from private_data\r
- tsdd = touch_screen_get_driver_data();\r
- ret = ts_unregister_callback(tsdd);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("unregister callback fail! ret=0x%x\r\n", ret);\r
- return ret;\r
- }\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static uint32_t ts_dev_poll(const osal_poll *osal_poll, const void *private_data)\r
-{\r
- unused(osal_poll);\r
- unused(private_data);\r
- // todo: get tsdd from private_data\r
- struct ts_driver_data *tsdd = NULL;\r
- tsdd = touch_screen_get_driver_data();\r
- if (tsdd == NULL) {\r
- tp_err("ts_driver_data is NULL");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- if (tsdd->ops->priv_operator != NULL && tsdd->ops->priv_operator(tsdd) == 0) {\r
- return OSAL_POLLIN | OSAL_POLLRDNORM;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static int32_t ts_ioctl_read_touch_info(uint32_t cmd, void *arg, const void *private_data)\r
-{\r
- unused(cmd);\r
- ext_errno ret;\r
- struct ts_driver_data *tsdd = NULL;\r
- input_event_info *touch_info = (input_event_info *)arg;\r
-\r
- if (private_data == NULL) {\r
- tp_err("invalid dev or driver_data!");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- // todo: get tsdd from private_data\r
- tsdd = touch_screen_get_driver_data();\r
- if (tsdd->queue == NULL) {\r
- tp_err("invalid touch screen queue!");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- ret = ts_de_queue(tsdd->queue, touch_info);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("get touch info fail! ret=0x%x", ret);\r
- return ret;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static osal_ioctl_cmd g_ts_cmd_list[TOUCH_SCREEN_CMDID_MAX] = {\r
- {TOUCH_SCREEN_GET_EVENT, ts_ioctl_read_touch_info},\r
-};\r
-\r
-static osal_dev *g_ts_dev = NULL;\r
-static osal_fileops g_ts_ops = {\r
- .open = ts_dev_open,\r
- .release = ts_dev_release,\r
- .poll = ts_dev_poll,\r
- .cmd_list = g_ts_cmd_list,\r
- .cmd_cnt = sizeof(g_ts_cmd_list) / sizeof(g_ts_cmd_list[0]),\r
-};\r
-\r
-struct ts_ops g_ts_status_ops = {\r
- .priv_operator = touch_screen_get_state,\r
-};\r
-\r
-static ext_errno touch_screen_register_device(void)\r
-{\r
- ext_errno ret;\r
-\r
- g_touch_drv.private_data = touch_screen_get_peri_attr();\r
- g_touch_drv.touch_api = touch_screen_get_api();\r
- g_touch_drv.ops = &g_ts_status_ops;\r
- g_ts_dev = osal_dev_create(TOUCH_SCREEN_DEVNAME);\r
- g_ts_dev->minor = TOUCH_SCREEN_DYNAMIC_MINOR;\r
- g_ts_dev->fops = &g_ts_ops;\r
-\r
- ret = osal_dev_register(g_ts_dev);\r
- if (ret != 0) {\r
- tp_err("touch screen osal_dev_register --------failed! ret=0x%x\n", ret);\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno touch_screen_module_init(void)\r
-{\r
- ext_errno ret;\r
-\r
- ret = touch_screen_register_device();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("touch_screen_register_device ----------failed! ret=0x%x\n", ret);\r
- }\r
- tp_err("touch_screen_register_device ----------succ!!!\n");\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno touch_screen_module_deinit(void)\r
-{\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-uint32_t ts_register_report_event_cb(report_event_cb callback)\r
-{\r
- if (g_report_event_cb != NULL) {\r
- return EXT_ERR_FAILURE;\r
- }\r
- g_report_event_cb = callback;\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-uint32_t ts_unregister_report_event_cb(void)\r
-{\r
- g_report_event_cb = NULL;\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-uint32_t ts_init(void)\r
-{\r
- int32_t ret;\r
- struct ts_driver_data *tsdd = NULL;\r
-\r
- g_touch_drv.private_data = touch_screen_get_peri_attr();\r
- g_touch_drv.touch_api = touch_screen_get_api();\r
- g_touch_drv.ops = &g_ts_status_ops;\r
- tsdd = touch_screen_get_driver_data();\r
- tsdd->queue = ts_init_queue(TOUCH_SCREEN_QUEUE_MAX_SIZE);\r
- if (tsdd->queue == NULL) {\r
- tp_err("create touch screen queue fail!\r\n");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- ret = ts_register_callback(tsdd);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("register callback fail! ret=0x%x\r\n", ret);\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-uint32_t ts_read(const input_dev_data_t* data)\r
-{\r
- unused(data);\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-uint32_t ts_close(void)\r
-{\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-void touch_screen_suspend(void)\r
-{\r
- touch_peripheral_api *touch_ptr = touch_screen_get_api();\r
- ext_errno ret = touch_ptr->touch_sleep();\r
- if (ret != EXT_ERR_SUCCESS) { tp_err("touch sleep ret=0x%x", ret); }\r
-#if defined(TPTYPE_FT6X46)\r
- if (ft6x46_suspend() == EXT_ERR_SUCCESS){\r
- i2c_save_reg(TOUCH_I2C_BUS);\r
- uapi_gpio_disable_interrupt(TOUCH_INT_GPIO); // close tp_int gpio interrupt\r
- }\r
-#else\r
- i2c_save_reg(TOUCH_I2C_BUS);\r
- uapi_gpio_disable_interrupt(TOUCH_INT_GPIO); // close tp_int gpio interrupt\r
-#endif\r
-}\r
-\r
-void touch_screen_resume(void)\r
-{\r
- uapi_gpio_disable_interrupt(TOUCH_INT_GPIO); // close tp_int gpio interrupt\r
- i2c_recovery_reg(TOUCH_I2C_BUS);\r
-#if defined(TPTYPE_TMA525B)\r
- tma525b_init();\r
- touch_peripheral_api *touch_ptr = (touch_peripheral_api*)touch_screen_get_api();\r
- ext_errno ret = touch_ptr->touch_resume();\r
- if (ret != EXT_ERR_SUCCESS) { tp_err("touch resume ret=0x%x", ret); }\r
-#elif defined(TPTYPE_ZTW523)\r
- ztw523_resume();\r
-#elif defined(TPTYPE_FT6X46)\r
- ft6x46_resume();\r
-#else\r
- ztw523_resume();\r
-#endif\r
- uapi_gpio_enable_interrupt(TOUCH_INT_GPIO); // open tp_int gpio interrupt\r
-}\r
-\r
-void touch_suspend_for_i2c(void)\r
-{\r
- i2c_save_reg(TOUCH_I2C_BUS);\r
-}\r
-\r
-void touch_resume_for_i2c(void)\r
-{\r
- i2c_recovery_reg(TOUCH_I2C_BUS);\r
-}\r
-\r
-void touch_screen_restart(void)\r
-{\r
- uapi_i2c_deinit(TOUCH_I2C_BUS);\r
- uapi_i2c_master_init(TOUCH_I2C_BUS, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */\r
-#if defined(TPTYPE_TMA525B)\r
- tma525b_resume();\r
-#elif defined(TPTYPE_ZTW523)\r
- ztw523_resume();\r
-#elif defined(TPTYPE_FT6X46)\r
- ft6x46_resume();\r
-#else\r
- ztw523_resume();\r
-#endif\r
- uapi_gpio_enable_interrupt(TOUCH_INT_GPIO); // open tp_int gpio interrupt\r
-}
\ No newline at end of file
+++ /dev/null
-347bcf2308a02361676d277470988adab86e3337
+++ /dev/null
-diff --git a/code/sdk/application/audio/vendor/CMakeLists.txt b/code/sdk/application/audio/vendor/CMakeLists.txt
-index e3152c2ca..c1c31962b 100644
---- a/code/sdk/application/audio/vendor/CMakeLists.txt
-+++ b/code/sdk/application/audio/vendor/CMakeLists.txt
-@@ -39,6 +39,21 @@ set(COMPONENT_INC ${COMPONENT_INC}
- )\r
- endif()\r
- \r
-+if("${CFG_SAP_VENDOR_DRIVER_AW88166_SUPPORT}" STREQUAL "y")\r
-+set(COMPONENT_SRC ${COMPONENT_SRC}\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw88166.c\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx.c\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx_calib.c\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx_device.c\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/product_init_files/aw88166/aw883xx_pid_2066_init.c\r
-+)\r
-+set(COMPONENT_INC ${COMPONENT_INC}\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/product_init_files/aw88166\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/config/aw88166/mono/16bit\r
-+)\r
-+endif()\r
-+\r
- if("${CFG_SAP_VENDOR_DRIVER_ANC_CODEC_SUPPORT}" STREQUAL "y")\r
- set(COMPONENT_SRC ${COMPONENT_SRC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/anc_codec/anc_codec.c\r
-diff --git a/code/sdk/application/audio/vendor/aw88166/aw88166.c b/code/sdk/application/audio/vendor/aw88166/aw88166.c
-index d25e8db7f..a0f2d29a3 100644
---- a/code/sdk/application/audio/vendor/aw88166/aw88166.c
-+++ b/code/sdk/application/audio/vendor/aw88166/aw88166.c
-@@ -19,8 +19,8 @@
- \r
- static td_bool g_aw88166_i2c_inited = TD_FALSE;\r
- \r
--#define AW88166_PWR_ON_PIN S_MGPIO4\r
--#define AW88166_I2C_BUS_ID I2C_BUS_0\r
-+#define AW88166_PWR_ON_PIN S_AGPIO_L25\r
-+#define AW88166_I2C_BUS_ID I2C_BUS_3\r
- #define AW88166_I2C_DEV_ADDR 0x34\r
- \r
- static td_s32 aw_dev0_i2c_write_func(td_u16 dev_addr, td_u8 reg_addr, td_u8 *pdata, td_u16 len)\r
-diff --git a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c
-index a812c9efc..479f285ec 100644
---- a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c
-+++ b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c
-@@ -28,6 +28,8 @@
- #include "tma525b_drv1.h"\r
- #elif defined(TPTYPE_ZTW523)\r
- #include "ztw523_touch1.h"\r
-+#elif defined(TPTYPE_FT6X46)\r
-+#include "ft6x46_touch1.h"\r
- #else\r
- #include "ztw523_touch1.h"\r
- #endif\r
-@@ -40,9 +42,13 @@
- * define AUDIO_SMARTPA_AW88166 : macro to init smartpa aw88166;\r
- * define AUDIO_SMARTPA_AW88166_I2S_ID UAPI_SND_OUT_PORT_I2S0 : macro to specify i2s id connecting to smartpa aw88166;\r
- */\r
-+#if 0\r
- #define AUDIO_SMARTPA_AW88262\r
- #define AUDIO_SMARTPA_AW88262_I2S_ID UAPI_SND_OUT_PORT_I2S2\r
--\r
-+#else\r
-+#define AUDIO_SMARTPA_AW88166\r
-+#define AUDIO_SMARTPA_AW88166_I2S_ID UAPI_SND_OUT_PORT_I2S0\r
-+#endif\r
- #endif /* DSP_EXIST */\r
- #include "panic.h"\r
- #include "board_init.h"\r
-@@ -71,6 +77,8 @@ static void sample_gfx_init(void)
- tma525b_host_init_sample();\r
- #elif defined(TPTYPE_ZTW523)\r
- ztw523_host_init_sample();\r
-+#elif defined(TPTYPE_FT6X46)\r
-+ ft6x46_host_init_sample();\r
- #else\r
- ztw523_host_init_sample();\r
- #endif\r
-diff --git a/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp
-index 7dcdf3238..35ba07c27 100644
---- a/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp
-+++ b/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp
-@@ -43,6 +43,12 @@ void RebootPresenter::OnResume(void) {}
-
- void RebootPresenter::OnStop(void) {}
-
-+
-+extern "C"
-+{
-+extern void uapi_sys_shipmode(uint32_t arg);
-+extern uint32_t mcu_os_sys_reset(uint8_t *para, uint32_t para_len);
-+}
- bool RebootPresenter::OnClick(UIView& view, const ClickEvent& event)
- {
- UNUSED(event);
-@@ -54,9 +60,11 @@ bool RebootPresenter::OnClick(UIView& view, const ClickEvent& event)
- } else if (strcmp(view.GetViewId(), REBOOTDEVICE_BUTTON) == 0) {
- // 重启
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "REBOOTDEVICE_BUTTON OnClick");
-+ mcu_os_sys_reset(NULL,NULL);
- } else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_BUTTON) == 0) {
- // 关机
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SHUTDOWNDEVICE_BUTTON OnClick");
-+ uapi_sys_shipmode(0);
- }
- return true;
- }
-diff --git a/code/sdk/build/config/target_config/brandy/config.py b/code/sdk/build/config/target_config/brandy/config.py
-index 370331fda..849bfc8f4 100644
---- a/code/sdk/build/config/target_config/brandy/config.py
-+++ b/code/sdk/build/config/target_config/brandy/config.py
-@@ -114,6 +114,8 @@ target = {
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'SUPPORT_BLE', 'SUPPORT_BREDR', 'ENABLE_UIKIT', 'SUPPORT_GPU_JPEG', 'SUPPORT_GPU_GMMU', 'SUPPORT_GPU_OPENVG',
- 'SW_UART_DEBUG', 'SAVE_EXC_INFO', 'HASH_MEM_COPY', 'JS_ENABLE', 'CONFIG_LOW_POWER_TEST',
-+ 'FT_SINGLE_UART',
-+ 'TPTYPE_FT6X46',
- 'ENABLE_ECC', 'MIPI_ULPS_SUPPORT', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
-@@ -125,7 +127,7 @@ target = {
- 'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_uikit', 'bgh_audio', 'dfx_set', 'ohos_set', 'wearable_set', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
-- 'fs_image': False
-+ 'fs_image': True
- },
- #native-xts: liteos + uikit + nandflash + mipi + psram + audio 典型合封UIKIT版本
- 'brandy-xts': {
-@@ -213,12 +215,15 @@ target = {
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'SW_UART_DEBUG', "HASH_MEM_COPY",
-+ 'FT_SINGLE_UART','TPTYPE_FT6X46',
- 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'x_vfs_private',
-- 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header'],
-+ 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header',
-+ 'at_cmd'
-+ ],
- 'ram_component_set': ['pinctrl', 'dfx_set' ,'gpu']
- },
- 'brandy-xts-r': {
-@@ -266,9 +271,16 @@ target = {
- "SSB_USE_PLL", "VERSION_STANDARD", "BUILD_APPLICATION_SSB", "LIBBOOTLOADER", "LIBCODELOADER",
- "LIBCPU_UTILS", "LIBAPP_VERSION", "LIBPANIC", "LIBCONNECTIVITY", "LIBERROR_CODE", "LIBSEC_RANDOM",
- "LIBCODELOADER_SSB", "LIBJLINK_LOAD", "LIBLIB_UTILS", "LIBBUILD_VERSION",
-- "NO_TIMEOUT", "CONFIG_UART_BAUD_RATE_DIV_8", 'SW_UART_DEBUG', 'LARGE_BUFFER'],
-+ 'ENABLE_ECC',
-+ "CFG_DRIVERS_NANDFLASH",
-+ "NO_TIMEOUT", "CONFIG_UART_BAUD_RATE_DIV_8", 'SW_UART_DEBUG', 'LARGE_BUFFER',
-+ 'FT_SINGLE_UART'
-+ ],
- 'ram_component': ['arch_port', 'hal_l2ram', 'sec_boot', 'libboundscheck',
-- 'dfx_exception', 'error_code', 'psram', 'osal', 'cmn_header', 'boot_ulp', 'boot_nandflash'],
-+ 'dfx_exception', 'error_code', 'psram', 'osal', 'cmn_header',
-+ 'boot_ulp',
-+ 'boot_nandflash'
-+ ],
- 'ram_component_set': ['pinctrl'],
- 'target': 'ssb',
- }
-diff --git a/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h b/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
-index eb3d405d1..d3b5782d9 100644
---- a/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
-+++ b/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
-@@ -11,6 +11,13 @@
- #include "gpio_porting.h"
- #include "platform_types.h"
-
-+#ifdef SUPPORT_CAT1_SERVICE
-+#include "cat1_ctl.h"
-+#endif
-+
-+#ifdef ENABLE_CYWEE
-+extern void cywee_int1_callback(pin_t pin, uintptr_t param);
-+#endif
- /**
- * @addtogroup connectivity_config_boards
- * @{
-@@ -46,12 +53,12 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO24
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO25
-
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO0 sdio
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO1
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO2
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO3
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO4
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO5
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO0 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO1 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO2 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO3 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO4 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO5 NC
- #if (defined CFG_DRIVERS_NANDFLASH)
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_HGPIO6
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_HGPIO7
-@@ -68,50 +75,47 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO7
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO8
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO9
-- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO10
-+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO10
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO11
-- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO12
-- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO13
-- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO14
-+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO12
-+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO13
-+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO14
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO15 emmc clk
- #endif
-- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO0
-- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO1
-- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO2
-- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO3
-+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO0 NC
-+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO1 NC
-+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO2 NC
-+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO3 NC
-
--#if (defined BRANDY_PRODUCT_EVB4)
-- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO4
--#else
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO4
--#endif
-+// #if (defined BRANDY_PRODUCT_EVB4)
-+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO4 NC
-+// #else
-+ // { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO4 NC
-+// #endif
-
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO5
-- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO6
-- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO7
--#if (defined BRANDY_PRODUCT_EVB4)
-- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO8
--#else
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO8 E0B2 VCI_EN
--#endif
-- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO9
-- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO10
-- { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO11 evb2 dsp i2c smartpa
-- { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO12
-- { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 touch i2c
-- { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14
-- { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO15
-- { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO16
-- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 evb4 dsp i2c pa
-- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO18
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO5 NC
-+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO6 SPI1 DI
-+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO7 SPI1 DO
-+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO8 SPI1 CLK
-+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO9 SPI1 CS0
-+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO10 SPI1 CS1 NC
-+
-+ { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO11 i2c0 SCL NC
-+ { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO12 I2C0 SDA
-+ { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 I2C1 SCL touch i2c
-+ { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14 I2C1 SDA
-+ { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO15 I2C2 SCL Sensor 6Öá Ö¸ÄÏÕë ÐÄÂÊ
-+ { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO16 I2C2 SDA Sensor
-+ { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 i2c3 SCL smart pa\ Ô¤ÁôÂí´ï¿ØÖÆ \°²È«Ð¾Æ¬
-+ { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO18 I2C3 SDA
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO19 uart1 tx
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO20 uart1 rx
-- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO21
-- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO22
-- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO23
-- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO24
-- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO25
-- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO26
-+ { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO21 uart1 rts
-+ { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO22 uart1 cts
-+ { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO23 NC
-+ { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO24 NC
-+ { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO25 NC
-+ { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO26 NC
- #if (defined QSPI_DISPLAY)
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO27
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO28
-@@ -131,67 +135,79 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO34 huart rx
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO35
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO36
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO37
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO38
-+#if 0
-+ { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx
-+ { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO38 uart rx
-+#else
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO38 uart rx NC
-+#endif
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L0 NC
-
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L0
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L1 i2s1
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L2
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L3
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L4
-+
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L5
--#if (defined BRANDY_PRODUCT_EVB4)
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L6 E0B4 VCI_EN
--#else
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L6 i2s0
--#endif
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L7
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L8
-+
- #if (defined FT_BT_UART)
- { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L9 uart2 txd
- { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 uart2 rxd
- #else
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L9 dsp uart
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 dsp uart
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L9 dsp uart TP35
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 dsp uart TP36
- #endif
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L11 a+g int1
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L12 a+g int2
-- { HAL_PIO_FUNC_I2S2_M5, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L13 i2s2
-- { HAL_PIO_FUNC_I2S2_M5, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L14
-- { HAL_PIO_FUNC_I2S2_M5, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L15
-- { HAL_PIO_FUNC_I2S2_M5, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L16
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L17 dsp i2c
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L18 dsp i2c
-- { HAL_PIO_FUNC_BT_FREQ, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L19
-- { HAL_PIO_FUNC_BT_STATUS, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L20
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L21
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L11 G_INT1
-+
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L12 i2c data HX3507_SDIO
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L13 i2c CLK HX3507_SCLK
-+
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L14 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L15 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L16 NC
-+
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L17 HX3507_INT not use
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //ÔÝʱÎÞÓ㬲ÉÓÃVDDIO ĬÈÏ¿ªÆô EXt V3.0 EXt V1.8
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_AGPIO_L19 G_INT2 //ÔÝʱ²»ÓÃ
-+
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20 0.2C_CHRG
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçÔ´
- #ifdef QSPI_DISPLAY
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 QSPI TE
- #else
- { HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 MIPI TE
- #endif
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L24
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L25
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L26 emmc reset
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L27
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L28
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L29
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L30
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L31
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L32
--
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R3 lcd reset
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_R4 tp reset
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R5 touch int
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 als int
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R7
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R8
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R10
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23 CAT_1_PWR_ON ¿ØÖÆCAT_1¿ª»ú½Å£¬»òÕß¿ØÖÆ CAT1µçÔ´ À¸ßÓÐЧ
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L24 LCM_EN
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L25 //////////// audio pa reset
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L26 ÐÄÂʸ´Î» PPG reset
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L27 LCM reset
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L28 CAT_1¸´Î» CAT1_RESET_N ÀµÍÓÐЧ
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L29 charge done info ¼ì²âÊÇ·ñ³äÂúµç
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L30 KP_MKIN1 »½ÐÑ CAT1 £¬Êä³ö
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L31 KP_MKOUIT1 »½ÐÑ À¶ÑÀ ,ÊäÈë
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L32 NC
-+
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1 SE_REST °²È«Ð¾Æ¬¸´Î»»½ÐѽÅ
-+ #if VIB_USE_PWM
-+ // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
-+ // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
-+ #else
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
-+ #endif
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R3 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_R4 tp reset
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R5 touch int
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 PRG_INT ÐÄÂÊÖжÏ
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R7 GYRO_INT2
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R8 GYRO_INT1
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9 BAT_CHARGE_OFF ¹Øµô³äµç ζȸߵÄʱºò
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R10 Key2 ///////////////////HAL_PIO_IE_ENBALE input enable
-
- #if CORE == APPS
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO0 mode not config
-@@ -214,18 +230,77 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
- */
- /**
- * @brief Global evb gpio functions.
-+ *
-+ *
-+ * typedef struct {
-+ pin_t gpio;
-+ hal_gpio_direction_t direction;
-+ hal_gpio_level_t level;
-+ uint32_t triger;
-+ hal_gpio_callback_t callback;
-+} hal_gpio_config_t;
- */
-+
-+
-+//ĬÈÏ¿ªÆôCat1 È»ºóÔÙ¸ù¾ÝÅäÖþö¶¨ÊÇ·ñ¹Ø±Õ.
-+//ĬÈϲ»¿ªÆô ppg checkidʧ°Ü£¬ÔÒòδ֪£¬ÔÝʱ¿ª»ú¿ªÆôcat1
-+#define DEFAULT_POWERON_CAT1 0
-+
-+//ÐèÒªÅäÖÃĬÈÏÊä³öµÄ£¬ÒÔ¼°ÐèÒªÅäÖÃĬÈÏÊäÈëÖжϺ¯ÊýµÄ¡£
- const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
-
-- // S_AGPIO_L17
-- {
-- S_AGPIO_L17,
-- HAL_GPIO_DIRECTION_OUTPUT,
-- HAL_GPIO_LEVEL_HIGH,
-- 0,
-- NULL
-- },
--
-+#if DEFAULT_POWERON_CAT1
-+ // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
-+ { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+ // S_AGPIO_L28 Cat1 reset ---- low reset
-+ { S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+#else
-+ // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
-+ { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ // S_AGPIO_L28 Cat1 reset ---- low reset
-+ { S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+#endif
-+ // S_AGPIO_L17 HX3507_INT
-+ // { S_AGPIO_L17, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ // S_AGPIO_L12 SDIO_BT
-+ { S_AGPIO_L12, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ // S_AGPIO_L13 SCLK_BT
-+ { S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+
-+ // S_AGPIO_L26 ÐÄÂʸ´Î» PPG reset
-+ { S_AGPIO_L26, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
-+ { S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+
-+ //S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçÔ´ ,ĬÈϹرÕ
-+ { S_AGPIO_L21, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+#if 1 //ĬÈÏÕý³£³äµç
-+// #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9 //low enable
-+// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c µÍµçÁ÷³äµç
-+ { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+#else
-+ { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+#endif
-+
-+//ĬÈϹرÕÂí´ï
-+ { S_AGPIO_R2, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+//ĬÈÏ¿ªÆô EXT LDO V3.0 V1.8
-+ { S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+
-+#ifdef ENABLE_CYWEE
-+ /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19*/
-+ //{ S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, GPIO_INTERRUPT_RISING_EDGE, cywee_int1_callback },
-+ { S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int1_callback },
-+ // { S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+#endif
-+ /**S_AGPIO_R1 GPO alipayĬÈÏresetpin*/
-+ { S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+#ifdef SUPPORT_CAT1_SERVICE
-+ /**cat1 ring input key*/
-+ { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cat1_ring_isr_callback},
-+#endif
- };
- /**
- * @}
-diff --git a/code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h b/code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h
-index 8eefb6bd2..04cee1756 100644
---- a/code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h
-+++ b/code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h
-@@ -90,8 +90,8 @@
- #define RESOLUTION_WIDTH 368
- #define RESOLUTION_HEIGHT 448
- #else
--#define RESOLUTION_WIDTH 454
--#define RESOLUTION_HEIGHT 454
-+#define RESOLUTION_WIDTH 466//454
-+#define RESOLUTION_HEIGHT 466//454
- #endif
-
- /********************Other module board config********************/
-@@ -142,7 +142,7 @@
- #define BUILTIN_AI_PCM_ATTR_FRAME_PER_SEC 100 // 每秒帧数
-
- // 音频内置输出设备
--#define BUILTIN_SND_OUT_PORT 0x12 // 参考 soc_uapi_sound.h 中 UAPI_SND_OUT_PORT_I2S2 枚举
-+#define BUILTIN_SND_OUT_PORT 0x10 // 参考 soc_uapi_sound.h 中 UAPI_SND_OUT_PORT_I2S0 枚举
- #define BUILTIN_SND_OUT_PORT_NUM 1 // 端口个数
- #define BUILTIN_SND_OUT_AUDIO_CH 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
- #define BUILTIN_SND_OUT_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-@@ -158,32 +158,32 @@
-
- // 音频外挂输入设备
- #define EXTERNAL_AI_PORT 1 // 参考 soc_uapi_ai.h 中 UAPI_AI_PORT_I2S1 枚举
--#define EXTERNAL_AI_I2S_ATTR_MASTER 1 // 1:主设备,0:从设备
--#define EXTERNAL_AI_I2S_ATTR_I2S_MODE 0 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_STD_MODE 枚举
--#define EXTERNAL_AI_I2S_ATTR_MCLK 4 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_768_FS 枚举
--#define EXTERNAL_AI_I2S_ATTR_BCLK 24 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_24_DIV 枚举
-+#define EXTERNAL_AI_I2S_ATTR_MASTER 0 // 1:主设备,0:从设备
-+#define EXTERNAL_AI_I2S_ATTR_I2S_MODE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_MODE 枚举
-+#define EXTERNAL_AI_I2S_ATTR_MCLK 6 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_1536_FS 枚举
-+#define EXTERNAL_AI_I2S_ATTR_BCLK 48 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_48_DIV 枚举
- #define EXTERNAL_AI_I2S_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
- #define EXTERNAL_AI_I2S_ATTR_AUDIO_CH 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
- #define EXTERNAL_AI_I2S_ATTR_SAMPLE_RISE_EDGE 1 // 参考 soc_uapi_audio.h 中 pcm_sample_rise_edge 成员
- #define EXTERNAL_AI_I2S_ATTR_PCM_DELAY_CYCLE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_1_DELAY 枚举
--#define EXTERNAL_AI_PCM_ATTR_CHANNELS 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-+#define EXTERNAL_AI_PCM_ATTR_CHANNELS 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
- #define EXTERNAL_AI_PCM_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
--#define EXTERNAL_AI_PCM_ATTR_SAMPLE_RATE 16000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
--#define EXTERNAL_AI_PCM_ATTR_FRAME_PER_SEC 100 // 每秒帧数
-+#define EXTERNAL_AI_PCM_ATTR_SAMPLE_RATE 8000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
-+#define EXTERNAL_AI_PCM_ATTR_FRAME_PER_SEC 50 // 每秒帧数 , EG810 pcm 20ms 一帧
-
- // 音频外挂输出设备
- #define EXTERNAL_SND_OUT_PORT 0x11 // 参考 soc_uapi_sound.h 中 UAPI_SND_OUT_PORT_I2S1 枚举
--#define EXTERNAL_SND_OUT_AUDIO_CHANNEL 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-+#define EXTERNAL_SND_OUT_AUDIO_CHANNEL 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
- #define EXTERNAL_SND_OUT_AUDIO_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
--#define EXTERNAL_SND_OUT_AUDIO_SAMPLE_RATE 16000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
-+#define EXTERNAL_SND_OUT_AUDIO_SAMPLE_RATE 8000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
- #define EXTERNAL_SND_OUT_PORT_NUM 1 // 端口个数
- #define EXTERNAL_SND_OUT_I2S_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
- #define EXTERNAL_SND_OUT_I2S_ATTR_CHANNEL 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
--#define EXTERNAL_SND_OUT_I2S_ATTR_I2S_MODE 0 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_STD_MODE 枚举
--#define EXTERNAL_SND_OUT_I2S_ATTR_MCLK 4 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_768_FS 枚举
--#define EXTERNAL_SND_OUT_I2S_ATTR_MASTER 1 // 1:主设备,0:从设备
-+#define EXTERNAL_SND_OUT_I2S_ATTR_I2S_MODE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_MODE 枚举
-+#define EXTERNAL_SND_OUT_I2S_ATTR_MCLK 6 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_1536_FS 枚举 12.288M /16k =
-+#define EXTERNAL_SND_OUT_I2S_ATTR_MASTER 0 // 1:主设备,0:从设备
- #define EXTERNAL_SND_OUT_I2S_ATTR_SAMPLE_RISE_EDGE 1 // 参考 soc_uapi_audio.h 中 pcm_sample_rise_edge 成员
--#define EXTERNAL_SND_OUT_I2S_ATTR_BCLK 24 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_24_DIV 枚举
-+#define EXTERNAL_SND_OUT_I2S_ATTR_BCLK 48 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_48_DIV 枚举 12.288M / 256k = 48
-
- // Sleep option
- #define CONFIG_PM_TICKLESS_EN YES
-@@ -196,9 +196,9 @@
- #define CONFIG_SUPPORT_BUTTON_DOUBLE_CLICK NO
-
- // LCD VCI_EN
--#define VCI_LCD_GPIO S_AGPIO_L6
-+#define VCI_LCD_GPIO S_AGPIO_L24
- #define DISPLAY_TE_GPIO S_AGPIO_L22
--#define RESET_LCD_GPIO S_AGPIO_R3
-+#define RESET_LCD_GPIO S_AGPIO_L27
-
- // TP CONFIG
- #define ZTW523_I2C_BUS I2C_BUS_1
-@@ -207,6 +207,10 @@
- #define TMA525B_I2C_BUS I2C_BUS_1
- #define TMA525B_INT_GPIO S_AGPIO_R5
- #define TMA525B_RESET_GPIO S_AGPIO_R4
-+#define FT6X46_I2C_BUS I2C_BUS_1
-+#define FT6X46_INT_GPIO S_AGPIO_R5
-+#define FT6X46_RESET_GPIO S_AGPIO_R4
-+
- /**
- * @}
- */
-diff --git a/code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c b/code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c
-index b6f409070..d2203a1b0 100644
---- a/code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c
-+++ b/code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c
-@@ -56,6 +56,12 @@
- #define UARTRESET (M_CTL_RB_BASE + 0x0168)
- #define UARTBUS0 0x1
- #define UARTBUS1 0x0
-+
-+/**
-+ * CUSTOM_UART_RATE = 500000 可以看蓝牙日志
-+ * 2000000 可以加快下载文件速度
-+*/
-+#define CUSTOM_UART_RATE 2000000
- typedef struct {
- pin_mode_t tx_pin_mode;
- pin_mode_t rx_pin_mode;
-@@ -181,7 +187,11 @@ static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
- NULL,
- #endif
- {
-- .baud_rate = 115200,
-+ #ifdef ENABLE_SLIP
-+ .baud_rate = 921600,
-+ #else
-+ .baud_rate = CUSTOM_UART_RATE,
-+ #endif
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
-@@ -221,7 +231,7 @@ static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
- log_factory_at_callback,
- #endif
- {
-- .baud_rate = 500000,
-+ .baud_rate = CUSTOM_UART_RATE,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
-@@ -298,7 +308,13 @@ void irq_uart1_handler(void)
- static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining)
- {
- unused(remaining);
-+ #ifndef FT_SINGLE_UART
- at_cmd_msg_receive_handler((uint8_t *)buf, buf_len);
-+ #endif
-+
-+ #ifdef ENABLE_SLIP
-+ slip_receive_handler((uint8_t *)buf, buf_len);
-+ #endif
- hal_uart_clear_pending(SW_DEBUG_UART_BUS);
- }
- #endif
-diff --git a/code/sdk/drivers/drivers/driver/lcd/lcd_config.c b/code/sdk/drivers/drivers/driver/lcd/lcd_config.c
-index 54950d78a..d342a8c8e 100644
---- a/code/sdk/drivers/drivers/driver/lcd/lcd_config.c
-+++ b/code/sdk/drivers/drivers/driver/lcd/lcd_config.c
-@@ -9,11 +9,30 @@
- #include "common_def.h"\r
- #include "lcd_config.h"\r
- \r
-+#define LCD_EDO_466X466_SCREEN_ID 0x1133\r
- #define LCD_EDO_454X454_SCREEN_ID 0xf00\r
- #define LCD_BOE_454X454_SCREEN_ID 0x500\r
- #define LCD_SH_240X296_SCREEN_ID 0x101\r
- #define LCD_BOE_194X368_SCREEN_ID 0x4a00\r
- \r
-+const combo_dev_cfg_t g_panel_466x466_60_config = {\r
-+ .devno = 0,\r
-+ .lane_id = {0, -1},\r
-+ .out_mode = OUT_MODE_DSI_CMD,\r
-+ .out_format = OUT_FORMAT_RGB_24BIT,\r
-+ .sync_info = {\r
-+ .hsa_pixels = 10, // hsa 10 pixels\r
-+ .hbp_pixels = 10, // hbp 10 pixels\r
-+ .hact_pixels = 466, // hact 466 pixels\r
-+ .hfp_pixels = 10, // hfp 10 pixels\r
-+ .vsa_lines = 4, // vsa 4 lines\r
-+ .vbp_lines = 12, // vbp 12 lines\r
-+ .vact_lines = 466, // vact 466 lines\r
-+ .vfp_lines = 10, // vfp 10 lines\r
-+ },\r
-+ .phy_data_rate = 480, // 480Mbps\r
-+ .pixel_clk = 20000, // 20000KHz\r
-+};\r
- const combo_dev_cfg_t g_panel_454x454_60_config = {\r
- .devno = 0,\r
- .lane_id = {0, -1},\r
-@@ -67,6 +86,14 @@ const lcd_cmd_sequ g_common_cmd_display_off[] = {
- {1, 1, {0x10}, 120}, /* sleep in */\r
- };\r
- \r
-+/* display off sequence for common lcd */\r
-+const lcd_cmd_sequ g_common_466x466_cmd_display_off[] = {\r
-+ {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
-+ {1, 1, {0x28}, 0}, /* display off */\r
-+ {1, 1, {0x10}, 120}, /* sleep in */\r
-+ {1, 2, {0x4f, 0x01}, 0}, /* ½ødeepstandby ״̬ */\r
-+};\r
-+\r
- /* sleep in sequence for common lcd */\r
- const lcd_cmd_sequ g_common_cmd_sleep_in[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
-@@ -110,6 +137,19 @@ lcd_cmd_sequ g_common_cmd_brightness[] = {
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 2, {0x51, 0xff}, 0},\r
- };\r
-+const lcd_cmd_sequ g_edo_466x466_screen_init_on[] = {\r
-+ {1, 2, {0xfe, 0x00}, 0}, \r
-+ {1, 2, {0x3a, 0x77}, 0}, \r
-+ {1, 2, {0x35, 0x00}, 0}, \r
-+ {1, 2, {0x53, 0x20}, 0}, \r
-+ // {1, 2, {0x51, 0xff}, 0}, \r
-+ {1, 2, {0x63, 0xff}, 0}, \r
-+ {1, 5, {0x2A, 0x00, 0x06, 0x01, 0xd7}, 0}, \r
-+ {1, 5, {0x2B, 0x00, 0x00, 0x01, 0xd1}, 0}, \r
-+ {1, 1, {0x11}, 120}, \r
-+ {1, 1, {0x29}, 0}, \r
-+};\r
-+\r
- \r
- /* init sequence for EDO 454*454 lcd */\r
- const lcd_cmd_sequ g_edo_454x454_screen_init_on[] = {\r
-@@ -193,6 +233,11 @@ const lcd_cmds_sequ g_display_off_cmds = {
- .cmd_cnt = array_size(g_common_cmd_display_off),\r
- };\r
- \r
-+const lcd_cmds_sequ g_466x466_display_off_cmds = {\r
-+ .cmd = g_common_466x466_cmd_display_off,\r
-+ .cmd_cnt = array_size(g_common_466x466_cmd_display_off),\r
-+};\r
-+\r
- const lcd_cmds_sequ g_idle_in_cmds = {\r
- .cmd = g_common_cmd_idle_in,\r
- .cmd_cnt = array_size(g_common_cmd_idle_in),\r
-@@ -218,6 +263,11 @@ const lcd_cmds_sequ g_brightness_cmds = {
- .cmd_cnt = array_size(g_common_cmd_brightness),\r
- };\r
- \r
-+const lcd_cmds_sequ g_edo_466x466_screen_init_on_cmds = {\r
-+ .cmd = g_edo_466x466_screen_init_on,\r
-+ .cmd_cnt = array_size(g_edo_466x466_screen_init_on),\r
-+};\r
-+\r
- const lcd_cmds_sequ g_edo_454x454_screen_init_on_cmds = {\r
- .cmd = g_edo_454x454_screen_init_on,\r
- .cmd_cnt = array_size(g_edo_454x454_screen_init_on),\r
-@@ -249,6 +299,25 @@ const lcd_cmds_sequ g_sleep_out_cmds = {
- };\r
- \r
- const lcd_drv_cfg g_lcd_driver_ops[] = {\r
-+ {\r
-+ .bus_type = BUS_DISPLAY_MIPI,\r
-+ .bus_cfg = &g_panel_466x466_60_config,\r
-+ .x_start = 0x6,\r
-+ .y_start = 0,\r
-+ .fps = 60,\r
-+ .lcd_id = LCD_EDO_466X466_SCREEN_ID,\r
-+ .display_on_cmds = &g_edo_466x466_screen_init_on_cmds,\r
-+ .display_off_cmds = &g_466x466_display_off_cmds,\r
-+ .enter_idle_cmds = &g_idle_in_cmds,\r
-+ .exit_idle_cmds = &g_idle_out_cmds,\r
-+ .te_on_cmds = &g_te_on_cmds,\r
-+ .te_off_cmds = &g_te_off_cmds,\r
-+ .set_brightnes_cmds = &g_brightness_cmds,\r
-+ .sleep_in_cmds = &g_sleep_in_cmds,\r
-+ .sleep_out_cmds = &g_sleep_out_cmds,\r
-+ .lcd_id_info.reg_addr = 0x04,\r
-+ .lcd_id_info.read_len = 3,\r
-+ },\r
- {\r
- .bus_type = BUS_DISPLAY_MIPI,\r
- .bus_cfg = &g_panel_454x454_60_config,\r
-diff --git a/code/sdk/drivers/drivers/driver/lcd/lcd_private.c b/code/sdk/drivers/drivers/driver/lcd/lcd_private.c
-index 039f45c48..ea251e016 100644
---- a/code/sdk/drivers/drivers/driver/lcd/lcd_private.c
-+++ b/code/sdk/drivers/drivers/driver/lcd/lcd_private.c
-@@ -12,7 +12,7 @@
- #include "gpio.h"\r
- #include "pinctrl_porting.h"\r
- #include "product.h"\r
--\r
-+#include "pinctrl.h"\r
- static void lcd_drv_power_on(void)\r
- {\r
- #ifndef QSPI_DISPLAY\r
-@@ -27,16 +27,35 @@ static void lcd_drv_power_on(void)
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_HIGH);\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
- }\r
--\r
-+#define USE_OUTPUT_CTL 1\r
- static void lcd_drv_power_off(void)\r
- {\r
-+#if USE_OUTPUT_CTL\r
-+ uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_OUTPUT); \r
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);\r
-- uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_INPUT);\r
--#ifndef QSPI_DISPLAY\r
-+ #ifndef QSPI_DISPLAY\r
-+ uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_OUTPUT);\r
-+ uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_LOW);\r
-+ #endif\r
-+ uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
-+ int resetvalue = uapi_gpio_get_output_val(RESET_LCD_GPIO);\r
-+ int lcd_envalue = uapi_gpio_get_output_val(VCI_LCD_GPIO);\r
-+ printf("Output RESET_LCD_GPIO %d , VCI_LCD_GPIO %d\r\n",resetvalue,lcd_envalue);\r
-+#else\r
-+ uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);\r
-+ uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_INPUT); //ÉèÖóÉInput£¬ÊÇΪÁ˽â¾ö©µç £¿£¿\r
-+ uapi_pin_set_pull(RESET_LCD_GPIO, PIN_PULL_DOWN);\r
-+ #ifndef QSPI_DISPLAY\r
- uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_LOW);\r
- uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_INPUT);\r
--#endif\r
-+ uapi_pin_set_pull(VCI_LCD_GPIO, PIN_PULL_DOWN);\r
-+ #endif\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
-+ int resetvalue = uapi_gpio_get_val(RESET_LCD_GPIO);\r
-+ int lcd_envalue = uapi_gpio_get_val(VCI_LCD_GPIO);\r
-+ printf("Input RESET_LCD_GPIO %d , VCI_LCD_GPIO %d\r\n",resetvalue,lcd_envalue);\r
-+#endif\r
-+ \r
- }\r
- \r
- static lcd_drv_private g_lcd_private_api = {\r
-diff --git a/code/sdk/drivers/drivers/driver/lcd/soc_lcd_api.c b/code/sdk/drivers/drivers/driver/lcd/soc_lcd_api.c
-index b535f5555..56f8542af 100644
---- a/code/sdk/drivers/drivers/driver/lcd/soc_lcd_api.c
-+++ b/code/sdk/drivers/drivers/driver/lcd/soc_lcd_api.c
-@@ -173,7 +173,8 @@ static ext_errno lcd_get_ops(void)
- }\r
- }\r
- \r
-- g_lcd_info.brightness = DEFAULT_BRIGHTNESS;\r
-+ if (g_lcd_info.brightness == 0)\r
-+ g_lcd_info.brightness = DEFAULT_BRIGHTNESS;\r
- \r
- return EXT_ERR_SUCCESS;\r
- fail:\r
-diff --git a/code/sdk/drivers/drivers/driver/touch/CMakeLists.txt b/code/sdk/drivers/drivers/driver/touch/CMakeLists.txt
-index 6782d9cc1..6971096df 100644
---- a/code/sdk/drivers/drivers/driver/touch/CMakeLists.txt
-+++ b/code/sdk/drivers/drivers/driver/touch/CMakeLists.txt
-@@ -21,6 +21,12 @@ set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_drv1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_touch1.c
- )
-+elseif("TPTYPE_FT6X46" IN_LIST DEFINES)
-+set(SOURCES ${SOURCES}
-+ ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_ctrl.c
-+ ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_drv1.c
-+ ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_touch1.c
-+)
- else()
- set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_ctrl.c
-@@ -41,6 +47,12 @@ set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch
- ${ROOT_DIR}/middleware/services/gui/hal/input/include
- )
-+elseif("TPTYPE_FT6X46" IN_LIST DEFINES)
-+set(PUBLIC_HEADER
-+ ${CMAKE_CURRENT_SOURCE_DIR}
-+ ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch
-+ ${ROOT_DIR}/middleware/services/gui/hal/input/include
-+)
- else()
- set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
-diff --git a/code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c b/code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c
-index d74083a98..4591a7d7e 100644
---- a/code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c
-+++ b/code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c
-@@ -18,6 +18,9 @@
- #elif defined(TPTYPE_ZTW523)\r
- #include "ztw523_drv1.h"\r
- #include "ztw523_ctrl.h"\r
-+#elif defined(TPTYPE_FT6X46)\r
-+#include "ft6x46_drv1.h"\r
-+#include "ft6x46_ctrl.h"\r
- #else\r
- #include "ztw523_drv1.h"\r
- #include "ztw523_ctrl.h"\r
-@@ -31,6 +34,10 @@
- #define TOUCH_I2C_BUS ZTW523_I2C_BUS\r
- #define TOUCH_INT_GPIO ZTW523_INT_GPIO\r
- #define TOUCH_RESET_GPIO ZTW523_RESET_GPIO\r
-+#elif defined(TPTYPE_FT6X46)\r
-+#define TOUCH_I2C_BUS FT6X46_I2C_BUS\r
-+#define TOUCH_INT_GPIO FT6X46_INT_GPIO\r
-+#define TOUCH_RESET_GPIO FT6X46_RESET_GPIO\r
- #else\r
- #define TOUCH_I2C_BUS ZTW523_I2C_BUS\r
- #define TOUCH_INT_GPIO ZTW523_INT_GPIO\r
-@@ -427,8 +434,15 @@ void touch_screen_suspend(void)
- touch_peripheral_api *touch_ptr = touch_screen_get_api();\r
- ext_errno ret = touch_ptr->touch_sleep();\r
- if (ret != EXT_ERR_SUCCESS) { tp_err("touch sleep ret=0x%x", ret); }\r
-+#if defined(TPTYPE_FT6X46)\r
-+ if (ft6x46_suspend() == EXT_ERR_SUCCESS){\r
-+ i2c_save_reg(TOUCH_I2C_BUS);\r
-+ uapi_gpio_disable_interrupt(TOUCH_INT_GPIO); // close tp_int gpio interrupt\r
-+ }\r
-+#else\r
- i2c_save_reg(TOUCH_I2C_BUS);\r
- uapi_gpio_disable_interrupt(TOUCH_INT_GPIO); // close tp_int gpio interrupt\r
-+#endif\r
- }\r
- \r
- void touch_screen_resume(void)\r
-@@ -442,6 +456,8 @@ void touch_screen_resume(void)
- if (ret != EXT_ERR_SUCCESS) { tp_err("touch resume ret=0x%x", ret); }\r
- #elif defined(TPTYPE_ZTW523)\r
- ztw523_resume();\r
-+#elif defined(TPTYPE_FT6X46)\r
-+ ft6x46_resume();\r
- #else\r
- ztw523_resume();\r
- #endif\r
-@@ -466,6 +482,8 @@ void touch_screen_restart(void)
- tma525b_resume();\r
- #elif defined(TPTYPE_ZTW523)\r
- ztw523_resume();\r
-+#elif defined(TPTYPE_FT6X46)\r
-+ ft6x46_resume();\r
- #else\r
- ztw523_resume();\r
- #endif\r
+++ /dev/null
-code/sdk/application/audio/vendor/CMakeLists.txt
-code/sdk/application/audio/vendor/aw88166/aw88166.c
-code/sdk/application/brandy/brandy_standard/thread_pri_init.c
-code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp
-code/sdk/build/config/target_config/brandy/config.py
-code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
-code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h
-code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c
-code/sdk/drivers/drivers/driver/lcd/lcd_config.c
-code/sdk/drivers/drivers/driver/lcd/lcd_private.c
-code/sdk/drivers/drivers/driver/lcd/soc_lcd_api.c
-code/sdk/drivers/drivers/driver/touch/CMakeLists.txt
-code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c
-code/sdk/drivers/drivers/driver/touch/ft6x46_touch/
+++ /dev/null
-#[[\r
-Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.\r
-Description: CMake audio sample module.\r
-Author: audio\r
-Create: 2023-06-09\r
-]]\r
-\r
-set(SAP_TOP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../drivers/drivers/driver/audio/source)\r
-#===================================================================================\r
-include(${SAP_TOP_DIR}/build/cmake/audio_config.cmake)\r
-#===================================================================================\r
-set(COMPONENT_NAME audio_vendor)\r
-set(MODULE_NAME "dsp")\r
-set(AUTO_DEF_FILE_ID TRUE)\r
-#===================================================================================\r
-set(COMPONENT_SRC )\r
-#===================================================================================\r
-set(COMPONENT_INC\r
- ${SAP_UAPI_DIR}\r
- ${SAP_TOP_DIR}/include\r
- ${SAP_TOP_DIR}/drv/vendor\r
- ${SAP_TOP_DIR}/drv/include\r
- ${SAP_TOP_DIR}/drv/common/include\r
- ${SAP_TOP_DIR}/drv/arch/include\r
- ${SAP_TOP_DIR}/drv/arch/${CFG_SAP_CHIP_TYPE}/include\r
- ${SAP_TOP_DIR}/core/include\r
- ${SAP_TOP_DIR}/core/common/include\r
- ${SAP_TOP_DIR}/core/arch/${CFG_SAP_CHIP_TYPE}/include\r
- ${CMAKE_CURRENT_SOURCE_DIR}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/common\r
-)\r
-#===================================================================================\r
-if("${CFG_SAP_VENDOR_DRIVER_AW88262_SUPPORT}" STREQUAL "y")\r
-set(COMPONENT_SRC ${COMPONENT_SRC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88262/aw88262.c\r
-)\r
-set(COMPONENT_INC ${COMPONENT_INC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88262\r
-)\r
-endif()\r
-\r
-if("${CFG_SAP_VENDOR_DRIVER_AW88166_SUPPORT}" STREQUAL "y")\r
-set(COMPONENT_SRC ${COMPONENT_SRC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw88166.c\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx.c\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx_calib.c\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx_device.c\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/product_init_files/aw88166/aw883xx_pid_2066_init.c\r
-)\r
-set(COMPONENT_INC ${COMPONENT_INC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/product_init_files/aw88166\r
- ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/config/aw88166/mono/16bit\r
-)\r
-endif()\r
-\r
-if("${CFG_SAP_VENDOR_DRIVER_ANC_CODEC_SUPPORT}" STREQUAL "y")\r
-set(COMPONENT_SRC ${COMPONENT_SRC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/anc_codec/anc_codec.c\r
-)\r
-set(COMPONENT_INC ${COMPONENT_INC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/anc_codec\r
- ${CMAKE_CURRENT_SOURCE_DIR}/anc_codec/sai01_dac_32.768k\r
-)\r
-endif()\r
-#===================================================================================\r
-set(COMPONENT_DEF\r
- "SAP_PROC_SUPPORT"\r
-)\r
-#===================================================================================\r
-include(${SAP_TOP_DIR}/build/cmake/audio_common.cmake)\r
-install_sdk(${CMAKE_CURRENT_SOURCE_DIR}/aw88166 "*")\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.\r
- * Description: source file for aw88166 driver\r
- */\r
-\r
-#include <stdio.h>\r
-#include "soc_osal.h"\r
-#include "audio_debug.h"\r
-#include "gpio.h"\r
-#include "hal_gpio.h"\r
-#include "i2c.h"\r
-#include "pinctrl.h"\r
-#include "vendor_common.h"\r
-#include "soc_uapi_vendor.h"\r
-\r
-#include "aw883xx_init.h"\r
-#include "aw883xx.h"\r
-#include "aw_params.h"\r
-\r
-static td_bool g_aw88166_i2c_inited = TD_FALSE;\r
-\r
-#define AW88166_PWR_ON_PIN S_AGPIO_L25\r
-#define AW88166_I2C_BUS_ID I2C_BUS_3\r
-#define AW88166_I2C_DEV_ADDR 0x34\r
-\r
-static td_s32 aw_dev0_i2c_write_func(td_u16 dev_addr, td_u8 reg_addr, td_u8 *pdata, td_u16 len)\r
-{\r
- td_s32 ret;\r
- i2c_data_t data;\r
- const td_u8 reg_addr_len = sizeof(reg_addr); /* data len of reg_addr */\r
- const td_u8 send_len = len + reg_addr_len; /* pdata bytes && reg_addr len */\r
- td_u8 *send_data = osal_kmalloc_align(send_len, 0, 8); /* 8 : Align up to 8 bytes */\r
-\r
- if (send_data == TD_NULL) {\r
- ret = -1; /* -1:FAILED ERR CODE */\r
- vendor_log_fun_err(malloc, ret);\r
- return ret;\r
- }\r
-\r
- /* pack reg addr & reg data */\r
- *send_data = reg_addr; /* reg_addr */\r
- ret = memcpy_s(send_data + reg_addr_len, (send_len - reg_addr_len), pdata, len); /* pdata */\r
- if (ret != EOK) {\r
- vendor_log_fun_err(memcpy_s, ret);\r
- goto out;\r
- }\r
-\r
- data.send_buf = send_data;\r
- data.send_len = send_len;\r
- data.receive_buf = NULL;\r
- data.receive_len = 0;\r
- ret = (td_s32)uapi_i2c_master_write(AW88166_I2C_BUS_ID, dev_addr, &data);\r
- if (ret != ERRCODE_SUCC) {\r
- vendor_log_fun_err(uapi_i2c_master_write, ret);\r
- goto out;\r
- }\r
-\r
-out:\r
- if (send_data != TD_NULL) {\r
- osal_kfree(send_data);\r
- }\r
- return ret;\r
-}\r
-\r
-static td_s32 aw_dev0_i2c_read_func(td_u16 dev_addr, td_u8 reg_addr, td_u8 *pdata, td_u16 len)\r
-{\r
- td_s32 ret;\r
-\r
- i2c_data_t data;\r
-\r
- data.send_buf = ®_addr;\r
- data.send_len = sizeof(reg_addr);\r
- data.receive_buf = pdata;\r
- data.receive_len = len;\r
- ret = (td_s32)uapi_i2c_master_writeread(AW88166_I2C_BUS_ID, dev_addr, &data);\r
- if (ret != ERRCODE_SUCC) {\r
- vendor_log_fun_err(uapi_i2c_master_writeread, ret);\r
- return ret;\r
- }\r
-\r
- return AUDIO_SUCCESS;\r
-}\r
-\r
-static td_void aw_dev0_reset_gpio_ctl(bool state)\r
-{\r
- uapi_gpio_set_val(AW88166_PWR_ON_PIN, state);\r
-}\r
-\r
-static td_void aw88166_pwr_on_pin_init(td_void)\r
-{\r
- uapi_gpio_set_dir(AW88166_PWR_ON_PIN, GPIO_DIRECTION_OUTPUT);\r
-}\r
-\r
-static td_s32 aw88166_i2c_init(td_void)\r
-{\r
- td_s32 ret;\r
- audio_func_enter();\r
-\r
- /* init i2c */\r
- vendor_trace_log_u32(AW88166_I2C_BUS_ID);\r
- ret = (td_s32)uapi_i2c_master_init(AW88166_I2C_BUS_ID, I2C_BAUDRATE, I2C_HIGH_SPEED_CODE);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(uapi_i2c_master_init, ret);\r
- return ret;\r
- }\r
-\r
- vendor_printf("aw88166 i2c init success\n");\r
- audio_func_exit();\r
- return AUDIO_SUCCESS;\r
-}\r
-\r
-static td_s32 aw88166_i2c_deinit(td_void)\r
-{\r
- td_s32 ret;\r
- audio_func_enter();\r
-\r
- /* deinit i2c */\r
- vendor_trace_log_u32(AW88166_I2C_BUS_ID);\r
- ret = (td_s32)uapi_i2c_deinit(AW88166_I2C_BUS_ID);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(uapi_i2c_deinit, ret);\r
- return ret;\r
- }\r
-\r
- vendor_printf("aw88166 i2c deinit success\n");\r
- audio_func_exit();\r
- return AUDIO_SUCCESS;\r
-}\r
-\r
-td_s32 aw883xx_pid_2066_dev_init(td_void *aw883xx);\r
-\r
-struct aw_init_info init_info[] = {\r
- {\r
- .dev = AW_DEV_0,\r
- .i2c_addr = AW88166_I2C_DEV_ADDR,\r
- .re_min = 2000, /* awinic:If the re_min(ohms) and re_max(ohms) are not set, the default value is used */\r
- .re_max = 39000,\r
- .mix_chip_count = AW_DEV0_MIX_CHIP_NUM,\r
- .prof_info = g_dev0_prof_info,\r
- .i2c_read_func = aw_dev0_i2c_read_func,\r
- .i2c_write_func = aw_dev0_i2c_write_func,\r
- .reset_gpio_ctl = aw_dev0_reset_gpio_ctl,\r
- .dev_init_ops = {aw883xx_pid_2066_dev_init},\r
- }\r
-};\r
-\r
-static td_s32 audio_aw88166_configuration(const uapi_vendor_codec_attr *attr)\r
-{\r
- td_s32 ret;\r
-\r
- /* awinic:Control interface of dev0 */\r
- /* awinic:initialization */\r
- ret = aw883xx_smartpa_init((td_void *)&init_info[AW_DEV_0]);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_printf("aw883xx_smartpa_init already init\n");\r
- }\r
- /* awinic:set mode "Music", "aw_params.h" contains id information */\r
- ret = aw883xx_set_profile_byname(AW_DEV_0, "Music");\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw883xx_set_profile_byname, ret);\r
- }\r
-\r
- vendor_unused(attr);\r
- return ret;\r
-}\r
-\r
-static td_s32 audio_aw88166_deconfiguration(td_void)\r
-{\r
- /* awinic:Free the requested memory when PA is not used */\r
- aw883xx_smartpa_deinit(AW_DEV_0);\r
-\r
- return AUDIO_SUCCESS;\r
-}\r
-\r
-td_s32 audio_aw88166_init(const uapi_vendor_codec_attr *attr)\r
-{\r
- td_s32 ret;\r
-\r
- audio_func_enter();\r
-\r
- aw88166_pwr_on_pin_init();\r
-\r
- if (g_aw88166_i2c_inited != TD_TRUE) {\r
- ret = aw88166_i2c_init();\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw88166_i2c_init, ret);\r
- return ret;\r
- }\r
- g_aw88166_i2c_inited = TD_TRUE;\r
- } else {\r
- ret = 0;\r
- }\r
-\r
- ret = audio_aw88166_configuration(attr);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(audio_aw88166_configuration, ret);\r
- }\r
-\r
- return AUDIO_SUCCESS;\r
-}\r
-\r
-td_s32 audio_aw88166_deinit(td_void)\r
-{\r
- td_s32 ret;\r
- audio_func_enter();\r
-\r
- ret = audio_aw88166_deconfiguration();\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(audio_aw88166_deconfiguration, ret);\r
- }\r
-\r
- if (g_aw88166_i2c_inited != TD_FALSE) {\r
- ret = aw88166_i2c_deinit();\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw88166_i2c_deinit, ret);\r
- return ret;\r
- }\r
- g_aw88166_i2c_inited = TD_FALSE;\r
- } else {\r
- ret = AUDIO_SUCCESS;\r
- }\r
-\r
- audio_func_exit();\r
- return ret;\r
-}\r
-\r
-td_s32 audio_aw88166_start(const uapi_vendor_codec_attr *attr)\r
-{\r
- td_s32 ret;\r
-\r
- audio_func_enter();\r
-\r
- /* awinic:The platform needs to output I2s first, and then ctl start */\r
- ret = aw883xx_ctrl_state(AW_DEV_0, AW_START);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw883xx_ctrl_state, ret);\r
- }\r
-\r
- vendor_unused(attr);\r
- return ret;\r
-}\r
-\r
-td_s32 audio_aw88166_stop(td_void)\r
-{\r
- td_s32 ret;\r
- audio_func_enter();\r
-\r
- /* awinic:The platform needs to control the stop first and then stop I2S */\r
- ret = aw883xx_ctrl_state(AW_DEV_0, AW_STOP);\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw883xx_ctrl_state, ret);\r
- }\r
- audio_func_exit();\r
- return ret;\r
-}\r
-\r
-td_s32 audio_aw88166_set_aef_profile(uapi_snd_aef_profile aef_profile)\r
-{\r
- td_s32 ret;\r
-\r
- audio_func_enter();\r
-\r
- /* awinic:set mode "Receiver"/"Music", "aw_params.h" contains id information */\r
- if (aef_profile == UAPI_SND_AEF_PROFILE_VOIP) {\r
- /* awinic:set mode "Receiver" */\r
- ret = aw883xx_set_profile_byname(AW_DEV_0, "Receiver");\r
- } else {\r
- /* awinic:set mode "Music" */\r
- ret = aw883xx_set_profile_byname(AW_DEV_0, "Music");\r
- }\r
-\r
- if (ret != AUDIO_SUCCESS) {\r
- vendor_log_fun_err(aw883xx_set_profile_byname, ret);\r
- }\r
-\r
- audio_func_exit();\r
- return ret;\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2022. All rights reserved.\r
- * Description: Application Core OS Priority Initialize Interface for Standard\r
- * Author:\r
- * Create: 2022-12-03\r
- */\r
-#include "debug_print.h"\r
-#include "thread_init.h"\r
-#include "common_def.h"\r
-#include "pm.h"\r
-#include "watchdog.h"\r
-/* after reboot system emmc need write exc info to the file system from sector */\r
-#if defined(SAVE_EXC_INFO) && defined(CFG_DRIVERS_MMC)\r
-#include "exception.h"\r
-#endif\r
-#ifdef CFG_DRIVERS_MMC\r
-#ifdef __LITEOS__\r
-#include "soc/mmc.h"\r
-#endif\r
-#include "soc_mmc.h"\r
-#endif\r
-#include "soc_lcd_api.h"\r
-#ifdef CFG_DRIVERS_NANDFLASH\r
-#include "nandflash_config.h"\r
-#include "yaffs_nand_drv.h"\r
-#endif\r
-#if defined(TPTYPE_TMA525B)\r
-#include "tma525b_drv1.h"\r
-#elif defined(TPTYPE_ZTW523)\r
-#include "ztw523_touch1.h"\r
-#elif defined(TPTYPE_FT6X46)\r
-#include "ft6x46_touch1.h"\r
-#else\r
-#include "ztw523_touch1.h"\r
-#endif\r
-#include "thread_pri_init.h"\r
-#if DSP_EXIST == YES\r
-#include "soc_uapi_audio_sys.h"\r
-#include "soc_uapi_vendor.h"\r
-#include "soc_uapi_sound.h"\r
-/* Audio codec vendor select according to hardware connection:\r
- * define AUDIO_SMARTPA_AW88166 : macro to init smartpa aw88166;\r
- * define AUDIO_SMARTPA_AW88166_I2S_ID UAPI_SND_OUT_PORT_I2S0 : macro to specify i2s id connecting to smartpa aw88166;\r
- */\r
-#if 0\r
-#define AUDIO_SMARTPA_AW88262\r
-#define AUDIO_SMARTPA_AW88262_I2S_ID UAPI_SND_OUT_PORT_I2S2\r
-#else\r
-#define AUDIO_SMARTPA_AW88166\r
-#define AUDIO_SMARTPA_AW88166_I2S_ID UAPI_SND_OUT_PORT_I2S0\r
-#endif\r
-#endif /* DSP_EXIST */\r
-#include "panic.h"\r
-#include "board_init.h"\r
-#include "kernel_init.h"\r
-#ifdef SUPPORT_AT_OHOSFWK\r
-#include "ohosfwk_startup.h"\r
-#endif\r
-#include "clocks_config.h"\r
-\r
-#define EMMC_BASE_ADDR 0x52062000\r
-#define TASK_PRIORITY_APP (osPriority_t)(17)\r
-#define TICK_TEN_MS (10U)\r
-#define WAIT_BT_BOOTUP_TIME 200U\r
-\r
-static void thread_main(const void *unused);\r
-void bt_acore_btc_ipc_receive_init(void);\r
-\r
-app_task_definition_t g_thread_pri = { { "thread_pri", 0, NULL, 0, NULL, (0x1000), TASK_PRIORITY_APP, 0, 0 },\r
- (osThreadFunc_t)thread_main, NULL, NULL, USE_DTCM_MEM };\r
-store_class g_store_init_select = STORE_CLASS_NAND;\r
-\r
-#if defined(ENABLE_UIKIT) || defined(ENABLE_LVGL)\r
-static void sample_gfx_init(void)\r
-{\r
-#if defined(TPTYPE_TMA525B)\r
- tma525b_host_init_sample();\r
-#elif defined(TPTYPE_ZTW523)\r
- ztw523_host_init_sample();\r
-#elif defined(TPTYPE_FT6X46)\r
- ft6x46_host_init_sample();\r
-#else\r
- ztw523_host_init_sample();\r
-#endif\r
- uapi_lcd_init();\r
-#ifdef SUPPORT_GPU_GMMU\r
- drv_gmmu_module_init();\r
-#endif\r
- uapi_vau_module_init();\r
- uapi_dpu_module_init();\r
-#ifdef SUPPORT_GPU_JPEG\r
- uapi_jpeg_module_init();\r
-#endif\r
-}\r
-#endif\r
-\r
-#ifdef CFG_DRIVERS_MMC\r
-static void emmc_init(void)\r
-{\r
- /**\r
- * FPGA解复位, 设置CMD_CONFLICT_CHECK\r
- * 之后才能设置管脚\r
- */\r
- writew(EMMC_BASE_ADDR + 0x508, 0);\r
- init_emmc_pinmux();\r
- int ret = emmc_drv_context_init();\r
- if (ret != ENOERR) {\r
- PRINT("emmc init error:[%d]"NEWLINE, ret);\r
- }\r
- mmc_set_first_init_flag(true);\r
- mmc_set_sleep_init_flag(true);\r
- PRINT("emmc init success\r\n");\r
-\r
-#if defined(SAVE_EXC_INFO)\r
- if (emmc_exc_info_write() != ERRCODE_SUCC) {\r
- PRINT("emmc_exc_info_write failed"NEWLINE);\r
- }\r
-#endif\r
-}\r
-#endif\r
-\r
-#ifdef CFG_DRIVERS_NANDFLASH\r
-static void nandflash_init(void)\r
-{\r
- int32_t ret = 0;\r
- ret = nandflash_filesystem_init();\r
- if (ret != 0) {\r
- PRINT("nandflash init error[%d]"NEWLINE, ret);\r
- }\r
- PRINT("nandflash init success\r\n");\r
-}\r
-#endif\r
-\r
-static void board_version_class_print(void)\r
-{\r
- PRINT("**********startup info**********\r\n");\r
- PRINT("os init class is %s."NEWLINE, (g_os_init_select == OS_CLASS_LITEOS) ? "liteos" : "freertos");\r
- PRINT("store init class is %s."NEWLINE, (g_store_init_select == STORE_CLASS_NAND) ? "nandflash" : "emmc");\r
- PRINT("display init class is %s."NEWLINE, (g_display_init_select == DISPLAY_CLASS_QSPI) ? "QSPI" : "MIPI");\r
- PRINT("board init class is %s."NEWLINE, (g_board_init_select == BOARD_CLASS_E0B2) ? "E0B2" : "E0B4");\r
-#ifdef CONFIG_PSRAM_SUPPORT\r
- PRINT("psram density is %s."NEWLINE, (get_psram_density() == PSRAM_DENSITY_16M) ? "16MB" : "32MB");\r
-#endif\r
- PRINT("**********startup info**********\r\n");\r
-}\r
-\r
-#if DSP_EXIST == YES\r
-/**\r
- * The sample code of the vendor,\r
- * which will be implemented by the customer in the future\r
- */\r
-#ifdef AUDIO_SMARTPA_AW88262\r
-td_s32 audio_aw88262_init(const uapi_vendor_codec_attr *attr);\r
-td_s32 audio_aw88262_deinit(td_void);\r
-\r
-static uapi_vendor_driver g_aw88262_driver = {\r
- .out_port = AUDIO_SMARTPA_AW88262_I2S_ID,\r
- .init = audio_aw88262_init,\r
- .deinit = audio_aw88262_deinit,\r
- .set_aef_profile = TD_NULL,\r
-};\r
-\r
-static td_s32 audio_aw88262_register_driver(void)\r
-{\r
- return uapi_audio_vendor_register(&g_aw88262_driver);\r
-}\r
-#endif /* AUDIO_SMARTPA_AW88262 */\r
-\r
-#ifdef AUDIO_SMARTPA_AW88166\r
-td_s32 audio_aw88166_init(const uapi_vendor_codec_attr *attr);\r
-td_s32 audio_aw88166_deinit(td_void); /* Call when device power off */\r
-td_s32 audio_aw88166_start(const uapi_vendor_codec_attr *attr);\r
-td_s32 audio_aw88166_stop(td_void);\r
-td_s32 audio_aw88166_set_aef_profile(uapi_snd_aef_profile aef_profile);\r
-\r
-static uapi_vendor_driver g_aw88166_driver = {\r
- .out_port = AUDIO_SMARTPA_AW88166_I2S_ID,\r
- .init = audio_aw88166_start,\r
- .deinit = audio_aw88166_stop,\r
- .set_aef_profile = audio_aw88166_set_aef_profile,\r
-};\r
-\r
-static td_s32 audio_aw88166_register_driver(void)\r
-{\r
- const uapi_vendor_codec_attr attr = {};\r
-\r
- audio_aw88166_init(&attr); /* Init aw88166 once when device power on */\r
-\r
- return uapi_audio_vendor_register(&g_aw88166_driver);\r
-}\r
-#endif /* AUDIO_SMARTPA_AW88166 */\r
-\r
-static void audio_smartpa_init(void)\r
-{\r
- uint32_t ret;\r
-\r
-#ifdef AUDIO_SMARTPA_AW88262\r
- ret = (uint32_t)audio_aw88262_register_driver();\r
- if (ret != 0) {\r
- PRINT("aw88262 register driver error\r\n");\r
- }\r
-#endif /* AUDIO_SMARTPA_AW88262 */\r
-\r
-#ifdef AUDIO_SMARTPA_AW88166\r
- ret = (uint32_t)audio_aw88166_register_driver();\r
- if (ret != 0) {\r
- PRINT("aw88166 register driver error\r\n");\r
- }\r
-#endif /* AUDIO_SMARTPA_AW88166 */\r
-}\r
-#endif /* DSP_EXIST */\r
-\r
-#if DSP_EXIST == YES\r
-static void audio_init()\r
-{\r
- (void)osDelay(TICK_TEN_MS);\r
- uapi_watchdog_kick();\r
-\r
- audio_smartpa_init();\r
-\r
- uint32_t ret = (uint32_t)uapi_audio_init();\r
- if (ret != 0) {\r
- PRINT("audio init error:[%d]\r\n", ret);\r
- } else {\r
- PRINT("audio init OK\r\n");\r
- }\r
-}\r
-#endif\r
-\r
-void rc_calibration_func_notify(void)\r
-{\r
-#ifdef SUPPORT_RC_CALIBRATION\r
- /* BT核用来通知MCU 32K校准值 */\r
- writew(GLB_CTL_D_RB_BASE + GLB_GP_D_REG3, 0x0);\r
- /* 通知BT核 32K时钟来源 */\r
- writew(GLB_CTL_D_RB_BASE + GLB_GP_D_REG2, CLOCK_SOURCE_RC);\r
-#else\r
- writew(GLB_CTL_D_RB_BASE + GLB_GP_D_REG2, CLOCK_SOURCE_XO);\r
-#endif\r
-}\r
-\r
-static void force_to_sleep(void)\r
-{\r
- if (reg16_getbits(0x5702C010, 0x8, 0x8) == 0x5A) { // 特殊模式下,强制进入深睡中\r
- reg16_clrbits(0x5702C010, 0x8, 0x8);\r
- uapi_tcxo_delay_ms(WAIT_BT_BOOTUP_TIME);\r
- hal_pmu_cldo_enable_slp_bypass(HAL_PMU_CLDO1, TURN_OFF);\r
- uapi_sys_force_mcu_only_deep_sleep_mode(0);\r
- }\r
-}\r
-\r
-static void thread_main(const void *unused)\r
-{\r
- PRINT("thread_main start "NEWLINE);\r
- unused(unused);\r
- rc_calibration_func_notify();\r
- bt_acore_btc_ipc_receive_init();\r
- uapi_pm_control(PM_BT_POWER_UP_AND_RUN);\r
-#ifdef FORCE_TO_DEEP_SLEEP\r
- force_to_sleep();\r
-#endif\r
- los_vfs_init();\r
- uint32_t ret = dpal_driver_base_init();\r
- if (ret != 0) {\r
- PRINT("dpal driver base init error"NEWLINE);\r
- panic(PANIC_ASSERT, __LINE__);\r
- }\r
-#ifdef CFG_DRIVERS_MMC\r
- emmc_init();\r
- g_store_init_select = STORE_CLASS_EMMC;\r
- sdiom_internal_freq_handler_register(mmc_set_internal_clk);\r
-#endif\r
-#ifdef CFG_DRIVERS_NANDFLASH\r
- yaffs_nand_drv_checkptset(YAFFS_CHECKPT_SKIPED);\r
- nandflash_init();\r
- g_store_init_select = STORE_CLASS_NAND;\r
-#endif\r
- uapi_pm_control(PM_DISPLAY_POWER_UP_AND_RUN);\r
- (void)osDelay(TICK_TEN_MS);\r
-\r
-#if defined(ENABLE_UIKIT) || defined(ENABLE_LVGL)\r
- sample_gfx_init();\r
-#else\r
- uapi_pm_control(PM_DISPLAY_POWER_OFF);\r
-#endif\r
-\r
-#if DSP_EXIST == YES\r
- audio_init();\r
-#endif\r
- board_version_class_print();\r
- uapi_watchdog_kick();\r
- thread_init();\r
- button_app_init();\r
- uapi_calendar_init();\r
-#ifdef SUPPORT_AT_OHOSFWK\r
- ohos_startup();\r
-#endif\r
- uapi_pm_remove_sleep_veto(PM_ID_DEBUG);\r
- set_startup_finish_flag();\r
-}\r
-\r
-void thread_pri_init(void)\r
-{\r
- /* Create tasks */\r
- g_thread_pri.task_handle = osThreadNew(g_thread_pri.func, NULL, &(g_thread_pri.attr));\r
- if (g_thread_pri.task_handle == NULL) {\r
- PRINT("create thread pri failed!");\r
- }\r
-}\r
+++ /dev/null
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Reboot Presenter
- * Create: 2022-04-28
- */
-
-#include "RebootPresenter.h"
-#include "RebootView.h"
-#include "RebootModel.h"
-#include "drag_event.h"
-#include "wearable_log.h"
-
-namespace OHOS {
-static RebootPresenter *g_pRebootPresenter = nullptr;
-
-RebootPresenter::RebootPresenter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::RebootPresenter");
- g_pRebootPresenter = this;
-}
-
-RebootPresenter::~RebootPresenter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::~RebootPresenter");
- g_pRebootPresenter = nullptr;
-}
-
-RebootPresenter *RebootPresenter::GetInstance()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter GetInstance");
- return g_pRebootPresenter;
-}
-
-void RebootPresenter::OnStart()
-{
- Presenter<RebootView>::OnStart();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::On Start ");
-}
-
-void RebootPresenter::OnPause(void) {}
-
-void RebootPresenter::OnResume(void) {}
-
-void RebootPresenter::OnStop(void) {}
-
-
-extern "C"
-{
-extern void uapi_sys_shipmode(uint32_t arg);
-extern uint32_t mcu_os_sys_reset(uint8_t *para, uint32_t para_len);
-}
-bool RebootPresenter::OnClick(UIView& view, const ClickEvent& event)
-{
- UNUSED(event);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClick OnClick");
- if (strcmp(view.GetViewId(), REBOOT_BUTTON) == 0) {
- RebootView::GetInstance()->ChangeView(REBOOTVIEW, REBOOTDEVICEVIEW);
- } else if (strcmp(view.GetViewId(), SHUTDOWN_BUTTON) == 0) {
- RebootView::GetInstance()->ChangeView(REBOOTVIEW, SHUTDOWNDEVICEVIEW);
- } else if (strcmp(view.GetViewId(), REBOOTDEVICE_BUTTON) == 0) {
- // 重启
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "REBOOTDEVICE_BUTTON OnClick");
- mcu_os_sys_reset(NULL,NULL);
- } else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_BUTTON) == 0) {
- // 关机
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SHUTDOWNDEVICE_BUTTON OnClick");
- uapi_sys_shipmode(0);
- }
- return true;
-}
-
-bool RebootPresenter::OnDrag(UIView& view, const DragEvent& event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::OnDrag");
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
- if (strcmp(view.GetViewId(), REBOOT_VIEW) == 0) {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE);
- } else if (strcmp(view.GetViewId(), REBOOTDEVICE_VIEW) == 0) {
- if (RebootModel::GetInstance()->GetExitsView() == 0) {
- RebootView::GetInstance()->ChangeView(REBOOTDEVICEVIEW, REBOOTVIEW);
- } else {
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
- RebootModel::GetInstance()->SetExitsView(false);
- }
- } else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_VIEW) == 0) {
- if (RebootModel::GetInstance()->GetExitsView() == 0) {
- RebootView::GetInstance()->ChangeView(SHUTDOWNDEVICEVIEW, REBOOTVIEW);
- } else {
- NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
- RebootModel::GetInstance()->SetExitsView(false);
- }
- }
- }
- return true;
-}
-}
+++ /dev/null
-#!/usr/bin/env python3
-# encoding=utf-8
-# ============================================================================
-# @brief Target Definitions File
-# Copyright CompanyNameMagicTag 2022-2022. All rights reserved.
-# ============================================================================
-
-target = {
- #target1: liteos + lvgl + nandflash + mipi + no psram + mini_audio 典型单封LVGL版本
- 'brandy-target1': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_template',
- 'std_libs': [],
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CONFIG_ZDIAG_NV_SUPPORT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH',
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT',
- 'SUPPORT_BLE', 'SUPPORT_BREDR', 'MEMORY_MINI', 'ENABLE_LVGL', 'SW_UART_DEBUG', "SAVE_EXC_INFO",
- "CONFIG_LOW_POWER_TEST", 'MIPI_ULPS_SUPPORT', 'ENABLE_ECC', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'CONFIG_NV_SUPPORT_ASYNCHRONOUS_STORE=0'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc','fs_yaffs2', 'x_vfs_private',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service',
- 'audio_at_service', 'media_at_service', 'bt_manager_at_service',
- "audio_proc", "audio_dump", "audio_probe", "gpu_proc", 'bts_header'],
- 'ram_component_set': ['bgh', 'media_mini', 'gpu', 'graphic_lvgl_mini', 'dfx_set'],
- 'image_analysis': True,
- 'dsp_version': 'mini',
- 'packet': True,
- 'fs_image': False,
- },
- #target3: liteos + uikit + nandflash + mipi + psram + audio 典型合封UIKIT版本
- 'brandy-target3': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CONFIG_PSRAM_SUPPORT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH', 'CONFIG_ZDIAG_NV_SUPPORT',
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'SUPPORT_BLE', 'SUPPORT_BREDR', 'ENABLE_UIKIT', 'SUPPORT_GPU_JPEG', 'SUPPORT_GPU_GMMU', 'SUPPORT_GPU_OPENVG',
- 'SW_UART_DEBUG', 'SAVE_EXC_INFO', 'HASH_MEM_COPY','MIPI_ULPS_SUPPORT', 'CONFIG_LOW_POWER_TEST',
- 'ENABLE_ECC', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram', 'x_vfs_private',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service',
- 'audio_at_service', 'media_at_service', 'bt_manager_at_service',
- "audio_proc", "audio_dump", "audio_probe", "gpu_proc", 'bts_header'],
- 'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_uikit', 'graphic_test', 'bgh_audio', 'dfx_set', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
- 'fs_image': False
- },
- #target4: liteos + nandflash + psram + mini_audio + no gui 外设类版本
- 'brandy-target4': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_template',
- 'std_libs': ['c++', 'c++abi', 'unwind'],
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'I2C_SLAVE_REG_ADDR_4BYTE', 'SUPPORT_CXX',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH', 'HASH_MEM_COPY',
- 'CONFIG_ZDIAG_NV_SUPPORT', 'SUPPORT_BLE', 'SUPPORT_BREDR',
- 'SW_UART_DEBUG', 'SAVE_EXC_INFO', 'CONFIG_PSRAM_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT',
- 'CONFIG_LOW_POWER_TEST', 'CONFIG_ADC_SUPPORT_AUTO_SCAN',
- 'CONFIG_ADC_SUPPORT_LONG_SAMPLE', 'ENABLE_ECC', 'CONFIG_DIAG_GPU_PROC_SUPPORT', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'partition', 'partition_brandy', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram', 'x_vfs_private',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc','fs_yaffs2',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'app_at_service',
- 'audio_at_service', 'bt_manager_at_service', "gpu_proc", 'bts_header'],
- 'ram_component_set': ['bgh', 'gpu', 'media_target4', 'update_app', 'dfx_set', 'bgh_audio', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
- 'fs_image': False,
- },
- #target5: freertos + lvgl + nand + mipi + psram + audio + media 典型合封LVGL版本
- 'brandy-target5': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_freertos_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CONFIG_PSRAM_SUPPORT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH', 'CONFIG_ZDIAG_NV_SUPPORT',
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'SUPPORT_BLE', "SUPPORT_BREDR", 'ENABLE_LVGL', "SUPPORT_GPU_JPEG", "SUPPORT_GPU_GMMU", "SUPPORT_GPU_OPENVG",
- 'SW_UART_DEBUG', 'MEMORY_NO_CACHE', "SAVE_EXC_INFO", "HASH_MEM_COPY", 'MIPI_ULPS_SUPPORT',
- 'CONFIG_LOW_POWER_TEST', 'ENABLE_ECC', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- 'lcd', 'qspi_display', 'partition', 'partition_brandy', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram', 'x_vfs_private',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd','graphic_at_service', 'app_at_service',
- 'audio_at_service', 'media_at_service', 'bt_manager_at_service',
- "audio_proc", "audio_dump", "audio_probe", "gpu_proc", 'bts_header'],
- 'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_lvgl', 'bgh_audio', 'update_app', 'dfx_set', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
- 'fs_image': False
- },
- #native-js: liteos + uikit + nandflash + mipi + psram + audio 典型合封UIKIT版本
- 'brandy-native-js': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CONFIG_PSRAM_SUPPORT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH', 'CONFIG_ZDIAG_NV_SUPPORT',
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'SUPPORT_BLE', 'SUPPORT_BREDR', 'ENABLE_UIKIT', 'SUPPORT_GPU_JPEG', 'SUPPORT_GPU_GMMU', 'SUPPORT_GPU_OPENVG',
- 'SW_UART_DEBUG', 'SAVE_EXC_INFO', 'HASH_MEM_COPY', 'JS_ENABLE', 'CONFIG_LOW_POWER_TEST',
- 'FT_SINGLE_UART',
- 'TPTYPE_FT6X46',
- 'ENABLE_ECC', 'MIPI_ULPS_SUPPORT', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram', 'bt_manager_at_service',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2', 'x_vfs_private',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service', 'ohosfwk_at_service',
- "audio_proc", "audio_dump", "audio_probe", "power_manager", "gpu_proc",'bts_header', 'baidumapsdk'],
- 'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_uikit', 'bgh_audio', 'dfx_set', 'ohos_set', 'wearable_set', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
- 'fs_image': True
- },
- #native-js-user: liteos + uikit + nandflash + mipi + psram + audio 典型合封UIKIT版本
- #离线日志版本
- 'brandy-native-js-user': {
- 'base_target_name': 'brandy-native-js',
- 'defines': ['-:SW_UART_DEBUG'],
- },
- #native-xts: liteos + uikit + nandflash + mipi + psram + audio 典型合封UIKIT版本
- 'brandy-xts': {
- 'board': 'evb',
- 'base_target_name': 'target_standard_brandy_application_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__', 'CONFIG_OTA_UPDATE_SUPPORT',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CONFIG_PSRAM_SUPPORT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'CFG_DRIVERS_NANDFLASH', 'CONFIG_ZDIAG_NV_SUPPORT',
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT',
- 'SUPPORT_BLE', 'SUPPORT_BREDR', 'ENABLE_UIKIT', 'SUPPORT_GPU_JPEG', 'SUPPORT_GPU_GMMU', 'SUPPORT_GPU_OPENVG', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'SW_UART_DEBUG', 'SAVE_EXC_INFO', 'HASH_MEM_COPY', 'JS_ENABLE', 'CONFIG_LOW_POWER_TEST',
- 'ENABLE_ECC', 'XTS_SUPPORT', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'ulp_aon', 'hal_l2ram',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2', 'x_vfs_private',
- 'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service', 'ohosfwk_at_service',
- "audio_proc", "audio_dump", "audio_probe", "power_manager", "gpu_proc", 'bts_header', 'baidumapsdk'],
- 'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_uikit', 'bgh_audio', 'dfx_set', 'ohos_set', 'wearable_set', 'xts_set', 'xts_test_set', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
- 'fs_image': False
- },
-
- 'brandy-target1-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'MEMORY_MINI', 'SW_UART_DEBUG',
- 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'x_vfs_private',
- 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header'],
- 'ram_component_set': ['pinctrl', 'dfx_set', 'gpu']
- },
- 'brandy-target3-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'SW_UART_DEBUG', "HASH_MEM_COPY",
- 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'x_vfs_private',
- 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header'],
- 'ram_component_set': ['pinctrl', 'dfx_set', 'gpu']
- },
- 'brandy-target4-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'SW_UART_DEBUG', 'HASH_MEM_COPY',
- 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch', 'x_vfs_private',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'pm_service', 'pm_brandy',
- 'ulp_aon', 'hal_l2ram', 'cmn_header'],
- 'ram_component_set': ['pinctrl', 'dfx_set', 'gpu']
- },
- 'brandy-target5-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_freertos_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", "__FREERTOS__", 'ENABLE_UIKIT', 'SW_UART_DEBUG',
- "HASH_MEM_COPY", 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'pm_service', 'pm_brandy', 'x_vfs_private',
- 'ulp_aon', 'hal_l2ram', 'cmn_header'],
- 'ram_component_set': ['pinctrl', 'dfx_set', 'gpu']
- },
- 'brandy-native-js-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'SW_UART_DEBUG', "HASH_MEM_COPY",
- 'FT_SINGLE_UART','TPTYPE_FT6X46',
- 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'x_vfs_private',
- 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header',
- 'at_cmd'
- ],
- 'ram_component_set': ['pinctrl', 'dfx_set' ,'gpu']
- },
- 'brandy-xts-r': {
- 'board': 'evb',
- 'base_target_name': 'target_brandy_recovery_template',
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'SW_UART_DEBUG', "HASH_MEM_COPY",
- 'ENABLE_ECC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'x_vfs_private',
- 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header'],
- 'ram_component_set': ['pinctrl', 'dfx_set']
- },
- 'testsuite-brandy-sdk': {
- 'base_target_name': 'target_brandy_testsuite_application',
- 'board': 'evb',
- 'defines': ['SW_UART_DEBUG', 'USE_CMSIS_OS', 'CFG_DRIVERS_NANDFLASH',
- 'PRE_ASIC', 'BRANDY_PRODUCT_EVB4',
- '_ALL_SOURCE', '__LITEOS__', 'SUPPORT_CXX', 'ENABLE_UIKIT',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'MULTIPLEXING_UART',
- 'CONFIG_SPI_SUPPORT_POLL_AND_DMA_AUTO_SWITCH', 'CONFIG_SPI_AUTO_SWITCH_DMA_THRESHOLD=0x8',
- 'CONFIG_I2C_SUPPORT_POLL_AND_DMA_AUTO_SWITCH', 'CONFIG_I2C_POLL_AND_DMA_AUTO_SWITCH_THRESHOLD=0x8'],
- 'ram_component': ["osal", "arch_port", "liteos_port", 'psram', 'pm_service', 'pm_brandy',
- 'hal_mips', 'lcd', 'qspi_display', 'hal_dma_v100', "dfx_port_brandy",
- 'dfx_log_brandy', 'hal_mipi', 'mipi_tx', 'non_os', 'touch', 'ulp_aon',
- 'hal_l2ram', "test_security", "test_spi", 'dfx_file_operation',
- "test_timer", "test_int", "test_pm",
- "test_lcd", "test_qspi_display", "test_systick", "test_tcxo", "test_watchdog",
- "test_vfs_emmc", "test_flash", "test_pwm", "test_i2c", "test_cmsis",
- "test_xip", "test_mipi", "test_touch", 'algorithm', 'test_sdio', 'x_vfs_private',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2' , 'nand_flash' , 'mtd_com',
- 'cmn_header', 'test_calendar', 'test_gpio', 'test_pinctrl', 'test_dma', 'test_uart',
- 'test_reboot', 'test_rtc_unified',
- 'test_nandflash', 'test_adc', 'test_pmp', 'efuse', 'hal_efuse_v100', 'efuse_porting'],
- 'ram_component_set': ['dfx_set', '-:gpu_test', 'rtc_unified'],
- 'os': 'liteos',
- },
- 'brandy-ssb': {
- 'base_target_name': 'target_ssb_template_brandy',
- 'board': 'evb',
- 'defines': ["-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", "PRE_ASIC", "BRANDY_PRODUCT_EVB4",
- "SSB_USE_PLL", "VERSION_STANDARD", "BUILD_APPLICATION_SSB", "LIBBOOTLOADER", "LIBCODELOADER",
- "LIBCPU_UTILS", "LIBAPP_VERSION", "LIBPANIC", "LIBCONNECTIVITY", "LIBERROR_CODE", "LIBSEC_RANDOM",
- "LIBCODELOADER_SSB", "LIBJLINK_LOAD", "LIBLIB_UTILS", "LIBBUILD_VERSION",
- 'ENABLE_ECC',
- "CFG_DRIVERS_NANDFLASH",
- "NO_TIMEOUT", "CONFIG_UART_BAUD_RATE_DIV_8", 'SW_UART_DEBUG', 'LARGE_BUFFER',
- 'FT_SINGLE_UART'
- ],
- 'ram_component': ['arch_port', 'hal_l2ram', 'sec_boot', 'libboundscheck',
- 'dfx_exception', 'error_code', 'psram', 'osal', 'cmn_header', 'boot_ulp', 'boot_nandflash'],
- 'ram_component_set': ['pinctrl'],
- 'target': 'ssb',
- }
-}
-
-target_group = {
- # ci protect target list
- 'pack_brandy_target1': ['brandy-ssb', 'brandy-target1-r', 'brandy-target1'],
- 'pack_brandy_target3': ['brandy-ssb', 'brandy-target3-r', 'brandy-target3'],
- 'pack_brandy_target4': ['brandy-ssb', 'brandy-target4-r', 'brandy-target4'],
- 'pack_brandy_target5': ['brandy-ssb', 'brandy-target5-r', 'brandy-target5'],
- 'pack_brandy_native_js': ['brandy-ssb', 'brandy-native-js-r', 'brandy-native-js'],
- 'pack_brandy_native_js_user': ['brandy-ssb', 'brandy-native-js-r', 'brandy-native-js-user'],
- 'pack_brandy_xts': ['brandy-ssb', 'brandy-xts-r', 'brandy-xts'],
-
- 'brandy_all': ['brandy-ssb',
- 'brandy-target1', 'brandy-target3', 'brandy-target4', 'brandy-target5', 'brandy-native-js', 'brandy-native-js-user', 'brandy-xts',
- 'brandy-target1-r', 'brandy-target3-r', 'brandy-target4-r', 'brandy-target5-r', 'brandy-native-js-r', 'brandy-xts-r',
- 'testsuite-brandy-sdk']
-}
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2018-2021. All rights reserved.
- * Description: brandy evb board config
- * Author: @CompanyNameTag
- * Create: 2020-02-19
- */
-#ifndef BOARD_EVB_CONFIG_H
-#define BOARD_EVB_CONFIG_H
-
-#include "pinctrl_porting.h"
-#include "gpio_porting.h"
-#include "platform_types.h"
-
-#ifdef SUPPORT_CAT1_SERVICE
-#include "cat1_ctl.h"
-#endif
-
-#ifdef ENABLE_CYWEE
-extern void cywee_int_callback(pin_t pin, uintptr_t param);
-#endif
-/**
- * @addtogroup connectivity_config_boards
- * @{
- */
-/**
- * @brief Global evb pio functions.
- */
-const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO0
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO1
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO2
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO3
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO4 clk
- { HAL_PIO_FUNC_QSPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO5 cs
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_EGPIO6
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO7
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO8
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO9
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO10
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO11
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO12
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO13
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO14
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO15
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO16
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO17
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO18
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO19
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO20
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO21
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO22 clk
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_EGPIO23 ce
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO24
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO25
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO0 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO1 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO2 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO3 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO4 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO5 NC
-#if (defined CFG_DRIVERS_NANDFLASH)
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO6
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO7
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO8
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO9
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO10
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO11 cs0
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO12 cs1
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO13
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO14
- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO15 clk
-#else
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO6
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO7
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO8
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO9
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO10
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO11
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO12
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO13
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO14
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO15 emmc clk
-#endif
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO0 NC
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO1 NC
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO2 NC
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO3 NC
-
-// #if (defined BRANDY_PRODUCT_EVB4)
- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO4 NC
-// #else
- // { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO4 NC
-// #endif
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO5 NC
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO6 SPI1 DI
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO7 SPI1 DO
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO8 SPI1 CLK
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO9 SPI1 CS0
- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO10 SPI1 CS1 NC
-
- { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO11 i2c0 SCL NC
- { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO12 I2C0 SDA
- { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 I2C1 SCL touch i2c
- { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14 I2C1 SDA
- { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO15 I2C2 SCL Sensor 6Öá Ö¸ÄÏÕë ÐÄÂÊ
- { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO16 I2C2 SDA Sensor
- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 i2c3 SCL smart pa\ Ô¤ÁôÂí´ï¿ØÖÆ \°²È«Ð¾Æ¬
- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO18 I2C3 SDA
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO19 uart1 tx
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO20 uart1 rx
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO21 uart1 rts
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO22 uart1 cts
- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO23 NC
- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO24 NC
- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO25 NC
- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO26 NC
-#if (defined QSPI_DISPLAY)
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO27
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO28
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO29
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO30
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO31
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO32
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO27
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO28
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO29
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO30
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO31
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO32
-#endif
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO33 huart tx
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO34 huart rx
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO35
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO36
-#if 0
- { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx
- { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO38 uart rx
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO38 uart rx NC
-#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L0 NC
-
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L1 i2s1
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L2
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L3
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L4
-
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L5
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L6 i2s0
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L7
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L8
-
-#if (defined FT_BT_UART)
- { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L9 uart2 txd
- { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 uart2 rxd
-#else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L9 dsp uart TP35
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 dsp uart TP36
-#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L11 G_INT1
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L12 i2c data HX3507_SDIO
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L13 i2c CLK HX3507_SCLK
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L14 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L15 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L16 NC
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L17 HX3507_INT not use
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //ÔÝʱÎÞÓ㬲ÉÓÃVDDIO ĬÈÏ¿ªÆô EXt V3.0 EXt V1.8
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L19 G_INT2 //ÔÝʱ²»ÓÃ
-
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20 0.2C_CHRG
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçÔ´
-#ifdef QSPI_DISPLAY
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 QSPI TE
-#else
- { HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 MIPI TE
-#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23 CAT_1_PWR_ON ¿ØÖÆCAT_1¿ª»ú½Å£¬»òÕß¿ØÖÆ CAT1µçÔ´ À¸ßÓÐЧ
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L24 LCM_EN
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L25 //////////// audio pa reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L26 ÐÄÂʸ´Î» PPG reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L27 LCM reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L28 CAT_1¸´Î» CAT1_RESET_N ÀµÍÓÐЧ
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L29 charge done info ¼ì²âÊÇ·ñ³äÂúµç
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L30 KP_MKIN1 »½ÐÑ CAT1 £¬Êä³ö
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L31 KP_MKOUIT1 »½ÐÑ À¶ÑÀ ,ÊäÈë
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L32 NC
-
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1 SE_REST °²È«Ð¾Æ¬¸´Î»»½ÐѽÅ
-// #if VIB_USE_PWM
- // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
- // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
-// #else
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
-// #endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R3 NC
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_R4 tp reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R5 touch int
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 PRG_INT ÐÄÂÊÖжÏ
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R7 GYRO_INT2
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R8 GYRO_INT1
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9 BAT_CHARGE_OFF ¹Øµô³äµç ζȸߵÄʱºò
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R10 Key2 ///////////////////HAL_PIO_IE_ENBALE input enable
-
-#if CORE == APPS
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO0 mode not config
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO1 mode not config
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO2 mode not config
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO3 mode not config
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO4
- { HAL_PIO_FUNC_SWD, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // ULP_GPIO5
- { HAL_PIO_FUNC_SWD, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // ULP_GPIO6
-#endif
-};
-/**
- * @}
- */
-
-
-/**
- * @addtogroup connectivity_config_boards
- * @{
- */
-/**
- * @brief Global evb gpio functions.
- *
- *
- * typedef struct {
- pin_t gpio;
- hal_gpio_direction_t direction;
- hal_gpio_level_t level;
- uint32_t triger;
- hal_gpio_callback_t callback;
-} hal_gpio_config_t;
- */
-
-
-//ĬÈÏ¿ªÆôCat1 È»ºóÔÙ¸ù¾ÝÅäÖþö¶¨ÊÇ·ñ¹Ø±Õ.
-//ĬÈϲ»¿ªÆô ppg checkidʧ°Ü£¬ÔÒòδ֪£¬ÔÝʱ¿ª»ú¿ªÆôcat1
-#define DEFAULT_POWERON_CAT1 0
-
-//ÐèÒªÅäÖÃĬÈÏÊä³öµÄ£¬ÒÔ¼°ÐèÒªÅäÖÃĬÈÏÊäÈëÖжϺ¯ÊýµÄ¡£
-const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
-
-#if DEFAULT_POWERON_CAT1
- // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
- { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
- // S_AGPIO_L28 Cat1 reset ---- low reset
- { S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#else
- // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
- { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_L28 Cat1 reset ---- low reset
- { S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-#endif
- // S_AGPIO_L17 HX3507_INT
- // { S_AGPIO_L17, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_L12 SDIO_BT
- { S_AGPIO_L12, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_L13 SCLK_BT
- { S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-
- // S_AGPIO_L26 ÐÄÂʸ´Î» PPG reset
- { S_AGPIO_L26, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
- { S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-
- //S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçÔ´ ,ĬÈϹرÕ
- { S_AGPIO_L21, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#if 1 //ĬÈÏÕý³£³äµç
-// #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9 //low enable
-// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c µÍµçÁ÷³äµç
- { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-#else
- { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
- { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#endif
-
-//ĬÈϹرÕÂí´ï
- { S_AGPIO_R2, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-//ĬÈÏ¿ªÆô EXT LDO V3.0 V1.8
- { S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-
-#ifdef ENABLE_CYWEE
- /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19 ²ÉÓÃtimer ʱÕâЩÖжÏÒªÆÁ±Î*/
- { S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
- //{ S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
-#endif
- /**S_AGPIO_R1 GPO alipayĬÈÏresetpin*/
- { S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-#ifdef SUPPORT_CAT1_SERVICE
- /**cat1 ring input key*/
- // { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cat1_ring_isr_callback},
- { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cat1_ring_isr_callback},
-#endif
-};
-/**
- * @}
- */
-#endif
+++ /dev/null
-/*\r
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.\r
- * Description: Default memory configurations\r
- * Author: @CompanyNameTag\r
- * Create: 2022-03-09\r
- */\r
-\r
-#ifndef MEMORY_CONFIG_COMMON_H\r
-#define MEMORY_CONFIG_COMMON_H\r
-\r
-#include "product.h"\r
-#include "chip_definitions.h"\r
-#include "chip_core_definition.h"\r
-#include "psram.h"\r
-\r
-/**\r
- * @defgroup connectivity_config_memory MEMORY\r
- * @ingroup connectivity_config\r
- * @{\r
- */\r
-/* Standard lengths */\r
-#define BT_VECTORS_LENGTH 0x800\r
-/* Copy the startup of the app to the start address of the itcm in the ssb.\r
- * Do not overwrite the ssb code segment.\r
- * app startup = ssb startup + ssb version */\r
-#define APP_VECTORS_LENGTH 436\r
-#define VERSION_LENGTH 88\r
-#define CHANGE_ID_LENGTH 16\r
-\r
-#ifdef MASTER_LOAD_SLAVE\r
-#define BUILD_INFO_LENGRH 552\r
-#else\r
-#define BUILD_INFO_LENGRH 0\r
-#endif\r
-\r
-#define FILL_4_BYTE 4\r
-\r
-#define BCPU_RAM_START 0x0\r
-\r
-/* rom ram text */\r
-#define BCPU_STARTUP_LENGTH 0x800\r
-#define BCPU_PATCH_TBL_LENGTH 0x800\r
-#define BCPU_ROM_RAM_START (BCPU_RAM_START + BCPU_STARTUP_LENGTH + BCPU_PATCH_TBL_LENGTH)\r
-/* ----------------------------------------------------------------------------------------------------------------- */\r
-/* Share MEM defines, 64K in FPGA, 160K in ASIC\r
- * SHARE MEM IPC Mailbox\r
- * SYSTEM CONFIG\r
- * SYSTEM STATUS\r
- * BT LOG\r
- * APP LOG\r
- * DSP LOG\r
- */\r
-#define SHARED_MEM_START 0x87000000\r
-#if CHIP_ASIC\r
-#define SHARED_MEM_LENGTH 0x18000\r
-#else\r
-#define SHARED_MEM_LENGTH 0x10000\r
-#endif\r
-#define SHARED_MEM_END (SHARED_MEM_START + SHARED_MEM_LENGTH)\r
-\r
-/*\r
- * ********************* ROM ALLOCATION ***********************\r
- *\r
- * Used solely by the MCU Core ROM image built into the chip.\r
- */\r
-/* 48K ROM */\r
-#define ROM_START 0x00000000\r
-#define ROM_LENGTH 0xC000\r
-\r
-/* APP ITCM config */\r
-#define APP_ITCM_ORIGIN 0x10000\r
-#define APP_ITCM_LENGTH 0x30000\r
-\r
-/* APP DTCM config */\r
-#define APP_DTCM_ORIGIN 0x20000000\r
-#define APP_DTCM_LENGTH 0x70000\r
-\r
-#ifdef SW_RTT_DEBUG\r
-#define MCU_RTT_LEN 0x500\r
-#endif\r
-/*\r
- * ********************* L2M ALLOCATION ***********************\r
- * Description addr:mcpu/others len:FPGA/ASIC\r
- * L2M_DSP_RAM_DSP_SHARE 0x60100000 / 0x80100000 0k/1024k // can used as DSP RAM\r
- * L2M_DSP_RAM_MCU_SHARE 0x60200000 / 0x80200000 0k/256k // can used for mcu\r
- * L2M_GPU_RAM_MCU_SHARE 0x60240000 / 0x00240000 0k/128k // can used for mcu\r
- * L2M_GPU_RAM_GPU_SHARE 0x60260000 / 0x00260000 0k/1280k // can used as GPU RAM\r
- */\r
-/* L2M_DSP_RAM */\r
-#ifndef CONFIG_PSRAM_SUPPORT // 无PSRAM场景\r
-#define L2M_DSP_RAM_RESERVED_ORIGIN 0x60100000\r
-#define L2M_DSP_RAM_MCU_SHARE_ORIGIN 0x60136000\r
-#define L2M_DSP_RAM_DSP_SHARE_ORIGIN 0x60180000\r
-\r
-#define L2M_DSP_RAM_RESERVED_LENGTH 0x36000 // ASIC version 216K for mcu\r
-#define L2M_DSP_RAM_MCU_SHARE_LENGTH 0x4A000 // ASIC version 296K for mcu\r
-#define L2M_DSP_RAM_DSP_SHARE_LENGTH 0xC0000 // ASIC version 768K for dsp\r
-#else\r
-#ifdef CONFIG_SEA_PHS_SUPPORT // 有PSRAM场景,DSP带语音唤醒特性\r
-#define L2M_DSP_RAM_MCU_SHARE_ORIGIN 0x60100000\r
-#define L2M_DSP_RAM_DSP_SHARE_ORIGIN 0x60100000\r
-\r
-#define L2M_DSP_RAM_MCU_SHARE_LENGTH 0x0 // ASIC version 0K for mcu\r
-#define L2M_DSP_RAM_DSP_SHARE_LENGTH 0x140000 // ASIC version 1280K for dsp\r
-#else // 有PSRAM场景,DSP不带语音唤醒特性\r
-#define L2M_DSP_RAM_MCU_SHARE_ORIGIN 0x60100000\r
-#define L2M_DSP_RAM_DSP_SHARE_ORIGIN 0x60140000\r
-\r
-#define L2M_DSP_RAM_MCU_SHARE_LENGTH 0x40000 // ASIC version 256K for mcu\r
-#define L2M_DSP_RAM_DSP_SHARE_LENGTH 0x100000 // ASIC version 1024K for dsp\r
-#endif\r
-#endif\r
-\r
-/* L2M_GPU_RAM */\r
-#ifndef CONFIG_PSRAM_SUPPORT // 无PSRAM场景\r
-#define L2M_GPU_RAM_SHARE_MCU_ORIGIN 0x60240000\r
-#define L2M_GPU_RAM_GPU_SHARE_ORIGIN 0x60240000\r
-\r
-#define L2M_GPU_RAM_MCU_SHARE_LENGTH 0x0 // ASIC version 0K for mcu\r
-#define L2M_GPU_RAM_GPU_SHARE_LENGTH 0x160000 // ASIC version 1408K for gpu\r
-#else // 有PSRAM场景\r
-#define L2M_GPU_RAM_SHARE_MCU_ORIGIN 0x60240000\r
-#define L2M_GPU_RAM_GPU_SHARE_ORIGIN 0x60280000\r
-\r
-#define L2M_GPU_RAM_MCU_SHARE_LENGTH 0x40000 // ASIC version 256K for mcu\r
-#define L2M_GPU_RAM_GPU_SHARE_LENGTH 0x120000 // ASIC version 1152K for gpu\r
-#endif\r
-\r
-/*\r
- * ********************* FLASH ALLOCATION *********************\r
- * Flash is shared between the cores, and also handles a limited number of\r
- * non-volatile storage areas.\r
- *\r
- * Flash is split into 2 main areas\r
- * IMAGE Area\r
- * Managed by the BT core\r
- * This contains, in order from the bottom of Flash:\r
- * SSB - SSB image starting at the bottom of flash. Variable size depending on the SSB on the chip that\r
- * the package is loaded on. The values in this file only apply to the SSB built with this file.\r
- * RECOVERY_Image - starts in the page after the SSB.\r
- * BT_Image - starts in the page after the RECOVERY_Image\r
- * DSP_Image - starts in the page after the BT_Image\r
- * APP_Image - starts in the page after the DSP_Image\r
- * System On-demand region - dynamically allocated flash for FOTA etc\r
- * NV Area\r
- * Ends at the last page of flash, is configurable in size above a minimum allocation.\r
- * NV Area, of 12 pages, is allocated, from the lowest address:\r
- * 8 pages of general use (pages are not fixed and self-identifying), consisting of\r
- * 1 Page for Asset Store defragmentation\r
- * 3 pages for Asset Store\r
- * 2 Pages for App and DSP Core KV defragmentation\r
- * 1 page for DSP Core KV\r
- * 1 page for App Core KV\r
- * 2 pages for BT core use (last 2 pages in Flash)\r
- * 1 page for BT Core KV\r
- * 1 page for BT Core KV defragmentation\r
- */\r
-\r
-#define FLASH_START 0x70000000\r
-#define FLASH_LENGTH 0x1000000 //8MB 0x800000, 16MB 0x1000000\r
-#define FLASH_MAX_END (FLASH_START + FLASH_LENGTH)\r
-\r
-#define FLASH_PAGE_SIZE 4096\r
-/* APP ITCM config */\r
-#define MCU_ITCM_END (APP_ITCM_ORIGIN + APP_ITCM_LENGTH)\r
-\r
-#define SSB_BOOT_RAM_ORIGIN APP_ITCM_ORIGIN\r
-#define SSB_BOOT_RAM_LENGTH APP_ITCM_LENGTH\r
-\r
-/* ----------------------------------------------------------------------------------------------------------------- */\r
-/* IMAGE Area Defines */\r
-/* MCU SSB Region */\r
-#define SSB_FLASH_REGION_PAGES (SSB_IMAGE_PAGES + 5)\r
-#define KV_PAGES 0\r
-#define SSB_FLASH_REGION_START (FLASH_START)\r
-#define SSB_FLASH_REGION_LENGTH (SSB_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-#define SSB_VECTORS_LOAD_ORIGIN (SSB_FLASH_REGION_START)\r
-#define SSB_VERSION_LOAD_ORIGIN (SSB_VECTORS_LOAD_ORIGIN + APP_VECTORS_LENGTH)\r
-#define SSB_CHANGEID_LOAD_ORIGIN (SSB_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
-\r
-#define SSB_PROGRAM_ORIGIN (SSB_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
-#define SSB_PROGRAM_LENGTH ((SSB_FLASH_REGION_LENGTH) - (APP_VECTORS_LENGTH + VERSION_LENGTH + CHANGE_ID_LENGTH))\r
-\r
-/* MCU SSB BACK-UP Region */\r
-#define SSB_BACKUP_FLASH_REGION_PAGES 32\r
-#define SSB_BACKUP_FLASH_REGION_START (SSB_FLASH_REGION_START + SSB_FLASH_REGION_LENGTH + KV_PAGES * FLASH_PAGE_SIZE)\r
-#define SSB_BACKUP_FLASH_REGION_LENGTH (SSB_BACKUP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-/* SEC_BOOT Region for Signature Certificate */\r
-#define SEC_BOOT_FLASH_REGION_PAGES 15\r
-#define SEC_BOOT_FLASH_REGION_START (SSB_BACKUP_FLASH_REGION_START + SSB_BACKUP_FLASH_REGION_LENGTH)\r
-#define SEC_BOOT_FLASH_REGION_LENGTH (SEC_BOOT_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-#define PARTITION_TABLE_REGSION_PAGE 1\r
-#define PARTITION_TABLE_REGION_START (SEC_BOOT_FLASH_REGION_START + SEC_BOOT_FLASH_REGION_LENGTH)\r
-#define PARTITION_TABLE_REGION_LENGTH (PARTITION_TABLE_REGSION_PAGE * FLASH_PAGE_SIZE)\r
-\r
-/* DTB Region */\r
-#define DTB_FLASH_REGION_PAGES (DTB_IMAGE_PAGES)\r
-#define DTB_FLASH_REGION_START (PARTITION_TABLE_REGION_START + PARTITION_TABLE_REGION_LENGTH)\r
-#define DTB_FLASH_REGION_LENGTH (DTB_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-/* RECOVERY Region */\r
-#define RECOVERY_FLASH_REGION_PAGES (RECOVERY_IMAGE_PAGES)\r
-#define RECOVERY_FLASH_REGION_START (DTB_FLASH_REGION_START + DTB_FLASH_REGION_LENGTH)\r
-#define RECOVERY_FLASH_REGION_LENGTH (RECOVERY_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-#define RECOVERY_VECTORS_LOAD_ORIGIN (RECOVERY_FLASH_REGION_START)\r
-#define RECOVERY_VERSION_LOAD_ORIGIN (RECOVERY_VECTORS_LOAD_ORIGIN + BT_VECTORS_LENGTH)\r
-#define RECOVERY_CHANGEID_LOAD_ORIGIN (RECOVERY_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
-\r
-#define RECOVERY_PROGRAM_ORIGIN (RECOVERY_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
-#define RECOVERY_PROGRAM_LENGTH ((RECOVERY_FLASH_REGION_LENGTH) - \\r
- (BT_VECTORS_LENGTH + VERSION_LENGTH + CHANGE_ID_LENGTH))\r
-\r
-/* RESERVE Region */\r
-#define RESERVE_FLASH_REGION_PAGES (RESERVE_IMAGE_PAGES)\r
-#define RESERVE_FLASH_REGION_START (RECOVERY_FLASH_REGION_START + RECOVERY_FLASH_REGION_LENGTH)\r
-#define RESERVE_FLASH_REGION_LENGTH (RESERVE_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-/* BT Region */\r
-#define BT_FLASH_REGION_PAGES (BT_IMAGE_PAGES)\r
-#define BT_FLASH_REGION_START (RESERVE_FLASH_REGION_START + RESERVE_FLASH_REGION_LENGTH)\r
-#define BT_FLASH_REGION_LENGTH (BT_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-#define BT_BUILD_INFO_ORIGIN (BT_FLASH_REGION_START)\r
-#define BT_VECTORS_LOAD_ORIGIN (BT_BUILD_INFO_ORIGIN + BUILD_INFO_LENGRH)\r
-#define BT_VERSION_LOAD_ORIGIN (BT_VECTORS_LOAD_ORIGIN + BT_VECTORS_LENGTH)\r
-#define BT_CHANGEID_LOAD_ORIGIN (BT_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
-#define DSP_CHANGEID_LOAD_ORIGIN (BT_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
-\r
-/* Fill 4 byte to align flash 8 byte */\r
-#define BT_PROGRAM_ORIGIN (DSP_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
-#define BT_PROGRAM_LENGTH ((BT_FLASH_REGION_LENGTH) - (BT_VECTORS_LENGTH + \\r
- VERSION_LENGTH + CHANGE_ID_LENGTH + CHANGE_ID_LENGTH))\r
-\r
-/* DSP Region */\r
-#define DSP_FLASH_REGION_PAGES (HIFI0_IMAGE_PAGES)\r
-#define DSP_FLASH_REGION_START (BT_FLASH_REGION_START + BT_FLASH_REGION_LENGTH)\r
-#define DSP_FLASH_REGION_LENGTH (DSP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-/* DSP1 Region */\r
-#define DSP_CODEC_FLASH_REGION_PAGES (HIFI0_CODEC_PAGES)\r
-#define DSP_CODEC_FLASH_REGION_START (DSP_FLASH_REGION_START + DSP_FLASH_REGION_LENGTH)\r
-#define DSP_CODEC_FLASH_REGION_LENGTH (DSP_CODEC_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-/* APP Region */\r
-#define APP_FLASH_REGION_PAGES (APP_IMAGE_PAGES)\r
-#define APP_FLASH_REGION_START (DSP_CODEC_FLASH_REGION_START + DSP_CODEC_FLASH_REGION_LENGTH)\r
-#define APP_FLASH_REGION_LENGTH (APP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-/* NV data Region */\r
-#define NV_FLASH_REGION_PAGES (NV_IMAGE_PAGES)\r
-#define NV_FLASH_REGION_START (APP_FLASH_REGION_START + APP_FLASH_REGION_LENGTH)\r
-#define NV_FLASH_REGION_LENGTH (NV_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-/* Fota data Region */\r
-#define FOTA_FLASH_REGION_PAGES (FOTA_IMAGE_PAGES)\r
-#define FOTA_FLASH_REGION_START (NV_FLASH_REGION_START + NV_FLASH_REGION_LENGTH)\r
-#define FOTA_FLASH_REGION_LENGTH (FOTA_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
-\r
-#define APP_VECTORS_LOAD_ORIGIN (APP_FLASH_REGION_START)\r
-#define APP_VERSION_LOAD_ORIGIN (APP_VECTORS_LOAD_ORIGIN + APP_VECTORS_LENGTH)\r
-\r
-#define APP_PROGRAM_ORIGIN (APP_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
-#define APP_PROGRAM_LENGTH ((APP_FLASH_REGION_LENGTH) - (APP_VECTORS_LENGTH + VERSION_LENGTH))\r
-\r
-/* cores image flash region start */\r
-#define FLASH_CORE_IMAGES_START (FLASH_START + SSB_FLASH_REGION_LENGTH + SSB_BACKUP_FLASH_REGION_LENGTH + \\r
- SEC_BOOT_FLASH_REGION_LENGTH + \\r
- KV_PAGES * FLASH_PAGE_SIZE + PARTITION_TABLE_REGION_LENGTH)\r
-/* ----------------------------------------------------------------------------------------------------------------- */\r
-/* KV Region Defines */\r
-/* Minimum System Configuration pages in FLASH reserved */\r
-#define SYSTEM_RESERVED_FLASH_PAGES 0\r
-/* Minimum reserved Non Volatile storage + Config Data. */\r
-#define FLASH_RESERVED_LENGTH (SYSTEM_RESERVED_FLASH_PAGES * FLASH_PAGE_SIZE)\r
-\r
-/*\r
- * ********************* SEC BOOT REGION *********************\r
- */\r
-#define MCU_ROOT_PUBKEY_START SEC_BOOT_FLASH_REGION_START\r
-#define MCU_SUB_PUBKEY_START (MCU_ROOT_PUBKEY_START + FLASH_PAGE_SIZE)\r
-#define MCU_SSB_IMAGE_SIGN_START (MCU_SUB_PUBKEY_START + FLASH_PAGE_SIZE)\r
-#define MCU_SUB_PUBKEY_BACKUP_START (MCU_SSB_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
-#define MCU_SSB_IMAGE_SIGN_BACKUP_START (MCU_SUB_PUBKEY_BACKUP_START + FLASH_PAGE_SIZE)\r
-\r
-#define MCU_SEC_BOOT_SIGN_BACKUP_START MCU_SUB_PUBKEY_BACKUP_START\r
-#define MCU_SEC_BOOT_SIGN_BACKUP_LEN (2 * FLASH_PAGE_SIZE)\r
-\r
-#define MCU_CFCT_START (MCU_SEC_BOOT_SIGN_BACKUP_START + MCU_SEC_BOOT_SIGN_BACKUP_LEN)\r
-#define MCU_CFCT_LEN FLASH_PAGE_SIZE\r
-\r
-#define MCU_RECOVERY_IMAGE_SIGN_START (MCU_CFCT_START + MCU_CFCT_LEN)\r
-#define MCU_BT_IMAGE_SIGN_START (MCU_RECOVERY_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
-#define MCU_DSP_IMAGE_SIGN_START (MCU_BT_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
-#define MCU_DSP1_IMAGE_SIGN_START (MCU_DSP_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
-#define MCU_APP_IMAGE_SIGN_START (MCU_DSP1_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
-#define MCU_PARTITION_TABLE_SIGN_START (MCU_APP_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
-\r
-/*\r
- * ********************* RAM ALLOCATION *********************\r
- *\r
- * Three main RAM areas, the 'BCPU' RAM, the 'APP' RAM, and 'share' RAM.\r
- * 'APP' RAM include 'ITCM' for code and 'DTCM' for DATA.\r
- * As the name implies, every core can access it's RAM and they all allowed\r
- * to access 'share' RAM\r
- *\r
- * BT core can access all RAM include APP RAM and DSP RAM.\r
- *\r
- * The 'shared' RAM is used by all cores, this area visible to them all\r
- * to exchange larger amounts of data.\r
- *\r
- * SHARED RAM IPC mail box\r
- * LOG Area\r
- */\r
-/* ----------------------------------------------------------------------------------------------------------------- */\r
-/* BCPU RAM defines\r
- * BCPU has base 640K RAM and can set other 96K at the share RAM\r
- * as it's private, total 736K.\r
- * BCPU RAM VECTORS TABLE\r
- * STACK\r
- * RAM TEXT\r
- * RAM\r
- * PRESERVE\r
- * *VIRTUAL_OTP\r
- */\r
-#define BCPU_ROM_START 0xA0000\r
-#define BCPU_ROM_LENGTH 0xE0000\r
-\r
-#define BCPU_DIAG_START 0x80000\r
-#define BCPU_DIAG_LENGTH 0x10000\r
-\r
-#define BCPU_PATCH_START BCPU_DIAG_START\r
-#define BCPU_PATCH_LENGTH 0x4000\r
-\r
-#define BCPU_RAM_LENGTH 0x90000\r
-\r
-/* APP Core can also access the BT core RAM, need mapping out. */\r
-#define BT_RAM_ORIGIN_APP_MAPPING 0xA6000000\r
-#define BT_RAM_ORIGIN_APP_MAPPING_LENGTH BCPU_RAM_LENGTH\r
-\r
-/* 48 byte for BCPU system clocks status */\r
-#define BCPU_SYSTEM_CLOCKS_LENGTH 0x30\r
-\r
-/* 4096 bits for virtual otp */\r
-#define OTP_SIZE_IN_BITS 4096 /* Size of OTP memory in bits */\r
-#define OTP_SIZE_IN_BYTES ((OTP_SIZE_IN_BITS) / 8)\r
-\r
-#define BCPU_SYSTEM_CLOCKS_ORIGIN (BT_USE_RAM_ORIGIN + BT_USE_RAM_LENGTH - BCPU_SYSTEM_CLOCKS_LENGTH)\r
-\r
-/* the minimum BT heap size (50kB) */\r
-#define BT_HEAP_MINIMUM_SIZE 0xC800\r
-\r
-/* the minimum APP heap size */\r
-#define APP_HEAP_MINIMUM_SIZE (APP_HEAP_SIZE)\r
-\r
-/* for update the updater */\r
-#define UPDATER_PRESERVED_LENGTH 0x10000\r
-#define UPDATER_PRESERVED_ORIGIN (BCPU_SYSTEM_CLOCKS_ORIGIN - UPDATER_PRESERVED_LENGTH)\r
-\r
-#define BCPU_NEW_STACKS_LENGTH 0x10000\r
-#define BCPU_NEW_STACKS_ORIGIN (UPDATER_PRESERVED_ORIGIN - BCPU_NEW_STACKS_LENGTH)\r
-\r
-/* Define the Vectors table location in ram, used by link script. */\r
-/* BCPU (SSB, RECOVERY, BT) VECTORS region */\r
-#define BCPU_VECTORS_ORIGIN (BCPU_RAM_START)\r
-#define BCPU_RAM_END (BCPU_RAM_START + BCPU_RAM_LENGTH)\r
-/* BT core actually used ram, whole bt ram exclude VECTORS TABLE */\r
-#define BT_USE_RAM_LENGTH (BCPU_RAM_LENGTH - BT_VECTORS_LENGTH)\r
-#define BT_USE_RAM_ORIGIN (BCPU_RAM_END - BT_USE_RAM_LENGTH)\r
-\r
-#define BCPU_USER_STACK_LEN 0x800\r
-#define BCPU_IRQ_STACK_LEN 0x1000\r
-#define BCPU_EXCP_STACK_LEN 0x800\r
-#define BCPU_NMI_STACK_LEN 0X800\r
-#define BCPU_STACK_LEN (BCPU_USER_STACK_LEN + BCPU_IRQ_STACK_LEN + BCPU_EXCP_STACK_LEN + BCPU_NMI_STACK_LEN)\r
-\r
-/* ----------------------------------------------------------------------------------------------------------------- */\r
-/* APP RAM defines\r
- * APP has base 192K ITCM (Instruction TCM) for code\r
- * 448K DTCM (Data TCM) for DATA.\r
- * APP ITCM VECTORS TABLE\r
- * RAM TEXT\r
- *\r
- * APP DTCM STACK\r
- * RAM\r
- */\r
-/* 192K ITCM for APP core code, start at end of vectors table */\r
-#define APP_RAMTEXT_ORIGIN (APP_ITCM_ORIGIN + APP_VECTORS_LENGTH)\r
-#define APP_RAMTEXT_END (APP_ITCM_ORIGIN + APP_ITCM_LENGTH)\r
-#define APP_RAMTEXT_LENGTH (APP_RAMTEXT_END - APP_RAMTEXT_ORIGIN)\r
-\r
-/* 448K DTCM for APP core data */\r
-/* stack for normal 10k */\r
-#define APP_USER_STACK_BASEADDR APP_DTCM_ORIGIN\r
-#define APP_USER_STACK_LEN 0xC00\r
-#define APP_USER_STACK_LIMIT (APP_USER_STACK_BASEADDR + APP_USER_STACK_LEN)\r
-\r
-/* stack for irq 4k */\r
-#define APP_IRQ_STACK_BASEADDR APP_USER_STACK_LIMIT\r
-#define APP_IRQ_STACK_LEN 0xC00\r
-#define APP_IRQ_STACK_LIMIT (APP_IRQ_STACK_BASEADDR + APP_IRQ_STACK_LEN)\r
-\r
-/* stack for exception 4k */\r
-#define APP_EXCP_STACK_BASEADDR APP_IRQ_STACK_LIMIT\r
-#define APP_EXCP_STACK_LEN 0xC00\r
-#define APP_EXCP_STACK_LIMIT (APP_EXCP_STACK_BASEADDR + APP_EXCP_STACK_LEN)\r
-\r
-/* stack for nmi 4k */\r
-#define APP_NMI_STACK_BASEADDR APP_EXCP_STACK_LIMIT\r
-#define APP_NMI_STACK_LEN 0xC00\r
-#define APP_NMI_STACK_LIMIT (APP_NMI_STACK_BASEADDR + APP_NMI_STACK_LEN)\r
-\r
-/* 448K DTCM for APP core data, start at end of vectors table */\r
-#define APP_RAM_ORIGIN (APP_NMI_STACK_LIMIT)\r
-#define APP_RAM_END (APP_DTCM_ORIGIN + APP_DTCM_LENGTH)\r
-#define APP_RAM_LENGTH (APP_RAM_END - APP_RAM_ORIGIN)\r
-\r
-/* BT Core can also access the APP core RAM, need mapping out. */\r
-#define APP_ITCM_ORIGIN_BT_MAPPING 0x4C000000\r
-#define APP_DTCM_ORIGIN_BT_MAPPING 0x4E000000\r
-\r
-/* Define the Vectors table location in ram, used by link script. */\r
-/* APP CPU VECTORS region */\r
-#define APP_VECTORS_ORIGIN (APP_ITCM_ORIGIN)\r
-\r
-/* ----------------------------------------------------------------------------------------------------------------- */\r
-/* DSP RAM use and manage by DSP team, M7 just need to know the access mapping. */\r
-#define DSP_CODE_ADDR_BT_MAPPING 0x58000000\r
-\r
-/* 12*N bytes for cpu trace, trace line is 12 bytes, 8184 bytes */\r
-#define MCPU_TRACE_MEM_REGION_START 0x52006000\r
-#define BCPU_TRACE_MEM_REGION_START 0x5900E000\r
-#define CPU_TRACE_MEM_REGION_LENGTH 0x1FF8\r
-\r
-/* IPC Mail box region, every core need have a send mail box to other cores\r
- * so there is 6 mailbox totally, use (3KB+16B) * 3 share mem.\r
- */\r
-#define IPC_MAILBOX_REGION_START (SHARED_MEM_START)\r
-#define IPC_MAILBOX_REGION_LENGTH 0x4860\r
-\r
-/* 176 bytes for BT core preserve region */\r
-#define PRESERVED_REGION_ORIGIN (IPC_MAILBOX_REGION_START + IPC_MAILBOX_REGION_LENGTH)\r
-#define PRESERVED_REGION_LENGTH 0xfc\r
-\r
-/* 176 bytes for App core preserve region */\r
-#define APP_PRESERVED_REGION_ORIGIN (PRESERVED_REGION_ORIGIN + PRESERVED_REGION_LENGTH)\r
-#define APP_PRESERVED_REGION_LENGTH 0x0\r
-\r
-/* fix the memory map layout */\r
-#define IPC_MAILBOX_REGION_FIX_LENGTH (IPC_MAILBOX_REGION_LENGTH + \\r
- PRESERVED_REGION_LENGTH + APP_PRESERVED_REGION_LENGTH) // 0x49C0\r
-\r
-/* System config region. */\r
-#define SYSTEM_CFG_REGION_START (APP_PRESERVED_REGION_ORIGIN + APP_PRESERVED_REGION_LENGTH)\r
-#define SYSTEM_CFG_REGION_LENGTH 0x40\r
-\r
-/* Reboot magic region. */\r
-#define REBOOT_MAGIC_START (SYSTEM_CFG_REGION_START + SYSTEM_CFG_REGION_LENGTH)\r
-#define REBOOT_MAGIC_LENGTH 0x80\r
-\r
-#define SYSTEM_PM_REGION_START (REBOOT_MAGIC_START + REBOOT_MAGIC_LENGTH)\r
-#define SYSTEM_PM_REGION_LENGTH 0xC0\r
-\r
-/* System status region. */\r
-#define SYSTEM_STATUS_ORIGIN (SYSTEM_PM_REGION_START + SYSTEM_PM_REGION_LENGTH)\r
-#define SYSTEM_STATUS_LENGTH 0xc0\r
-\r
-/* Mass data region */\r
-/* wear(BT - 1K, APP - 1K) tws(BT - 1K, APP - 2K) */\r
-#define MASSDATA_REGION_START (SYSTEM_STATUS_ORIGIN + SYSTEM_STATUS_LENGTH)\r
-#define MASSDATA_REGION_LENGTH (BT_MASSDATA_LENGTH + APP_MASSDATA_LENGTH)\r
-\r
-/* LOG Region */\r
-/* wear(BT - 7K, APP - 3K, DSP - 7.5K) tws(BT - 7K, APP - 7K, DSP - 8K) */\r
-#define BT_LOGGING_LENGTH 0x1C00\r
-\r
-#define LOGGING_REGION_START (MASSDATA_REGION_START + MASSDATA_REGION_LENGTH)\r
-#define LOGGING_REGION_LENGTH (BT_LOGGING_LENGTH + APP_LOGGING_LENGTH + DSP_LOGGING_LENGTH)\r
-\r
-/* Trng data shared memory 512byte */\r
-#define TRNG_DATA_REGION_START (LOGGING_REGION_START + LOGGING_REGION_LENGTH)\r
-#define TRNG_DATA_REGION_LENGTH 0x200\r
-\r
-/* Prompt tone region 10K for tws and 5K for wear */\r
-#define PROMPT_TONE_REGION_START (TRNG_DATA_REGION_START + TRNG_DATA_REGION_LENGTH)\r
-\r
-/* Audio data stream region 8K for tws and 20K for wear */\r
-#define AUDIO_DATA_STREAM_REGION_START (PROMPT_TONE_REGION_START + PROMPT_TONE_REGION_LENGTH)\r
-\r
-/* RESERVED share mem */\r
-#define RESERVED_SHARE_MEM_ORIGIN (AUDIO_DATA_STREAM_REGION_START + AUDIO_DATA_STREAM_REGION_LENGTH)\r
-#define RESERVED_SHARE_MEM_LENGTH (SHARED_MEM_START + SHARED_MEM_LENGTH - RESERVED_SHARE_MEM_ORIGIN)\r
-\r
-#if (RESERVED_SHARE_MEM_LENGTH < 0)\r
-#error Share memory overflow\r
-#endif\r
-\r
-#ifndef BUILD_APPLICATION_ATE\r
-/* BT DIAG region, Use L2RAM */\r
-#define BT_DIAG_REGION_MEMORY_START 0x80100000\r
-#define BT_DIAG_REGION_MEMORY_LENGTH 0x20000\r
-#define BT_DIAG_REGION_MEMORY_END (BT_DIAG_REGION_MEMORY_START + BT_DIAG_REGION_MEMORY_LENGTH)\r
-#endif\r
-\r
-/*\r
- * ********************* ADDITIONAL MEMORY CONFIGURATION DEFINITIONS *********************\r
- * The offset in the BCPU (either flash or ROM) to where the version information starts.\r
- */\r
-#define VERSION_INFORMATION_OFFSET (BT_VECTORS_LENGTH)\r
-\r
-/**\r
- * @}\r
- */\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2020-2023. All rights reserved.
- * Description: product EVB4 standard config
- * Author: @CompanyNameTag
- * Create: 2023-03-07
- */
-#ifndef PRODUCT_EVB4_STANDARD_CONFIG_H
-#define PRODUCT_EVB4_STANDARD_CONFIG_H
-
-/**
- * @defgroup connectivity_config_product PRODUCT
- * @ingroup connectivity_config
- * @{
- */
-/* Platform board config, need check if it support or not carefully. */
-#define BTH_WITH_SMART_WEAR YES
-#define APP_WRITE_OTP_ENABLE NO
-#define APP_HEAP_SIZE 0x18000 // the minimum APP heap size (96kB)
-#define USE_FLASH_SUSPEND_AND_RESUME NO
-#define WAIT_APPS_DUMP_FOREVER NO
-#define TWS_MPU_XIP_PROTECT NO
-#define SSB_IMAGE_PAGES 27
-#ifdef CONFIG_LOW_POWER_TEST
-#define ENABLE_LOW_POWER YES
-#else
-#define ENABLE_LOW_POWER NO
-#endif
-#define DTB_IMAGE_PAGES 0
-#define RECOVERY_IMAGE_PAGES 64
-#define RESERVE_IMAGE_PAGES 0
-#define BT_IMAGE_PAGES 112
-#define HIFI0_IMAGE_PAGES 112
-#define HIFI0_CODEC_PAGES 320
-#define APP_IMAGE_PAGES 3401
-#define NV_IMAGE_PAGES 4
-#define FOTA_IMAGE_PAGES 3
-#define FOTA_IMAGE_START 0xFFD000
-#define SSB_FOTA_OFFSET 0x0
-#define XO_CTRIM_VALUR_DEFAULT 0x56
-#define DSP1_IPC_ENABLE NO
-#define APP_BTN_TASK_MONITOR_ENABLE NO
-#define SSB_FOTA_MODE_TWS YES
-#define DSP_EXTEND_OCRAM_SIZE 1310720 // Unit byte, = 1280 KB
-#define OSC_EN_CALLBACK_BY_PLT YES
-#define BT_MIPS_DEBUG NO
-#define NON_OS_CRITICAL_RECORD NO
-#define ENABLE_MASSDATA_RECORD NO
-#define USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG NO
-#define COMPRESS_LOG_TRIGGER_THRESHOLD 0
-#define COMPRESS_LOG_COUNT_THRESHOLD 0xFFFFFFFF
-#define EXCEPTION_TEST_ENABLE NO
-#define LOG_LEVEL_APP_DEFAULT_CONFIG 3 // Info level
-#define LOG_LEVEL_BT_DEFAULT_CONFIG 3 // Info level
-#define LOG_LEVEL_DSP_DEFAULT_CONFIG 3 // Info level
-#define BCPU_HEAP_MININUM_SIZE 0xA000 // 40KB
-#define SYS_DEBUG_MODE_ENABLE YES
-#define PROMPT_TONE_REGION_LENGTH 0x2800
-#define AUDIO_DATA_STREAM_REGION_LENGTH 0x2000
-#define BT_MASSDATA_LENGTH 0x400
-#define APP_MASSDATA_LENGTH 0x800
-#define APP_LOGGING_LENGTH 0x1C00
-#define DSP_LOGGING_LENGTH 0x2000
-#define PSRAM_DENSITY_MB 32
-#define RC_CLOCK_ON NO
-#define SMART_WATCH_BT_COEX_PIN_SWITCH NO // pinmux switch in the Coexistence of BT and WiFi of smart watch
-#define CAP_SENSOR_BUFF_LEN 128
-#define BT_L2RAM_AREA_SIZE 3 // 384k, Reference the enum Value of hal_b_memory_share_config_t
-#define DSP_L2RAM_AREA_TOTAL 10
-#define GPU_L2RAM_AREA_TOTAL 11
-#ifndef CONFIG_PSRAM_SUPPORT
-#define DSP_L2RAM_AREA_SIZE 6 // 无PSRAM & 小型化场景分配给DSP 6块*128K=768KB 剩余512K系统使用
-#else
-#if defined(CONFIG_SEA_PHS_SUPPORT)
-#define DSP_L2RAM_AREA_SIZE 10 // 语音唤醒场景分配给DSP 10块*128K=1280KB DSP L2M不给系统使用
-#else
-#define DSP_L2RAM_AREA_SIZE 8 // 正常场景分配给DSP 8块*128K=1024KB 剩余256K系统使用
-#endif /* CONFIG_SEA_PHS_SUPPORT */
-#endif /* CONFIG_PSRAM_SUPPORT */
-#define PUYA_FLASH_SUPPORT YES
-
-/********************display config********************/
-#define DOUBLE_BUFFER 1
-#if defined(QSPI_DISPLAY)
-#define RESOLUTION_WIDTH 194
-#define RESOLUTION_HEIGHT 368
-#elif defined(MEMORY_MINI)
-#define RESOLUTION_WIDTH 240
-#define RESOLUTION_HEIGHT 296
-#elif defined(SUPPORT_SOFT_SEND_FRM)
-#define RESOLUTION_WIDTH 368
-#define RESOLUTION_HEIGHT 448
-#else
-#define RESOLUTION_WIDTH 466//454
-#define RESOLUTION_HEIGHT 466//454
-#endif
-
-/********************Other module board config********************/
-#define BTC_SWITCH_COEX YES
-#define BTC_SMART_WEAR_WLCOEX YES
-#define BTC_WITH_SMART_WEAR YES
-#define BTC_TWS_MONITOR YES
-#define BTC_ICO_SUPPORT YES
-#define BTC_DUAL_ANT_SWITCH_SUPPORT NO
-#define BTC_GET_EMC_FROM_PLATFORM YES // 后续耳机产品通过HCI传递NV数据实现后,该选项需要置为NO
-#define BTSNOOP_ENABLE NO
-#define TWS_USER_CHR_RECORD NO
-#define BTH_WEAR_ENABLE_AUDIO_SINK NO
-#define BTH_WEAR_ENABLE_AUDIO_GATEWAY NO
-#define BTH_WEAR_BREDR_DOUBLE_CONNECT NO
-#define BTC_DFX_LOG_HELP_SUPPORT NO
-#define FACTORY_CALI NO
-#define BTH_WEAR_ENABLE_CONNECT_MANAGER NO
-#define BTH_WEAR_ENABLE_BLE_FEATURES YES
-#define BTH_WEAR_ENABLE_HFP_FEATURES NO
-#define WEAR_USER_CONFIG NO
-#define BTH_HIGH_POWER YES
-#define MULTI_CONNECT YES
-#define BTH_CONFIG_HDAP YES
-#define DEVICE_MANAGE_FEATURE YES
-#define BTH_CALL_LC3_32K YES
-#define BTH_ENABLE_LC3_CODEC YES
-#define ENABLE_CHANGE_DEVICE_NAME YES
-#define BTH_DIP_PRODUCT_ID 0x4106
-#define BTH_ENABLE_L2HC_CODEC YES
-#define ENABLE_BT_XO_16M NO
-#define BTH_WSTP_CMD_SUPPORT YES
-#define PRODUCT_SUPPORT_MODE_SWITCH YES
-#define BT_MANAGER_DEPLOYED 2
-#define BT_CODEC_TID 2
-#define BTH_WEAR_ENABLE_AVRCP_TARGET NO
-#define BTH_WEAR_ENABLE_AVRCP_CONTROLLER NO
-#define BTH_WEAR_ENABLE_AUDIO_SOURCE NO
-#define BTH_WEAR_ALLOW_INQUIRY_SCAN YES
-#define BTH_WEAR_ENABLE_HALL_STATE NO
-
-// 音频内置输入设备
-#define BUILTIN_AI_PORT 0x50 // 参考 soc_uapi_ai.h 中 UAPI_AI_PORT_LPADC0 枚举
-#define BUILTIN_AI_PORT_ATTR_ADC_RX_TYPE 0 // 参考 soc_uapi_ai.h 中 UAPI_AI_RX_DEFAULT 枚举
-#define BUILTIN_AI_PCM_ATTR_AUDIO_CH 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_1 枚举
-#define BUILTIN_AI_PCM_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define BUILTIN_AI_PCM_ATTR_SAMPLE_RATE 16000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
-#define BUILTIN_AI_PCM_ATTR_FRAME_PER_SEC 100 // 每秒帧数
-
-// 音频内置输出设备
-#define BUILTIN_SND_OUT_PORT 0x10 // 参考 soc_uapi_sound.h 中 UAPI_SND_OUT_PORT_I2S0 枚举
-#define BUILTIN_SND_OUT_PORT_NUM 1 // 端口个数
-#define BUILTIN_SND_OUT_AUDIO_CH 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define BUILTIN_SND_OUT_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define BUILTIN_SND_OUT_SAMPLE_RATE 48000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_48K 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_I2S_BCLK 8 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_8_DIV 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_AUDIO_CH 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_I2S_STD_MODE 0 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_STD_MODE 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_MASTER 1 // 1:主设备,0:从设备
-#define BUILTIN_SND_OUT_I2S_ATTR_I2S_MCLK 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_256_FS 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_I2S_PCM_DELAY 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_1_DELAY 枚举
-#define BUILTIN_SND_OUT_I2S_ATTR_SAMPLE_RISE_EDGE 1 // 参考 soc_uapi_audio.h 中 pcm_sample_rise_edge 成员
-
-// 音频外挂输入设备
-#define EXTERNAL_AI_PORT 1 // 参考 soc_uapi_ai.h 中 UAPI_AI_PORT_I2S1 枚举
-#define EXTERNAL_AI_I2S_ATTR_MASTER 0 // 1:主设备,0:从设备
-#define EXTERNAL_AI_I2S_ATTR_I2S_MODE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_MODE 枚举
-#define EXTERNAL_AI_I2S_ATTR_MCLK 6 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_1536_FS 枚举
-#define EXTERNAL_AI_I2S_ATTR_BCLK 48 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_48_DIV 枚举
-#define EXTERNAL_AI_I2S_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define EXTERNAL_AI_I2S_ATTR_AUDIO_CH 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define EXTERNAL_AI_I2S_ATTR_SAMPLE_RISE_EDGE 1 // 参考 soc_uapi_audio.h 中 pcm_sample_rise_edge 成员
-#define EXTERNAL_AI_I2S_ATTR_PCM_DELAY_CYCLE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_1_DELAY 枚举
-#define EXTERNAL_AI_PCM_ATTR_CHANNELS 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define EXTERNAL_AI_PCM_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define EXTERNAL_AI_PCM_ATTR_SAMPLE_RATE 8000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
-#define EXTERNAL_AI_PCM_ATTR_FRAME_PER_SEC 50 // 每秒帧数 , EG810 pcm 20ms 一帧
-
-// 音频外挂输出设备
-#define EXTERNAL_SND_OUT_PORT 0x11 // 参考 soc_uapi_sound.h 中 UAPI_SND_OUT_PORT_I2S1 枚举
-#define EXTERNAL_SND_OUT_AUDIO_CHANNEL 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define EXTERNAL_SND_OUT_AUDIO_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define EXTERNAL_SND_OUT_AUDIO_SAMPLE_RATE 8000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
-#define EXTERNAL_SND_OUT_PORT_NUM 1 // 端口个数
-#define EXTERNAL_SND_OUT_I2S_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-#define EXTERNAL_SND_OUT_I2S_ATTR_CHANNEL 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-#define EXTERNAL_SND_OUT_I2S_ATTR_I2S_MODE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_MODE 枚举
-#define EXTERNAL_SND_OUT_I2S_ATTR_MCLK 6 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_1536_FS 枚举 12.288M /16k =
-#define EXTERNAL_SND_OUT_I2S_ATTR_MASTER 0 // 1:主设备,0:从设备
-#define EXTERNAL_SND_OUT_I2S_ATTR_SAMPLE_RISE_EDGE 1 // 参考 soc_uapi_audio.h 中 pcm_sample_rise_edge 成员
-#define EXTERNAL_SND_OUT_I2S_ATTR_BCLK 48 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_48_DIV 枚举 12.288M / 256k = 48
-
-// Sleep option
-#define CONFIG_PM_TICKLESS_EN YES
-#define CONFIG_PM_POWER_GATING_EN YES
-#define CONFIG_PM_SLEEP_RECORD_EN YES
-#define CONFIG_PM_VETO_TRACK_EN NO
-#define CONFIG_PM_SLEEP_INT_EN NO
-
-// Double-click the key
-#define CONFIG_SUPPORT_BUTTON_DOUBLE_CLICK YES
-
-// LCD VCI_EN
-#define VCI_LCD_GPIO S_AGPIO_L24
-#define DISPLAY_TE_GPIO S_AGPIO_L22
-#define RESET_LCD_GPIO S_AGPIO_L27
-
-// TP CONFIG
-#define ZTW523_I2C_BUS I2C_BUS_1
-#define ZTW523_INT_GPIO S_AGPIO_R5
-#define ZTW523_RESET_GPIO S_AGPIO_R4
-#define TMA525B_I2C_BUS I2C_BUS_1
-#define TMA525B_INT_GPIO S_AGPIO_R5
-#define TMA525B_RESET_GPIO S_AGPIO_R4
-#define FT6X46_I2C_BUS I2C_BUS_1
-#define FT6X46_INT_GPIO S_AGPIO_R5
-#define FT6X46_RESET_GPIO S_AGPIO_R4
-
-/**
- * @}
- */
-#endif
+++ /dev/null
-/**
- * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
- *
- * Description: Provides uart port template \n
- * Author: @CompanyNameTag \n
- * History: \n
- * 2022-06-06, Create file. \n
- */
-#include <stdio.h>
-#include "dma_porting.h"
-#include "debug_print.h"
-#include "hal_uart_v120.h"
-#include "uart_porting.h"
-#ifdef SUPPORT_HAL_PINCTRL
-#include "pinctrl_porting.h"
-#include "pinctrl.h"
-#endif
-#include "uart.h"
-#include "oal_interface.h"
-#include "platform_core.h"
-#include "securec.h"
-#include "soc_osal.h"
-#ifdef SUPPORT_CLOCKS_CORE
-#include "clocks_core_common.h"
-#endif
-#if defined(SUPPORT_TEST_COMMON)
-#include "test_suite_uart.h"
-#endif
-#if defined(SUPPORT_AT_CMD)
-#include "at_cmd_api.h"
-#endif
-#ifndef BUILD_APPLICATION_SSB
-#include "log_uart.h"
-#include "cmsis_os.h"
-#endif
-#if defined(SW_RTT_DEBUG)
-#include "SEGGER_RTT.h"
-#endif
-
-#ifdef BUILD_APPLICATION_SSB
-#define UART_RX_BUFFER_SIZE 1
-#else
-#define UART_RX_BUFFER_SIZE 56
-#endif
-
-#define AT_BLE_HEADER_LENGTH 49
-#define AT_CMD_BUFSIZE_MAX 256
-#define UARTILPR 0x20
-#define UARTIBRD 0x24
-#define UARTFBRD 0x28
-#define UARTLCRH 0x2c
-#define UARTCR 0x30
-#define UARTIFLS 0x34
-#define UARTIMSC 0x38
-#define UARTDMACR 0x48
-#define UARTRESET (M_CTL_RB_BASE + 0x0168)
-#define UARTBUS0 0x1
-#define UARTBUS1 0x0
-
-/**
- * CUSTOM_UART_RATE = 500000 可以看蓝牙日志
- * 2000000 可以加快下载文件速度
-*/
-#define CUSTOM_UART_RATE 2000000
-typedef struct {
- pin_mode_t tx_pin_mode;
- pin_mode_t rx_pin_mode;
- pin_mode_t cts_pin_mode;
- pin_mode_t rts_pin_mode;
-} uart_pin_mode_t;
-
-typedef struct uart_config {
- uart_pin_config_t pin;
- uart_pin_mode_t pin_mode;
- core_irq_t irq_num;
- osal_irq_handler irq_func;
- uart_rx_callback_t rx_callback;
- uart_attr_t line_config;
- uart_buffer_config_t buffer_config;
-#ifndef BUILD_APPLICATION_SSB
- osal_mutex uart_mutex;
- bool support_mutex;
-#endif
-} uart_config_t;
-
-const uintptr_t g_uart_base_addrs[UART_BUS_MAX_NUM] = {
- (uintptr_t)UART0_BASE,
- (uintptr_t)UART1_BASE,
-};
-
-uintptr_t uart_porting_base_addr_get(uart_bus_t bus)
-{
- return g_uart_base_addrs[bus];
-}
-
-static bool g_sw_debug_uart_enabled = false;
-uint8_t g_uart0_rx_buffer[UART_RX_BUFFER_SIZE];
-uint8_t g_uart1_rx_buffer[UART_RX_BUFFER_SIZE];
-#if defined(SUPPORT_AT_CMD)
-static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining);
-#endif
-
-void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining);
-
-static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
-#ifdef BUILD_APPLICATION_SSB
- /* UART_BUS_0 for debug print */
- {
- {
- .tx_pin = S_MGPIO19,
- .rx_pin = S_MGPIO20,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- UART_0_IRQN,
- (osal_irq_handler)irq_uart0_handler,
- NULL,
- {
- .baud_rate = 115200,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart0_rx_buffer,
- }
- },
- /* UART_BUS_1 for codeloader */
- {
- {
- .tx_pin = S_MGPIO33,
- .rx_pin = S_MGPIO34,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- },
- UART_1_IRQN,
- (osal_irq_handler)irq_uart1_handler,
- NULL,
- {
- .baud_rate = 115200,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart1_rx_buffer,
- }
- }
-#else
- /** UART_BUS_0, which is used to at cmd and debug print in wstp version,
- * and which is used to testustie and debug print in testsuite version
- */
- {
- {
- .tx_pin = S_MGPIO19,
- .rx_pin = S_MGPIO20,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART1,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- UART_0_IRQN,
- (osal_irq_handler)irq_uart0_handler,
-#if defined(SUPPORT_TEST_COMMON)
- test_suite_uart_rx_callback,
-#elif defined(SUPPORT_AT_CMD)
- at_cmd_uart_rx_callback,
-#else
- NULL,
-#endif
- {
- #ifdef ENABLE_SLIP
- .baud_rate = 921600,
- #else
- .baud_rate = CUSTOM_UART_RATE,
- #endif
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart0_rx_buffer,
- },
- NULL,
-#if defined(SUPPORT_TEST_COMMON)
- false,
-#else
- true,
-#endif
- },
- /* UART_BUS_1 is used to hso uart */
- {
- {
- .tx_pin = S_MGPIO33,
- .rx_pin = S_MGPIO34,
- .cts_pin = PIN_NONE,
- .rts_pin = PIN_NONE
- },
- {
- .tx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .rx_pin_mode = (pin_mode_t)HAL_PIO_FUNC_UART_HS_UART,
- .cts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX,
- .rts_pin_mode = (pin_mode_t)HAL_PIO_FUNC_MAX
- },
- UART_1_IRQN,
- (osal_irq_handler)irq_uart1_handler,
-#ifndef FT_SINGLE_UART
-#if SYS_DEBUG_MODE_ENABLE == YES
- log_uart_rx_callback,
-#endif
-#else
- log_factory_at_callback,
-#endif
- {
- .baud_rate = CUSTOM_UART_RATE,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
- },
- {
- .rx_buffer_size = UART_RX_BUFFER_SIZE,
- .rx_buffer = g_uart1_rx_buffer,
- },
- NULL,
- false
- }
-#endif
-};
-static uart_recovery_regs_t g_uart_recovery_reg[UART_BUS_MAX_NUMBER] = { 0 };
-
-#ifdef FT_SINGLE_UART
-void log_factory_at_callback(const void *buffer, uint16_t length, bool remaining)
-{
- log_uart_rx_callback(buffer, length, remaining);
- if (zdiag_is_enable() == false) {
- at_cmd_msg_receive_handler((uint8_t *)buffer, length);
- hal_uart_clear_pending(UART_BUS_1);
- }
-}
-#endif
-
-void uart_port_register_hal_funcs(uart_bus_t bus)
-{
- hal_uart_register_funcs(bus, hal_uart_v120_funcs_get());
-}
-
-void uart_port_unregister_hal_funcs(uart_bus_t bus)
-{
- hal_uart_unregister_funcs(bus);
-}
-
-uint32_t uart_port_get_clock_value(uart_bus_t bus)
-{
- return uart_get_clock_value(bus);
-}
-
-void uart_port_config_pinmux(uart_bus_t bus)
-{
- UNUSED(bus);
- uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.tx_pin, g_uart_config[UART_BUS_1].pin_mode.tx_pin_mode);
- uapi_pin_set_mode(g_uart_config[UART_BUS_1].pin.rx_pin, g_uart_config[UART_BUS_1].pin_mode.rx_pin_mode);
- uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.tx_pin, g_uart_config[UART_BUS_0].pin_mode.tx_pin_mode);
- uapi_pin_set_mode(g_uart_config[UART_BUS_0].pin.rx_pin, g_uart_config[UART_BUS_0].pin_mode.rx_pin_mode);
-}
-
-void uart_port_register_irq(uart_bus_t bus)
-{
- osal_irq_request(g_uart_config[bus].irq_num, g_uart_config[bus].irq_func, NULL, NULL, NULL);
- osal_irq_set_priority(g_uart_config[bus].irq_num, irq_prio(g_uart_config[bus].irq_num));
- osal_irq_enable(g_uart_config[bus].irq_num);
-}
-
-void uart_port_unregister_irq(uart_bus_t bus)
-{
- osal_irq_disable(g_uart_config[bus].irq_num);
-}
-
-void irq_uart0_handler(void)
-{
- hal_uart_irq_handler(UART_BUS_0);
-}
-
-void irq_uart1_handler(void)
-{
- hal_uart_irq_handler(UART_BUS_1);
-}
-
-#ifdef SUPPORT_AT_CMD
-static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining)
-{
- unused(remaining);
- #ifndef FT_SINGLE_UART
- at_cmd_msg_receive_handler((uint8_t *)buf, buf_len);
- #endif
-
- #ifdef ENABLE_SLIP
- slip_receive_handler((uint8_t *)buf, buf_len);
- #endif
- hal_uart_clear_pending(SW_DEBUG_UART_BUS);
-}
-#endif
-
-void uart_config_init(void)
-{
- for (uint8_t i = 0; i < UART_BUS_MAX_NUM; i++) {
- if ((g_uart_config[i].pin.tx_pin != PIN_NONE) || (g_uart_config[i].pin.rx_pin != PIN_NONE)) {
- uapi_uart_init(i, &(g_uart_config[i].pin), &(g_uart_config[i].line_config), NULL,
- &(g_uart_config[i].buffer_config));
- }
- if (g_uart_config[i].rx_callback != NULL) {
- uapi_uart_register_rx_callback(i, UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE,
- (uint32_t)(g_uart_config[i].buffer_config.rx_buffer_size),
- g_uart_config[i].rx_callback);
- }
-
-#ifndef BUILD_APPLICATION_SSB
- if (g_uart_config[i].support_mutex == true) {
- osal_mutex_init(&(g_uart_config[i].uart_mutex));
- }
-#endif
- }
-}
-
-#if (defined SW_UART_DEBUG)||(defined FT_SINGLE_UART)
-void sw_debug_uart_deinit(void)
-{
- uapi_uart_deinit(SW_DEBUG_UART_BUS);
-}
-
-void sw_debug_uart_init(uint32_t baud_rate)
-{
- g_uart_config[SW_DEBUG_UART_BUS].line_config.baud_rate = baud_rate;
- uapi_uart_init(SW_DEBUG_UART_BUS, &(g_uart_config[SW_DEBUG_UART_BUS].pin),
- &(g_uart_config[SW_DEBUG_UART_BUS].line_config), NULL,
- &(g_uart_config[SW_DEBUG_UART_BUS].buffer_config));
-}
-
-void sw_debug_uart_reset_baund(void)
-{
- while (uapi_uart_has_pending_transmissions(SW_DEBUG_UART_BUS)) { }
- uapi_uart_set_attr(SW_DEBUG_UART_BUS, &g_uart_config[SW_DEBUG_UART_BUS].line_config);
-}
-#endif
-
-void print_str(const char *str, ...)
-{
- static uint8_t s[1024]; // 1024 means string max length.
- va_list args;
- int32_t str_len;
-
- if ((str == NULL) || (strlen(str) == 0)) {
- return;
- }
-
- va_start(args, str);
- str_len = vsprintf_s((char *)s, sizeof(s), str, args);
- va_end(args);
-
- if (str_len < 0) {
- return;
- }
-#if defined(SW_RTT_DEBUG)
- SEGGER_RTT_Write(0, (const char *)s, str_len);
-#elif defined(SW_UART_DEBUG)
- if (hal_uart_get_funcs(SW_DEBUG_UART_BUS) == NULL) {
- return;
- }
- uapi_uart_write(SW_DEBUG_UART_BUS, (const void *)s, (uint32_t)str_len, 0);
-#else
-#endif
-}
-
-void hal_uart_clear_pending(uart_bus_t uart)
-{
- switch (uart) {
- case UART_BUS_0:
- int_clear_pending_irq(UART_0_IRQN);
- break;
- case UART_BUS_1:
- int_clear_pending_irq(UART_1_IRQN);
- break;
- default:
- break;
- }
-}
-
-#if defined(CONFIG_UART_SUPPORT_DMA)
-uint8_t uart_port_get_dma_trans_dest_handshaking(uart_bus_t bus)
-{
- switch (bus) {
- case UART_BUS_0:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_TX;
- case UART_BUS_1:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_TX;
- default:
- return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
- }
-}
-
-uint8_t uart_port_get_dma_trans_src_handshaking(uart_bus_t bus)
-{
- switch (bus) {
- case UART_BUS_0:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_L_RX;
- case UART_BUS_1:
- return (uint8_t)HAL_DMA_HANDSHAKING_UART_H0_RX;
- default:
- return (uint8_t)HAL_DMA_HANDSHAKING_MAX_NUM;
- }
-}
-#endif /* CONFIG_UART_SUPPORT_DMA */
-
-uint32_t uart_porting_lock(uart_bus_t bus)
-{
-#ifndef BUILD_APPLICATION_SSB
- if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
- (osal_in_interrupt() == 0)) {
- return (uint32_t)osal_mutex_lock_timeout(&(g_uart_config[bus].uart_mutex), OSAL_MUTEX_WAIT_FOREVER);
- }
-#else
- UNUSED(bus);
-#endif
- return ERRCODE_SUCC;
-}
-
-void uart_porting_unlock(uart_bus_t bus, uint32_t irq_sts)
-{
-#ifndef BUILD_APPLICATION_SSB
- unused(irq_sts);
- if ((g_uart_config[bus].support_mutex == true) && (osKernelGetState() == osKernelRunning) &&
- (osal_in_interrupt() == 0)) {
- osal_mutex_unlock(&(g_uart_config[bus].uart_mutex));
- }
-#else
- UNUSED(bus);
- UNUSED(irq_sts);
-#endif
-}
-
-void uart_save_reg(uart_bus_t bus)
-{
- uint32_t base = uart_porting_base_addr_get(bus);
- g_uart_recovery_reg[bus].uartilpr = readw(base + UARTILPR);
- g_uart_recovery_reg[bus].uartibrd = readw(base + UARTIBRD);
- g_uart_recovery_reg[bus].uartfbrd = readw(base + UARTFBRD);
- g_uart_recovery_reg[bus].uartlcr_h = readw(base + UARTLCRH);
- g_uart_recovery_reg[bus].uartcr = readw(base + UARTCR);
- g_uart_recovery_reg[bus].uartifls = readw(base + UARTIFLS);
- g_uart_recovery_reg[bus].uartimsc = readw(base + UARTIMSC);
- g_uart_recovery_reg[bus].uartdmacr = readw(base + UARTDMACR);
-}
-
-void uart_recovery_reg(uart_bus_t bus)
-{
- uint16_t uart_bit = UARTBUS0;
- if (bus == UART_BUS_0) {
- uart_bit = UARTBUS0;
- } else if (bus == UART_BUS_1) {
- uart_bit = UARTBUS1;
- }
- reg16_clrbit(UARTRESET, uart_bit);
- reg16_setbit(UARTRESET, uart_bit);
- uint32_t base = uart_porting_base_addr_get(bus);
- writew(base + UARTILPR, g_uart_recovery_reg[bus].uartilpr);
- writew(base + UARTIBRD, g_uart_recovery_reg[bus].uartibrd);
- writew(base + UARTFBRD, g_uart_recovery_reg[bus].uartfbrd);
- writew(base + UARTLCRH, g_uart_recovery_reg[bus].uartlcr_h);
- writew(base + UARTCR, g_uart_recovery_reg[bus].uartcr);
- writew(base + UARTIFLS, g_uart_recovery_reg[bus].uartifls);
- writew(base + UARTIMSC, g_uart_recovery_reg[bus].uartimsc);
- writew(base + UARTDMACR, g_uart_recovery_reg[bus].uartdmacr);
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Lcd driver configuration.\r
- * Author: @CompanyNameTag\r
- * Create: 2022-03-05\r
- */\r
-\r
-#include <stdint.h>\r
-#include "common_def.h"\r
-#include "lcd_config.h"\r
-\r
-#define LCD_EDO_466X466_SCREEN_ID 0x1133\r
-#define LCD_EDO_454X454_SCREEN_ID 0xf00\r
-#define LCD_BOE_454X454_SCREEN_ID 0x500\r
-#define LCD_SH_240X296_SCREEN_ID 0x101\r
-#define LCD_BOE_194X368_SCREEN_ID 0x4a00\r
-\r
-const combo_dev_cfg_t g_panel_466x466_60_config = {\r
- .devno = 0,\r
- .lane_id = {0, -1},\r
- .out_mode = OUT_MODE_DSI_CMD,\r
- .out_format = OUT_FORMAT_RGB_24BIT,\r
- .sync_info = {\r
- .hsa_pixels = 10, // hsa 10 pixels\r
- .hbp_pixels = 10, // hbp 10 pixels\r
- .hact_pixels = 466, // hact 466 pixels\r
- .hfp_pixels = 10, // hfp 10 pixels\r
- .vsa_lines = 4, // vsa 4 lines\r
- .vbp_lines = 12, // vbp 12 lines\r
- .vact_lines = 466, // vact 466 lines\r
- .vfp_lines = 10, // vfp 10 lines\r
- },\r
- .phy_data_rate = 480, // 480Mbps\r
- .pixel_clk = 20000, // 20000KHz\r
-};\r
-const combo_dev_cfg_t g_panel_454x454_60_config = {\r
- .devno = 0,\r
- .lane_id = {0, -1},\r
- .out_mode = OUT_MODE_DSI_CMD,\r
- .out_format = OUT_FORMAT_RGB_24BIT,\r
- .sync_info = {\r
- .hsa_pixels = 10, // hsa 10 pixels\r
- .hbp_pixels = 10, // hbp 10 pixels\r
- .hact_pixels = 454, // hact 454 pixels\r
- .hfp_pixels = 10, // hfp 10 pixels\r
- .vsa_lines = 4, // vsa 4 lines\r
- .vbp_lines = 12, // vbp 12 lines\r
- .vact_lines = 454, // vact 454 lines\r
- .vfp_lines = 10, // vfp 10 lines\r
- },\r
- .phy_data_rate = 480, // 480Mbps\r
- .pixel_clk = 20000, // 20000KHz\r
-};\r
-\r
-const combo_dev_cfg_t g_panel_240x296_60_config = {\r
- .devno = 0,\r
- .lane_id = {0, -1},\r
- .out_mode = OUT_MODE_DSI_CMD,\r
- .out_format = OUT_FORMAT_RGB_24BIT,\r
- .sync_info = {\r
- .hsa_pixels = 4, // hsa 14 pixels hpw\r
- .hbp_pixels = 11, // hbp 11 pixels HBP\r
- .hact_pixels = 368, // hact 240 pixels HPX\r
- .hfp_pixels = 14, // hfp 14 pixels hfp\r
- .vsa_lines = 2, // vsa 2 lines vpw\r
- .vbp_lines = 6, // vbp 6 lines vbp\r
- .vact_lines = 448, // vact 296 lines vpx\r
- .vfp_lines = 8, // vfp 8 lines vfp\r
- },\r
- .phy_data_rate = 480, // 480Mbps\r
- .pixel_clk = 20000, // 20000KHz\r
-};\r
-\r
-const combo_dev_cfg_t g_panel_194x368_qspi_config = {\r
- .out_format = OUT_FORMAT_RGB_24BIT,\r
- .sync_info = {\r
- .hact_pixels = 194, // hact 368 pixels\r
- .vact_lines = 368, // vact 368 lines\r
- },\r
-};\r
-\r
-/* display off sequence for common lcd */\r
-const lcd_cmd_sequ g_common_cmd_display_off[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
- {1, 1, {0x28}, 0}, /* display off */\r
- {1, 1, {0x10}, 120}, /* sleep in */\r
-};\r
-\r
-/* display off sequence for common lcd */\r
-const lcd_cmd_sequ g_common_466x466_cmd_display_off[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
- {1, 1, {0x28}, 0}, /* display off */\r
- {1, 1, {0x10}, 120}, /* sleep in */\r
- {1, 2, {0x4f, 0x01}, 0}, /* 进deepstandby 状态 */\r
-};\r
-\r
-/* sleep in sequence for common lcd */\r
-const lcd_cmd_sequ g_common_cmd_sleep_in[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
- {1, 1, {0x28}, 0}, /* display off */\r
- {1, 1, {0x10}, 120}, /* sleep in */\r
-};\r
-\r
-/* sleep in sequence for common lcd */\r
-const lcd_cmd_sequ g_common_cmd_sleep_out[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
- {1, 1, {0x11}, 120}, /* sleep out */\r
- {1, 1, {0x29}, 0}, /* display on */\r
-};\r
-\r
-/* idle in sequence for EDO and BOE 454*454 lcd */\r
-lcd_cmd_sequ g_common_cmd_idle_in[] = {\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 1, {0x39}, 0},\r
-};\r
-\r
-/* idle out sequence for EDO and BOE 454*454 lcd */\r
-const lcd_cmd_sequ g_common_cmd_idle_out[] = {\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 1, {0x38}, 0},\r
-};\r
-\r
-/* te on sequence for EDO and BOE 454*454 lcd */\r
-const lcd_cmd_sequ g_common_cmd_te_on[] = {\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 1, {0x35}, 0},\r
-};\r
-\r
-/* te off sequence for EDO and BOE 454*454 lcd */\r
-const lcd_cmd_sequ g_common_cmd_te_off[] = {\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 1, {0x34}, 0},\r
-};\r
-\r
-/* set brightness sequence for EDO and BOE 454*454 lcd */\r
-lcd_cmd_sequ g_common_cmd_brightness[] = {\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 2, {0x51, 0xff}, 0},\r
-};\r
-const lcd_cmd_sequ g_edo_466x466_screen_init_on[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, \r
- {1, 2, {0x3a, 0x77}, 0}, \r
- {1, 2, {0x35, 0x00}, 0}, \r
- {1, 2, {0x53, 0x20}, 0}, \r
- // {1, 2, {0x51, 0xff}, 0}, \r
- {1, 2, {0x63, 0xff}, 0}, \r
- {1, 5, {0x2A, 0x00, 0x06, 0x01, 0xd7}, 0}, \r
- {1, 5, {0x2B, 0x00, 0x00, 0x01, 0xd1}, 0}, \r
- {1, 3, {0x44, 0x01, 0xc5}, 0},\r
- {1, 1, {0x11}, 120}, \r
- {1, 1, {0x29}, 0}, \r
-};\r
-\r
-\r
-/* init sequence for EDO 454*454 lcd */\r
-const lcd_cmd_sequ g_edo_454x454_screen_init_on[] = {\r
- {1, 2, {0xfe, 0x01}, 0},\r
- {1, 2, {0x30, 0x43}, 0}, /* set LCD frequency to 15HZ */\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 2, {0x3a, 0x77}, 0},\r
- {1, 2, {0x53, 0x20}, 0},\r
- {1, 2, {0x51, 0xff}, 0},\r
- {0, 5, {0x2a, 0x00, 0x0e, 0x01, 0xd3}, 0},\r
- {0, 5, {0x2b, 0x00, 0x00, 0x01, 0xc5}, 0},\r
- {1, 3, {0x44, 0x01, 0xc5}, 0},\r
- {1, 2, {0x35, 0x00}, 0},\r
- {1, 1, {0x11}, 120},\r
- {1, 1, {0x29}, 0},\r
-};\r
-\r
-/* init sequence for BOE 454*454 lcd */\r
-const lcd_cmd_sequ g_boe_454x454_screen_init_on[] = {\r
- {1, 2, {0xfe, 0x0d}, 0},\r
- {1, 2, {0x01, 0x00}, 0},\r
- {1, 2, {0x03, 0x00}, 0},\r
- {1, 2, {0x1b, 0x00}, 0},\r
- {1, 2, {0x1d, 0x00}, 0},\r
- {1, 2, {0x37, 0x00}, 0},\r
- {1, 2, {0x39, 0x00}, 0},\r
- {1, 2, {0x52, 0x58}, 0},\r
- {1, 2, {0x53, 0x00}, 0},\r
-\r
- {1, 2, {0xfe, 0x01}, 0},\r
- {1, 2, {0x72, 0x05}, 0},\r
- {1, 2, {0x73, 0x16}, 0},\r
- {1, 2, {0x74, 0x0c}, 0},\r
-\r
- {1, 2, {0xfe, 0x01}, 0},\r
- {1, 2, {0x18, 0x55}, 0},\r
- {1, 2, {0xc5, 0x10}, 0},\r
- {1, 2, {0x72, 0x0e}, 0},\r
- {1, 2, {0x73, 0x1c}, 0},\r
-\r
- {1, 2, {0xfe, 0x07}, 0},\r
- {1, 2, {0x15, 0x04}, 0},\r
- {1, 2, {0xfe, 0x01}, 0},\r
- {1, 2, {0x0a, 0xf8}, 0},\r
-\r
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 2, {0x51, 0xff}, 0},\r
- {1, 2, {0x35, 0x00}, 0},\r
- {0, 5, {0x2a, 0x00, 0x0c, 0x01, 0xd1}, 0},\r
- {0, 5, {0x2b, 0x00, 0x00, 0x01, 0xc5}, 0},\r
- {1, 2, {0x53, 0x20}, 0},\r
- {1, 1, {0x11}, 120},\r
- {1, 1, {0x29}, 0},\r
-};\r
-\r
-const lcd_cmd_sequ g_sh_240x296_screen_init_on[] = {\r
- {1, 1, {0x11}, 5},\r
- {1, 5, {0x2a, 0x00, 0x00, 0x01, 0x6f}, 1},\r
- {1, 5, {0x2b, 0x00, 0x00, 0x01, 0xbf}, 1},\r
- {1, 3, {0x44, 0x01, 0xbf}, 1},\r
- {1, 2, {0x35, 0x00}, 1},\r
- {1, 2, {0x3a, 0x77}, 1},\r
- {1, 2, {0x53, 0x20}, 80},\r
- {1, 1, {0x29}, 0},\r
-};\r
-\r
-const lcd_cmd_sequ g_boe_194x368_screen_init_on[] = {\r
- {0, 2, {0xfe, 0x00}, 0},\r
- {0, 3, {0x44, 0x00, 0xB7}, 0},\r
- {0, 2, {0x3a, 0x77}, 0},\r
- {0, 2, {0x51, 0x80}, 0},\r
- {0, 2, {0x35, 0x0}, 0},\r
- {0, 5, {0x2a, 0x00, 0x00, 0x00, 0xc1}, 0},\r
- {0, 1, {0x11}, 120},\r
- {0, 1, {0x29}, 100},\r
- {0, 1, {0x39}, 0},\r
-};\r
-\r
-const lcd_cmds_sequ g_display_off_cmds = {\r
- .cmd = g_common_cmd_display_off,\r
- .cmd_cnt = array_size(g_common_cmd_display_off),\r
-};\r
-\r
-const lcd_cmds_sequ g_466x466_display_off_cmds = {\r
- .cmd = g_common_466x466_cmd_display_off,\r
- .cmd_cnt = array_size(g_common_466x466_cmd_display_off),\r
-};\r
-\r
-const lcd_cmds_sequ g_idle_in_cmds = {\r
- .cmd = g_common_cmd_idle_in,\r
- .cmd_cnt = array_size(g_common_cmd_idle_in),\r
-};\r
-\r
-const lcd_cmds_sequ g_idle_out_cmds = {\r
- .cmd = g_common_cmd_idle_out,\r
- .cmd_cnt = array_size(g_common_cmd_idle_out),\r
-};\r
-\r
-const lcd_cmds_sequ g_te_on_cmds = {\r
- .cmd = g_common_cmd_te_on,\r
- .cmd_cnt = array_size(g_common_cmd_te_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_te_off_cmds = {\r
- .cmd = g_common_cmd_te_off,\r
- .cmd_cnt = array_size(g_common_cmd_te_off),\r
-};\r
-\r
-const lcd_cmds_sequ g_brightness_cmds = {\r
- .cmd = g_common_cmd_brightness,\r
- .cmd_cnt = array_size(g_common_cmd_brightness),\r
-};\r
-\r
-const lcd_cmds_sequ g_edo_466x466_screen_init_on_cmds = {\r
- .cmd = g_edo_466x466_screen_init_on,\r
- .cmd_cnt = array_size(g_edo_466x466_screen_init_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_edo_454x454_screen_init_on_cmds = {\r
- .cmd = g_edo_454x454_screen_init_on,\r
- .cmd_cnt = array_size(g_edo_454x454_screen_init_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_boe_454x454_screen_init_on_cmds = {\r
- .cmd = g_boe_454x454_screen_init_on,\r
- .cmd_cnt = array_size(g_boe_454x454_screen_init_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_sh_240x296_screen_init_on_cmds = {\r
- .cmd = g_sh_240x296_screen_init_on,\r
- .cmd_cnt = array_size(g_sh_240x296_screen_init_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_boe_194x368_screen_init_on_cmds = {\r
- .cmd = g_boe_194x368_screen_init_on,\r
- .cmd_cnt = array_size(g_boe_194x368_screen_init_on),\r
-};\r
-\r
-const lcd_cmds_sequ g_sleep_in_cmds = {\r
- .cmd = g_common_cmd_sleep_in,\r
- .cmd_cnt = array_size(g_common_cmd_sleep_in),\r
-};\r
-\r
-const lcd_cmds_sequ g_sleep_out_cmds = {\r
- .cmd = g_common_cmd_sleep_out,\r
- .cmd_cnt = array_size(g_common_cmd_sleep_out),\r
-};\r
-\r
-const lcd_drv_cfg g_lcd_driver_ops[] = {\r
- {\r
- .bus_type = BUS_DISPLAY_MIPI,\r
- .bus_cfg = &g_panel_466x466_60_config,\r
- .x_start = 0x6,\r
- .y_start = 0,\r
- .fps = 60,\r
- .lcd_id = LCD_EDO_466X466_SCREEN_ID,\r
- .display_on_cmds = &g_edo_466x466_screen_init_on_cmds,\r
- .display_off_cmds = &g_466x466_display_off_cmds,\r
- .enter_idle_cmds = &g_idle_in_cmds,\r
- .exit_idle_cmds = &g_idle_out_cmds,\r
- .te_on_cmds = &g_te_on_cmds,\r
- .te_off_cmds = &g_te_off_cmds,\r
- .set_brightnes_cmds = &g_brightness_cmds,\r
- .sleep_in_cmds = &g_sleep_in_cmds,\r
- .sleep_out_cmds = &g_sleep_out_cmds,\r
- .lcd_id_info.reg_addr = 0x04,\r
- .lcd_id_info.read_len = 3,\r
- },\r
- {\r
- .bus_type = BUS_DISPLAY_MIPI,\r
- .bus_cfg = &g_panel_454x454_60_config,\r
- .x_start = 0xe,\r
- .y_start = 0,\r
- .fps = 60,\r
- .lcd_id = LCD_EDO_454X454_SCREEN_ID,\r
- .display_on_cmds = &g_edo_454x454_screen_init_on_cmds,\r
- .display_off_cmds = &g_display_off_cmds,\r
- .enter_idle_cmds = &g_idle_in_cmds,\r
- .exit_idle_cmds = &g_idle_out_cmds,\r
- .te_on_cmds = &g_te_on_cmds,\r
- .te_off_cmds = &g_te_off_cmds,\r
- .set_brightnes_cmds = &g_brightness_cmds,\r
- .sleep_in_cmds = &g_sleep_in_cmds,\r
- .sleep_out_cmds = &g_sleep_out_cmds,\r
- .lcd_id_info.reg_addr = 0x04,\r
- .lcd_id_info.read_len = 3,\r
- },\r
- {\r
- .bus_type = BUS_DISPLAY_MIPI,\r
- .bus_cfg = &g_panel_454x454_60_config,\r
- .x_start = 0xc,\r
- .y_start = 0,\r
- .fps = 60,\r
- .lcd_id = LCD_BOE_454X454_SCREEN_ID,\r
- .display_on_cmds = &g_boe_454x454_screen_init_on_cmds,\r
- .display_off_cmds = &g_display_off_cmds,\r
- .enter_idle_cmds = &g_idle_in_cmds,\r
- .exit_idle_cmds = &g_idle_out_cmds,\r
- .te_on_cmds = &g_te_on_cmds,\r
- .te_off_cmds = &g_te_off_cmds,\r
- .set_brightnes_cmds = &g_brightness_cmds,\r
- .sleep_in_cmds = &g_sleep_in_cmds,\r
- .sleep_out_cmds = &g_sleep_out_cmds,\r
- .lcd_id_info.reg_addr = 0x04,\r
- .lcd_id_info.read_len = 3,\r
- },\r
- {\r
- .bus_type = BUS_DISPLAY_MIPI,\r
- .bus_cfg = &g_panel_240x296_60_config,\r
- .x_start = 0,\r
- .y_start = 0,\r
- .fps = 60,\r
- .lcd_id = LCD_SH_240X296_SCREEN_ID,\r
- .display_on_cmds = &g_sh_240x296_screen_init_on_cmds,\r
- .display_off_cmds = &g_display_off_cmds,\r
- .enter_idle_cmds = &g_idle_in_cmds,\r
- .exit_idle_cmds = &g_idle_out_cmds,\r
- .te_on_cmds = &g_te_on_cmds,\r
- .te_off_cmds = &g_te_off_cmds,\r
- .set_brightnes_cmds = &g_brightness_cmds,\r
- .sleep_in_cmds = &g_sleep_in_cmds,\r
- .sleep_out_cmds = &g_sleep_out_cmds,\r
- .lcd_id_info.reg_addr = 0xda,\r
- .lcd_id_info.read_len = 3,\r
- },\r
- {\r
- .bus_type = BUS_DISPLAY_QSPI,\r
- .bus_cfg = &g_panel_194x368_qspi_config,\r
- .x_start = 0,\r
- .y_start = 0,\r
- .fps = 60,\r
- .lcd_id = LCD_BOE_194X368_SCREEN_ID,\r
- .display_on_cmds = &g_boe_194x368_screen_init_on_cmds,\r
- .display_off_cmds = &g_display_off_cmds,\r
- .enter_idle_cmds = &g_idle_in_cmds,\r
- .exit_idle_cmds = &g_idle_out_cmds,\r
- .te_on_cmds = &g_te_on_cmds,\r
- .te_off_cmds = &g_te_off_cmds,\r
- .set_brightnes_cmds = &g_brightness_cmds,\r
- .sleep_in_cmds = &g_sleep_in_cmds,\r
- .sleep_out_cmds = &g_sleep_out_cmds,\r
- .lcd_id_info.reg_addr = 0x04,\r
- .lcd_id_info.read_len = 3,\r
- }\r
-};\r
-\r
-lcd_drv_cfg *lcd_get_driver_ops(void)\r
-{\r
- return g_lcd_driver_ops;\r
-}\r
-\r
-uint32_t lcd_get_ops_num(void)\r
-{\r
- return array_size(g_lcd_driver_ops);\r
-}\r
-\r
-combo_dev_cfg_t *lcd_get_bus_escape_config(void)\r
-{\r
- return g_lcd_driver_ops[0].bus_cfg;\r
-}\r
-\r
-lcd_drv_cfg *lcd_get_driver_config(uint32_t id)\r
-{\r
- uint32_t i;\r
- if (id == 0) {\r
- return NULL;\r
- }\r
-\r
- for (i = 0; i < array_size(g_lcd_driver_ops); i++) {\r
- if (g_lcd_driver_ops[i].lcd_id == id) {\r
- return &(g_lcd_driver_ops[i]);\r
- }\r
- }\r
-\r
- return NULL;\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Lcd private interface.\r
- * Author: @CompanyNameTag\r
- * Create: 2022-03-05\r
- */\r
-\r
-#include "lcd_private.h"\r
-#include "tcxo.h"\r
-#include "chip_io.h"\r
-#include "platform_core.h"\r
-#include "gpio.h"\r
-#include "pinctrl_porting.h"\r
-#include "product.h"\r
-#include "pinctrl.h"\r
-static void lcd_drv_power_on(void)\r
-{\r
-#ifndef QSPI_DISPLAY\r
- uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_OUTPUT);\r
- uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_HIGH);\r
-#endif\r
- uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_OUTPUT);\r
-\r
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
-\r
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_HIGH);\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
-}\r
-#define USE_OUTPUT_CTL 1\r
-static void lcd_drv_power_off(void)\r
-{\r
-#if USE_OUTPUT_CTL\r
- //uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_OUTPUT); \r
- //uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);\r
- #ifndef QSPI_DISPLAY\r
- uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_OUTPUT);\r
- uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_LOW);\r
- #endif\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
- int resetvalue = uapi_gpio_get_output_val(RESET_LCD_GPIO);\r
- int lcd_envalue = uapi_gpio_get_output_val(VCI_LCD_GPIO);\r
- printf("Output RESET_LCD_GPIO %d , VCI_LCD_GPIO %d\r\n",resetvalue,lcd_envalue);\r
-#else\r
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);\r
- uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_INPUT); //ÉèÖóÉInput£¬ÊÇΪÁ˽â¾ö©µç £¿£¿\r
- uapi_pin_set_pull(RESET_LCD_GPIO, PIN_PULL_DOWN);\r
- #ifndef QSPI_DISPLAY\r
- uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_LOW);\r
- uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_INPUT);\r
- uapi_pin_set_pull(VCI_LCD_GPIO, PIN_PULL_DOWN);\r
- #endif\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
- int resetvalue = uapi_gpio_get_val(RESET_LCD_GPIO);\r
- int lcd_envalue = uapi_gpio_get_val(VCI_LCD_GPIO);\r
- printf("Input RESET_LCD_GPIO %d , VCI_LCD_GPIO %d\r\n",resetvalue,lcd_envalue);\r
-#endif\r
- \r
-}\r
-\r
-static lcd_drv_private g_lcd_private_api = {\r
- .power_on = lcd_drv_power_on,\r
- .power_off = lcd_drv_power_off,\r
-};\r
-\r
-lcd_drv_private *lcd_drv_get_private_api(void)\r
-{\r
- return &g_lcd_private_api;\r
-}\r
+++ /dev/null
-/*\r
- * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.\r
- * Description: Lcd driver.\r
- * Author: @CompanyNameTag\r
- * Create: 2022-03-05\r
- */\r
-\r
-#include "soc_lcd_api.h"\r
-#include <stdint.h>\r
-#include "soc_errno.h"\r
-#include "soc_osal.h"\r
-#include "soc_mipi_tx.h"\r
-#include "lcd_config.h"\r
-#include "lcd_bus.h"\r
-#include "lcd_mipi.h"\r
-#include "lcd_qspi.h"\r
-#include "lcd_common.h"\r
-#include "lcd_private.h"\r
-#include "pinctrl_porting.h"\r
-\r
-typedef struct lcd_attr {\r
- bool info_register; /* 注册指定屏幕组件标志 */\r
- bool is_inited; /* LCD组件初始化标志 */\r
- lcd_type screen_type; /* LCD屏类型 */\r
- uint32_t lcd_id; /* LCD ID号 */\r
- lcd_drv_cfg *lcd_cfg; /* LCD参数 */\r
- uint8_t brightness; /* 显示亮度参数 */\r
- ext_lcd_status status; /* LCD状态标志 */\r
- osal_mutex lcd_mutex; /* LCD驱动多线程调用保护信号量 */\r
- lcd_bus_api *bus_api; /* 总线接口 */\r
- lcd_drv_common *common_api; /* LCD公共接口 */\r
- lcd_drv_private *private_api; /* LCD差异化接口 */\r
-} lcd_attr;\r
-\r
-lcd_attr g_lcd_info = {0};\r
-volatile bool g_idle_before_sleep = false; /* false: normal display, true: idle mode */\r
-static bool g_lcd_on_flag = false;\r
-\r
-bool lcd_get_status(void)\r
-{\r
- return g_lcd_on_flag;\r
-}\r
-\r
-void lcd_set_status(bool lcd_on)\r
-{\r
- g_lcd_on_flag = lcd_on;\r
-}\r
-\r
-static ext_errno lcd_lock_init(void)\r
-{\r
- ext_errno ret;\r
- if (g_lcd_info.lcd_mutex.mutex != NULL) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- ret = osal_mutex_init(&(g_lcd_info.lcd_mutex));\r
- if (ret != EXT_ERR_SUCCESS) {\r
- g_lcd_info.lcd_mutex.mutex = NULL;\r
- return ret;\r
- }\r
- if (g_lcd_info.lcd_mutex.mutex == NULL) {\r
- return EXT_ERR_LCD_MUTEX_INIT_FAIL;\r
- }\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static void lcd_lock_deinit(void)\r
-{\r
- if (g_lcd_info.lcd_mutex.mutex != NULL) {\r
- osal_mutex_destroy(&(g_lcd_info.lcd_mutex));\r
- }\r
-\r
- g_lcd_info.lcd_mutex.mutex = NULL;\r
-}\r
-\r
-static void lcd_lock(void)\r
-{\r
- if (g_lcd_info.lcd_mutex.mutex == NULL) {\r
- return;\r
- }\r
- osal_mutex_lock(&(g_lcd_info.lcd_mutex));\r
-}\r
-\r
-static void lcd_unlock(void)\r
-{\r
- if (g_lcd_info.lcd_mutex.mutex == NULL) {\r
- return;\r
- }\r
- osal_mutex_unlock(&(g_lcd_info.lcd_mutex));\r
-}\r
-\r
-static void lcd_set_display_info(void)\r
-{\r
- if (g_lcd_info.bus_api->bus_register_panel_info != NULL) {\r
- g_lcd_info.bus_api->bus_register_panel_info(g_lcd_info.lcd_cfg->x_start, g_lcd_info.lcd_cfg->y_start,\r
- g_lcd_info.lcd_cfg->fps);\r
- }\r
-}\r
-\r
-static ext_errno lcd_auto_adapt_init_prepare(void)\r
-{\r
- ext_errno ret;\r
- combo_dev_cfg_t *escape_config = lcd_get_bus_escape_config();\r
-\r
- /* init with default parameter */\r
- ret = g_lcd_info.bus_api->bus_init(escape_config);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("default bus_init fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- ret = g_lcd_info.common_api->get_chip_id(&g_lcd_info.lcd_id);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("get_chip_id fail, ret = %X\r\n", ret);\r
- }\r
-\r
- if (g_lcd_info.bus_api->bus_deinit() != EXT_ERR_SUCCESS) {\r
- lcd_err("bus deinit fail\r\n");\r
- }\r
-\r
- return ret;\r
-}\r
-\r
-static ext_errno lcd_assigned_id_check(void)\r
-{\r
- if (g_lcd_info.common_api->chip_id_check == NULL) {\r
- return EXT_ERR_LCD_INVALID_NULL_POINTER;\r
- }\r
-\r
- return g_lcd_info.common_api->chip_id_check();\r
-}\r
-\r
-static ext_errno lcd_get_ops(void)\r
-{\r
- ext_errno ret = 0;\r
- g_lcd_info.bus_api = lcd_get_bus_api();\r
- g_lcd_info.common_api = lcd_drv_get_common_api();\r
- g_lcd_info.private_api = lcd_drv_get_private_api();\r
-\r
- if (g_lcd_info.bus_api == NULL || g_lcd_info.common_api == NULL || g_lcd_info.private_api == NULL) {\r
- return EXT_ERR_LCD_GET_ATTR_FAIL;\r
- }\r
-\r
- if (g_lcd_info.private_api->power_on == NULL) {\r
- return EXT_ERR_LCD_GET_ATTR_FAIL;\r
- }\r
- g_lcd_info.private_api->power_on();\r
-\r
- if (!g_lcd_info.info_register) {\r
- ret = lcd_auto_adapt_init_prepare();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- goto fail;\r
- }\r
- }\r
-\r
- g_lcd_info.lcd_cfg = g_lcd_info.common_api->get_lcd_config();\r
- if (g_lcd_info.lcd_cfg == NULL) {\r
- lcd_err("lcd_cfg empty!\r\n");\r
- goto fail;\r
- }\r
- ret = g_lcd_info.bus_api->bus_init(g_lcd_info.lcd_cfg->bus_cfg);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("bus_init fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- if (g_lcd_info.info_register) {\r
- ret = lcd_assigned_id_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("chip id check error, ret = 0x%x\r\n", ret);\r
- g_lcd_info.bus_api->bus_deinit();\r
- goto fail;\r
- }\r
- }\r
-\r
- if (g_lcd_info.brightness == 0)\r
- g_lcd_info.brightness = DEFAULT_BRIGHTNESS;\r
-\r
- return EXT_ERR_SUCCESS;\r
-fail:\r
-\r
- if (g_lcd_info.private_api->power_off != NULL) {\r
- g_lcd_info.private_api->power_off();\r
- }\r
- g_lcd_info.bus_api = NULL;\r
- g_lcd_info.common_api = NULL;\r
- g_lcd_info.private_api = NULL;\r
- return ret;\r
-}\r
-\r
-ext_lcd_status uapi_lcd_get_status(void)\r
-{\r
- return g_lcd_info.status;\r
-}\r
-\r
-bool uapi_is_lcd_connect(void)\r
-{\r
- return g_lcd_info.is_inited;\r
-}\r
-\r
-static ext_errno lcd_display_on(void)\r
-{\r
- ext_errno ret;\r
- uint32_t retry_count = 3;\r
- lcd_lock();\r
-\r
- for (; retry_count > 0; retry_count--) {\r
- ret = g_lcd_info.common_api->display_on(g_lcd_info.brightness);\r
- if (ret == EXT_ERR_SUCCESS) {\r
- ret = g_lcd_info.bus_api->bus_enable();\r
- if (ret == EXT_ERR_SUCCESS) {\r
- break;\r
- }\r
- }\r
-\r
- g_lcd_info.private_api->power_off();\r
- g_lcd_info.private_api->power_on();\r
-\r
- g_lcd_info.bus_api->bus_deinit();\r
- ret = g_lcd_info.bus_api->bus_init(g_lcd_info.lcd_cfg->bus_cfg);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- g_lcd_info.private_api->power_off();\r
- continue;\r
- }\r
- }\r
- if (retry_count > 0) {\r
- g_lcd_info.status.disp_status = LCD_NORMAL_DISPLAY;\r
- g_lcd_info.status.te_status = LCD_TE_ON;\r
- }\r
-\r
- lcd_unlock();\r
-\r
- return ret;\r
-}\r
-\r
-ext_errno uapi_lcd_display_on(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status == LCD_NORMAL_DISPLAY) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- ret = lcd_display_on();\r
-\r
- return ret;\r
-}\r
-\r
-ext_errno uapi_lcd_display_off(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status == LCD_DISPLAY_OFF) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- ret = g_lcd_info.common_api->display_off();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("display_off fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- ret = g_lcd_info.bus_api->bus_disable();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("bus_disable fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
-\r
- g_lcd_info.status.disp_status = LCD_DISPLAY_OFF;\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_enter_sleep_mode(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status == LCD_SLEEP_MODE) {\r
- return EXT_ERR_SUCCESS;\r
- } else if (g_lcd_info.status.disp_status == LCD_DISPLAY_OFF) {\r
- return EXT_ERR_LCD_NOT_SUPPORT_OFF_TO_SLEEP;\r
- }\r
-\r
- if (g_lcd_info.status.disp_status == LCD_IDLE_MODE) {\r
- g_idle_before_sleep = true;\r
- } else {\r
- g_idle_before_sleep = false;\r
- }\r
-\r
- ret = g_lcd_info.common_api->enter_sleep_mode();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("enter sleep mode fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- ret = g_lcd_info.bus_api->bus_disable();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("bus_disable fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
- g_lcd_info.status.disp_status = LCD_SLEEP_MODE;\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_exit_sleep_mode(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status != LCD_SLEEP_MODE) {\r
- return EXT_ERR_LCD_NOT_IN_SLEEP_MODE;\r
- }\r
-\r
- ret = g_lcd_info.common_api->exit_sleep_mode();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("exit sleep mode fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.bus_api->bus_enable();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("enable bus fail when exit sleep, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
-\r
- if (g_idle_before_sleep) {\r
- g_lcd_info.status.disp_status = LCD_IDLE_MODE;\r
- } else {\r
- g_lcd_info.status.disp_status = LCD_NORMAL_DISPLAY;\r
- }\r
-\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_enter_idle_mode(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status == LCD_IDLE_MODE) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
- if (g_lcd_info.status.disp_status != LCD_NORMAL_DISPLAY) {\r
- return EXT_ERR_LCD_NOT_SUPPORT_CUR_TO_IDLE;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->enter_idle_mode();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("enter_idle_mode fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- g_lcd_info.status.disp_status = LCD_IDLE_MODE;\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_exit_idle_mode(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status != LCD_IDLE_MODE) {\r
- return EXT_ERR_LCD_NOT_IN_IDLE_MODE;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->exit_idle_mode();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("exit_idle_mode fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- g_lcd_info.status.disp_status = LCD_NORMAL_DISPLAY;\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static ext_errno lcd_te_param_check(void)\r
-{\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.screen_type == VIDEO_LCD) {\r
- return EXT_ERR_LCD_VIDEO_SCREEN_NOT_SUPPORT_TE;\r
- }\r
- if (g_lcd_info.status.disp_status != LCD_NORMAL_DISPLAY && g_lcd_info.status.disp_status != LCD_IDLE_MODE) {\r
- return EXT_ERR_LCD_INVALID_TE_ON_MODE;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_te_on(void)\r
-{\r
- ext_errno ret = lcd_te_param_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
- if (g_lcd_info.status.te_status == LCD_TE_ON) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->te_on();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("te_on fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- g_lcd_info.status.te_status = LCD_TE_ON;\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_te_off(void)\r
-{\r
- ext_errno ret = lcd_te_param_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
- if (g_lcd_info.status.te_status == LCD_TE_OFF) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->te_off();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("te_off fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- g_lcd_info.status.te_status = LCD_TE_OFF;\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_set_brightness(uint16_t value)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status > LCD_IDLE_MODE) {\r
- return EXT_ERR_LCD_IN_DISPLAY_OFF_STATE;\r
- }\r
-\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->set_brightness(value);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("set_brightness fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- g_lcd_info.brightness = (uint8_t)value;\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_get_brightness(uint16_t *value)\r
-{\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- *value = g_lcd_info.brightness;\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_write_reg(lcd_cmd_sequ *cmds, uint32_t cmd_count)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
-\r
- if (cmds == NULL || cmd_count == 0) {\r
- return EXT_ERR_LCD_INVALID_WRITE_CMD;\r
- }\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->write(cmds, cmd_count);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("write reg fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_read_reg(uint8_t cmd, uint8_t *buff, uint8_t buff_len)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
- if (g_lcd_info.status.disp_status > LCD_SLEEP_MODE) {\r
- return EXT_ERR_LCD_IN_DISPLAY_OFF_STATE;\r
- }\r
- if (buff == NULL || buff_len == 0) {\r
- return EXT_ERR_LCD_INVALID_READ_CMD;\r
- }\r
- lcd_lock();\r
- ret = g_lcd_info.common_api->read(cmd, buff, buff_len);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("read reg fail, ret = %X\r\n", ret);\r
- lcd_unlock();\r
- return ret;\r
- }\r
- lcd_unlock();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_init(void)\r
-{\r
- if (g_lcd_info.is_inited) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- ext_errno ret = lcd_get_ops();\r
- if (ret != EXT_ERR_SUCCESS && ret != EXT_ERR_MIPI_ALREADY_INIT) {\r
- lcd_err("lcd_get_ops fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- ret = lcd_lock_init();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("lcd_lock_init fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- lcd_set_display_info();\r
-\r
- ret = lcd_display_on();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- g_lcd_info.bus_api->bus_deinit();\r
- lcd_lock_deinit();\r
- lcd_err("lcd_display_on fail, ret = %X\r\n", ret);\r
- return ret;\r
- }\r
-\r
- g_lcd_info.is_inited = true;\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_deinit(void)\r
-{\r
- ext_errno ret;\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_SUCCESS;\r
- }\r
-\r
- if (g_lcd_info.status.disp_status != LCD_DISPLAY_OFF) {\r
- ret = g_lcd_info.common_api->display_off();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("display_off fail, ret = %X\r\n", ret);\r
- }\r
-\r
- ret = g_lcd_info.bus_api->bus_disable();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("bus_disable fail, ret = %X\r\n", ret);\r
- }\r
- }\r
- lcd_lock();\r
- ret = g_lcd_info.bus_api->bus_deinit();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- lcd_err("bus_deinit fail, ret = %X\r\n", ret);\r
- }\r
- g_lcd_info.private_api->power_off();\r
-\r
- g_lcd_info.status.disp_status = LCD_DISPLAY_OFF;\r
- g_lcd_info.is_inited = false;\r
- lcd_unlock();\r
-\r
- lcd_lock_deinit();\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static ext_errno lcd_lp_ctrl_check(void)\r
-{\r
- if (!g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_NOT_INIT;\r
- }\r
-\r
- if (g_lcd_info.bus_api == NULL) {\r
- return EXT_ERR_LCD_GET_ATTR_FAIL;\r
- }\r
-\r
- if (g_lcd_info.bus_api->bus_lp_ctrl == NULL) {\r
- return EXT_ERR_LCD_NOT_SUPPORT_FUNC;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_enter_sdlp(void)\r
-{\r
- ext_errno ret;\r
-\r
- ret = lcd_lp_ctrl_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- return g_lcd_info.bus_api->bus_lp_ctrl(LP_CTRL_ENTER_SDLP);\r
-}\r
-\r
-ext_errno uapi_lcd_exit_sdlp(void)\r
-{\r
- ext_errno ret;\r
-\r
- ret = lcd_lp_ctrl_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- return g_lcd_info.bus_api->bus_lp_ctrl(LP_CTRL_EXIT_SDLP);\r
-}\r
-\r
-ext_errno uapi_lcd_exit_ulps(void)\r
-{\r
- ext_errno ret;\r
-\r
- ret = lcd_lp_ctrl_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- return g_lcd_info.bus_api->bus_lp_ctrl(LP_CTRL_EXIT_ULPS);\r
-}\r
-\r
-ext_errno uapi_lcd_clear_exit_ulps(void)\r
-{\r
- ext_errno ret;\r
-\r
- ret = lcd_lp_ctrl_check();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- return g_lcd_info.bus_api->bus_lp_ctrl(LP_CTRL_CLEAR_EXIT_ULPS);\r
-}\r
-\r
-static void lcd_register_qspi_bus(void)\r
-{\r
- lcd_bus_api qspi_bus_api = {0};\r
-\r
- qspi_bus_api.bus_init = lcd_qspi_init;\r
- qspi_bus_api.bus_deinit = lcd_qspi_deinit;\r
- qspi_bus_api.bus_enable = lcd_qspi_enable;\r
- qspi_bus_api.bus_disable = lcd_qspi_disable;\r
- qspi_bus_api.bus_write_cmd = lcd_qspi_write_cmd;\r
- qspi_bus_api.bus_read_cmd = lcd_qspi_read_cmd;\r
- qspi_bus_api.bus_send_frame = lcd_qspi_send_frame;\r
- qspi_bus_api.bus_suspend = lcd_qspi_suspend;\r
- qspi_bus_api.bus_resume = lcd_qspi_resume;\r
- qspi_bus_api.bus_register_te_isr = lcd_qspi_register_te_isr;\r
-\r
- lcd_bus_register_api(&qspi_bus_api, BUS_DISPLAY_QSPI);\r
-}\r
-\r
-static void lcd_register_mipi_bus(void)\r
-{\r
- lcd_bus_api mipi_bus_api = {0};\r
-\r
- mipi_bus_api.bus_init = mipi_bus_init,\r
- mipi_bus_api.bus_deinit = mipi_bus_deinit,\r
- mipi_bus_api.bus_enable = mipi_bus_enable,\r
- mipi_bus_api.bus_disable = mipi_bus_disable,\r
- mipi_bus_api.bus_write_cmd = mipi_bus_write,\r
- mipi_bus_api.bus_read_cmd = mipi_bus_read,\r
- mipi_bus_api.bus_lp_ctrl = mipi_bus_lp_ctrl,\r
- mipi_bus_api.bus_register_panel_info = mipi_bus_register_panel_info,\r
- mipi_bus_api.bus_get_panel_timing = mipi_bus_get_panel_timing,\r
- mipi_bus_api.bus_get_partial_display_cmd = mipi_bus_get_partial_display_cmd,\r
- mipi_bus_api.bus_update_panel = mipi_bus_update_panel,\r
- mipi_bus_api.bus_refresh_area = mipi_bus_refresh_area,\r
- mipi_bus_api.bus_suspend = mipi_bus_suspend,\r
- mipi_bus_api.bus_resume = mipi_bus_resume,\r
- lcd_bus_register_api(&mipi_bus_api, BUS_DISPLAY_MIPI);\r
-}\r
-\r
-static ext_errno lcd_info_check(const lcd_drv_cfg *info)\r
-{\r
- if (info == NULL) {\r
- return EXT_ERR_LCD_INVALID_NULL_POINTER;\r
- }\r
-\r
- if ((info->bus_type != BUS_DISPLAY_MIPI) && (info->bus_type != BUS_DISPLAY_QSPI)) {\r
- return EXT_ERR_LCD_INVALID_SCREEN_OPS;\r
- }\r
-\r
- if (info->lcd_id == 0) {\r
- return EXT_ERR_LCD_INVALID_CHIP_ID;\r
- }\r
-\r
- if ((info->display_on_cmds == NULL) || (info->display_off_cmds == NULL)) {\r
- return EXT_ERR_LCD_INVALID_WRITE_CMD;\r
- }\r
-\r
- if (info->lcd_id_info.read_len == 0) {\r
- return EXT_ERR_LCD_INVALID_READ_CMD;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno uapi_lcd_info_register(lcd_drv_cfg *info)\r
-{\r
- ext_errno ret;\r
-\r
- ret = lcd_info_check(info);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- if (g_lcd_info.is_inited) {\r
- return EXT_ERR_LCD_INIT_ALREADY;\r
- }\r
-\r
- if (g_lcd_info.common_api == NULL) {\r
- g_lcd_info.common_api = lcd_drv_get_common_api();\r
- }\r
-\r
- if (g_lcd_info.common_api->set_lcd_config == NULL) {\r
- return EXT_ERR_LCD_NOT_SUPPORT_FUNC;\r
- }\r
-\r
- ret = g_lcd_info.common_api->set_lcd_config(info);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- return ret;\r
- }\r
-\r
- if (info->bus_type == BUS_DISPLAY_MIPI) {\r
- lcd_register_mipi_bus();\r
- } else {\r
- lcd_register_qspi_bus();\r
- }\r
-\r
- g_lcd_info.info_register = true;\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
+++ /dev/null
-#===============================================================================
-# @brief cmake file
-# Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved.
-#===============================================================================
-set(COMPONENT_NAME "touch")
-
-set(SOURCES
- ${CMAKE_CURRENT_SOURCE_DIR}/touch_screen_drv.c
- ${CMAKE_CURRENT_SOURCE_DIR}/touch_screen_queue1.c
-)
-
-if("TPTYPE_TMA525B" IN_LIST DEFINES)
-set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/tma525b_touch/tma525b_ctrl.c
- ${CMAKE_CURRENT_SOURCE_DIR}/tma525b_touch/tma525b_drv1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/tma525b_touch/tma525b_touch1.c
-)
-elseif("TPTYPE_ZTW523" IN_LIST DEFINES)
-set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_ctrl.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_drv1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_touch1.c
-)
-elseif("TPTYPE_FT6X46" IN_LIST DEFINES)
-set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_ctrl.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_drv1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_touch1.c
-)
-else()
-set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_ctrl.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_drv1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_touch1.c
-)
-endif()
-
-if("TPTYPE_TMA525B" IN_LIST DEFINES)
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/tma525b_touch
- ${ROOT_DIR}/middleware/services/gui/hal/input/include
-)
-elseif("TPTYPE_ZTW523" IN_LIST DEFINES)
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch
- ${ROOT_DIR}/middleware/services/gui/hal/input/include
-)
-elseif("TPTYPE_FT6X46" IN_LIST DEFINES)
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch
- ${ROOT_DIR}/middleware/services/gui/hal/input/include
-)
-else()
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch
- ${ROOT_DIR}/middleware/services/gui/hal/input/include
-)
-endif()
-
-set(PRIVATE_HEADER
-)
-
-set(PRIVATE_DEFINES
-)
-
-set(PUBLIC_DEFINES
-)
-
-# use this when you want to add ccflags like -include xxx
-set(COMPONENT_PUBLIC_CCFLAGS
-)
-
-set(COMPONENT_CCFLAGS
- -Wno-incompatible-function-pointer-types
- -Wno-unused-function
-)
-
-set(WHOLE_LINK
- true
-)
-
-set(MAIN_COMPONENT
- false
-)
-
-build_component()
-
-install_sdk(${CMAKE_CURRENT_SOURCE_DIR} "*")
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ztw523 touch driver.
- * Author: @CompanyNameTag
- * Create: 2022-04-12
- */
-
-#include "ft6x46_ctrl.h"
-#include "securec.h"
-#include "cmsis_os2.h"
-#include "soc_osal.h"
-#include "common_def.h"
-#include "pinctrl.h"
-#include "chip_io.h"
-#include "tcxo.h"
-#include "time.h"
-#include "i2c.h"
-#include "gpio.h"
-#include "hal_gpio.h"
-#include "hal_i2c.h"
-#include "touch_screen_def.h"
-
-bool g_host_dev_init_flag = TD_FALSE;
-ft6x46_ctrl_attr g_ctrl_attr;
-touch_callback g_ft6x46_callback = NULL;
-
-static uint8_t g_tp_recv_buf[FT6X46_INPUT_SIZE] = {0};
-
-static void ft6x46_gpio_isr_handle(pin_t pin, uintptr_t param)
-{
- unused(pin);
- unused(param);
- if (g_ft6x46_callback != NULL) {
- g_ft6x46_callback();
- }
-}
-
-ext_errno ft6x46_register_handle(const ft6x46_ctrl_ops *peri_data, touch_callback func)
-{
- unused(peri_data);
- ext_errno ret;
-
-
- //tp_err("ft6x46_register_handle*****************888888888");
- g_ft6x46_callback = func;
- /* register int io interrupt handler */
- uapi_gpio_init();
- gpio_select_core(FT6X46_INT_GPIO, CORE);
- uapi_gpio_set_dir(FT6X46_INT_GPIO, GPIO_DIRECTION_INPUT);
- ret = uapi_gpio_register_isr_func(FT6X46_INT_GPIO, GPIO_INTERRUPT_FALLING_EDGE, ft6x46_gpio_isr_handle);
- if (ret != 0) {
- tp_err("ft6x46 int callback register fail! ret=0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_unregister_handle(const ft6x46_ctrl_ops *peri_data)
-{
- unused(peri_data);
- ext_errno ret;
-
- /* unregister interrupt handler */
- uapi_gpio_unregister_isr_func(FT6X46_INT_GPIO);
- g_ft6x46_callback = NULL;
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno tp_peripheral_init_status_check(void)
-{
- if (g_host_dev_init_flag != TD_TRUE) {
- return EXT_ERR_TP_DEV_INFO_NOT_REGISTER;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_ctrl_attr_check(const ft6x46_ctrl_attr *device_attr)
-{
- unused(device_attr);
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno tp_i2c_rd_wr_param_check(const uint8_t *data_buf, uint32_t data_len)
-{
- unused(data_buf);
- unused(data_len);
- ext_errno ret = tp_peripheral_init_status_check();
- if (ret != EXT_ERR_SUCCESS) {
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno tp_i2c_data_read(uint8_t reg_addr, uint8_t *data_buf, uint32_t data_len)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
-
-
- ret = tp_i2c_rd_wr_param_check(data_buf, data_len);
- if (ret != 0) {
- tp_err("tp data read param invalid! ret=0x%x", ret);
- return ret;
- }
-
- if (memset_s(g_tp_recv_buf, data_len, 0, data_len) != EOK) {
- tp_err("tp read buff set fail! ret=0x%x", ret);
- return EXT_ERR_FAILURE;
- }
-
- data.send_buf = ®_addr;
- data.send_len = FT6X46_CMD_SEND_LEN;
- data.receive_buf = g_tp_recv_buf;
- data.receive_len = data_len;
-
- for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_writeread(FT6X46_I2C_BUS, FT6X46_I2C_ADDR, &data);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- }
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp data read fail! ret=0x%x", ret);
- return ret;
- }
- ret = (uint32_t)memcpy_s(data_buf, data_len, g_tp_recv_buf, data_len);
- if (ret != EOK) {
- tp_err("tp data buf content copy fail! ret=0x%x", ret);
- return ret;
- }
- return EXT_ERR_SUCCESS;
-}
-
-
-ext_errno tp_ft6x46_i2c_data_read(uint8_t reg_addr, uint8_t *data_buf, uint32_t data_len)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- //uint8_t tp_reg_addr[FT6X46_REG_BYTE_LEN];
-
- ret = tp_i2c_rd_wr_param_check(data_buf, data_len);
- if (ret != 0) {
- tp_err("tp data read param invalid! ret=0x%x", ret);
- return ret;
- }
-
- memset_s(data_buf, data_len, 0, data_len);
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX0] = reg_addr & 0xff;
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX1] = (reg_addr >> OFFSET_8_BITS) & 0xff;
-
- data.send_buf = ®_addr;
- data.send_len = sizeof(reg_addr);
- data.receive_buf = data_buf;
- data.receive_len = data_len;
-
- for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_writeread(FT6X46_I2C_BUS, FT6X46_I2C_ADDR, &data);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- }
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp data read fail! ret=0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno tp_i2c_cmd_write(uint8_t cmd)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- //uint8_t tp_reg_addr[FT6X46_CMD_SEND_LEN];
-
- ret = tp_peripheral_init_status_check();
- if (ret != 0) {
- tp_err("host peripheral not init! ret=0x%x", ret);
- return ret;
- }
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX0] = cmd & 0xff;
- //tp_reg_addr[FT6X46_I2C_SEND_INDEX1] = (cmd >> OFFSET_8_BITS) & 0xff;
-
- data.send_buf = &cmd;
- data.send_len = FT6X46_CMD_SEND_LEN;
- data.receive_buf = NULL;
- data.receive_len = 0;
-
- for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_write(FT6X46_I2C_BUS, FT6X46_I2C_ADDR, &data);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- }
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp data write fail! ret=0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno tp_i2c_data_write(uint8_t reg_addr, uint8_t *data_buf, uint16_t data_len)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- uint8_t *write_data = NULL;
- uint16_t send_len;
-
- ret = tp_i2c_rd_wr_param_check(data_buf, data_len);
- if (ret != 0) {
- tp_err("tp data write param invalid! ret=0x%x", ret);
- return ret;
- }
-
- send_len = data_len + sizeof(uint8_t);
-
- write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
- if (write_data == NULL) {
- tp_err("tp send buff malloc fail!");
- return EXT_ERR_MALLOC_FAILURE;
- }
-
- write_data[FT6X46_I2C_SEND_INDEX0] = reg_addr;
- ret = (uint32_t)memcpy_s(write_data + sizeof(uint8_t), send_len - sizeof(uint8_t), data_buf, data_len);
- if (ret != EOK) {
- tp_err("tp send_buf content copy fail! ret=0x%x", ret);
- osal_kfree(write_data);
- return ret;
- }
-
- data.send_buf = write_data;
- data.send_len = send_len;
- data.receive_buf = NULL;
- data.receive_len = 0;
-
- for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_write(FT6X46_I2C_BUS, FT6X46_I2C_ADDR, &data);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- }
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp data write fail! ret=0x%x", ret);
- osal_kfree(write_data);
- return ret;
- }
-
- osal_kfree(write_data);
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno tp_ft6x46_i2c_data_write(uint8_t reg_addr, uint8_t *data_buf, uint16_t data_len)
-{
- errcode_t ret;
- uint32_t retry;
- i2c_data_t data;
- uint8_t *write_data = NULL;
- uint16_t send_len;
-
- ret = tp_i2c_rd_wr_param_check(data_buf, data_len);
- if (ret != 0) {
- tp_err("tp data write param invalid! ret=0x%x", ret);
- return ret;
- }
-
- send_len = data_len + sizeof(uint8_t);
-
- write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
- if (write_data == NULL) {
- tp_err("tp send buff malloc fail!");
- return EXT_ERR_MALLOC_FAILURE;
- }
-
- write_data[FT6X46_I2C_SEND_INDEX0] = reg_addr;
- ret = (uint32_t)memcpy_s(write_data + sizeof(uint8_t), send_len - sizeof(uint8_t), data_buf, data_len);
- if (ret != EOK) {
- tp_err("tp send_buf content copy fail! ret=0x%x", ret);
- osal_kfree(write_data);
- return ret;
- }
-
- data.send_buf = write_data;
- data.send_len = send_len;
- data.receive_buf = NULL;
- data.receive_len = 0;
-
- for (retry = 0; retry < FT6X46_I2C_TIME_MAX; retry++) {
- ret = uapi_i2c_master_write(FT6X46_I2C_BUS, FT6X46_I2C_ADDR, &data);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- }
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp data write fail! ret=0x%x", ret);
- osal_kfree(write_data);
- return ret;
- }
-
- osal_kfree(write_data);
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno tp_ft6x46_i2c_data_write_reg(uint8_t addr, uint8_t val)
-{
- return tp_ft6x46_i2c_data_write(addr, &val, 1);
-}
-
-
-ext_errno ft6x46_host_peripheral_init(ft6x46_ctrl_attr *attr)
-{
- ext_errno ret;
-
- if (attr == NULL) {
- tp_err("ft6x46 communication interface cfg is empty!");
- return EXT_ERR_FAILURE;
- }
- ret = ft6x46_ctrl_attr_check(attr);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp invalid dev attr! ret=0x%x", ret);
- return ret;
- }
-
- ret = (ext_errno)memcpy_s(&(g_ctrl_attr), sizeof(ft6x46_ctrl_attr), attr, sizeof(ft6x46_ctrl_attr));
- if (ret != EOK) {
- tp_err("tp attr content copy fail! ret=0x%x", ret);
- return ret;
- }
-
- /* init i2c */
- errcode_t result;
- result = uapi_i2c_master_init(FT6X46_I2C_BUS, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */
- if (result != EXT_ERR_SUCCESS) {
- tp_err("tp i2c init fail! ret=0x%x", result);
- return EXT_ERR_SUCCESS;
- }
-
- tp_print("TOUCH:i2c_id = %d i2c_speed = %d slave_addr = 0x%x \r\n",
- g_ctrl_attr.i2c_id, g_ctrl_attr.i2c_speed, FT6X46_I2C_ADDR);
- g_host_dev_init_flag = true;
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_host_init_sample(void)
-{
- ext_errno ret;
- PRINT("**********ft6x46_host_init_sample**********\r\n");
- ret = ft6x46_host_peripheral_init(&g_ctrl_attr);
- ret = ft6x46_init();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("tp host init fail! ret=0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_reset(void)
-{
- uapi_gpio_set_dir(FT6X46_RESET_GPIO, GPIO_DIRECTION_OUTPUT);
- /* Config Gpio For Reset Pin */
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_HIGH);
- /* reset high delay 20ms */
- osDelay(20);
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_LOW);
- /* reset low delay 100ms */
- osDelay(100);
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_HIGH);
- /* reset high delay 200ms */
- osDelay(200);
- return EXT_ERR_SUCCESS;
-}
-
-void ft6x46_resume_reset(void)
-{
- uapi_gpio_set_dir(FT6X46_RESET_GPIO, GPIO_DIRECTION_OUTPUT);
- /* drvdata is global variable point and no need to handle null */
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_HIGH);
- osDelay(1);
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_LOW);
- /* delay 10ms */
- osDelay(10);
- uapi_gpio_set_val(FT6X46_RESET_GPIO, GPIO_LEVEL_HIGH);
- /* delay 100ms */
- osDelay(200);
- uapi_gpio_set_dir(FT6X46_RESET_GPIO, GPIO_DIRECTION_INPUT);
-}
-
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ztw523 touch driver.
- * Author: @CompanyNameTag
- * Create: 2022-04-12
- */
-
-#ifndef FT6X46_CTRL_H
-#define FT6X46_CTRL_H
-
-#include "stdio.h"
-#include "debug_print.h"
-#include "stdint.h"
-#include "product.h"
-#include "td_base.h"
-#include "platform_core.h"
-#include "ft6x46_touch1.h"
-
-/* host peripheral definitions */
-
-//#define FT6X46_I2C_ADDR 0x20
-#define FT6X46_I2C_ADDR 0x38
-#define FT6X46_I2C_SPEED I2C_SPEED_MODE_SS
-#define FT6X46_REG_BYTE_LEN 2
-#define OFFSET_8_BITS 8
-#define FT6X46_REG_WRITE_LEN 4
-
-#define FT6X46_CMD_SEND_LEN 2
-// #define FT6X46_CMD_SEND_LEN 1
-
-#define FT6X46_REG_DATA_LEN 2
-#define FT6X46_I2C_TIME_MAX 3
-#define FT6X46_INPUT_SIZE 156
-
-#define FT6X46_I2C_SEND_INDEX0 0
-#define FT6X46_I2C_SEND_INDEX1 1
-#define FT6X46_I2C_SEND_INDEX2 2
-#define FT6X46_I2C_SEND_INDEX3 3
-
-
-#define FTS_REG_POWER_MODE 0xA5
-
-
-typedef struct {
- uint32_t int_gpio;
- uint32_t reset_gpio;
- i2c_bus_t i2c_id;
- uint32_t i2c_speed;
-} ft6x46_ctrl_attr;
-
-typedef ext_errno (*ft6x46_bus_init)(ft6x46_ctrl_attr *attr);
-
-typedef struct {
- ft6x46_ctrl_attr attr;
- ft6x46_bus_init bus_init;
-} ft6x46_ctrl_ops;
-
-ext_errno ft6x46_host_peripheral_init(ft6x46_ctrl_attr *attr);
-ext_errno ft6x46_register_handle(const ft6x46_ctrl_ops *peri_data, touch_callback func);
-ext_errno ft6x46_unregister_handle(const ft6x46_ctrl_ops *peri_data);
-ext_errno ft6x46_reset(void);
-void ft6x46_resume_reset(void);
-void ft6x46_delay(uint32_t ms);
-
-ext_errno tp_ft6x46_i2c_data_read(uint8_t reg_addr, uint8_t *data_buf, uint32_t data_len);
-ext_errno tp_ft6x46_i2c_data_write(uint8_t reg_addr, uint8_t *data_buf, uint16_t data_len);
-ext_errno tp_ft6x46_i2c_data_write_reg(uint8_t addr, uint8_t val);
-
-#endif
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ztw523 touch driver.
- * Author: @CompanyNameTag
- * Create: 2022-04-12
- */
-
-#include "ft6x46_drv1.h"
-#include "touch_screen_def.h"
-#include "ft6x46_ctrl.h"
-#include "i2c.h"
-#include "debug_print.h"
-#include "hal_i2c.h"
-
-static ext_errno ft6x46_drv_init(ft6x46_ctrl_ops *config)
-{
- ext_errno ret;
- ft6x46_ctrl_ops *ops = config;
-
- tp_err("ft6x46_drv_init!11111");
-
- if (ops == NULL) {
- tp_err("peripheral ops is empty!");
- return EXT_ERR_FAILURE;
- }
-
- if (ops->bus_init == NULL) {
- tp_err("peripheral bus_init func is empty!");
- return EXT_ERR_FAILURE;
- }
-
- ret = ops->bus_init(&(ops->attr));
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("ZTW523 bus_init fail! ret = 0x%x", ret);
- return ret;
- }
-
- ret = ft6x46_init();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("ZTW523 init fail! ret = 0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_drv_deinit(void)
-{
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_drv_get_info(uint8_t *data, uint8_t data_len)
-{
- return ft6x46_irq_callback(data, data_len);
-}
-
-static ext_errno ft6x46_drv_suspend(void)
-{
- //return ft6x46_set_power_mode(MC_TP_SUSPEND_SCAN);
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_drv_resume(void)
-{
- //return ft6x46_set_power_mode(MC_TP_RESUME_SCAN);
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_drv_sleep(void)
-{
- //return ft6x46_set_power_mode(MC_TP_SLEEP_WORK_MODE);
- return EXT_ERR_SUCCESS;
-}
-
-touch_peripheral_api g_ft6x46_api = {
- .touch_init = ft6x46_drv_init,
- .touch_deinit = ft6x46_drv_deinit,
- .touch_get_tpinfo = ft6x46_drv_get_info,
- .touch_suspend = ft6x46_drv_suspend,
- .touch_resume = ft6x46_drv_resume,
- .touch_sleep = ft6x46_drv_sleep,
- .touch_bus_init = ft6x46_host_peripheral_init,
- .register_callback = ft6x46_register_handle,
- .unregister_callback = ft6x46_unregister_handle,
-};
-
-ft6x46_ctrl_ops g_ft6x46_ctrl = {
- .attr = {
- .int_gpio = FT6X46_INT_GPIO,
- .i2c_id = FT6X46_I2C_BUS,
- .i2c_speed = I2C_SPEED_MODE_SS,
- },
- .bus_init = (ft6x46_bus_init)ft6x46_host_peripheral_init,
-};
-
-void *touch_screen_get_api(void)
-{
- return ((void *)&g_ft6x46_api);
-}
-
-void *touch_screen_get_peri_attr(void)
-{
- return ((void *)&g_ft6x46_ctrl);
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ztw523 touch driver.
- * Author: @CompanyNameTag
- * Create: 2022-04-12
- */
-
-#ifndef FT6X46_DRV1_H
-#define FT6X46_DRV1_H
-
-void *touch_screen_get_api(void);
-void *touch_screen_get_peri_attr(void);
-
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ft6x46 touch driver.
- * Author: @CompanyNameTag
- * Create: 2021-05-29
- */
-
-#include "ft6x46_touch1.h"
-#include "time.h"
-#include "soc_osal.h"
-#include "osal_timer.h"
-#include "osal_mutex.h"
-#include "securec.h"
-#include "ft6x46_ctrl.h"
-#include "tcxo.h"
-#include "cmsis_os2.h"
-#include "common_def.h"
-
-#ifdef __cplusplus
-#if __cplusplus
-extern "C" {
-#endif
-#endif
-
-ft6x46_drv_data g_ft6x46_drv = {
- .chip_status = FT6X46_NOT_READY,
- .ops_mux = {0},
- .int_mask = FT6X46_INT_MASK,
- .work_status = FT6X46_WORK_INVALID,
- .fw_upgrade_flag = TD_FALSE,
- .gesture_wakeup = TD_FALSE,
- .host_dev_init_flag = TD_FALSE,
- .chip_info = FT6X46_DEVICE_INFO,
- .p_void = NULL,
-};
-static ext_errno ft6x46_config(void);
-static void ft6x46_set_irq_mode(ft6x46_irq_status irq_status, uint16_t irq_mask)
-{
- unused(irq_mask);
- ext_errno ret;
- uint16_t reg_write = 0;
-
- tp_print("TOUCH:set irq mode %d", irq_status);
-
- switch (irq_status) {
- case FT6X46_IRQ_DISABLE:
- /* Write Int Register */
- reg_write = FT6X46_INT_NONE;
- // ret = tp_i2c_reg_write(FT6X46_INT_ENABLE_FLAG, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("TOUCH:set irq mode disable 0x%x", ret);
- // return;
- // }
- break;
-
- case FT6X46_IRQ_ENABLE:
- /* Write Int Register */
- reg_write = FT6X46_INT_MASK;
- // ret = tp_i2c_reg_write(FT6X46_INT_ENABLE_FLAG, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("TOUCH:set irq mode enable 0x%x", ret);
- // return;
- // }
- break;
-
- default:
- tp_err("TOUCH:not support irq mode 0x%x", irq_status);
- break;
- }
-
- return;
-}
-
-static ext_errno ft6x46_parse_gesture_input(void)
-{
- ext_errno ret;
- uint16_t gesture_val;
- uint16_t reg_read;
- uint16_t reg_write;
-
- reg_read = 0;
- // ret = tp_i2c_data_read(FT6X46_GESTURE_WAKEUP_REG, (uint8_t *)®_read, FT6X46_DATA_LEN);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("TOUCH:parse gesture input read fail 0x%x", ret);
- // return EXT_ERR_FAILURE;
- // }
- gesture_val = reg_read;
- tp_print("TOUCH:parse gesture input ok 0x%x", reg_read);
-
- reg_write = 0;
- // ret = tp_i2c_reg_write(FT6X46_GESTURE_WAKEUP_REG, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("TOUCH:parse gesture input write fail 0x%x", ret);
- // return EXT_ERR_FAILURE;
- // }
-
- switch (gesture_val) {
- case FT6X46_GESTURE_SIGNAL_CLICK:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_SHORT_CLICK;
- break;
- case FT6X46_GESTURE_DOUBLE_CLICK:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_DOUBLE_CLICK;
- break;
- case FT6X46_GESTURE_SLIDE_UP:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_SLIDE_UP;
- break;
- case FT6X46_GESTURE_SLIDE_DOWN:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_SLIDE_DOWN;
- break;
- default:
- tp_err("TOUCH:gesture %d not Support", gesture_val);
- return EXT_ERR_FAILURE;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_parse_touch_input(void)
-{
- static uint8_t touch_input[FT6X46_TOUCHINFO_LEN] = { 0 };
- uint16_t touch_status;
- uint16_t x_axis;
- uint16_t y_axis;
- uint8_t sub_status;
-
- ext_errno ret = tp_i2c_data_read(FT6X46_POINT_STATUS_REG, touch_input, FT6X46_TOUCHINFO_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:touch input read error! ret = 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- touch_status = ((uint16_t)touch_input[FT6X46_STATUSH_OFFSET] << FT6X46_REGDATA_SHIFT) |
- (touch_input[FT6X46_STATUSL_OFFSET]);
- if ((touch_status & FT6X46_PALM_MASK) != 0) {
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_COVER;
- return EXT_ERR_SUCCESS;
- }
-
- if (touch_status != 0) {
- sub_status = touch_input[FT6X46_SUBSTATUS_OFFSET] & FT6X46_TOUCHINFO_MASK;
- x_axis = ((uint16_t)touch_input[FT6X46_XH_OFFSET] << FT6X46_REGDATA_SHIFT) | (touch_input[FT6X46_XL_OFFSET]);
- y_axis = ((uint16_t)touch_input[FT6X46_YH_OFFSET] << FT6X46_REGDATA_SHIFT) | (touch_input[FT6X46_YL_OFFSET]);
-
- switch (sub_status) {
- case FT6X46_TOUCH_DOWN:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_PRESS;
- break;
- /* Need To Modify For UI */
- case FT6X46_TOUCH_EXIST:
- case FT6X46_TOUCH_MOVE:
- case FT6X46_TOUCH_NONE:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_MOVE;
- break;
- case FT6X46_TOUCH_UP:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_RELEASE;
- break;
-
- default:
- tp_err("TOUCH:parse input wrong status|substatus 0x%08x",
- ((uint32_t)touch_status << FT6X46_SHIFT_16_BIT) | (uint32_t)sub_status);
- return EXT_ERR_FAILURE;
- }
- g_ft6x46_drv.touch_msg.tp_event_info.x_axis[0] = x_axis;
- g_ft6x46_drv.touch_msg.tp_event_info.y_axis[0] = y_axis;
- g_ft6x46_drv.touch_msg.tv_usec = (uint32_t)uapi_tcxo_get_ms();
- } else {
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_INVALID;
- tp_print("TOUCH:parse wrong touchstatus %d", touch_status);
- return EXT_ERR_SUCCESS;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-
-/*Max point numbers of gesture trace*/
-#define MAX_POINTS_GESTURE_TRACE 6
-/*Length of gesture information*/
-#define MAX_LEN_GESTURE_INFO (MAX_POINTS_GESTURE_TRACE * 4 + 2)
-
-/*Max point numbers of touch trace*/
-#define MAX_POINTS_TOUCH_TRACE 1
-/*Length of touch information*/
-#define MAX_LEN_TOUCH_INFO (MAX_POINTS_TOUCH_TRACE * 6 + 2)
-
-/*Max touch points that touch controller supports*/
-#define FTS_MAX_POINTS_SUPPORT 10
-
-struct fts_ts_event {
- int x; /*x coordinate */
- int y; /*y coordinate */
- int p; /* pressure */
- int type; /* touch event flag: 0 -- down; 1-- up; 2 -- contact */
- int id; /*touch ID */
- int area; /*touch area*/
-};
-
-static ext_errno fts_touch_process(void)
-{
- ext_errno ret;
- uint8_t i = 0;
- uint8_t base = 0;
- uint8_t regaddr = 0x01;
- uint8_t buf[MAX_LEN_TOUCH_INFO];/*A maximum of two points are supported*/
- uint8_t point_num = 0;
- uint8_t touch_event_nums = 0;
- uint8_t point_id = 0;
- struct fts_ts_event events[FTS_MAX_POINTS_SUPPORT]; /* multi-touch */
-
-
- /*read touch information from reg0x01*/
- ret = tp_ft6x46_i2c_data_read(regaddr, buf, MAX_LEN_TOUCH_INFO);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("Read touch information from reg0x01 fails");
- return ret;
- }
-
- /*print touch buffer, for debug usage*/
- //log_touch_buf(buf, MAX_LEN_TOUCH_INFO);
-
- //if ((buf[1] == 0xFF) && (buf[2] == 0xFF) && (buf[3] == 0xFF)) {
- // tp_err("FW initialization, need recovery");
- // if (fts_data->gesture_support && fts_data->suspended)
- // fts_write_reg(FTS_REG_GESTURE_EN, FTS_REG_GESTURE_ENABLE);
- //}
-
- /*parse touch information based on register map*/
- memset(events, 0xFF, sizeof(struct fts_ts_event) * FTS_MAX_POINTS_SUPPORT);
- point_num = buf[1] & 0x0F;
- if (point_num > FTS_MAX_POINTS_SUPPORT) {
- tp_err("invalid point_num(%d)", point_num);
- return EXT_ERR_FAILURE;
- }
-
- for (i = 0; i < MAX_POINTS_TOUCH_TRACE; i++) {
- base = 2 + i * 6;
- point_id = buf[base + 2] >> 4;
- if (point_id >= MAX_POINTS_TOUCH_TRACE) {
- tp_err("abnormal touch data point_id %d\r\n",point_id);
- break;
- }
-
- events[i].x = ((buf[base] & 0x0F) << 8) + buf[base + 1];
- events[i].y = ((buf[base + 2] & 0x0F) << 8) + buf[base + 3];
- events[i].id = point_id;
- events[i].type = (buf[base] >> 6) & 0x03;
- events[i].p = buf[base + 4];
- events[i].area = buf[base + 5];
- if (((events[i].type == 0) || (events[i].type == 2)) & (point_num == 0)) {
- tp_err("abnormal touch data from fw");
- return EXT_ERR_FAILURE;
- }
-
- touch_event_nums++;
- }
-
- if (touch_event_nums == 0) {
- tp_err("no touch point information(%02x)", buf[1]);
- return EXT_ERR_FAILURE;
- }
-
- /*print touch information*/
- //log_touch_info(events, touch_event_nums);
-
- /*Now you have get the touch information, you can report anything(X/Y coordinates...) you want to system*/
- /*TODO...(report touch information to system)*/
- /*Below sample code is a pseudo code*/
-
- for (i = 0; i < touch_event_nums; i++) {
- #if 0
- if ((events[i].type == 0) || (events[i].type == 2)) {
- /* The event of point(point id is events[i].id) is down event, the finger of this id stands for is
- * pressing on the screen.*/
- /*TODO...(down event)*/
- } else {
- /*TODO...(up event)*/
- }
- #endif
- switch (events[i].type) {
- case 0:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_PRESS;
- break;
- /* Need To Modify For UI */
- case 2:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_MOVE;
- break;
- case 1:
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_RELEASE;
- break;
-
- default:
- tp_err("TOUCH:parse input wrong status|substatus");
- return EXT_ERR_FAILURE;
- }
- g_ft6x46_drv.touch_msg.tp_event_info.x_axis[0] = events[i].x;
- g_ft6x46_drv.touch_msg.tp_event_info.y_axis[0] = events[i].y;
- g_ft6x46_drv.touch_msg.tv_usec = (uint32_t)uapi_tcxo_get_ms();
- tp_print("event %d, x %d, y %d, time %d",
- g_ft6x46_drv.touch_msg.tp_event,
- g_ft6x46_drv.touch_msg.tp_event_info.x_axis[0],
- g_ft6x46_drv.touch_msg.tp_event_info.y_axis[0],
- g_ft6x46_drv.touch_msg.tv_usec);
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_parse_input(void)
-{
- ext_errno ret = EXT_ERR_FAILURE;
- uint16_t reg_write;
-
- if (g_ft6x46_drv.gesture_wakeup == TD_TRUE) {
- ret = ft6x46_parse_gesture_input();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:parse gesture input fail 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- } else {
- ret = ft6x46_parse_touch_input();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:parse touch input fail 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- }
- /* clear int */
- reg_write = FT6X46_CLEAR_INT_STATUS_CMD;
- ret = tp_i2c_cmd_write(reg_write);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:parse input clear int fail 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_irq_callback(uint8_t *data_buf, uint8_t data_len)
-{
- unused(data_len);
- g_ft6x46_drv.touch_msg.tp_event = MC_TP_INVALID;
-
- int32_t mem_ret;
-
- fts_touch_process();
-
-
- mem_ret = memcpy_s(data_buf, sizeof(input_event_info), &(g_ft6x46_drv.touch_msg), sizeof(input_event_info));
- if (mem_ret != EOK) {
- tp_err("TOUCH:mem cpy error, ret = 0x%x", mem_ret);
- return EXT_ERR_FAILURE;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-/* chip id */
-#define FTS_CHIP_IDH 0x64
-#define FTS_CHIP_IDL 0x56
-
-
-#define FTS_CMD_READ_ID 0x90
-
-/* register address */
-#define FTS_REG_CHIP_ID 0xA3
-#define FTS_REG_CHIP_ID2 0x9F
-
-#define FTS_CMD_START_DELAY 12
-
-
-static ext_errno ft6x46_power_sequence(void)
-{
- ext_errno ret;
- uint8_t chip_id[2] = { 0 };
-
- /*delay 200ms,wait fw*/
- osDelay(FT6X46_GENERAL_DELAY_200);
-
- /*get chip id*/
- ret = tp_ft6x46_i2c_data_read(FTS_REG_CHIP_ID, &chip_id[0], 1);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("222222222get ic information, error1");
- return EXT_ERR_TP_ZTW523_POWERUP_READ_CHIPID;
- }
- ret = tp_ft6x46_i2c_data_read(FTS_REG_CHIP_ID2, &chip_id[1], 1);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("3333333get ic information, error2");
- return EXT_ERR_TP_ZTW523_POWERUP_READ_CHIPID;
- }
- // tp_print("11111111111111get ic information, chip id = 0x%02x%02x", chip_id[0], chip_id[1]);
- if ((FTS_CHIP_IDH == chip_id[0]) && (FTS_CHIP_IDL == chip_id[1])) {
- tp_warning("get ic information, chip id = 0x%02x%02x", chip_id[0], chip_id[1]);
- return EXT_ERR_SUCCESS;
- }
-
- // tp_err("fw is invalid, need read boot id");
- ret = tp_ft6x46_i2c_data_write_reg(0x55, 0xAA);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("start cmd write fail");
- return ret;
- }
-
- osDelay(FTS_CMD_START_DELAY);
- ret = tp_ft6x46_i2c_data_read(FTS_CMD_READ_ID, chip_id, 2);
- if((ret == EXT_ERR_SUCCESS) && ((FTS_CHIP_IDH == chip_id[0]) && (FTS_CHIP_IDL == chip_id[1]))) {
- tp_err("get ic information, boot id = 0x%02x%02x", chip_id[0], chip_id[1]);
- ret = EXT_ERR_SUCCESS;
- } else {
- tp_err("read boot id fail,read:0x%02x%02x", chip_id[0], chip_id[1]);
- return EXT_ERR_FAILURE;
- }
- return ret;
-
-}
-
-static void ft6x46_clear_interrupt(uint8_t retry_times, uint16_t delay)
-{
- uint16_t reg_write = FT6X46_CLEAR_INT_STATUS_CMD;
- ext_errno ret;
- uint8_t times;
- for (times = 1; times <= retry_times; times++) {
- ret = tp_i2c_cmd_write(reg_write);
- if (ret == EXT_ERR_SUCCESS) {
- return;
- }
- osDelay(delay);
- }
-
- if (times > retry_times) {
- tp_warning("TOUCH:Clear Int Cmd1! ret = 0x%x", ret);
- }
-}
-
-static ext_errno ft6x46_reg_config(void)
-{
- ext_errno ret;
- // uint16_t reg_write;
-
- // /* Initial Touch Mode */
- // reg_write = FT6X46_POINT_MODE;
-// ret = tp_i2c_reg_write(FT6X46_INITIAL_TOUCH_MODE, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_INIT_TOUCHMODE;
-// }
-
-// ret = tp_i2c_reg_write(FT6X46_TOUCH_MODE, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_TOUCHMODE;
-// }
-
-// /* Set Finger Num */
-// reg_write = FT6X46_MAX_SUPPORTED_FINGER_NUM;
-// ret = tp_i2c_reg_write(FT6X46_SUPPORTED_FINGER_NUM, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_FINGER_NUM;
-// }
-
-// /* Set X Resolution */
-// reg_write = FT6X46_RES_MAX_X;
-// ret = tp_i2c_reg_write(FT6X46_X_RESOLUTION, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_XRES;
-// }
-
-// /* Set Y Resolution */
-// reg_write = FT6X46_RES_MAX_Y;
-// ret = tp_i2c_reg_write(FT6X46_Y_RESOLUTION, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_YRES;
-// }
-
-// /* Set Lock Point Range */
-// ret = tp_i2c_reg_write(FT6X46_HOLD_POINT_TRESHHOLD, FT6X46_POINT_TRESHHOLD);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_YRES;
-// }
-
-// /* Write Calib Cmd */
-// reg_write = FT6X46_CALIBRATE_CMD;
-// ret = tp_i2c_cmd_write(reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_CALIBCMD;
-// }
-
-// /* Write Int Register */
-// reg_write = FT6X46_INT_MASK;
-// ret = tp_i2c_reg_write(FT6X46_INT_ENABLE_FLAG, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_INTMASK;
-// }
-// #ifdef FT6X46_GESTURE_WAKEUP
-// /* Write Gesture Register */
-// reg_write = FT6X46_GESTURE_WAKEUP_INIT;
-// ret = tp_i2c_reg_write(FT6X46_GESTURE_WAKEUP_REG, reg_write);
-// if (ret != EXT_ERR_SUCCESS) {
-// return EXT_ERR_TP_ZTW523_CONFIG_WRITE_GESWAKEUP;
-// }
-// #endif
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_configuration(void)
-{
- ext_errno ret;
- uint8_t retry_times = 0;
- uint16_t reg_read;
- uint16_t reg_write;
-
- /* Software Reset */
- reg_write = FT6X46_SWRESET_CMD;
- for (retry_times = 0; retry_times < FT6X46_RETRY_TIMES; retry_times++) {
- ret = tp_i2c_cmd_write(reg_write);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- osDelay(FT6X46_RESETHIGH_DELAY);
- }
-
- if (retry_times >= FT6X46_RETRY_TIMES) {
- tp_err("TOUCH:configuration sw reset fail! ret = 0x%x", ret);
- return EXT_ERR_TP_ZTW523_CONFIG_RESET;
- }
-
- /* Read Firmware Version */
- reg_read = 0;
- ret = tp_i2c_data_read(FT6X46_FIRMWARE_VERSION, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- return EXT_ERR_TP_ZTW523_CONFIG_READ_FWVERSION;
- }
- g_ft6x46_drv.firmware_version = reg_read;
-
- /* Read Minor Firmware Version */
- reg_read = 0;
- ret = tp_i2c_data_read(FT6X46_MINOR_FW_VERSION, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- return EXT_ERR_TP_ZTW523_CONFIG_READ_FWMINORVERSION;
- }
- g_ft6x46_drv.minor_firmware_version = reg_read;
-
- /* Read Hw ID */
- reg_read = 0;
- ret = tp_i2c_data_read(FT6X46_HW_ID, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("configuration error (read hw id) 0x%x", ret);
- return EXT_ERR_TP_ZTW523_GET_HWID_READ_ID;
- }
- g_ft6x46_drv.chip_hw_id = reg_read;
-
- /* Read Register Version */
- reg_read = 0;
- ret = tp_i2c_data_read(FT6X46_DATA_VERSION_REG, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- return EXT_ERR_TP_ZTW523_CONFIG_READ_DATAREG;
- }
- g_ft6x46_drv.reg_version = reg_read;
-
- ret = ft6x46_reg_config();
- if (ret != EXT_ERR_SUCCESS) {
- return ret;
- }
-
- /* Write Clear Int Cmd */
- ft6x46_clear_interrupt(FT6X46_RETRY_TIMES, FT6X46_GENERAL_DELAY_1);
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_get_panel_info(void)
-{
- ext_errno ret;
- uint16_t reg_read = 0;
- /* Read X Channel Num */
- ret = tp_i2c_data_read(FT6X46_TOTAL_NUMBER_OF_X, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:GetPanelInfo error read x channel 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
-
- g_ft6x46_drv.panel_info.xchannel_num = reg_read;
- /* Read Y Channel Num */
- reg_read = 0;
- ret = tp_i2c_data_read(FT6X46_TOTAL_NUMBER_OF_Y, (uint8_t *)®_read, FT6X46_DATA_LEN);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:GetPanelInfo error read y channel 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
-
- g_ft6x46_drv.panel_info.ychannel_num = reg_read;
- g_ft6x46_drv.panel_info.total_dnd_num =
- g_ft6x46_drv.panel_info.xchannel_num * g_ft6x46_drv.panel_info.ychannel_num;
- g_ft6x46_drv.panel_info.total_self_dnd_num =
- g_ft6x46_drv.panel_info.xchannel_num + g_ft6x46_drv.panel_info.ychannel_num;
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_standby(void)
-{
- ext_errno ret;
- uint16_t reg_write;
- uint8_t retry_times;
-
- if ((g_ft6x46_drv.work_status == FT6X46_WORK_STANDBY) || (g_ft6x46_drv.work_status == FT6X46_WORK_SLEEP)) {
- tp_print("alread standby or sleep");
- return EXT_ERR_SUCCESS;
- }
- /* Disabel Irq */
- ft6x46_set_irq_mode(FT6X46_IRQ_DISABLE, FT6X46_INT_NONE);
-
- reg_write = FT6X46_POWER_CTL_BEGIN;
- ret = tp_i2c_cmd_write(reg_write);
- if (ret != EXT_ERR_SUCCESS) {
- ft6x46_set_irq_mode(FT6X46_IRQ_ENABLE, FT6X46_INT_MASK);
- tp_err("standby failed 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- /* delay 10 ms */
- osDelay(FT6X46_GENERAL_DELAY_10);
- /* Send Clear Int Cmd */
- reg_write = FT6X46_CLEAR_INT_STATUS_CMD;
- for (retry_times = 0; retry_times < FT6X46_INIT_RETRY_TIMERS; retry_times++) {
- ret = tp_i2c_cmd_write(reg_write);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- /* delay 10 ms */
- osDelay(FT6X46_GENERAL_DELAY_10);
- }
-
- /* Send Idle Cmd */
- reg_write = FT6X46_IDLE_CMD;
- for (retry_times = 0; retry_times < FT6X46_INIT_RETRY_TIMERS; retry_times++) {
- ret = tp_i2c_cmd_write(reg_write);
- if (ret == EXT_ERR_SUCCESS) {
- break;
- }
- /* delay 10 ms */
- osDelay(FT6X46_GENERAL_DELAY_10);
- }
-
- reg_write = FT6X46_POWER_CTL_END;
- ret = tp_i2c_cmd_write(reg_write);
- if (ret != EXT_ERR_SUCCESS) {
- ft6x46_set_irq_mode(FT6X46_IRQ_ENABLE, FT6X46_INT_MASK);
- tp_err("standby failed 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- /* delay 10 ms */
- osDelay(FT6X46_GENERAL_DELAY_10);
- ft6x46_set_irq_mode(FT6X46_IRQ_ENABLE, FT6X46_INT_MASK);
- g_ft6x46_drv.work_status = FT6X46_WORK_STANDBY;
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_suspend(void)
-{
- ext_errno ret;
- // uint16_t reg_write;
- // uint8_t retry_times = 0;
-
- if (g_ft6x46_drv.work_status == FT6X46_WORK_SLEEP) {
- tp_print("TOUCH:alread suspend");
- return EXT_ERR_SUCCESS;
- }
- /*Host writes 0x03 to register address 0xA5 to enter into sleep mode.*/
- ret = tp_ft6x46_i2c_data_write_reg(FTS_REG_POWER_MODE, 0x03);
- if(ret != 0) {
- tp_err("ft6x46_suspend enter sleep mode fails.ret:0x%X",ret);
- return EXT_ERR_FAILURE;
- } else {
- tp_warning("ft6x46_suspend enter sleep mode success.");
- }
-
- ft6x46_set_irq_mode(FT6X46_IRQ_DISABLE, FT6X46_INT_MASK);
- g_ft6x46_drv.work_status = FT6X46_WORK_SLEEP;
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_resume_post(void)
-{
- ext_errno ret;
- // uint16_t reg_write;
- // uint16_t cmd_write;
-
- // reg_write = FT6X46_ENABLE;
- // ret = tp_i2c_reg_write(FT6X46_REG_CMD_ENABLE, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("resume post reg cmd failed 0x%x", ret);
- // return EXT_ERR_FAILURE;
- // }
- // /* delay for ms */
- // osDelay(FT6X46_GENERAL_DELAY_1);
-
- // cmd_write = FT6X46_REG_INTN_CLEAR;
- // ret = tp_i2c_cmd_write(cmd_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // return EXT_ERR_TP_ZTW523_POWERUP_INTN_CLEAR;
- // }
- // osDelay(FT6X46_GENERAL_DELAY_1);
-
- // reg_write = FT6X46_ENABLE;
- // ret = tp_i2c_reg_write(FT6X46_REG_NVM, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("resume post reg nvm failed 0x%x", ret);
- // return EXT_ERR_FAILURE;
- // }
- // osDelay(FT6X46_GENERAL_DELAY_1);
-
- // reg_write = FT6X46_ENABLE;
- // ret = tp_i2c_reg_write(FT6X46_REG_PROGRAM_START, reg_write);
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("resume post reg program start failed 0x%x", ret);
- // return EXT_ERR_FAILURE;
- // }
-
- // osDelay(FT6X46_GENERAL_DELAY_50); /* delay 50 ms */
-
- return EXT_ERR_SUCCESS;
-}
-ext_errno ft6x46_resume(void)
-{
- ext_errno ret;
- uint8_t retry_times = 0;
-
- g_ft6x46_drv.work_status = FT6X46_WORK_RESUME;
-
- ft6x46_resume_reset();
-
- // for (; retry_times < FT6X46_INIT_RETRY_TIMERS; retry_times++) {
- // ret = ft6x46_resume_post();
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("resume: post err %d", ret);
- // /* retry delay 200ms */
- // osDelay(FT6X46_GENERAL_DELAY_200);
- // } else {
- // break;
- // }
- // }
-
- // if (retry_times == FT6X46_INIT_RETRY_TIMERS) {
- // tp_err("resume: overtimes %d", retry_times);
- // goto resume_exit;
- // }
- ret = ft6x46_config();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 init fail 0x%x", ret);
- goto resume_exit;
- }
- // ret = ft6x46_configuration();
- // if (ret != EXT_ERR_SUCCESS) {
- // tp_err("TOUCH:resume config fail 0x%x", ret);
- // return EXT_ERR_TP_ZTW523_INIT_CONFIG;
- // }
-
- g_ft6x46_drv.work_status = FT6X46_WORK_NORMAL;
-#ifdef FT6X46_GESTURE_WAKEUP
- g_ft6x46_drv.gesture_wakeup = TD_FALSE;
-#endif
- /* Enable Irq */
- ft6x46_set_irq_mode(FT6X46_IRQ_ENABLE, FT6X46_INT_MASK);
-
- return EXT_ERR_SUCCESS;
-
-resume_exit:
-
- /* Enable Irq */
- ft6x46_set_irq_mode(FT6X46_IRQ_DISABLE, FT6X46_INT_MASK);
-
- tp_err("resume failed 0x%x", ret);
-
- return EXT_ERR_FAILURE;
-}
-
-ext_errno ft6x46_get_power_mode(uint32_t *power_mode)
-{
- if (power_mode == NULL) {
- return EXT_ERR_FAILURE;
- }
-
- *power_mode = (uint32_t)(g_ft6x46_drv.work_status);
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_set_standby_mode(void)
-{
- ext_errno ret;
-
- ret = ft6x46_standby();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 set standby 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
-#ifdef FT6X46_GESTURE_WAKEUP
- g_ft6x46_drv.gesture_wakeup = TD_TRUE;
-#endif
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_set_sleep_mode(void)
-{
- ext_errno ret;
-
- ret = ft6x46_suspend();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 set suspend fail 0x%x", ret);
- }
-#ifdef FT6X46_GESTURE_WAKEUP
- g_ft6x46_drv.gesture_wakeup = TD_FALSE;
-#endif
- g_ft6x46_drv.work_status = FT6X46_WORK_SLEEP;
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_set_normal_mode(void)
-{
- ext_errno ret;
- uint16_t reg_write;
-
- if (g_ft6x46_drv.work_status == FT6X46_WORK_NORMAL) {
- return EXT_ERR_SUCCESS;
- }
-
- reg_write = FT6X46_SDRAM_RESET;
- ret = tp_i2c_cmd_write(reg_write);
- if (ret != EXT_ERR_SUCCESS) {
- return EXT_ERR_FAILURE;
- }
- /* delay 50ms */
- osDelay(FT6X46_GENERAL_DELAY_50);
- ret = ft6x46_power_sequence();
- if (ret != EXT_ERR_SUCCESS) {
- return EXT_ERR_FAILURE;
- }
- ft6x46_set_irq_mode(FT6X46_IRQ_ENABLE, FT6X46_INT_MASK);
- g_ft6x46_drv.work_status = FT6X46_WORK_NORMAL;
-#ifdef FT6X46_GESTURE_WAKEUP
- g_ft6x46_drv.gesture_wakeup = TD_FALSE;
-#endif
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_set_power_mode(tp_work_mode power_mode)
-{
- ext_errno ret = EXT_ERR_SUCCESS;
-
- switch (power_mode) {
- case MC_TP_SLEEP_WORK_MODE:
- case MC_TP_SUSPEND_SCAN:
- ret = ft6x46_set_sleep_mode();
- break;
- case MC_TP_NORMAL_WORK_MODE:
- case MC_TP_RESUME_SCAN:
- ret = ft6x46_set_normal_mode();
- break;
- case MC_TP_STANDBY_WORK_MODE:
- ret = ft6x46_set_standby_mode();
- break;
- default:
- tp_err("TOUCH:ft6x46 not support powermode 0x%x", power_mode);
- ret = EXT_ERR_FAILURE;
- break;
- }
-
- return ret;
-}
-
-static ext_errno ft6x46_config(void)
-{
- ext_errno ret;
-
- /* Step 1 hardware reset */
- ret = ft6x46_reset();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:Init reset fail 0x%x", ret);
- return EXT_ERR_TP_ZTW523_INIT_RESET;
- }
-
- /* Step 2 power up */
- ret = ft6x46_power_sequence();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:init powerup fail 0x%x", ret);
- return EXT_ERR_TP_ZTW523_INIT_POWERUP;
- }
-
-#if 0
- /* Step 3 configuration */
- ret = ft6x46_configuration();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:init config fail 0x%x", ret);
- return EXT_ERR_TP_ZTW523_INIT_CONFIG;
- }
-
- /* Step 3 Panel Info */
- ret = ft6x46_get_panel_info();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:init get panelinfo fail 0x%x", ret);
- return EXT_ERR_TP_ZTW523_INIT_GETINFO;
- }
-#endif
-
- /* Record Status For Init */
- g_ft6x46_drv.chip_status = FT6X46_READY;
- g_ft6x46_drv.work_status = FT6X46_WORK_NORMAL;
-
- return EXT_ERR_SUCCESS;
-}
-
-static ext_errno ft6x46_resource_deinit(void)
-{
- g_ft6x46_drv.work_status = FT6X46_WORK_INVALID;
- g_ft6x46_drv.fw_upgrade_flag = TD_FALSE;
- osal_mutex_destroy(&g_ft6x46_drv.ops_mux);
-
- return EXT_ERR_SUCCESS;
-}
-
-ext_errno ft6x46_init(void)
-{
- ext_errno ret = EXT_ERR_FAILURE;
- ext_errno err_ret;
-
- /* create tp operation mutex */
- if (g_ft6x46_drv.ops_mux.mutex == NULL) {
- ret = osal_mutex_init(&(g_ft6x46_drv.ops_mux));
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 init create mux lock fail 0x%x", ret);
- return EXT_ERR_FAILURE;
- }
- }
-
- /* get tp operater mutex */
- ret = osal_mutex_lock_timeout(&g_ft6x46_drv.ops_mux, FT6X46_OPERATER_MUTEX_WAIT_TIME);
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 init wait mux lock fail 0x%x", ret);
- goto init_fail;
- }
-
- /* tp hardware reset and init */
- ret = ft6x46_config();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:ft6x46 init fail 0x%x", ret);
- goto init_fail;
- }
-
- /* release tp operater mutex */
- osal_mutex_unlock(&g_ft6x46_drv.ops_mux);
-
- tp_print("TOUCH:ft6x46 init succ!");
- return EXT_ERR_SUCCESS;
-
-init_fail:
- /* release tp operater mutex */
- osal_mutex_unlock(&g_ft6x46_drv.ops_mux);
- err_ret = ft6x46_resource_deinit();
- if (err_ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH:delete mux lock err! ret = 0x%x", err_ret);
- }
- return ret;
-}
-
-ext_errno ft6x46_deinit(void)
-{
- ext_errno ret = ft6x46_resource_deinit();
- if (ret != EXT_ERR_SUCCESS) {
- tp_err("TOUCH: ft6x46 deinit fail! ret = 0x%x", ret);
- return ret;
- }
-
- return EXT_ERR_SUCCESS;
-}
-
-#ifdef __cplusplus
-#if __cplusplus
- }
-#endif
-#endif
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description: ztw523 touch driver.
- * Author: @CompanyNameTag
- * Create: 2021-05-29
- */
-
-#ifndef FT6X46_TOUCH1_H
-#define FT6X46_TOUCH1_H
-
-#include "stdio.h"
-#include "soc_errno.h"
-#include "soc_osal.h"
-#include "touch_screen_def.h"
-#include "platform_core.h"
-
-#ifdef __cplusplus
-#if __cplusplus
-extern "C" {
-#endif
-#endif
-
-/* ztw523 definitions */
-/* max wait time */
-#define FT6X46_OPERATER_MUTEX_WAIT_TIME 3000 /* operater tp mutex timeout ms */
-#define FT6X46_CMCP_WAIT_TIMEOUT 1000
-/* define some properties value */
-#define FT6X46_ENABLE 0x0001
-#define FT6X46_DISABLE 0x0000
-#define FT6X46_DATA_LEN 2
-#define FT6X46_POWERON_DELAY 100
-#define FT6X46_POWEROFF_DELAY 100
-#define FT6X46_RESETHIGH_DELAY 10
-#define FT6X46_CLEARINT_DELAY 10
-#define FT6X46_FIRMWAREON_DELAY 200
-#define FT6X46_INIT_RETRY_TIMERS 3
-#define FT6X46_SETMODE_RETRY_TIMERS 3
-#define FT6X46_SOFTRESET_RETRY_TIMES 10
-#define FT6X46_RETRY_TIMES 10
-#define FT6X46_DEVICE_INFO "zinitix,ft6x46"
-#define FT6X46_DEVICE_INFO_SIZE sizeof(FT6X46_DEVICE_INFO)
-#define FT6X46_MAX_SUPPORTED_FINGER_NUM 1
-#define FT6X46_POINT_MODE 1
-#define FT6X46_CALIB_TOUCH_MODE 0x07
-#define FT6X46_REGDATA_SHIFT 8
-#define FT6X46_GENERAL_DELAY_1 1
-#define FT6X46_GENERAL_DELAY_5 5
-#define FT6X46_GENERAL_DELAY_10 10
-#define FT6X46_GENERAL_DELAY_20 20
-#define FT6X46_GENERAL_DELAY_25 25
-#define FT6X46_GENERAL_DELAY_30 30
-#define FT6X46_GENERAL_DELAY_50 50
-#define FT6X46_GENERAL_DELAY_100 100
-#define FT6X46_GENERAL_DELAY_200 200
-#define FT6X46_GENERAL_DELAY_500 500
-#define FT6X46_GENERAL_RETRY_1 1
-#define FT6X46_GENERAL_RETRY_2 2
-#define FT6X46_GENERAL_RETRY_3 3
-#define FT6X46_GENERAL_RETRY_4 4
-#define FT6X46_GENERAL_RETRY_10 10
-#define FT6X46_RAWDATA_DELAY_FOR_HOST 100
-#define FT6X46_FW_JUMP_CODE 0x0048
-#define FT6X46_REPORT_RATE 60
-#define FT6X46_PIXEL_THRESHOLD 5
-
-#ifndef FT6X46_RES_MAX_X
-#define FT6X46_RES_MAX_X 466
-#endif
-
-#ifndef FT6X46_RES_MAX_Y
-#define FT6X46_RES_MAX_Y 466
-#endif
-
-#ifndef FT6X46_POINT_TRESHHOLD
-#define FT6X46_POINT_TRESHHOLD 0x19
-#endif
-
-#define FT6X46_TOUCHINFO_HEAD_LEN 4
-#define FT6X46_POINTINFO_LEN 6
-#define FT6X46_TOUCHINFO_LEN (FT6X46_TOUCHINFO_HEAD_LEN + FT6X46_POINTINFO_LEN * FT6X46_MAX_SUPPORTED_FINGER_NUM)
-
-#define FT6X46_INT_NONE 0x0000
-#define FT6X46_INT_MASK 0x081F
-#define FT6X46_PALM_MASK 0x0010
-#define FT6X46_GESTURE_WAKEUP_INIT 0
-#define FT6X46_FIRMWARE_SIZE 48
-#define ZTW_PAGE_SIZE_128 128
-#define ZTW_PAGE_SIZE_64 64
-#define ZTW_SECTOR_SIZE 8
-#define ZTW_CHIPID_F400 0xF400
-#define ZTW_CHIPID_E240 0xE240
-#define ZTW_CHIPID_E700 0xE700
-#define ZTW_CHIPID_E548 0xE548
-#define ZTW_CHIPID_E538 0xE538
-#define ZTW_CHIPID_E532 0xE532
-#define ZTW_VENDOR_ID 0x5A49
-#define FT6X46_CHIP_ID 0xE628
-/* define touch info offset */
-#define FT6X46_STATUSL_OFFSET 0
-#define FT6X46_STATUSH_OFFSET 1
-#define FT6X46_EVENTL_OFFSET 2
-#define FT6X46_EVENTH_OFFSET 3
-#define FT6X46_XL_OFFSET 4
-#define FT6X46_XH_OFFSET 5
-#define FT6X46_YL_OFFSET 6
-#define FT6X46_YH_OFFSET 7
-#define FT6X46_WIDTH_OFFSET 8
-#define FT6X46_SUBSTATUS_OFFSET 9
-/* define data shift and mask */
-#define FT6X46_SHIFT_8_BIT 8
-#define FT6X46_SHIFT_16_BIT 16
-#define FT6X46_SHIFT_24_BIT 24
-#define FT6X46_MASK_BYTE 0xFF
-/* define FT6X46_HIGH_SPEED_DMA rely on iic dma support */
-#ifdef FT6X46_HIGH_SPEED_DMA
-#define FT6X46_TOUCH_POINT_MODE 0
-#else
-#define FT6X46_TOUCH_POINT_MODE 1
-#endif
-
-#define FT6X46_SEC_MODE 48
-#define FT6X46_NORMAL_MODE 5
-#define FT6X46_DND_MODE 11 /* mutual cap */
-#define FT6X46_SELF_DND_MODE 17 /* self cap */
-#define FT6X46_DNDSKIP_CNT 1
-#define FT6X46_SELFDNDSKIP_CNT 1
-/* Config Reg Info */
-#define FT6X46_REG_CMD_ENABLE 0xC000
-#define FT6X46_REG_CHIP_ID 0xCC00
-#define FT6X46_REG_INTN_CLEAR 0xC004
-#define FT6X46_REG_NVM 0xC002
-#define FT6X46_REG_NVM_VPP 0xC003
-#define FT6X46_REG_NVM_WP 0xC104
-#define FT6X46_REG_PROGRAM_START 0xC001
-#define FT6X46_POWER_CTL_BEGIN 0x000A
-#define FT6X46_POWER_CTL_END 0x000B
-#define FT6X46_CALIB_CTL1 0xC003
-#define FT6X46_CALIB_CTL2 0xC104
-#define FT6X46_SDRAM_RESET 0x0FF8
-#define FT6X46_REPORT_REG 0x0186 /* 设置中断上报频率 */
-#define FT6X46_PIXEL_THRESHOLD_REG 0x00C3
-/* Register Map */
-#define FT6X46_SWRESET_CMD 0x0000
-#define FT6X46_WAKEUP_CMD 0x0001
-#define FT6X46_IDLE_CMD 0x0004
-#define FT6X46_SLEEP_CMD 0x0005
-#define FT6X46_CLEAR_INT_STATUS_CMD 0x0003
-#define FT6X46_CALIBRATE_CMD 0x0006
-#define FT6X46_SAVE_STATUS_CMD 0x0007
-#define FT6X46_SAVE_CALIBRATION_CMD 0x0008
-#define FT6X46_RECALL_FACTORY_CMD 0x000f
-#define FT6X46_SENSITIVITY 0x0020
-#define FT6X46_I2C_CHECKSUM_WCNT 0x016a
-#define FT6X46_I2C_CHECKSUM_RESULT 0x016c
-#define FT6X46_DEBUG_REG 0x0115 /* 0~7 */
-#define FT6X46_TOUCH_MODE 0x0010
-#define FT6X46_CHIP_REVISION 0x0011
-#define FT6X46_FIRMWARE_VERSION 0x0012
-#define FT6X46_MINOR_FW_VERSION 0x0121
-#define FT6X46_DATA_VERSION_REG 0x0013
-#define FT6X46_HW_ID 0x0014
-#define FT6X46_SUPPORTED_FINGER_NUM 0x0015
-#define FT6X46_EEPROM_INFO 0x0018
-#define FT6X46_INITIAL_TOUCH_MODE 0x0019
-#define FT6X46_CHIP_HW_REVISION 0x001A
-#define FT6X46_IC_VENDOR_ID 0x001C
-#define FT6X46_TSM_MODULE_ID 0x001E
-#define FT6X46_TOTAL_NUMBER_OF_X 0x0060
-#define FT6X46_TOTAL_NUMBER_OF_Y 0x0061
-#define FT6X46_DELAY_RAW_FOR_HOST 0x007f
-#define FT6X46_BUTTON_SUPPORTED_NUM 0x00B0
-#define FT6X46_BUTTON_SENSITIVITY 0x00B2
-#define FT6X46_X_RESOLUTION 0x00C0
-#define FT6X46_Y_RESOLUTION 0x00C1
-#define FT6X46_HOLD_POINT_TRESHHOLD 0x00C3
-#define FT6X46_POINT_STATUS_REG 0x0080
-#define FT6X46_ICON_STATUS_REG 0x00AA
-#define FT6X46_AFE_FREQUENCY 0x0100
-#define FT6X46_DND_N_COUNT 0x0122
-#define FT6X46_DND_U_COUNT 0x0135
-#define FT6X46_RAWDATA_REG 0x0200
-#define FT6X46_EEPROM_INFO_REG 0x0018
-#define FT6X46_INT_ENABLE_FLAG 0x00f0
-#define FT6X46_PERIODICAL_INTERRUPT_INTERVAL 0x00f1
-#define FT6X46_CHECKSUM_RESULT 0x012c
-#define FT6X46_GESTURE_WAKEUP_REG 0x0126
-
-#define FT6X46_TOUCHINFO_MASK 0x0F
-#define FT6X46_TOUCH_EXIST 0x01
-#define FT6X46_TOUCH_DOWN 0x03
-#define FT6X46_TOUCH_MOVE 0x05
-#define FT6X46_TOUCH_UP 0x08
-#define FT6X46_TOUCH_NONE 0x07
-
-#define FT6X46_SUB_BIT_EXIST 0
-#define FT6X46_SUB_BIT_DOWN 1
-#define FT6X46_SUB_BIT_MOVE 2
-#define FT6X46_SUB_BIT_UP 3
-#define FT6X46_SUB_BIT_UPDATE 4
-#define FT6X46_SUB_BIT_WAIT 5
-
-#ifndef FT6X46_TSP_X_CHANNEL_NUM
-#define FT6X46_TSP_X_CHANNEL_NUM 6
-#endif
-
-#ifndef FT6X46_TSP_Y_CHANNEL_NUM
-#define FT6X46_TSP_Y_CHANNEL_NUM 6
-#endif
-
-#define FT6X46_TSP_DND_NUM (FT6X46_TSP_X_CHANNEL_NUM * FT6X46_TSP_Y_CHANNEL_NUM)
-#define FT6X46_TSP_SELFDND_NUM (FT6X46_TSP_X_CHANNEL_NUM + FT6X46_TSP_Y_CHANNEL_NUM)
-
-/* firmware info */
-#define FT6X46_FIRMWARE_VERSION_L 0
-#define FT6X46_FIRMWARE_VERSION_H 1
-#define FT6X46_FIRMWARE_VERSION_OFFSET 52
-#define FT6X46_FIRMWARE_MINOR_VERSION_OFFSET 56
-#define FT6X46_FIRMWARE_DATA_VERSION_OFFSET 60
-#define FT6X46_FIRMWARE_OFFSET_ZERO 0
-#define FT6X46_FIRMWARE_CONVERT_DATA_STEP 2
-#define FT6X46_FIRMWARE_CONVERT_DATA_OFFSET 1
-/* file op code */
-#define FT6X46_FILE_ERROR (-1)
-#define FT6X46_FILE_OK 0
-/* upgrade info */
-#define FT6X46_FWGRADE_CMD_NUM 3
-/* rawdata info */
-#define FT6X46_RAWDATA_CMD_NUM 2
-/* define gesture macro */
-#define FT6X46_GESTURE_WAKEUP 1
-
-/* self_dnd dnd parameter */
-#define FT6X46_SEC_SELF_DND_N_COUNT 15
-#define FT6X46_SEC_SELF_DND_U_COUNT 2
-#define FT6X46_SEC_SELF_DND_FREQUENCY 80
-
-#define FT6X46_SEC_DND_N_COUNT 27
-#define FT6X46_SEC_DND_U_COUNT 3
-#define FT6X46_SEC_DND_FREQUENCY 240
-
-/* host peripheral typedef */
-typedef ext_errno (*tp_irq_callback)(void);
-
-/* ZTW523 driver typedef */
-typedef enum {
- FT6X46_POWERDOWN = 0,
- FT6X46_POWERUP,
-} ft6x46_sw_power_status;
-
-typedef enum {
- FT6X46_WORK_NORMAL = 0,
- FT6X46_WORK_STANDBY,
- FT6X46_WORK_GETCMCP,
- FT6X46_WORK_SLEEP,
- FT6X46_WORK_SUSPEND,
- FT6X46_WORK_RESUME,
- FT6X46_WORK_INVALID,
-} ft6x46_work_status;
-
-typedef enum {
- FT6X46_NOT_READY = 0,
- FT6X46_READY,
-} ft6x46_device_status;
-
-typedef enum {
- MC_BUTTON_RELEASE = 0, /* button release */
- MC_BUTTON_PRESSED = 1, /* button pressed */
-} button_event_type;
-
-typedef enum {
- MC_TOUCHKEY_EVENT_PRESS = 0,
- MC_TOUCHKEY_EVENT_RELASSE,
- MC_TOUCHKEY_EVENT_LONG_PRESS,
- MC_TOUCHKEY_EVENT_INVALID,
-} touch_key_event_type;
-
-typedef enum {
- FT6X46_GESTURE_NONE = 0,
- FT6X46_GESTURE_SIGNAL_CLICK = 1,
- FT6X46_GESTURE_DOUBLE_CLICK = 2,
- FT6X46_GESTURE_SLIDE_UP = 4,
- FT6X46_GESTURE_SLIDE_DOWN = 5,
-} ft6x46_gesture_event;
-
-typedef enum {
- FT6X46_IRQ_DISABLE = 0,
- FT6X46_IRQ_ENABLE,
-} ft6x46_irq_status;
-
-typedef enum {
- MC_TP_NORMAL_WORK_MODE = 0, /* tp normal mode */
- MC_TP_STANDBY_WORK_MODE, /* tp idle mode */
- MC_TP_BOOTLOADER_WORK_MODE,
- MC_TP_SLEEP_WORK_MODE,
- MC_TP_SUSPEND_SCAN,
- MC_TP_RESUME_SCAN,
- MC_TP_MAX_MODE,
-} tp_work_mode;
-
-typedef enum {
- MC_TP_UPGRADE_NEED_FLAG,
- MC_TP_UPGRADE_START_ASYN,
- MC_TP_UPGRADE_STATUS,
- MC_TP_UPGRADE_SYNC,
-} mc_tp_upgrade;
-
-typedef struct {
- uint32_t reset_gpio;
- uint32_t int_gpio;
- i2c_bus_t i2c_id;
- uint32_t i2c_baudrate;
-} tp_peripheral_attr;
-
-typedef struct {
- uint16_t button_code;
-} button_dev_info;
-
-typedef struct {
- uint16_t xchannel_num;
- uint16_t ychannel_num;
- uint16_t total_dnd_num;
- uint16_t total_self_dnd_num;
-} ft6x46_panel_data;
-
-typedef struct {
- uint32_t skip_cnt;
- int16_t dnd_data[FT6X46_TSP_DND_NUM];
- int16_t self_dnd_data[FT6X46_TSP_SELFDND_NUM];
-} ft6x46_tsp_rawdata;
-
-typedef enum {
- MC_TP_RAW_DATA,
- MC_TP_BASE_DATA,
- MC_TP_NOS_DATA,
- MC_TP_SIG_DATA,
- MC_TP_FT_DATA,
- MC_TP_NT_DATA,
- MC_TP_MAX_DATA,
- MC_TP_CM_CP_DATA, /* 7, CM CP data */
- MC_TP_INT_COUNT_DATA, /* 8, TP Int count */
- MC_TP_NOISE_METRICS_DATA,
- MC_TP_DATA_STRUCTURE_DATA,
- MC_TP_PANEL_SCAN_CM_DATA,
- MC_TP_PANEL_SCAN_CP_DATA,
- MC_TP_START_RAW_TRANS,
- MC_TP_STOP_RAW_TRANS,
- MC_TP_START_GET_WATER_TEMPR, /* 15, start get and print water level and temprature */
- MC_TP_STOP_GET_WATER_TEMPR, /* 16, stop get and print water level and temprature */
- MC_TP_RAW_MAX,
-} mc_tp_rawdata;
-
-typedef struct {
- mc_tp_rawdata cmd;
- uint8_t *data_buf;
- uint8_t data_in_len;
- uint32_t data_out_len;
- uint32_t data_addr;
-} touch_rawdata_info;
-
-/* define for drv process talbe */
-typedef ext_errno (*touch_drv_upgrade_handle)(uint8_t *data_buff, uint8_t buf_len);
-typedef struct {
- mc_tp_upgrade cmd_id;
- touch_drv_upgrade_handle process_cb;
-} touch_drv_upgrade_proc;
-
-typedef ext_errno (*touch_hal_rawdata_handle)(uint8_t *data_buf, uint8_t buf_len);
-typedef struct {
- mc_tp_rawdata cmd_id;
- touch_hal_rawdata_handle process_cb;
-} touch_drv_rawdata_proc;
-
-typedef struct {
- uint16_t chip_id;
- uint16_t vendor_id;
- uint16_t chip_hw_id;
- uint8_t chip_info[FT6X46_DEVICE_INFO_SIZE];
- uint16_t firmware_version;
- uint16_t minor_firmware_version;
- uint16_t reg_version;
- uint32_t flash_fw_version;
- uint16_t int_mask;
- uint16_t touch_mode;
- uint32_t irq_count;
- uint32_t touch_count;
- uint32_t page_size;
- uint16_t header_size;
- uint16_t image_size;
- osal_mutex ops_mux;
- bool fw_upgrade_flag;
- bool gesture_wakeup;
- bool host_dev_init_flag;
- ft6x46_sw_power_status power_status;
- ft6x46_work_status work_status;
- ft6x46_sw_power_status chip_sw_power_status;
- ft6x46_device_status chip_status;
- input_event_info touch_msg;
- ft6x46_panel_data panel_info;
- tp_peripheral_attr dev_attr;
- ft6x46_tsp_rawdata tsp_raw_data;
- void *p_void;
- uint32_t tp_event;
- touch_drv_upgrade_proc upgrade_table[FT6X46_FWGRADE_CMD_NUM];
- touch_drv_rawdata_proc raw_data_table[FT6X46_RAWDATA_CMD_NUM];
-} ft6x46_drv_data;
-
-ext_errno ft6x46_init(void);
-ext_errno ft6x46_deinit(void);
-ext_errno ft6x46_set_power_mode(tp_work_mode power_mode);
-ext_errno ft6x46_get_power_mode(uint32_t *power_mode);
-ext_errno ft6x46_resume(void);
-ext_errno ft6x46_suspend(void);
-ext_errno ft6x46_irq_callback(uint8_t *data_buf, uint8_t data_len);
-ext_errno ft6x46_host_init_sample(void);
-#ifdef __cplusplus
-#if __cplusplus
- }
-#endif
-#endif
-
-#endif
+++ /dev/null
-/*\r
- * Copyright (c) @CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: touch screen driver.\r
- * Author: @CompanyNameTag\r
- * Create: 2022-04-12\r
- */\r
-\r
-#include "touch_screen_drv.h"\r
-#include "tcxo.h"\r
-#include "i2c.h"\r
-#include "common_def.h"\r
-#include "soc_osal.h"\r
-#include "touch_screen_def.h"\r
-#include "input_app.h"\r
-#if defined(TPTYPE_TMA525B)\r
-#include "tma525b_drv1.h"\r
-#include "tma525b_ctrl.h"\r
-#elif defined(TPTYPE_ZTW523)\r
-#include "ztw523_drv1.h"\r
-#include "ztw523_ctrl.h"\r
-#elif defined(TPTYPE_FT6X46)\r
-#include "ft6x46_drv1.h"\r
-#include "ft6x46_ctrl.h"\r
-#else\r
-#include "ztw523_drv1.h"\r
-#include "ztw523_ctrl.h"\r
-#endif\r
-\r
-#if defined(TPTYPE_TMA525B)\r
-#define TOUCH_I2C_BUS TMA525B_I2C_BUS\r
-#define TOUCH_INT_GPIO TMA525B_INT_GPIO\r
-#define TOUCH_RESET_GPIO TMA525B_RESET_GPIO\r
-#elif defined(TPTYPE_ZTW523)\r
-#define TOUCH_I2C_BUS ZTW523_I2C_BUS\r
-#define TOUCH_INT_GPIO ZTW523_INT_GPIO\r
-#define TOUCH_RESET_GPIO ZTW523_RESET_GPIO\r
-#elif defined(TPTYPE_FT6X46)\r
-#define TOUCH_I2C_BUS FT6X46_I2C_BUS\r
-#define TOUCH_INT_GPIO FT6X46_INT_GPIO\r
-#define TOUCH_RESET_GPIO FT6X46_RESET_GPIO\r
-#else\r
-#define TOUCH_I2C_BUS ZTW523_I2C_BUS\r
-#define TOUCH_INT_GPIO ZTW523_INT_GPIO\r
-#define TOUCH_RESET_GPIO ZTW523_RESET_GPIO\r
-#endif\r
-\r
-#define TOUCH_SCREEN_DEV_NAME_LEN 16\r
-#define TOUCH_SCREEN_DEVNAME "input/event"\r
-#define TOUCH_SCREEN_DYNAMIC_MINOR 65\r
-#define TOUCH_SCREEN_CMDID_MAX 16\r
-\r
-#define TOUCH_SCREEN_TASK_PRIO 5\r
-#define TOUCH_SCREEN_TASK_SIZE 0x800\r
-#define TOUCH_SCREEN_QUEUE_MAX_SIZE 60\r
-#define TOUCH_SCREEN_READY_EVENT (1 << 0)\r
-\r
-struct ts_driver_data g_touch_drv = {0};\r
-struct ts_driver_data *g_attr = NULL;\r
-\r
-report_event_cb g_report_event_cb = NULL;\r
-\r
-#if defined(SUPPORT_POWER_MANAGER)\r
-event_callback_func g_power_manager_cb = NULL;\r
-#endif\r
-\r
-static struct ts_driver_data *touch_screen_get_driver_data(void)\r
-{\r
- return &g_touch_drv;\r
-}\r
-\r
-static uint32_t touch_screen_get_state(struct ts_driver_data *tsdd)\r
-{\r
- if (tsdd != NULL && tsdd->queue != NULL) {\r
- return (uint32_t)ts_queue_is_empty(tsdd->queue);\r
- }\r
-\r
- if (tsdd == NULL) {\r
- tp_err("tsdd is null!");\r
- return EXT_ERR_FAILURE;\r
- }\r
- if (tsdd->queue == NULL) {\r
- tp_err("tsdd queue is null!");\r
- }\r
-\r
- return EXT_ERR_FAILURE;\r
-}\r
-\r
-static void convert_touch_info(input_dev_data_t* data, input_event_info* touch_info)\r
-{\r
- data->x = (int16_t)touch_info->tp_event_info.x_axis[0];\r
- data->y = (int16_t)touch_info->tp_event_info.y_axis[0];\r
- data->type = INDEV_TYPE_TOUCH;\r
- data->timestamp = (uint32_t)touch_info->tv_usec;\r
- if ((touch_info->tp_event == MC_TP_PRESS) || (touch_info->tp_event == MC_TP_MOVE)) {\r
- data->state = INDEV_STATE_PRESS;\r
- } else if (touch_info->tp_event == MC_TP_RELEASE) {\r
- data->state = INDEV_STATE_RELEASE;\r
- } else {\r
- data->state = INDEV_STATE_UNKNOWN;\r
- }\r
-}\r
-\r
-static void report_or_enqueue_event(input_event_info* touch_info, struct ts_driver_data *tsdd)\r
-{\r
- if (g_report_event_cb != NULL) {\r
- input_dev_data_t data;\r
- convert_touch_info(&data, touch_info);\r
- if (data.state == INDEV_STATE_UNKNOWN) {\r
- return;\r
- }\r
- g_report_event_cb(&data);\r
- } else {\r
- int32_t ret = ts_en_queue(tsdd->queue, touch_info);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("Failed to enqueue ts queue! ret=0x%x", ret);\r
- }\r
- }\r
-}\r
-#if defined(SUPPORT_POWER_MANAGER)\r
-static void report_event_to_power_manager(input_event_info *touch_info)\r
-{\r
- if (g_power_manager_cb != NULL) {\r
- input_dev_data_t data;\r
- convert_touch_info(&data, touch_info);\r
- if (data.state == INDEV_STATE_UNKNOWN) {\r
- return;\r
- }\r
- g_power_manager_cb(data.state, 0);\r
- }\r
- return;\r
-}\r
-\r
-uint32_t ts_register_power_manager_cb(event_callback_func callback)\r
-{\r
- if (g_power_manager_cb != NULL) {\r
- return EXT_ERR_FAILURE;\r
- }\r
- g_power_manager_cb = callback;\r
- return EXT_ERR_SUCCESS;\r
-}\r
-#endif\r
-ext_errno touch_info_process(void)\r
-{\r
- struct ts_driver_data *tsdd = touch_screen_get_driver_data();\r
- input_event_info touch_info;\r
- int32_t ret = 0;\r
-\r
- if (tsdd->touch_api->touch_get_tpinfo != NULL) {\r
- ret = tsdd->touch_api->touch_get_tpinfo((uint8_t *)(&touch_info), sizeof(input_event_info));\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("get touch info fail! ret=0x%x", ret);\r
- }\r
-\r
- report_or_enqueue_event(&touch_info, tsdd);\r
-#if defined(SUPPORT_POWER_MANAGER)\r
- report_event_to_power_manager(&touch_info);\r
-#endif\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static void ts_callback_func(void)\r
-{\r
- ext_errno ret;\r
- if (g_attr != NULL) {\r
- common_notify_mail_t mail = {0};\r
- mail.comm.app = APP_TOUCH;\r
- ret = osal_msg_queue_write_copy(get_app_queue_id(), (void *)&mail,\r
- sizeof(common_notify_mail_t), 0);\r
- if (ret != OSAL_SUCCESS) {\r
- tp_err("touch app msg send failed! err=0x%x! \r\n", ret);\r
- }\r
- }\r
-}\r
-\r
-static ext_errno ts_register_callback(struct ts_driver_data *attr)\r
-{\r
- ext_errno ret = EXT_ERR_FAILURE;\r
- g_attr = attr;\r
-\r
- if (attr->touch_api->register_callback != NULL) {\r
- ret = attr->touch_api->register_callback(attr->private_data, ts_callback_func);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("register touch screen callback fail! ret=0x%x", ret);\r
- return ret;\r
- }\r
- } else {\r
- tp_err("touch screen callback register func is empty!");\r
- }\r
-\r
- return ret;\r
-}\r
-\r
-static ext_errno ts_unregister_callback(struct ts_driver_data *attr)\r
-{\r
- ext_errno ret = EXT_ERR_FAILURE;\r
-\r
- if (attr->touch_api->unregister_callback != NULL) {\r
- ret = attr->touch_api->unregister_callback(attr->private_data);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("unregister touch screen callback fail! ret=0x%x", ret);\r
- return ret;\r
- }\r
- g_attr = NULL;\r
- } else {\r
- tp_err("touch screen callback unregister func is empty!");\r
- }\r
-\r
- return ret;\r
-}\r
-\r
-static int32_t ts_dev_open(const void *private_data)\r
-{\r
- int32_t ret;\r
- struct ts_driver_data *tsdd = NULL;\r
- if (private_data == NULL) {\r
- tp_err("ts_open: invalid dev or driver_data!\n");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- // todo: get tsdd from private_data\r
- tsdd = touch_screen_get_driver_data();\r
- tsdd->queue = ts_init_queue(TOUCH_SCREEN_QUEUE_MAX_SIZE);\r
- if (tsdd->queue == NULL) {\r
- tp_err("create touch screen queue fail!\r\n");\r
- return EXT_ERR_FAILURE;\r
- }\r
- ret = osal_event_init(&(tsdd->event));\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("touch osal_event_init fail! ret=0x%x\r\n", ret);\r
- return ret;\r
- }\r
-\r
- tsdd->task_handle = osal_kthread_create((osal_kthread_handler)touch_info_process,\r
- (void *)touch_screen_get_driver_data(),\r
- "touch_screen", TOUCH_SCREEN_TASK_SIZE);\r
- if (tsdd->task_handle == NULL) {\r
- tp_err("create touch screen thread fail!\r\n");\r
- return EXT_ERR_FAILURE;\r
- }\r
- osal_kthread_set_priority(tsdd->task_handle, TOUCH_SCREEN_TASK_PRIO);\r
-\r
- if (tsdd->touch_api->touch_init != NULL) {\r
- ret = tsdd->touch_api->touch_init(tsdd->private_data);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("touch_init fail! ret=0x%x\r\n", ret);\r
- return ret;\r
- }\r
- }\r
-\r
- ret = ts_register_callback(tsdd);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("register callback fail! ret=0x%x\r\n", ret);\r
- return ret;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static int32_t ts_dev_release(const void *private_data)\r
-{\r
- int32_t ret;\r
- struct ts_driver_data *tsdd = NULL;\r
- if (private_data == NULL) {\r
- tp_err("ts_dev_release: invalid dev or driver_data!\n");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- // todo: get tsdd from private_data\r
- tsdd = touch_screen_get_driver_data();\r
- ret = ts_unregister_callback(tsdd);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("unregister callback fail! ret=0x%x\r\n", ret);\r
- return ret;\r
- }\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static uint32_t ts_dev_poll(const osal_poll *osal_poll, const void *private_data)\r
-{\r
- unused(osal_poll);\r
- unused(private_data);\r
- // todo: get tsdd from private_data\r
- struct ts_driver_data *tsdd = NULL;\r
- tsdd = touch_screen_get_driver_data();\r
- if (tsdd == NULL) {\r
- tp_err("ts_driver_data is NULL");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- if (tsdd->ops->priv_operator != NULL && tsdd->ops->priv_operator(tsdd) == 0) {\r
- return OSAL_POLLIN | OSAL_POLLRDNORM;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static int32_t ts_ioctl_read_touch_info(uint32_t cmd, void *arg, const void *private_data)\r
-{\r
- unused(cmd);\r
- ext_errno ret;\r
- struct ts_driver_data *tsdd = NULL;\r
- input_event_info *touch_info = (input_event_info *)arg;\r
-\r
- if (private_data == NULL) {\r
- tp_err("invalid dev or driver_data!");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- // todo: get tsdd from private_data\r
- tsdd = touch_screen_get_driver_data();\r
- if (tsdd->queue == NULL) {\r
- tp_err("invalid touch screen queue!");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- ret = ts_de_queue(tsdd->queue, touch_info);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("get touch info fail! ret=0x%x", ret);\r
- return ret;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-static osal_ioctl_cmd g_ts_cmd_list[TOUCH_SCREEN_CMDID_MAX] = {\r
- {TOUCH_SCREEN_GET_EVENT, ts_ioctl_read_touch_info},\r
-};\r
-\r
-static osal_dev *g_ts_dev = NULL;\r
-static osal_fileops g_ts_ops = {\r
- .open = ts_dev_open,\r
- .release = ts_dev_release,\r
- .poll = ts_dev_poll,\r
- .cmd_list = g_ts_cmd_list,\r
- .cmd_cnt = sizeof(g_ts_cmd_list) / sizeof(g_ts_cmd_list[0]),\r
-};\r
-\r
-struct ts_ops g_ts_status_ops = {\r
- .priv_operator = touch_screen_get_state,\r
-};\r
-\r
-static ext_errno touch_screen_register_device(void)\r
-{\r
- ext_errno ret;\r
-\r
- g_touch_drv.private_data = touch_screen_get_peri_attr();\r
- g_touch_drv.touch_api = touch_screen_get_api();\r
- g_touch_drv.ops = &g_ts_status_ops;\r
- g_ts_dev = osal_dev_create(TOUCH_SCREEN_DEVNAME);\r
- g_ts_dev->minor = TOUCH_SCREEN_DYNAMIC_MINOR;\r
- g_ts_dev->fops = &g_ts_ops;\r
-\r
- ret = osal_dev_register(g_ts_dev);\r
- if (ret != 0) {\r
- tp_err("touch screen osal_dev_register --------failed! ret=0x%x\n", ret);\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno touch_screen_module_init(void)\r
-{\r
- ext_errno ret;\r
-\r
- ret = touch_screen_register_device();\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("touch_screen_register_device ----------failed! ret=0x%x\n", ret);\r
- }\r
- tp_err("touch_screen_register_device ----------succ!!!\n");\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-ext_errno touch_screen_module_deinit(void)\r
-{\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-uint32_t ts_register_report_event_cb(report_event_cb callback)\r
-{\r
- if (g_report_event_cb != NULL) {\r
- return EXT_ERR_FAILURE;\r
- }\r
- g_report_event_cb = callback;\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-uint32_t ts_unregister_report_event_cb(void)\r
-{\r
- g_report_event_cb = NULL;\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-uint32_t ts_init(void)\r
-{\r
- int32_t ret;\r
- struct ts_driver_data *tsdd = NULL;\r
-\r
- g_touch_drv.private_data = touch_screen_get_peri_attr();\r
- g_touch_drv.touch_api = touch_screen_get_api();\r
- g_touch_drv.ops = &g_ts_status_ops;\r
- tsdd = touch_screen_get_driver_data();\r
- tsdd->queue = ts_init_queue(TOUCH_SCREEN_QUEUE_MAX_SIZE);\r
- if (tsdd->queue == NULL) {\r
- tp_err("create touch screen queue fail!\r\n");\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- ret = ts_register_callback(tsdd);\r
- if (ret != EXT_ERR_SUCCESS) {\r
- tp_err("register callback fail! ret=0x%x\r\n", ret);\r
- return EXT_ERR_FAILURE;\r
- }\r
-\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-uint32_t ts_read(const input_dev_data_t* data)\r
-{\r
- unused(data);\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-uint32_t ts_close(void)\r
-{\r
- return EXT_ERR_SUCCESS;\r
-}\r
-\r
-void touch_screen_suspend(void)\r
-{\r
- touch_peripheral_api *touch_ptr = touch_screen_get_api();\r
- ext_errno ret = touch_ptr->touch_sleep();\r
- if (ret != EXT_ERR_SUCCESS) { tp_err("touch sleep ret=0x%x", ret); }\r
-#if defined(TPTYPE_FT6X46)\r
- if (ft6x46_suspend() == EXT_ERR_SUCCESS){\r
- i2c_save_reg(TOUCH_I2C_BUS);\r
- uapi_gpio_disable_interrupt(TOUCH_INT_GPIO); // close tp_int gpio interrupt\r
- }\r
-#else\r
- i2c_save_reg(TOUCH_I2C_BUS);\r
- uapi_gpio_disable_interrupt(TOUCH_INT_GPIO); // close tp_int gpio interrupt\r
-#endif\r
-}\r
-\r
-void touch_screen_resume(void)\r
-{\r
- uapi_gpio_disable_interrupt(TOUCH_INT_GPIO); // close tp_int gpio interrupt\r
- i2c_recovery_reg(TOUCH_I2C_BUS);\r
-#if defined(TPTYPE_TMA525B)\r
- tma525b_init();\r
- touch_peripheral_api *touch_ptr = (touch_peripheral_api*)touch_screen_get_api();\r
- ext_errno ret = touch_ptr->touch_resume();\r
- if (ret != EXT_ERR_SUCCESS) { tp_err("touch resume ret=0x%x", ret); }\r
-#elif defined(TPTYPE_ZTW523)\r
- ztw523_resume();\r
-#elif defined(TPTYPE_FT6X46)\r
- ft6x46_resume();\r
-#else\r
- ztw523_resume();\r
-#endif\r
- uapi_gpio_enable_interrupt(TOUCH_INT_GPIO); // open tp_int gpio interrupt\r
-}\r
-\r
-void touch_suspend_for_i2c(void)\r
-{\r
- i2c_save_reg(TOUCH_I2C_BUS);\r
-}\r
-\r
-void touch_resume_for_i2c(void)\r
-{\r
- i2c_recovery_reg(TOUCH_I2C_BUS);\r
-}\r
-\r
-void touch_screen_restart(void)\r
-{\r
- uapi_i2c_deinit(TOUCH_I2C_BUS);\r
- uapi_i2c_master_init(TOUCH_I2C_BUS, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */\r
-#if defined(TPTYPE_TMA525B)\r
- tma525b_resume();\r
-#elif defined(TPTYPE_ZTW523)\r
- ztw523_resume();\r
-#elif defined(TPTYPE_FT6X46)\r
- ft6x46_resume();\r
-#else\r
- ztw523_resume();\r
-#endif\r
- uapi_gpio_enable_interrupt(TOUCH_INT_GPIO); // open tp_int gpio interrupt\r
-}
\ No newline at end of file
+++ /dev/null
-#!/usr/bin/env python3
-# encoding=utf-8
-# ============================================================================
-# @brief packet files
-# ============================================================================
-
-import os
-import sys
-
-PY_PATH = os.path.dirname(os.path.realpath(__file__))
-sys.path.append(PY_PATH)
-PKG_DIR = os.path.dirname(PY_PATH)
-PKG_DIR = os.path.dirname(PKG_DIR)
-from packet_create import create_sha_file
-from packet_create import packet_bin
-
-TOOLS_DIR = os.path.dirname(PKG_DIR)
-SDK_DIR = os.path.dirname(TOOLS_DIR)
-sys.path.append(os.path.join(SDK_DIR, "build", "script"))
-sys.path.append(os.path.join(SDK_DIR, 'build', 'config'))
-sys.path.append(os.path.join(SDK_DIR, "build", "script", "nv"))
-from enviroment import TargetEnvironment
-from param_packet import gen_flash_part_bin
-from nv_binary import nv_begin
-
-# brandy packet
-def build_brandy_other_bin(pack_style_str):
- ''' build brandy partition and nv '''
- chip_dir = os.path.join(SDK_DIR, "build", "config", "target_config", "brandy")
- # 分区配置文件路径
- partition_cfg = os.path.join(chip_dir, "param_sector", "param_sector.json")
- partition_bin = os.path.join(SDK_DIR, "output", "brandy", "partition_table.bin")
- # nv配置文件路径
- nv_config_json = os.path.join(chip_dir, "nv_bin_cfg")
- if pack_style_str.endswith("-user"):
- nv_config_json = os.path.join(nv_config_json, "mk_nv_bin_cfg_user.json")
- else:
- nv_config_json = os.path.join(nv_config_json, "mk_nv_bin_cfg_eng.json")
- targets = ["acore"]
- # 输出路径
- nv_output_path = os.path.join(SDK_DIR, "output", "brandy", "nv_bin")
-
- if not os.path.exists(nv_output_path):
- os.makedirs(nv_output_path)
-
- gen_flash_part_bin(partition_cfg, partition_bin)
- nv_begin(nv_config_json, targets, 0)
-
-
-def make_all_in_one_packet(pack_style_str):
- # make all in one packet
- build_brandy_other_bin(pack_style_str)
-
- bin_dir = os.path.join(PKG_DIR, "bin", "brandy")
- application_dir = os.path.join(SDK_DIR,
- "output",
- "brandy",
- "acore",
- pack_style_str)
- recovery_target = "%s-r" % pack_style_str
- recovery_target = recovery_target.replace('-user', '')
- recovery_bin = os.path.join(SDK_DIR,
- "output",
- "brandy",
- "acore",
- recovery_target,
- "recovery.bin")
- recovery_bx = recovery_bin + "|0x70050000|0x40000|100"
-
- upload_app_fwpkg = os.path.join(PKG_DIR, "fwpkg", "brandy", "upload_app.fwpkg")
-
- ssb = os.path.join(SDK_DIR, "output", "brandy", "acore", "brandy-ssb", "ssb.bin")
- if not os.path.exists(ssb):
- ssb = os.path.join(bin_dir, "ssb.bin")
- print("ssb_path: ", ssb)
- ssb_bx = ssb + "|0x70000000|0x20000|0"
-
- partition = os.path.join(SDK_DIR, "output", "brandy", "partition_table.bin")
- partition_bx = partition + "|0x7004F000|0x1000|100"
- nv = os.path.join(SDK_DIR, "output", "brandy", "nv_bin", "brandy_all_nv.bin")
- # nv_bx = nv + "|0x707F9000|0x4000|100"
- nv_bx = nv + "|0x70FF9000|0x4000|100"
-
- app = os.path.join(application_dir, "application.bin")
- # app_bx = app + "|0x702B0000|0x549000|18" #origin
- # define APP_IMAGE_PAGES (1353+2560)
- # 2560*4*1024= 0xA00000
- app_bx = app + "|0x702B0000|0xD49000|18"
-
- bt = os.path.join(bin_dir, "bt.bin")
- bt_bx = bt + "|0x70090000|0x70000|20"
-
- target_env = TargetEnvironment(pack_style_str)
- dsp_version = target_env.get("dsp_version")
- dsp_main = os.path.join(bin_dir, "dsp", dsp_version, "dsp_main.bin")
- dsp_main_bx = dsp_main + "|0x70100000|0x70000|22"
- dsp_overlay = os.path.join(bin_dir, "dsp", dsp_version, "dsp_overlay.bin")
- dsp_overlay_bx = dsp_overlay + "|0x70170000|0x140000|26"
-
- fs = os.path.join(application_dir, "file.bin")
- fs_bx = fs + "|0xFFFFFFFF|0xFFFFFFFF|101"
-
- try:
- packet_post_agvs = list()
- packet_post_agvs.append(ssb_bx)
- packet_post_agvs.append(partition_bx)
- packet_post_agvs.append(app_bx)
- packet_post_agvs.append(recovery_bx)
- packet_post_agvs.append(bt_bx)
- packet_post_agvs.append(dsp_main_bx)
- packet_post_agvs.append(dsp_overlay_bx)
- packet_post_agvs.append(nv_bx)
- packet_post_agvs.append(fs_bx)
- packet_bin(upload_app_fwpkg, packet_post_agvs)
- except Exception as e:
- print(e)
- exit(-1)
-
-def is_packing_files_exist(soc, pack_style_str):
- """
- 判断打包文件是否存在
- :return:
- """
- packing_files = get_packing_files(soc, pack_style_str)
- lost_files = list()
- for f_path in packing_files:
- if not os.path.isfile(f_path):
- lost_files.append(f_path)
- return lost_files
-
-def get_packing_files(soc, pack_style_str):
- """
- 直接添加需要打包的文件路径
- :return:
- """
- packing_files = list()
- packing_files.append(os.path.join(PKG_DIR, "bin", "brandy", "ssb.bin"))
- application_path = os.path.join(SDK_DIR,
- "output",
- "brandy",
- "acore",
- pack_style_str,
- "application.bin")
- packing_files.append(application_path)
- packing_files.append(os.path.join(PKG_DIR, "bin", "brandy", "bt.bin"))
-
- target_env = TargetEnvironment(pack_style_str)
- dsp_version = target_env.get("dsp_version")
- packing_files.append(os.path.join(PKG_DIR, "bin", "brandy", "dsp", dsp_version, "dsp_main.bin"))
- packing_files.append(os.path.join(PKG_DIR, "bin", "brandy", "dsp", dsp_version, "dsp_overlay.bin"))
- return packing_files
+++ /dev/null
-73fe512feca37305ec4bf1c54c1e2d2ffe0933d0
+++ /dev/null
-diff --git a/autobuild.sh b/autobuild.sh
-index 2b5334b3c..5d2c71723 100644
---- a/autobuild.sh
-+++ b/autobuild.sh
-@@ -5,6 +5,7 @@ DATE=$(date +%Y%m%d_%H%M%S)
- HOMEDIR=$PWD
- DEFAULT_BUILD_TYPE=release
- DEFAULT_TARGET_PACK_NAME=pack_brandy_native_js
-+DEFAULT_CUSTOM_FW_VERSION=1.0.7
-
- TARGET_PACK_NAME=$DEFAULT_TARGET_PACK_NAME
- RELEASE_BUILD=$DEFAULT_BUILD_TYPE
-@@ -38,15 +39,50 @@ COMMIT_ID=`git rev-parse HEAD`
- SOURCE_MODIFIED=`git status --short`
- cp_releasepackage()
- {
-- #code/sdk/output/brandy/acore/brandy-native-js/package/brandy/
-- package_dir=$HOMEDIR/code/sdk/output/package/brandy/$TARGET_PACK_NAME
-- filename=${TARGET_PACK_NAME}_${RELEASE_BUILD}_${DATE}_${USER}.fwpkg
-- releasedir=$HOMEDIR/release/$TARGET_PACK_NAME/$RELEASE_BUILD/${DATE}
-+ # code/sdk/output/package/brandy/pack_brandy_native_js/brandy-native-js/application.bin
-+ # code/sdk/output/package/brandy/pack_brandy_native_js/brandy-native-js/application.elf
-+ # code/sdk/output/package/brandy/pack_brandy_native_js/brandy-native-js/application.lst
-+ # code/sdk/output/package/brandy/pack_brandy_native_js/brandy-native-js/file.bin
-+ # code/sdk/output/package/brandy/pack_brandy_native_js/brandy-native-js-r/recovery.bin
-+ # code/sdk/output/package/brandy/pack_brandy_native_js/brandy-native-js-r/recovery.elf
-+ # code/sdk/output/package/brandy/pack_brandy_native_js/brandy-native-js-r/recovery.lst
-+ # code/sdk/output/package/brandy/pack_brandy_native_js/brandy-ssb/ssb.bin
-+ # code/sdk/output/package/brandy/pack_brandy_native_js/brandy-ssb/ssb.elf
-+ # code/sdk/output/package/brandy/pack_brandy_native_js/brandy-ssb/ssb.lst
-+
-+ package_dir=$HOMEDIR/code/sdk/output/package/brandy/$TARGET_PACK_NAME/
-+ application_path=$package_dir/brandy-native-js/application.bin
-+ applicationelf_path=$package_dir/brandy-native-js/application.elf
-+ applicationlst_path=$package_dir/brandy-native-js/application.lst
-+ recovery_path=$package_dir/brandy-native-js-r/recovery.bin
-+ recoveryelf_path=$package_dir/brandy-native-js-r/recovery.elf
-+ recoverylst_path=$package_dir/brandy-native-js-r/recovery.lst
-+ ssb_path=$package_dir/brandy-ssb/ssb.bin
-+ ssbelf_path=$package_dir/brandy-ssb/ssb.elf
-+ ssblst_path=$package_dir/brandy-ssb/ssb.lst
-+
-+ dspmain_path=$HOMEDIR/code/sdk/tools/pkg/bin/brandy/dsp/normal/dsp_main.bin
-+ dspoverlay_path=$HOMEDIR/code/sdk/tools/pkg/bin/brandy/dsp/normal/dsp_overlay.bin
-+ bt_path=$HOMEDIR/code/sdk/tools/pkg/bin/brandy/bt.bin
-+ nv_path=$HOMEDIR/code/sdk/output/brandy/nv_bin/brandy_all_nv.bin
-+
-+ resfile_path=$HOMEDIR/code/sdk/output/package/brandy/pack_brandy_native_js/brandy-native-js/file.bin
-+
-+ filename=${TARGET_PACK_NAME}_${RELEASE_BUILD}_${DEFAULT_CUSTOM_FW_VERSION}_${DATE}_${USER}.fwpkg
-+ releasedir=$HOMEDIR/release/$TARGET_PACK_NAME/$RELEASE_BUILD/V${DEFAULT_CUSTOM_FW_VERSION}_${DATE}
- packsource=$HOMEDIR/code/sdk/tools/pkg/fwpkg/brandy/upload_app.fwpkg
- echo do release copy
-- mkdir -p $releasedir
-- cp -r $HOMEDIR/build.log $package_dir $releasedir/
-+ mkdir -p $releasedir/bin
-+
-+ cp -r $application_path $applicationelf_path $applicationlst_path $releasedir/bin/
-+ cp -r $recovery_path $recoveryelf_path $recoverylst_path $releasedir/bin/
-+ cp -r $ssb_path $ssbelf_path $ssblst_path $releasedir/bin/
-+ cp -r $bt_path $dspmain_path $dspoverlay_path $nv_path $releasedir/bin/
-+ cp -r $resfile_path $releasedir/bin/
-+ cp -r $HOMEDIR/build.log $releasedir/
-+ cp -r $HOMEDIR/cat1modem/* $releasedir/
- cp $packsource $releasedir/$filename
-+
- echo $filename > $releasedir/readme.txt
- echo branch name $CURRENT_BRANCH >> $releasedir/readme.txt
- echo commit $COMMIT_ID >> $releasedir/readme.txt
-@@ -64,8 +100,10 @@ build_target()
- {
-
- cd $HOMEDIR/code/sdk/
-- echo ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE $TARGET_PACK_NAME 2>&1
-- python ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE $TARGET_PACK_NAME 2>&1
-+ echo ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1
-+ ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE $TARGET_PACK_NAME 2>&1
-+ # ./build.py $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1
-+ #./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE $TARGET_PACK_NAME 2>&1
- ret_code=$?
- if [ $ret_code == 0 ]
- then
-diff --git a/code/sdk/application/audio/vendor/CMakeLists.txt b/code/sdk/application/audio/vendor/CMakeLists.txt
-index e3152c2ca..c1c31962b 100644
---- a/code/sdk/application/audio/vendor/CMakeLists.txt
-+++ b/code/sdk/application/audio/vendor/CMakeLists.txt
-@@ -39,6 +39,21 @@ set(COMPONENT_INC ${COMPONENT_INC}
- )\r
- endif()\r
- \r
-+if("${CFG_SAP_VENDOR_DRIVER_AW88166_SUPPORT}" STREQUAL "y")\r
-+set(COMPONENT_SRC ${COMPONENT_SRC}\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw88166.c\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx.c\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx_calib.c\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/aw883xx_device.c\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/product_init_files/aw88166/aw883xx_pid_2066_init.c\r
-+)\r
-+set(COMPONENT_INC ${COMPONENT_INC}\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/product_init_files/aw88166\r
-+ ${CMAKE_CURRENT_SOURCE_DIR}/aw88166/config/aw88166/mono/16bit\r
-+)\r
-+endif()\r
-+\r
- if("${CFG_SAP_VENDOR_DRIVER_ANC_CODEC_SUPPORT}" STREQUAL "y")\r
- set(COMPONENT_SRC ${COMPONENT_SRC}\r
- ${CMAKE_CURRENT_SOURCE_DIR}/anc_codec/anc_codec.c\r
-diff --git a/code/sdk/application/audio/vendor/aw88166/aw88166.c b/code/sdk/application/audio/vendor/aw88166/aw88166.c
-index d25e8db7f..a0f2d29a3 100644
---- a/code/sdk/application/audio/vendor/aw88166/aw88166.c
-+++ b/code/sdk/application/audio/vendor/aw88166/aw88166.c
-@@ -19,8 +19,8 @@
- \r
- static td_bool g_aw88166_i2c_inited = TD_FALSE;\r
- \r
--#define AW88166_PWR_ON_PIN S_MGPIO4\r
--#define AW88166_I2C_BUS_ID I2C_BUS_0\r
-+#define AW88166_PWR_ON_PIN S_AGPIO_L25\r
-+#define AW88166_I2C_BUS_ID I2C_BUS_3\r
- #define AW88166_I2C_DEV_ADDR 0x34\r
- \r
- static td_s32 aw_dev0_i2c_write_func(td_u16 dev_addr, td_u8 reg_addr, td_u8 *pdata, td_u16 len)\r
-diff --git a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c
-index 93c7f41df..479f285ec 100644
---- a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c
-+++ b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c
-@@ -28,6 +28,8 @@
- #include "tma525b_drv1.h"\r
- #elif defined(TPTYPE_ZTW523)\r
- #include "ztw523_touch1.h"\r
-+#elif defined(TPTYPE_FT6X46)\r
-+#include "ft6x46_touch1.h"\r
- #else\r
- #include "ztw523_touch1.h"\r
- #endif\r
-@@ -40,9 +42,13 @@
- * define AUDIO_SMARTPA_AW88166 : macro to init smartpa aw88166;\r
- * define AUDIO_SMARTPA_AW88166_I2S_ID UAPI_SND_OUT_PORT_I2S0 : macro to specify i2s id connecting to smartpa aw88166;\r
- */\r
-+#if 0\r
- #define AUDIO_SMARTPA_AW88262\r
- #define AUDIO_SMARTPA_AW88262_I2S_ID UAPI_SND_OUT_PORT_I2S2\r
--\r
-+#else\r
-+#define AUDIO_SMARTPA_AW88166\r
-+#define AUDIO_SMARTPA_AW88166_I2S_ID UAPI_SND_OUT_PORT_I2S0\r
-+#endif\r
- #endif /* DSP_EXIST */\r
- #include "panic.h"\r
- #include "board_init.h"\r
-@@ -51,19 +57,11 @@
- #include "ohosfwk_startup.h"\r
- #endif\r
- #include "clocks_config.h"\r
--#include "board_init.h"\r
--#include "upg.h"\r
--#include "upg_definitions.h"\r
--#include "nv.h"\r
--#include "nv_upg.h"\r
- \r
- #define EMMC_BASE_ADDR 0x52062000\r
- #define TASK_PRIORITY_APP (osPriority_t)(17)\r
- #define TICK_TEN_MS (10U)\r
- #define WAIT_BT_BOOTUP_TIME 200U\r
--#define UPG_HEAD_MAGIC 0x55AA55AA\r
--#define UPG_END_MAGIC 0xAA55AA55\r
--#define UPG_FLAG_MAGIC 0xFFFFFFFF\r
- \r
- static void thread_main(const void *unused);\r
- void bt_acore_btc_ipc_receive_init(void);\r
-@@ -79,6 +77,8 @@ static void sample_gfx_init(void)
- tma525b_host_init_sample();\r
- #elif defined(TPTYPE_ZTW523)\r
- ztw523_host_init_sample();\r
-+#elif defined(TPTYPE_FT6X46)\r
-+ ft6x46_host_init_sample();\r
- #else\r
- ztw523_host_init_sample();\r
- #endif\r
-@@ -249,40 +249,6 @@ static void force_to_sleep(void)
- }\r
- }\r
- \r
--#ifdef CONFIG_OTA_UPDATE_SUPPORT\r
--static void upg_check_upgrade(void)\r
--{\r
-- uint32_t fota_address = 0;\r
-- errcode_t ret_val = (errcode_t)upg_get_upgrade_flag_flash_start_addr(&fota_address);\r
-- if (ret_val != ERRCODE_SUCC) {\r
-- return;\r
-- }\r
--\r
-- fota_upgrade_flag_area_t upg_flag_info;\r
-- ret_val = (errcode_t)upg_flash_read(fota_address, sizeof(fota_upgrade_flag_area_t), (uint8_t *)(&upg_flag_info));\r
-- if (ret_val != ERRCODE_SUCC) {\r
-- return;\r
-- }\r
--\r
-- if (!(upg_flag_info.head_magic == UPG_HEAD_MAGIC &&\r
-- upg_flag_info.head_end_magic == UPG_END_MAGIC &&\r
-- upg_flag_info.complete_flag == UPG_FLAG_MAGIC)) {\r
-- /* 不需要升级直接返回 */\r
-- PRINT("No need to upgrade...\r\n");\r
-- return;\r
-- }\r
--\r
-- PRINT("upgrading.......\r\n");\r
-- ret_val = uapi_upg_start();\r
-- if (ret_val != ERRCODE_SUCC) {\r
-- PRINT("upgrade failed, ret = 0x%x\r\n", ret_val);\r
-- } else {\r
-- PRINT("upgrade success\r\n");\r
-- }\r
-- upg_reboot();\r
--}\r
--#endif\r
--\r
- static void thread_main(const void *unused)\r
- {\r
- PRINT("thread_main start "NEWLINE);\r
-@@ -323,11 +289,6 @@ static void thread_main(const void *unused)
- #endif\r
- board_version_class_print();\r
- uapi_watchdog_kick();\r
--#ifdef CONFIG_OTA_UPDATE_SUPPORT\r
-- upg_check_upgrade();\r
--#endif\r
-- /* nv init and file system init must be before nv_upg_upgrade_task_process */\r
-- (void)nv_upg_upgrade_task_process();\r
- thread_init();\r
- button_app_init();\r
- uapi_calendar_init();\r
-diff --git a/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp
-index 7dcdf3238..35ba07c27 100644
---- a/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp
-+++ b/code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp
-@@ -43,6 +43,12 @@ void RebootPresenter::OnResume(void) {}
-
- void RebootPresenter::OnStop(void) {}
-
-+
-+extern "C"
-+{
-+extern void uapi_sys_shipmode(uint32_t arg);
-+extern uint32_t mcu_os_sys_reset(uint8_t *para, uint32_t para_len);
-+}
- bool RebootPresenter::OnClick(UIView& view, const ClickEvent& event)
- {
- UNUSED(event);
-@@ -54,9 +60,11 @@ bool RebootPresenter::OnClick(UIView& view, const ClickEvent& event)
- } else if (strcmp(view.GetViewId(), REBOOTDEVICE_BUTTON) == 0) {
- // 重启
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "REBOOTDEVICE_BUTTON OnClick");
-+ mcu_os_sys_reset(NULL,NULL);
- } else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_BUTTON) == 0) {
- // 关机
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SHUTDOWNDEVICE_BUTTON OnClick");
-+ uapi_sys_shipmode(0);
- }
- return true;
- }
-diff --git a/code/sdk/build/config/target_config/brandy/config.py b/code/sdk/build/config/target_config/brandy/config.py
-index 3ee13945e..12f9ef163 100644
---- a/code/sdk/build/config/target_config/brandy/config.py
-+++ b/code/sdk/build/config/target_config/brandy/config.py
-@@ -114,6 +114,8 @@ target = {
- 'CONFIG_ZDIAG_AUDIO_PROC_SUPPORT', 'CONFIG_ZDIAG_AUDIO_DUMP_SUPPORT', 'CONFIG_ZDIAG_AUDIO_PROBE_SUPPORT', 'CONFIG_SEA_PHS_SUPPORT', 'CONFIG_DIAG_GPU_PROC_SUPPORT',
- 'SUPPORT_BLE', 'SUPPORT_BREDR', 'ENABLE_UIKIT', 'SUPPORT_GPU_JPEG', 'SUPPORT_GPU_GMMU', 'SUPPORT_GPU_OPENVG',
- 'SW_UART_DEBUG', 'SAVE_EXC_INFO', 'HASH_MEM_COPY', 'JS_ENABLE', 'CONFIG_LOW_POWER_TEST',
-+ 'FT_SINGLE_UART',
-+ 'TPTYPE_FT6X46',
- 'ENABLE_ECC', 'MIPI_ULPS_SUPPORT', 'SUPPORT_ALIPAY_SEC'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
-@@ -125,7 +127,7 @@ target = {
- 'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_uikit', 'bgh_audio', 'dfx_set', 'ohos_set', 'wearable_set', 'alipay_set'],
- 'dsp_version': 'max',
- 'packet': True,
-- 'fs_image': False
-+ 'fs_image': True
- },
- #native-js-user: liteos + uikit + nandflash + mipi + psram + audio 典型合封UIKIT版本
- #离线日志版本
-@@ -219,12 +221,15 @@ target = {
- 'defines': ['PRE_ASIC', 'BRANDY_PRODUCT_EVB4', 'VERSION_STANDARD', '__LITEOS__',
- '_ALL_SOURCE', 'SUPPORT_CXX', 'I2C_SLAVE_REG_ADDR_4BYTE', 'CFG_DRIVERS_NANDFLASH',
- "-:TARGET_CHIP_BRANDY=1", "-:BRANDY_CHIP_V100=1", 'ENABLE_UIKIT', 'SW_UART_DEBUG', "HASH_MEM_COPY",
-+ 'FT_SINGLE_UART','TPTYPE_FT6X46',
- 'ENABLE_ECC', 'SUPPORT_RECOVERY_DISPLAY'],
- 'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", "osal", "arch_port", "-:testsuite",
- "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
- 'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
- 'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'x_vfs_private',
-- 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header'],
-+ 'ulp_aon', 'hal_l2ram', 'pm_service', 'pm_brandy', 'cmn_header',
-+ 'at_cmd'
-+ ],
- 'ram_component_set': ['pinctrl', 'dfx_set' ,'gpu']
- },
- 'brandy-xts-r': {
-@@ -272,7 +277,11 @@ target = {
- "SSB_USE_PLL", "VERSION_STANDARD", "BUILD_APPLICATION_SSB", "LIBBOOTLOADER", "LIBCODELOADER",
- "LIBCPU_UTILS", "LIBAPP_VERSION", "LIBPANIC", "LIBCONNECTIVITY", "LIBERROR_CODE", "LIBSEC_RANDOM",
- "LIBCODELOADER_SSB", "LIBJLINK_LOAD", "LIBLIB_UTILS", "LIBBUILD_VERSION",
-- "NO_TIMEOUT", "CONFIG_UART_BAUD_RATE_DIV_8", 'SW_UART_DEBUG', 'LARGE_BUFFER'],
-+ 'ENABLE_ECC',
-+ "CFG_DRIVERS_NANDFLASH",
-+ "NO_TIMEOUT", "CONFIG_UART_BAUD_RATE_DIV_8", 'SW_UART_DEBUG', 'LARGE_BUFFER',
-+ 'FT_SINGLE_UART'
-+ ],
- 'ram_component': ['arch_port', 'hal_l2ram', 'sec_boot', 'libboundscheck',
- 'dfx_exception', 'error_code', 'psram', 'osal', 'cmn_header', 'boot_ulp', 'boot_nandflash'],
- 'ram_component_set': ['pinctrl'],
-diff --git a/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h b/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
-index eb3d405d1..a063a8c24 100644
---- a/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
-+++ b/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
-@@ -11,6 +11,13 @@
- #include "gpio_porting.h"
- #include "platform_types.h"
-
-+#ifdef SUPPORT_CAT1_SERVICE
-+#include "cat1_ctl.h"
-+#endif
-+
-+#ifdef ENABLE_CYWEE
-+extern void cywee_int_callback(pin_t pin, uintptr_t param);
-+#endif
- /**
- * @addtogroup connectivity_config_boards
- * @{
-@@ -46,72 +53,69 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO24
- { HAL_PIO_FUNC_OPI, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_EGPIO25
-
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO0 sdio
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO1
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO2
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO3
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO4
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO5
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO0 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO1 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO2 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO3 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO4 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_HGPIO5 NC
- #if (defined CFG_DRIVERS_NANDFLASH)
-- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_HGPIO6
-- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_HGPIO7
-- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_HGPIO8
-- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_HGPIO9
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO10
-- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO11 cs0
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO12 cs1
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO13
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO14
-- { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO15 clk
-+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO6
-+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO7
-+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO8
-+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO9
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO10
-+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO11 cs0
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO12 cs1
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO13
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO14
-+ { HAL_PIO_FUNC_QSPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_HGPIO15 clk
- #else
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO6
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO7
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO8
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO9
-- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO10
-+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO10
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO11
-- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO12
-- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO13
-- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO14
-+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO12
-+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO13
-+ { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_HGPIO14
- { HAL_PIO_FUNC_EMMC, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_HGPIO15 emmc clk
- #endif
-- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO0
-- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO1
-- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO2
-- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO3
-+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO0 NC
-+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO1 NC
-+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO2 NC
-+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO3 NC
-
--#if (defined BRANDY_PRODUCT_EVB4)
-- { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO4
--#else
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO4
--#endif
-+// #if (defined BRANDY_PRODUCT_EVB4)
-+ { HAL_PIO_FUNC_SPI0, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO4 NC
-+// #else
-+ // { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO4 NC
-+// #endif
-
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO5
-- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO6
-- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO7
--#if (defined BRANDY_PRODUCT_EVB4)
-- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO8
--#else
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO8 E0B2 VCI_EN
--#endif
-- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO9
-- { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO10
-- { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO11 evb2 dsp i2c smartpa
-- { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO12
-- { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 touch i2c
-- { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14
-- { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO15
-- { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO16
-- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 evb4 dsp i2c pa
-- { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO18
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO5 NC
-+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO6 SPI1 DI
-+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO7 SPI1 DO
-+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO8 SPI1 CLK
-+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_MGPIO9 SPI1 CS0
-+ { HAL_PIO_FUNC_SPI1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO10 SPI1 CS1 NC
-+
-+ { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO11 i2c0 SCL NC
-+ { HAL_PIO_FUNC_I2C0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO12 I2C0 SDA
-+ { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO13 I2C1 SCL touch i2c
-+ { HAL_PIO_FUNC_I2C1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO14 I2C1 SDA
-+ { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO15 I2C2 SCL Sensor 6Öá Ö¸ÄÏÕë ÐÄÂÊ
-+ { HAL_PIO_FUNC_I2C2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO16 I2C2 SDA Sensor
-+ { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO17 i2c3 SCL smart pa\ Ô¤ÁôÂí´ï¿ØÖÆ \°²È«Ð¾Æ¬
-+ { HAL_PIO_FUNC_I2C3_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO18 I2C3 SDA
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO19 uart1 tx
- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO20 uart1 rx
-- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO21
-- { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO22
-- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO23
-- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO24
-- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO25
-- { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO26
-+ { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO21 uart1 rts
-+ { HAL_PIO_FUNC_UART1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO22 uart1 cts
-+ { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO23 NC
-+ { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO24 NC
-+ { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO25 NC
-+ { HAL_PIO_FUNC_SPI2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO26 NC
- #if (defined QSPI_DISPLAY)
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO27
- { HAL_PIO_FUNC_QSPI2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO28
-@@ -131,67 +135,80 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO34 huart rx
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO35
- { HAL_PIO_FUNC_UART_HS_UART, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_MGPIO36
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO37
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO38
-+#if 0
-+ { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx
-+ { HAL_PIO_FUNC_UART2_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_MGPIO38 uart rx
-+#else
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO37 uart tx NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_MGPIO38 uart rx NC
-+#endif
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L0 NC
-
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L0
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L1 i2s1
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L2
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L3
- { HAL_PIO_FUNC_I2S1_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L4
-+
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L5
--#if (defined BRANDY_PRODUCT_EVB4)
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L6 E0B4 VCI_EN
--#else
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L6 i2s0
--#endif
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L7
- { HAL_PIO_FUNC_I2S0_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L8
-+
- #if (defined FT_BT_UART)
- { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L9 uart2 txd
- { HAL_PIO_FUNC_UART2_M1, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 uart2 rxd
- #else
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L9 dsp uart
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 dsp uart
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L9 dsp uart TP35
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 dsp uart TP36
- #endif
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L11 a+g int1
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L12 a+g int2
-- { HAL_PIO_FUNC_I2S2_M5, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L13 i2s2
-- { HAL_PIO_FUNC_I2S2_M5, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L14
-- { HAL_PIO_FUNC_I2S2_M5, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L15
-- { HAL_PIO_FUNC_I2S2_M5, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L16
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L17 dsp i2c
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L18 dsp i2c
-- { HAL_PIO_FUNC_BT_FREQ, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L19
-- { HAL_PIO_FUNC_BT_STATUS, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L20
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L21
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_L11 G_INT1
-+
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L12 i2c data HX3507_SDIO
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L13 i2c CLK HX3507_SCLK
-+
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L14 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L15 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L16 NC
-+
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L17 HX3507_INT not use
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //ÔÝʱÎÞÓ㬲ÉÓÃVDDIO ĬÈÏ¿ªÆô EXt V3.0 EXt V1.8
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L19 G_INT2 //ÔÝʱ²»ÓÃ
-+
-+
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20 0.2C_CHRG
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçÔ´
- #ifdef QSPI_DISPLAY
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 QSPI TE
- #else
- { HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 MIPI TE
- #endif
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L24
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L25
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L26 emmc reset
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L27
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L28
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L29
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L30
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L31
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L32
--
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R3 lcd reset
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_ENBALE }, // S_AGPIO_R4 tp reset
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R5 touch int
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 als int
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R7
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R8
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9
-- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R10
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23 CAT_1_PWR_ON ¿ØÖÆCAT_1¿ª»ú½Å£¬»òÕß¿ØÖÆ CAT1µçÔ´ À¸ßÓÐЧ
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L24 LCM_EN
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L25 //////////// audio pa reset
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L26 ÐÄÂʸ´Î» PPG reset
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L27 LCM reset
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L28 CAT_1¸´Î» CAT1_RESET_N ÀµÍÓÐЧ
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L29 charge done info ¼ì²âÊÇ·ñ³äÂúµç
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L30 KP_MKIN1 »½ÐÑ CAT1 £¬Êä³ö
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L31 KP_MKOUIT1 »½ÐÑ À¶ÑÀ ,ÊäÈë
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L32 NC
-+
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R1 SE_REST °²È«Ð¾Æ¬¸´Î»»½ÐѽÅ
-+// #if VIB_USE_PWM
-+ // { HAL_PIO_FUNC_PWMP1_M2, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
-+ // { HAL_PIO_FUNC_PWMN1_M3, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
-+// #else
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R2 VIBR_PWM Âí´ï¿ØÖƽмæÈÝÔ¤ÁôÂí´ïÇý¶¯¸´Î»½Å
-+// #endif
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_R3 NC
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_R4 tp reset
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R5 touch int
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R6 PRG_INT ÐÄÂÊÖжÏ
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R7 GYRO_INT2
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R8 GYRO_INT1
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_R9 BAT_CHARGE_OFF ¹Øµô³äµç ζȸߵÄʱºò
-+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_R10 Key2 ///////////////////HAL_PIO_IE_ENBALE input enable
-
- #if CORE == APPS
- { HAL_PIO_FUNC_INVALID, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // ULP_GPIO0 mode not config
-@@ -214,18 +231,77 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
- */
- /**
- * @brief Global evb gpio functions.
-+ *
-+ *
-+ * typedef struct {
-+ pin_t gpio;
-+ hal_gpio_direction_t direction;
-+ hal_gpio_level_t level;
-+ uint32_t triger;
-+ hal_gpio_callback_t callback;
-+} hal_gpio_config_t;
- */
-+
-+
-+//ĬÈÏ¿ªÆôCat1 È»ºóÔÙ¸ù¾ÝÅäÖþö¶¨ÊÇ·ñ¹Ø±Õ.
-+//ĬÈϲ»¿ªÆô ppg checkidʧ°Ü£¬ÔÒòδ֪£¬ÔÝʱ¿ª»ú¿ªÆôcat1
-+#define DEFAULT_POWERON_CAT1 0
-+
-+//ÐèÒªÅäÖÃĬÈÏÊä³öµÄ£¬ÒÔ¼°ÐèÒªÅäÖÃĬÈÏÊäÈëÖжϺ¯ÊýµÄ¡£
- const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
-
-- // S_AGPIO_L17
-- {
-- S_AGPIO_L17,
-- HAL_GPIO_DIRECTION_OUTPUT,
-- HAL_GPIO_LEVEL_HIGH,
-- 0,
-- NULL
-- },
--
-+#if DEFAULT_POWERON_CAT1
-+ // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
-+ { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+ // S_AGPIO_L28 Cat1 reset ---- low reset
-+ { S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+#else
-+ // S_AGPIO_L23 CAT_1_PWR_ON ----- high power on
-+ { S_AGPIO_L23, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ // S_AGPIO_L28 Cat1 reset ---- low reset
-+ { S_AGPIO_L28, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+#endif
-+ // S_AGPIO_L17 HX3507_INT
-+ // { S_AGPIO_L17, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ // S_AGPIO_L12 SDIO_BT
-+ { S_AGPIO_L12, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ // S_AGPIO_L13 SCLK_BT
-+ { S_AGPIO_L13, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+
-+ // S_AGPIO_L26 ÐÄÂʸ´Î» PPG reset
-+ { S_AGPIO_L26, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ // S_AGPIO_R0 PRG_LED_POWER ON ÐÄÂʵȵçÔ´¿ØÖƽÅ
-+ { S_AGPIO_R0, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+
-+ //S_AGPIO_L21 NTC_VDD_ON ¸øµÍ´ò¿ª NTCÉÏÀµçÔ´ ,ĬÈϹرÕ
-+ { S_AGPIO_L21, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+#if 1 //ĬÈÏÕý³£³äµç
-+// #define GPIO_PIN_ENABLE_CHARGE S_AGPIO_R9 //low enable
-+// #define GPIO_PIN_ENABLE_CHARGE_0_2C S_AGPIO_L20 //low 0.2c µÍµçÁ÷³äµç
-+ { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+#else
-+ { S_AGPIO_R9, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+ { S_AGPIO_L20, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+#endif
-+
-+//ĬÈϹرÕÂí´ï
-+ { S_AGPIO_R2, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_LOW, 0, NULL },
-+//ĬÈÏ¿ªÆô EXT LDO V3.0 V1.8
-+ { S_AGPIO_L18, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+
-+#ifdef ENABLE_CYWEE
-+ /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19 ²ÉÓÃtimer ʱÕâЩÖжÏÒªÆÁ±Î*/
-+ { S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cywee_int_callback },
-+ //{ S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cywee_int_callback },
-+#endif
-+ /**S_AGPIO_R1 GPO alipayĬÈÏresetpin*/
-+ { S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL },
-+#ifdef SUPPORT_CAT1_SERVICE
-+ /**cat1 ring input key*/
-+ // { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, cat1_ring_isr_callback},
-+ { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, cat1_ring_isr_callback},
-+#endif
- };
- /**
- * @}
-diff --git a/code/sdk/drivers/boards/brandy_evb/memory_config/include/memory_config_common.h b/code/sdk/drivers/boards/brandy_evb/memory_config/include/memory_config_common.h
-index 18bf0369c..925e372f9 100644
---- a/code/sdk/drivers/boards/brandy_evb/memory_config/include/memory_config_common.h
-+++ b/code/sdk/drivers/boards/brandy_evb/memory_config/include/memory_config_common.h
-@@ -157,7 +157,7 @@
- */\r
- \r
- #define FLASH_START 0x70000000\r
--#define FLASH_LENGTH 0x800000\r
-+#define FLASH_LENGTH 0x1000000 //8MB 0x800000, 16MB 0x1000000\r
- #define FLASH_MAX_END (FLASH_START + FLASH_LENGTH)\r
- \r
- #define FLASH_PAGE_SIZE 4096\r
-diff --git a/code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h b/code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h
-index 8eefb6bd2..24d6e2bc3 100644
---- a/code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h
-+++ b/code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h
-@@ -31,10 +31,10 @@
- #define BT_IMAGE_PAGES 112
- #define HIFI0_IMAGE_PAGES 112
- #define HIFI0_CODEC_PAGES 320
--#define APP_IMAGE_PAGES 1353
-+#define APP_IMAGE_PAGES 3401
- #define NV_IMAGE_PAGES 4
- #define FOTA_IMAGE_PAGES 3
--#define FOTA_IMAGE_START 0x770000
-+#define FOTA_IMAGE_START 0xFFD000
- #define SSB_FOTA_OFFSET 0x0
- #define XO_CTRIM_VALUR_DEFAULT 0x56
- #define DSP1_IPC_ENABLE NO
-@@ -90,8 +90,8 @@
- #define RESOLUTION_WIDTH 368
- #define RESOLUTION_HEIGHT 448
- #else
--#define RESOLUTION_WIDTH 454
--#define RESOLUTION_HEIGHT 454
-+#define RESOLUTION_WIDTH 466//454
-+#define RESOLUTION_HEIGHT 466//454
- #endif
-
- /********************Other module board config********************/
-@@ -142,7 +142,7 @@
- #define BUILTIN_AI_PCM_ATTR_FRAME_PER_SEC 100 // 每秒帧数
-
- // 音频内置输出设备
--#define BUILTIN_SND_OUT_PORT 0x12 // 参考 soc_uapi_sound.h 中 UAPI_SND_OUT_PORT_I2S2 枚举
-+#define BUILTIN_SND_OUT_PORT 0x10 // 参考 soc_uapi_sound.h 中 UAPI_SND_OUT_PORT_I2S0 枚举
- #define BUILTIN_SND_OUT_PORT_NUM 1 // 端口个数
- #define BUILTIN_SND_OUT_AUDIO_CH 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
- #define BUILTIN_SND_OUT_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
-@@ -158,32 +158,32 @@
-
- // 音频外挂输入设备
- #define EXTERNAL_AI_PORT 1 // 参考 soc_uapi_ai.h 中 UAPI_AI_PORT_I2S1 枚举
--#define EXTERNAL_AI_I2S_ATTR_MASTER 1 // 1:主设备,0:从设备
--#define EXTERNAL_AI_I2S_ATTR_I2S_MODE 0 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_STD_MODE 枚举
--#define EXTERNAL_AI_I2S_ATTR_MCLK 4 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_768_FS 枚举
--#define EXTERNAL_AI_I2S_ATTR_BCLK 24 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_24_DIV 枚举
-+#define EXTERNAL_AI_I2S_ATTR_MASTER 0 // 1:主设备,0:从设备
-+#define EXTERNAL_AI_I2S_ATTR_I2S_MODE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_MODE 枚举
-+#define EXTERNAL_AI_I2S_ATTR_MCLK 6 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_1536_FS 枚举
-+#define EXTERNAL_AI_I2S_ATTR_BCLK 48 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_48_DIV 枚举
- #define EXTERNAL_AI_I2S_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
- #define EXTERNAL_AI_I2S_ATTR_AUDIO_CH 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
- #define EXTERNAL_AI_I2S_ATTR_SAMPLE_RISE_EDGE 1 // 参考 soc_uapi_audio.h 中 pcm_sample_rise_edge 成员
- #define EXTERNAL_AI_I2S_ATTR_PCM_DELAY_CYCLE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_1_DELAY 枚举
--#define EXTERNAL_AI_PCM_ATTR_CHANNELS 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-+#define EXTERNAL_AI_PCM_ATTR_CHANNELS 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
- #define EXTERNAL_AI_PCM_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
--#define EXTERNAL_AI_PCM_ATTR_SAMPLE_RATE 16000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
--#define EXTERNAL_AI_PCM_ATTR_FRAME_PER_SEC 100 // 每秒帧数
-+#define EXTERNAL_AI_PCM_ATTR_SAMPLE_RATE 8000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
-+#define EXTERNAL_AI_PCM_ATTR_FRAME_PER_SEC 50 // 每秒帧数 , EG810 pcm 20ms 一帧
-
- // 音频外挂输出设备
- #define EXTERNAL_SND_OUT_PORT 0x11 // 参考 soc_uapi_sound.h 中 UAPI_SND_OUT_PORT_I2S1 枚举
--#define EXTERNAL_SND_OUT_AUDIO_CHANNEL 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
-+#define EXTERNAL_SND_OUT_AUDIO_CHANNEL 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
- #define EXTERNAL_SND_OUT_AUDIO_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
--#define EXTERNAL_SND_OUT_AUDIO_SAMPLE_RATE 16000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
-+#define EXTERNAL_SND_OUT_AUDIO_SAMPLE_RATE 8000 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_SAMPLE_RATE_16K 枚举
- #define EXTERNAL_SND_OUT_PORT_NUM 1 // 端口个数
- #define EXTERNAL_SND_OUT_I2S_ATTR_BIT_DEPTH 16 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_BIT_DEPTH_16 枚举
- #define EXTERNAL_SND_OUT_I2S_ATTR_CHANNEL 2 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_CHANNEL_2 枚举
--#define EXTERNAL_SND_OUT_I2S_ATTR_I2S_MODE 0 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_STD_MODE 枚举
--#define EXTERNAL_SND_OUT_I2S_ATTR_MCLK 4 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_768_FS 枚举
--#define EXTERNAL_SND_OUT_I2S_ATTR_MASTER 1 // 1:主设备,0:从设备
-+#define EXTERNAL_SND_OUT_I2S_ATTR_I2S_MODE 1 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_PCM_MODE 枚举
-+#define EXTERNAL_SND_OUT_I2S_ATTR_MCLK 6 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_MCLK_1536_FS 枚举 12.288M /16k =
-+#define EXTERNAL_SND_OUT_I2S_ATTR_MASTER 0 // 1:主设备,0:从设备
- #define EXTERNAL_SND_OUT_I2S_ATTR_SAMPLE_RISE_EDGE 1 // 参考 soc_uapi_audio.h 中 pcm_sample_rise_edge 成员
--#define EXTERNAL_SND_OUT_I2S_ATTR_BCLK 24 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_24_DIV 枚举
-+#define EXTERNAL_SND_OUT_I2S_ATTR_BCLK 48 // 参考 soc_uapi_audio.h 中 UAPI_AUDIO_I2S_BCLK_48_DIV 枚举 12.288M / 256k = 48
-
- // Sleep option
- #define CONFIG_PM_TICKLESS_EN YES
-@@ -193,12 +193,12 @@
- #define CONFIG_PM_SLEEP_INT_EN NO
-
- // Double-click the key
--#define CONFIG_SUPPORT_BUTTON_DOUBLE_CLICK NO
-+#define CONFIG_SUPPORT_BUTTON_DOUBLE_CLICK YES
-
- // LCD VCI_EN
--#define VCI_LCD_GPIO S_AGPIO_L6
-+#define VCI_LCD_GPIO S_AGPIO_L24
- #define DISPLAY_TE_GPIO S_AGPIO_L22
--#define RESET_LCD_GPIO S_AGPIO_R3
-+#define RESET_LCD_GPIO S_AGPIO_L27
-
- // TP CONFIG
- #define ZTW523_I2C_BUS I2C_BUS_1
-@@ -207,6 +207,10 @@
- #define TMA525B_I2C_BUS I2C_BUS_1
- #define TMA525B_INT_GPIO S_AGPIO_R5
- #define TMA525B_RESET_GPIO S_AGPIO_R4
-+#define FT6X46_I2C_BUS I2C_BUS_1
-+#define FT6X46_INT_GPIO S_AGPIO_R5
-+#define FT6X46_RESET_GPIO S_AGPIO_R4
-+
- /**
- * @}
- */
-diff --git a/code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c b/code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c
-index b6f409070..d2203a1b0 100644
---- a/code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c
-+++ b/code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c
-@@ -56,6 +56,12 @@
- #define UARTRESET (M_CTL_RB_BASE + 0x0168)
- #define UARTBUS0 0x1
- #define UARTBUS1 0x0
-+
-+/**
-+ * CUSTOM_UART_RATE = 500000 可以看蓝牙日志
-+ * 2000000 可以加快下载文件速度
-+*/
-+#define CUSTOM_UART_RATE 2000000
- typedef struct {
- pin_mode_t tx_pin_mode;
- pin_mode_t rx_pin_mode;
-@@ -181,7 +187,11 @@ static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
- NULL,
- #endif
- {
-- .baud_rate = 115200,
-+ #ifdef ENABLE_SLIP
-+ .baud_rate = 921600,
-+ #else
-+ .baud_rate = CUSTOM_UART_RATE,
-+ #endif
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
-@@ -221,7 +231,7 @@ static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
- log_factory_at_callback,
- #endif
- {
-- .baud_rate = 500000,
-+ .baud_rate = CUSTOM_UART_RATE,
- .data_bits = UART_DATA_BIT_8,
- .parity = UART_PARITY_NONE,
- .stop_bits = UART_STOP_BIT_1,
-@@ -298,7 +308,13 @@ void irq_uart1_handler(void)
- static void at_cmd_uart_rx_callback(const void *buf, uint16_t buf_len, bool remaining)
- {
- unused(remaining);
-+ #ifndef FT_SINGLE_UART
- at_cmd_msg_receive_handler((uint8_t *)buf, buf_len);
-+ #endif
-+
-+ #ifdef ENABLE_SLIP
-+ slip_receive_handler((uint8_t *)buf, buf_len);
-+ #endif
- hal_uart_clear_pending(SW_DEBUG_UART_BUS);
- }
- #endif
-diff --git a/code/sdk/drivers/drivers/driver/lcd/lcd_config.c b/code/sdk/drivers/drivers/driver/lcd/lcd_config.c
-index 54950d78a..7b6075f4f 100644
---- a/code/sdk/drivers/drivers/driver/lcd/lcd_config.c
-+++ b/code/sdk/drivers/drivers/driver/lcd/lcd_config.c
-@@ -9,11 +9,30 @@
- #include "common_def.h"\r
- #include "lcd_config.h"\r
- \r
-+#define LCD_EDO_466X466_SCREEN_ID 0x1133\r
- #define LCD_EDO_454X454_SCREEN_ID 0xf00\r
- #define LCD_BOE_454X454_SCREEN_ID 0x500\r
- #define LCD_SH_240X296_SCREEN_ID 0x101\r
- #define LCD_BOE_194X368_SCREEN_ID 0x4a00\r
- \r
-+const combo_dev_cfg_t g_panel_466x466_60_config = {\r
-+ .devno = 0,\r
-+ .lane_id = {0, -1},\r
-+ .out_mode = OUT_MODE_DSI_CMD,\r
-+ .out_format = OUT_FORMAT_RGB_24BIT,\r
-+ .sync_info = {\r
-+ .hsa_pixels = 10, // hsa 10 pixels\r
-+ .hbp_pixels = 10, // hbp 10 pixels\r
-+ .hact_pixels = 466, // hact 466 pixels\r
-+ .hfp_pixels = 10, // hfp 10 pixels\r
-+ .vsa_lines = 4, // vsa 4 lines\r
-+ .vbp_lines = 12, // vbp 12 lines\r
-+ .vact_lines = 466, // vact 466 lines\r
-+ .vfp_lines = 10, // vfp 10 lines\r
-+ },\r
-+ .phy_data_rate = 480, // 480Mbps\r
-+ .pixel_clk = 20000, // 20000KHz\r
-+};\r
- const combo_dev_cfg_t g_panel_454x454_60_config = {\r
- .devno = 0,\r
- .lane_id = {0, -1},\r
-@@ -67,6 +86,14 @@ const lcd_cmd_sequ g_common_cmd_display_off[] = {
- {1, 1, {0x10}, 120}, /* sleep in */\r
- };\r
- \r
-+/* display off sequence for common lcd */\r
-+const lcd_cmd_sequ g_common_466x466_cmd_display_off[] = {\r
-+ {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
-+ {1, 1, {0x28}, 0}, /* display off */\r
-+ {1, 1, {0x10}, 120}, /* sleep in */\r
-+ {1, 2, {0x4f, 0x01}, 0}, /* 进deepstandby 状态 */\r
-+};\r
-+\r
- /* sleep in sequence for common lcd */\r
- const lcd_cmd_sequ g_common_cmd_sleep_in[] = {\r
- {1, 2, {0xfe, 0x00}, 0}, /* select default cmd page */\r
-@@ -110,6 +137,20 @@ lcd_cmd_sequ g_common_cmd_brightness[] = {
- {1, 2, {0xfe, 0x00}, 0},\r
- {1, 2, {0x51, 0xff}, 0},\r
- };\r
-+const lcd_cmd_sequ g_edo_466x466_screen_init_on[] = {\r
-+ {1, 2, {0xfe, 0x00}, 0}, \r
-+ {1, 2, {0x3a, 0x77}, 0}, \r
-+ {1, 2, {0x35, 0x00}, 0}, \r
-+ {1, 2, {0x53, 0x20}, 0}, \r
-+ // {1, 2, {0x51, 0xff}, 0}, \r
-+ {1, 2, {0x63, 0xff}, 0}, \r
-+ {1, 5, {0x2A, 0x00, 0x06, 0x01, 0xd7}, 0}, \r
-+ {1, 5, {0x2B, 0x00, 0x00, 0x01, 0xd1}, 0}, \r
-+ {1, 3, {0x44, 0x01, 0xc5}, 0},\r
-+ {1, 1, {0x11}, 120}, \r
-+ {1, 1, {0x29}, 0}, \r
-+};\r
-+\r
- \r
- /* init sequence for EDO 454*454 lcd */\r
- const lcd_cmd_sequ g_edo_454x454_screen_init_on[] = {\r
-@@ -193,6 +234,11 @@ const lcd_cmds_sequ g_display_off_cmds = {
- .cmd_cnt = array_size(g_common_cmd_display_off),\r
- };\r
- \r
-+const lcd_cmds_sequ g_466x466_display_off_cmds = {\r
-+ .cmd = g_common_466x466_cmd_display_off,\r
-+ .cmd_cnt = array_size(g_common_466x466_cmd_display_off),\r
-+};\r
-+\r
- const lcd_cmds_sequ g_idle_in_cmds = {\r
- .cmd = g_common_cmd_idle_in,\r
- .cmd_cnt = array_size(g_common_cmd_idle_in),\r
-@@ -218,6 +264,11 @@ const lcd_cmds_sequ g_brightness_cmds = {
- .cmd_cnt = array_size(g_common_cmd_brightness),\r
- };\r
- \r
-+const lcd_cmds_sequ g_edo_466x466_screen_init_on_cmds = {\r
-+ .cmd = g_edo_466x466_screen_init_on,\r
-+ .cmd_cnt = array_size(g_edo_466x466_screen_init_on),\r
-+};\r
-+\r
- const lcd_cmds_sequ g_edo_454x454_screen_init_on_cmds = {\r
- .cmd = g_edo_454x454_screen_init_on,\r
- .cmd_cnt = array_size(g_edo_454x454_screen_init_on),\r
-@@ -249,6 +300,25 @@ const lcd_cmds_sequ g_sleep_out_cmds = {
- };\r
- \r
- const lcd_drv_cfg g_lcd_driver_ops[] = {\r
-+ {\r
-+ .bus_type = BUS_DISPLAY_MIPI,\r
-+ .bus_cfg = &g_panel_466x466_60_config,\r
-+ .x_start = 0x6,\r
-+ .y_start = 0,\r
-+ .fps = 60,\r
-+ .lcd_id = LCD_EDO_466X466_SCREEN_ID,\r
-+ .display_on_cmds = &g_edo_466x466_screen_init_on_cmds,\r
-+ .display_off_cmds = &g_466x466_display_off_cmds,\r
-+ .enter_idle_cmds = &g_idle_in_cmds,\r
-+ .exit_idle_cmds = &g_idle_out_cmds,\r
-+ .te_on_cmds = &g_te_on_cmds,\r
-+ .te_off_cmds = &g_te_off_cmds,\r
-+ .set_brightnes_cmds = &g_brightness_cmds,\r
-+ .sleep_in_cmds = &g_sleep_in_cmds,\r
-+ .sleep_out_cmds = &g_sleep_out_cmds,\r
-+ .lcd_id_info.reg_addr = 0x04,\r
-+ .lcd_id_info.read_len = 3,\r
-+ },\r
- {\r
- .bus_type = BUS_DISPLAY_MIPI,\r
- .bus_cfg = &g_panel_454x454_60_config,\r
-diff --git a/code/sdk/drivers/drivers/driver/lcd/lcd_private.c b/code/sdk/drivers/drivers/driver/lcd/lcd_private.c
-index 039f45c48..064395295 100644
---- a/code/sdk/drivers/drivers/driver/lcd/lcd_private.c
-+++ b/code/sdk/drivers/drivers/driver/lcd/lcd_private.c
-@@ -12,7 +12,7 @@
- #include "gpio.h"\r
- #include "pinctrl_porting.h"\r
- #include "product.h"\r
--\r
-+#include "pinctrl.h"\r
- static void lcd_drv_power_on(void)\r
- {\r
- #ifndef QSPI_DISPLAY\r
-@@ -27,16 +27,35 @@ static void lcd_drv_power_on(void)
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_HIGH);\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
- }\r
--\r
-+#define USE_OUTPUT_CTL 1\r
- static void lcd_drv_power_off(void)\r
- {\r
-+#if USE_OUTPUT_CTL\r
-+ //uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_OUTPUT); \r
-+ //uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);\r
-+ #ifndef QSPI_DISPLAY\r
-+ uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_OUTPUT);\r
-+ uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_LOW);\r
-+ #endif\r
-+ uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
-+ int resetvalue = uapi_gpio_get_output_val(RESET_LCD_GPIO);\r
-+ int lcd_envalue = uapi_gpio_get_output_val(VCI_LCD_GPIO);\r
-+ printf("Output RESET_LCD_GPIO %d , VCI_LCD_GPIO %d\r\n",resetvalue,lcd_envalue);\r
-+#else\r
- uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_LOW);\r
-- uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_INPUT);\r
--#ifndef QSPI_DISPLAY\r
-+ uapi_gpio_set_dir(RESET_LCD_GPIO, GPIO_DIRECTION_INPUT); //ÉèÖóÉInput£¬ÊÇΪÁ˽â¾ö©µç £¿£¿\r
-+ uapi_pin_set_pull(RESET_LCD_GPIO, PIN_PULL_DOWN);\r
-+ #ifndef QSPI_DISPLAY\r
- uapi_gpio_set_val(VCI_LCD_GPIO, GPIO_LEVEL_LOW);\r
- uapi_gpio_set_dir(VCI_LCD_GPIO, GPIO_DIRECTION_INPUT);\r
--#endif\r
-+ uapi_pin_set_pull(VCI_LCD_GPIO, PIN_PULL_DOWN);\r
-+ #endif\r
- uapi_tcxo_delay_ms(10); /* delay 10 ms */\r
-+ int resetvalue = uapi_gpio_get_val(RESET_LCD_GPIO);\r
-+ int lcd_envalue = uapi_gpio_get_val(VCI_LCD_GPIO);\r
-+ printf("Input RESET_LCD_GPIO %d , VCI_LCD_GPIO %d\r\n",resetvalue,lcd_envalue);\r
-+#endif\r
-+ \r
- }\r
- \r
- static lcd_drv_private g_lcd_private_api = {\r
-diff --git a/code/sdk/drivers/drivers/driver/lcd/soc_lcd_api.c b/code/sdk/drivers/drivers/driver/lcd/soc_lcd_api.c
-index b535f5555..56f8542af 100644
---- a/code/sdk/drivers/drivers/driver/lcd/soc_lcd_api.c
-+++ b/code/sdk/drivers/drivers/driver/lcd/soc_lcd_api.c
-@@ -173,7 +173,8 @@ static ext_errno lcd_get_ops(void)
- }\r
- }\r
- \r
-- g_lcd_info.brightness = DEFAULT_BRIGHTNESS;\r
-+ if (g_lcd_info.brightness == 0)\r
-+ g_lcd_info.brightness = DEFAULT_BRIGHTNESS;\r
- \r
- return EXT_ERR_SUCCESS;\r
- fail:\r
-diff --git a/code/sdk/drivers/drivers/driver/touch/CMakeLists.txt b/code/sdk/drivers/drivers/driver/touch/CMakeLists.txt
-index 6782d9cc1..6971096df 100644
---- a/code/sdk/drivers/drivers/driver/touch/CMakeLists.txt
-+++ b/code/sdk/drivers/drivers/driver/touch/CMakeLists.txt
-@@ -21,6 +21,12 @@ set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_drv1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_touch1.c
- )
-+elseif("TPTYPE_FT6X46" IN_LIST DEFINES)
-+set(SOURCES ${SOURCES}
-+ ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_ctrl.c
-+ ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_drv1.c
-+ ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch/ft6x46_touch1.c
-+)
- else()
- set(SOURCES ${SOURCES}
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch/ztw523_ctrl.c
-@@ -41,6 +47,12 @@ set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}/ztw523_touch
- ${ROOT_DIR}/middleware/services/gui/hal/input/include
- )
-+elseif("TPTYPE_FT6X46" IN_LIST DEFINES)
-+set(PUBLIC_HEADER
-+ ${CMAKE_CURRENT_SOURCE_DIR}
-+ ${CMAKE_CURRENT_SOURCE_DIR}/ft6x46_touch
-+ ${ROOT_DIR}/middleware/services/gui/hal/input/include
-+)
- else()
- set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
-diff --git a/code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c b/code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c
-index e729a5a34..4591a7d7e 100644
---- a/code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c
-+++ b/code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c
-@@ -18,6 +18,9 @@
- #elif defined(TPTYPE_ZTW523)\r
- #include "ztw523_drv1.h"\r
- #include "ztw523_ctrl.h"\r
-+#elif defined(TPTYPE_FT6X46)\r
-+#include "ft6x46_drv1.h"\r
-+#include "ft6x46_ctrl.h"\r
- #else\r
- #include "ztw523_drv1.h"\r
- #include "ztw523_ctrl.h"\r
-@@ -31,6 +34,10 @@
- #define TOUCH_I2C_BUS ZTW523_I2C_BUS\r
- #define TOUCH_INT_GPIO ZTW523_INT_GPIO\r
- #define TOUCH_RESET_GPIO ZTW523_RESET_GPIO\r
-+#elif defined(TPTYPE_FT6X46)\r
-+#define TOUCH_I2C_BUS FT6X46_I2C_BUS\r
-+#define TOUCH_INT_GPIO FT6X46_INT_GPIO\r
-+#define TOUCH_RESET_GPIO FT6X46_RESET_GPIO\r
- #else\r
- #define TOUCH_I2C_BUS ZTW523_I2C_BUS\r
- #define TOUCH_INT_GPIO ZTW523_INT_GPIO\r
-@@ -113,7 +120,12 @@ static void report_or_enqueue_event(input_event_info* touch_info, struct ts_driv
- static void report_event_to_power_manager(input_event_info *touch_info)\r
- {\r
- if (g_power_manager_cb != NULL) {\r
-- g_power_manager_cb(touch_info->tp_event, 0);\r
-+ input_dev_data_t data;\r
-+ convert_touch_info(&data, touch_info);\r
-+ if (data.state == INDEV_STATE_UNKNOWN) {\r
-+ return;\r
-+ }\r
-+ g_power_manager_cb(data.state, 0);\r
- }\r
- return;\r
- }\r
-@@ -422,8 +434,15 @@ void touch_screen_suspend(void)
- touch_peripheral_api *touch_ptr = touch_screen_get_api();\r
- ext_errno ret = touch_ptr->touch_sleep();\r
- if (ret != EXT_ERR_SUCCESS) { tp_err("touch sleep ret=0x%x", ret); }\r
-+#if defined(TPTYPE_FT6X46)\r
-+ if (ft6x46_suspend() == EXT_ERR_SUCCESS){\r
-+ i2c_save_reg(TOUCH_I2C_BUS);\r
-+ uapi_gpio_disable_interrupt(TOUCH_INT_GPIO); // close tp_int gpio interrupt\r
-+ }\r
-+#else\r
- i2c_save_reg(TOUCH_I2C_BUS);\r
- uapi_gpio_disable_interrupt(TOUCH_INT_GPIO); // close tp_int gpio interrupt\r
-+#endif\r
- }\r
- \r
- void touch_screen_resume(void)\r
-@@ -437,6 +456,8 @@ void touch_screen_resume(void)
- if (ret != EXT_ERR_SUCCESS) { tp_err("touch resume ret=0x%x", ret); }\r
- #elif defined(TPTYPE_ZTW523)\r
- ztw523_resume();\r
-+#elif defined(TPTYPE_FT6X46)\r
-+ ft6x46_resume();\r
- #else\r
- ztw523_resume();\r
- #endif\r
-@@ -461,6 +482,8 @@ void touch_screen_restart(void)
- tma525b_resume();\r
- #elif defined(TPTYPE_ZTW523)\r
- ztw523_resume();\r
-+#elif defined(TPTYPE_FT6X46)\r
-+ ft6x46_resume();\r
- #else\r
- ztw523_resume();\r
- #endif\r
-diff --git a/code/sdk/tools/pkg/chip_packet/brandy/packet.py b/code/sdk/tools/pkg/chip_packet/brandy/packet.py
-index a7ce8a108..b4451d336 100644
---- a/code/sdk/tools/pkg/chip_packet/brandy/packet.py
-+++ b/code/sdk/tools/pkg/chip_packet/brandy/packet.py
-@@ -78,10 +78,14 @@ def make_all_in_one_packet(pack_style_str):
- partition = os.path.join(SDK_DIR, "output", "brandy", "partition_table.bin")
- partition_bx = partition + "|0x7004F000|0x1000|100"
- nv = os.path.join(SDK_DIR, "output", "brandy", "nv_bin", "brandy_all_nv.bin")
-- nv_bx = nv + "|0x707F9000|0x4000|100"
--
-+ # nv_bx = nv + "|0x707F9000|0x4000|100"
-+ nv_bx = nv + "|0x70FF9000|0x4000|100"
-+
- app = os.path.join(application_dir, "application.bin")
-- app_bx = app + "|0x702B0000|0x549000|18"
-+ # app_bx = app + "|0x702B0000|0x549000|18" #origin
-+ # define APP_IMAGE_PAGES (1353+2560)
-+ # 2560*4*1024= 0xA00000
-+ app_bx = app + "|0x702B0000|0xD49000|18"
-
- bt = os.path.join(bin_dir, "bt.bin")
- bt_bx = bt + "|0x70090000|0x70000|20"
+++ /dev/null
-autobuild.sh
-code/sdk/application/audio/vendor/CMakeLists.txt
-code/sdk/application/audio/vendor/aw88166/aw88166.c
-code/sdk/application/brandy/brandy_standard/thread_pri_init.c
-code/sdk/application/wearable/nativeapp/nativeui/rebootdevice/src/RebootPresenter.cpp
-code/sdk/build/config/target_config/brandy/config.py
-code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
-code/sdk/drivers/boards/brandy_evb/memory_config/include/memory_config_common.h
-code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h
-code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c
-code/sdk/drivers/drivers/driver/lcd/lcd_config.c
-code/sdk/drivers/drivers/driver/lcd/lcd_private.c
-code/sdk/drivers/drivers/driver/lcd/soc_lcd_api.c
-code/sdk/drivers/drivers/driver/touch/CMakeLists.txt
-code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c
-code/sdk/tools/pkg/chip_packet/brandy/packet.py
-cat1modem/
-code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/dial/
-code/sdk/drivers/drivers/driver/touch/ft6x46_touch/
-fd230_driver_patch/20240628.170305/
-gen_fs_otapkg.sh
-mkota.sh