quec_customer_cfg.c 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. 
  2. /*================================================================
  3. Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
  4. Quectel Wireless Solutions Proprietary and Confidential.
  5. =================================================================*/
  6. /*=================================================================
  7. EDIT HISTORY FOR MODULE
  8. This section contains comments describing changes made to the module.
  9. Notice that changes are listed in reverse chronological order.
  10. WHEN WHO WHAT, WHERE, WHY
  11. ------------ ------- -------------------------------------------------------------------------------
  12. =================================================================*/
  13. /*===========================================================================
  14. * include files
  15. ===========================================================================*/
  16. #include "quec_customer_cfg.h"
  17. #include "ql_uart.h"
  18. #include "ql_i2c.h"
  19. #include "quec_pin_index.h"
  20. #include "hal_chip.h"
  21. #include "hal_chip_config.h"
  22. #include "audio_config.h"
  23. #include "quec_cust_feature.h"
  24. #include "ql_keypad.h"
  25. #include "hal_iomux_pin.h"
  26. /*===========================================================================
  27. * Customer set Map
  28. ===========================================================================*/
  29. volatile ql_model_diff_ctx_s ql_model_diff_ctx =
  30. {
  31. #ifdef CONFIG_QL_PROJECT_DEF_EC800G_CN_GA
  32. 2, 0, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x40000,
  33. #elif defined CONFIG_QL_PROJECT_DEF_EC800G_CN_LB
  34. 2, 0, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x40000,
  35. #elif defined CONFIG_QL_PROJECT_DEF_EG800G_CN_GB
  36. 2, 0, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x40000,
  37. #elif defined CONFIG_QL_PROJECT_DEF_EC800G_CN_LD
  38. 2, 0, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x20000,
  39. #elif defined CONFIG_QL_PROJECT_DEF_EC800G_CN_MD
  40. 2, 0, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x20000,
  41. #elif defined CONFIG_QL_PROJECT_DEF_EG800G_EU_LD
  42. 2, 0, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x20000,
  43. #elif defined CONFIG_QL_PROJECT_DEF_EC600G_CN_LA
  44. #ifdef __QUEC_OEM_VER_44F__
  45. 4, 0, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x20000,
  46. #else
  47. 4, 0, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x40000,
  48. #endif
  49. #elif defined CONFIG_QL_PROJECT_DEF_EC600G_CN_GA
  50. 4, 0, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x40000,
  51. #elif defined CONFIG_QL_PROJECT_DEF_EC600G
  52. 4, 0, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x20000,
  53. #elif defined CONFIG_QL_PROJECT_DEF_EG700G
  54. 4, 1, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x20000,
  55. #elif defined CONFIG_QL_PROJECT_DEF_EC200G_CN_LF
  56. 3, 1, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x40000,
  57. #elif defined CONFIG_QL_PROJECT_DEF_EC200G
  58. 3, 1, UART_PIN_MAX, QUEC_PIN_CFG_MAX, QL_INPUT_HPMIC_L, 0x20000,
  59. #endif
  60. };
  61. const ql_model_partinfo_ctx_s ql_model_partinfo_ctx =
  62. {
  63. CONFIG_APP_FLASH_ADDRESS,
  64. CONFIG_APP_FLASH_SIZE,
  65. CONFIG_APPIMG_FLASH_ADDRESS,
  66. CONFIG_APPIMG_FLASH_SIZE,
  67. CONFIG_FS_SYS_FLASH_ADDRESS,
  68. CONFIG_FS_SYS_FLASH_SIZE,
  69. CONFIG_FS_MODEM_FLASH_ADDRESS,
  70. CONFIG_FS_MODEM_FLASH_SIZE,
  71. };
  72. uint32_t ql_cam_mclk_freq = 15000000;//set default CAM_MCLK_FREQ 15M
  73. volatile ql_model_feature_ctx_s ql_model_feature_ctx = {
  74. #ifdef CONFIG_QUEC_PROJECT_FEATURE_VOLTE
  75. .volte_enabled = true,
  76. #else
  77. .volte_enabled = false,
  78. #endif
  79. .app_ram_offset = CONFIG_APP_RAM_ADDRESS - CONFIG_CP_RAM_ADDRESS,
  80. .app_total_ram_size = CONFIG_APP_RAM_SIZE + CONFIG_APP_FLASHIMG_RAM_SIZE + CONFIG_APP_FILEIMG_RAM_SIZE,
  81. #ifdef CONFIG_QUEC_PROJECT_FEATURE_QDSIM
  82. .sim_count = 2,
  83. .ap_ifc_dma_count = 10, //SPCSS01061327:8850 sim ifc dma channels are independent and do not affect ap ifc dma channels
  84. #else
  85. .sim_count = 1,
  86. .ap_ifc_dma_count = 10, //8850 sim ifc dma channels are independent and do not affect ap ifc dma channels
  87. #endif
  88. /**
  89. * 1. ds feature will be replaced by NV value in ql_sim_ds_feature_init
  90. * 2. ql_sim_set_ds_feature is used to configure the ds feature, the value will be written to NV
  91. * 3. When the ds feature does not exist in NV, CONFIG_QUEC_PROJECT_FEATURE_QDSIM and CONFIG_QUEC_PROJECT_FEATURE_DSSS
  92. * will determine the initial value of the ds feature
  93. */
  94. #ifdef CONFIG_QUEC_PROJECT_FEATURE_QDSIM
  95. .dsim_feature = DSIM_DSDS,
  96. #elif defined(CONFIG_QUEC_PROJECT_FEATURE_DSSS)
  97. .dsim_feature = DSIM_DSSS,
  98. #else
  99. .dsim_feature = DSIM_SINGLE,
  100. #endif
  101. .usbsusp =
  102. {
  103. #ifdef CONFIG_QUEC_PROJECT_FEATURE_USB_SUSPEND
  104. .enable = TRUE,
  105. #else
  106. .enable = FALSE,
  107. #endif
  108. .reserve = FALSE,
  109. },
  110. .usbdesc =
  111. {
  112. .serialstr = "", //Custom string descriptor
  113. },
  114. #ifdef CONFIG_QUEC_PROJECT_FEATURE_GNSS
  115. .gnss_enabled = true,
  116. #else
  117. .gnss_enabled = false,
  118. #endif
  119. #ifdef CONFIG_QUEC_PROJECT_FEATURE_SDMMC_PORT
  120. #if ( CONFIG_QUEC_PROJECT_FEATURE_SDMMC_PORT == 2 ) || (defined CONFIG_QL_PROJECT_DEF_EC800G)
  121. .sdmmc_channel = SDCARD_EMMC_USE_SDMMC2,
  122. #else
  123. .sdmmc_channel = SDCARD_EMMC_USE_SDMMC1,
  124. #endif
  125. #else
  126. .sdmmc_channel = SDCARD_EMMC_USE_SDMMC1,
  127. #endif
  128. .charge_enable = true,
  129. #if (defined CONFIG_QL_PROJECT_DEF_EC600U) || (defined CONFIG_QL_PROJECT_DEF_EG700U) || (defined CONFIG_QL_PROJECT_DEF_EG070U)
  130. .vibr_domain_flg = 1,
  131. #else
  132. .vibr_domain_flg = 0,
  133. #endif
  134. #ifdef CONFIG_AUDIO_CVS_SUPPORT
  135. .audio_cvs_enabled = true,
  136. #else
  137. .audio_cvs_enabled = false,
  138. #endif
  139. .uart_prio = OSI_PRIORITY_HIGH, //uart口回调函数的优先级
  140. .usb_prio = OSI_PRIORITY_HIGH //usb口回调函数的优先级
  141. };
  142. #if defined(CONFIG_QL_PROJECT_DEF_EC800G) || defined(CONFIG_QL_PROJECT_DEF_EG800G)
  143. UINT8 ql_audio_iic_channel=i2c_2;
  144. bool ql_audio_codec_ldo_ctrl=false;
  145. #elif defined CONFIG_QL_PROJECT_DEF_EC600G
  146. UINT8 ql_audio_iic_channel=i2c_3;
  147. bool ql_audio_codec_ldo_ctrl=false;
  148. #elif defined CONFIG_QL_PROJECT_DEF_EG700G
  149. UINT8 ql_audio_iic_channel=i2c_3;
  150. bool ql_audio_codec_ldo_ctrl=true;
  151. #elif defined CONFIG_QL_PROJECT_DEF_EC200G
  152. UINT8 ql_audio_iic_channel=i2c_3;
  153. bool ql_audio_codec_ldo_ctrl=false;
  154. #endif
  155. const ql_uart_func_s ql_uart_pin_func[] = {
  156. #if defined(CONFIG_QL_PROJECT_DEF_EC800G) || defined(CONFIG_QL_PROJECT_DEF_EG800G)
  157. {QL_UART_PORT_3, QUEC_PIN_UART3_TXD, 4, QUEC_PIN_UART3_RXD, 4},
  158. //{QL_UART_PORT_6, QUEC_PIN_UART6_TXD, 2, QUEC_PIN_UART6_RXD, 2},
  159. #elif defined CONFIG_QL_PROJECT_DEF_EC600G
  160. {QL_UART_PORT_2, QUEC_PIN_UART2_TXD, 0, QUEC_PIN_UART2_RXD, 0},
  161. //{QL_UART_PORT_6, QUEC_PIN_UART6_TXD, 2, QUEC_PIN_UART6_RXD, 2},
  162. #elif defined CONFIG_QL_PROJECT_DEF_EG700G
  163. {QL_UART_PORT_6, QUEC_PIN_UART6_TXD, 0, QUEC_PIN_UART6_RXD, 0},
  164. #elif defined CONFIG_QL_PROJECT_DEF_EC200G
  165. {QL_UART_PORT_5, QUEC_PIN_UART5_TXD, 7, QUEC_PIN_UART5_RXD, 7},
  166. #endif
  167. {QL_PORT_NONE, -1, -1, -1, -1},
  168. };
  169. #ifdef CONFIG_QUEC_PROJECT_FEATURE_HD_GNSS
  170. //华大GNSS配置
  171. #ifdef CONFIG_QL_PROJECT_DEF_EG800G
  172. const unsigned char hd_gnss_uart = QL_UART_PORT_5; //华大GNSS串口
  173. const ql_hd_gnss_moudle_e moudle_def = HD_GNSS_800G; //适配型号
  174. #elif defined CONFIG_QL_PROJECT_DEF_EC200G
  175. const unsigned char hd_gnss_uart = QL_UART_PORT_6;
  176. const ql_hd_gnss_moudle_e moudle_def = HD_GNSS_200G;
  177. #endif
  178. #endif
  179. const ql_cp_dev_cfg_s ql_cp_dev_cfg[] =
  180. {
  181. {0, QUEC_CP_ZSP_UART_PORT0_PIN, QUEC_CP_ZSP_UART_PORT0_PIN_FUNC},//default cplog uart2 tx pin
  182. #ifdef CONFIG_QL_PROJECT_DEF_EC800G
  183. //目前只有800G是没有预留固定的uart CPLOG 输出引脚,其他型号是有固定的引脚的
  184. {1, QUEC_CP_ZSP_UART_PORT1_PIN, QUEC_CP_ZSP_UART_PORT1_PIN_FUNC},//reserve cplog uart2 tx pin
  185. #endif
  186. };
  187. const unsigned char ql_cp_dev_cfg_len = sizeof(ql_cp_dev_cfg)/sizeof(ql_cp_dev_cfg[0]);
  188. const ql_cam_func_s ql_cam_pin_func[] =
  189. {
  190. #if defined(CONFIG_QL_PROJECT_DEF_EC800G) || defined(CONFIG_QL_PROJECT_DEF_EG800G)
  191. {QUEC_PIN_CAM_I2C_SCL , 1},
  192. {QUEC_PIN_CAM_I2C_SDA , 1},
  193. #elif defined (CONFIG_QL_PROJECT_DEF_EC600G) || defined(CONFIG_QL_PROJECT_DEF_EG700G) || defined (CONFIG_QL_PROJECT_DEF_EC200G)
  194. {QUEC_PIN_CAM_I2C_SCL , 0},
  195. {QUEC_PIN_CAM_I2C_SDA , 0},
  196. #endif
  197. {QUEC_PIN_CAM_RSTL , 0},
  198. {QUEC_PIN_CAM_PWDN , 0},
  199. {QUEC_PIN_CAM_REFCLK , 0},
  200. {QUEC_PIN_CAM_SPI_DATA0 , 0},
  201. {QUEC_PIN_CAM_SPI_DATA1 , 0},
  202. {QUEC_PIN_CAM_SPI_SCK , 0},
  203. {QUEC_PIN_NONE, -1},
  204. };
  205. const ql_lcd_func_s ql_lcd_pin_func[] =
  206. {
  207. {QUEC_PIN_LCD_SPI_SIO , 0},
  208. {QUEC_PIN_LCD_SPI_SDC , 0},
  209. {QUEC_PIN_LCD_SPI_CLK , 0},
  210. {QUEC_PIN_LCD_SPI_CS , 0},
  211. //{QUEC_PIN_LCD_SPI_SEL , 0},//8850 no use
  212. {QUEC_PIN_LCD_FMARK , 0},
  213. {QUEC_PIN_NONE, -1},
  214. };
  215. const ql_keypad_pin_s ql_keypad_out_pin_map[]=
  216. { /*pin_num fuc */
  217. /*keyout0*/ { QUEC_PIN_KP_OUT0, 0},
  218. /*keyout1*/ { QUEC_PIN_KP_OUT1, 0},
  219. /*keyout2*/ { QUEC_PIN_KP_OUT2, 0},
  220. /*keyout3*/ { QUEC_PIN_KP_OUT3, 0},
  221. /*keyout4*/ { QUEC_PIN_KP_OUT4, 0},
  222. /*keyout5*/ { QUEC_PIN_KP_OUT5, 0},
  223. /*QL_KP_OUT_NO_VALID*/ { -1, -1}
  224. };
  225. const ql_keypad_pin_s ql_keypad_in_pin_map[]=
  226. { /*pin_num fuc */
  227. /*keyin0*/ { QUEC_PIN_KP_IN0, 0},
  228. /*keyin1*/ { QUEC_PIN_KP_IN1, 0},
  229. /*keyin2*/ { QUEC_PIN_KP_IN2, 0},
  230. /*keyin3*/ { QUEC_PIN_KP_IN3, 0},
  231. /*keyin4*/ { QUEC_PIN_KP_IN4, 0},
  232. /*keyin5*/ { QUEC_PIN_KP_IN5, 0},
  233. /*QL_KP_IN_NO_VALID*/ { -1, -1}
  234. };
  235. unsigned char quec_gnss_cfg_table[]={GPS_SYS,INVALID_SYS,INVALID_SYS,GPS_GLONASS_GALILEO_SYS,GPS_GLONASS_SYS,GPS_BDS_GALILEO_SYS,GPS_GALILEO_SYS,BDS_SYS};
  236. /*==================================================================================
  237. * Power Domain Set
  238. * description:
  239. * The voltage domain configuration is divided into three stages: unisoc initialization stage,
  240. * quectel kernel initialization stage and app initialization stage. The customer can change
  241. * the voltage value of the voltage domain or whether it is enabled or disabled and
  242. * initialization stage
  243. * parameters:
  244. * id : optional power domain(don't modify!!!)
  245. * enabled : work mode enable power
  246. * lp_enabled : sleep mode enable power
  247. * mv : power domain value's range(units:mV)
  248. * POWER_LEVEL_1700MV ~ POWER_LEVEL_3200MV
  249. * step: 100MV
  250. * min_V: HAL_POWER_VIBR is: 2.8V
  251. * others is: 1.6125V
  252. * init_phase : Initialization phase
  253. * POWER_INIT_PHASE1---unisoc kernel initialization stage
  254. * POWER_INIT_PHASE2---quectel kernel initialization stage
  255. * POWER_INIT_PHASE3---app kernel initialization stage
  256. * matters need attention:
  257. * if LCD analog voltage(use LCD func)
  258. * comes from the VIBR power domain of module what like EC600U/EG700U,
  259. * VIBR power domain must be great than or equal to LCD power domain.
  260. * example:
  261. * 1. if you want LCD display from boot to app, you can enable HAL_POWER_BACK_LIGHT in phase1
  262. * 2. if you want advance the initialization stage of SD card voltage domain, you can directly
  263. * modify HAL_POWER_SD init pahse to POWER_INIT_PHASE1
  264. ===================================================================================*/
  265. const ql_power_domain_s ql_power_domain_table[] =
  266. {
  267. /* id enabled lp_enabled mv init_phase */
  268. //power init phase1(unisoc kernel init)
  269. #ifdef CONFIG_FLASH_LP_POWER_DOWN
  270. { HAL_POWER_SPIMEM, true, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* SPIMEM */
  271. #else
  272. { HAL_POWER_SPIMEM, true, true, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* SPIMEM */
  273. #endif
  274. { HAL_POWER_MEM, true, true, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* MEM */
  275. { HAL_POWER_VIO18, true, true, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* VIO18 */
  276. { HAL_POWER_AVDD18, true, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* AVDD18 */
  277. /* DCXO lp_enabled must be false,otherwise the power consumption cannot fall when entering sleep*/
  278. //{ HAL_POWER_DCXO, true, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* DCXO */
  279. #ifdef CONFIG_QUEC_PROJECT_FEATURE_BT
  280. { HAL_POWER_CAMA, true, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE2 }, /* CAMA */
  281. #else
  282. { HAL_POWER_CAMA, false, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* CAMA */
  283. #endif
  284. { HAL_POWER_BACK_LIGHT,false, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* BACK_LIGHT */
  285. { HAL_POWER_CAMD, false, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* CAMD */
  286. { HAL_POWER_WCN, false, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* WCN */
  287. { HAL_POWER_USB, false, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* USB */
  288. { HAL_POWER_BUCK_PA, false, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* BUCK_PA */
  289. #ifdef CONFIG_BOARD_KPLED_USED_FOR_RF_SWITCH
  290. { HAL_POWER_KEYLED, true, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* KEYLED */
  291. #else
  292. { HAL_POWER_KEYLED, false, false, POWER_LEVEL_UNUSED, POWER_INIT_PHASE1 }, /* KEYLED */
  293. #endif
  294. //power init phase2(quectel kernel init)
  295. #ifdef __QUEC_OEM_VER_AC__
  296. { HAL_POWER_LCD , true , true , POWER_LEVEL_3200MV, POWER_INIT_PHASE2 }, /* LCD */
  297. #else
  298. { HAL_POWER_LCD , true , true, POWER_LEVEL_1800MV, POWER_INIT_PHASE2 }, /* for open series(csdk/ccsdk) customer,can alter power value when customers need */
  299. #endif
  300. #ifdef CONFIG_QL_PROJECT_DEF_EG800G_CN_GB
  301. { HAL_POWER_SD , false , false , POWER_LEVEL_1800MV, POWER_INIT_PHASE2 },
  302. #else
  303. #ifndef CONFIG_QL_OPEN_EXPORT_PKG
  304. #ifdef __QUEC_OEM_VER_LD__
  305. { HAL_POWER_SD , true , true , POWER_LEVEL_3200MV, POWER_INIT_PHASE2 },
  306. #else
  307. #if (!defined CONFIG_QUEC_PROJECT_FEATURE_SDMMC) && (!defined CONFIG_QUEC_PROJECT_FEATURE_EMMC)
  308. { HAL_POWER_SD , true , true , POWER_LEVEL_1800MV, POWER_INIT_PHASE2 },
  309. #endif
  310. #endif
  311. #else
  312. { HAL_POWER_SD , true , true , POWER_LEVEL_1800MV, POWER_INIT_PHASE2 }, /* for open series(csdk/ccsdk) customer ,can alter power value when customers need */
  313. #endif
  314. #endif
  315. { HAL_POWER_SIM1, true, false, POWER_LEVEL_1800MV, POWER_INIT_PHASE2 }, /* for open series(csdk/ccsdk) customer,can alter power value when customers need */
  316. //power init phase3(quectel app init)
  317. #if (defined CONFIG_QL_PROJECT_DEF_EC600U) || (defined CONFIG_QL_PROJECT_DEF_EG700U)
  318. { HAL_POWER_VIBR, true , false, POWER_LEVEL_2800MV, POWER_INIT_PHASE3 }, /* for open series(csdk/ccsdk) customer, can alter power value when customers need */
  319. #endif
  320. //should before here!
  321. { HAL_POWER_NONE, false , false , POWER_LEVEL_UNUSED, POWER_INIT_NONE }, /* for open series(csdk/ccsdk) customer,can alter power value when customers need */
  322. };
  323. const unsigned char ql_power_domain_table_len = sizeof(ql_power_domain_table)/sizeof(ql_power_domain_table[0]);
  324. //这里是可以让客户自行选择这些引脚是否休眠使能,true为使能
  325. //休眠使能指的就是休眠时在电压域enable的情况下依然可以保持休眠前的状态
  326. //true表示可以休眠时不改变引脚状态,false表示休眠下,会强行将引脚电平状态拉低,以此降低休眠功耗
  327. //如果需要用到以下引脚在休眠下保持工作,例如GPIO中断,需要置true
  328. const ql_pin_deep_sleep_ctx_s ql_pin_deepsleep_mode_table[]=
  329. {
  330. // pin_register enabled 200G 600G 700G 800G
  331. { &hwp_iomux->pad_camera_rst_l_clr, false },//pin_num 61 120 75 103
  332. { &hwp_iomux->pad_camera_ref_clk_clr, true },//pin_num 63 10 99 54
  333. { &hwp_iomux->pad_camera_pwdn_clr, false },//pin_num 62 16 98 81
  334. { &hwp_iomux->pad_i2s_sdat_i_clr, true },//pin_num 24 59 32
  335. { &hwp_iomux->pad_i2s1_sdat_o_clr, false },//pin_num 25 60 33
  336. { &hwp_iomux->pad_i2s1_lrck_clr, true },//pin_num 26 58 31
  337. { &hwp_iomux->pad_i2s1_bck_clr, false },//pin_num 27 61 30
  338. { &hwp_iomux->pad_uart_2_rts_clr, false },//pin_num 12 71 94 39
  339. { &hwp_iomux->pad_uart_2_txd_clr, true },//pin_num 126 124 20 58
  340. { NULL, false }
  341. };
  342. const unsigned char ql_pin_deepsleep_table_len = sizeof(ql_pin_deepsleep_mode_table)/sizeof(ql_pin_deepsleep_mode_table[0]);
  343. //不同型号多晶振识别IO口及FUN
  344. const ql_xtl_diff_ctx_s ql_xtl_diff_ctx =
  345. {
  346. // rf_band board_id0 board_id1 board_id0_fun_pad board_id1_fun_pad
  347. #if defined(CONFIG_QL_PROJECT_DEF_EC800G) || defined(CONFIG_QL_PROJECT_DEF_EG800G)
  348. 8, 29, 30, HAL_IOMUX_FUN_GPIO_29_PAD_I2C_M1_SCL, HAL_IOMUX_FUN_GPIO_30_PAD_I2C_M1_SDA,
  349. #elif defined CONFIG_QL_PROJECT_DEF_EC600G
  350. 6, 4, 5, HAL_IOMUX_FUN_GPIO_4_PAD_GPIO_4, HAL_IOMUX_FUN_GPIO_5_PAD_GPIO_5,
  351. #elif defined CONFIG_QL_PROJECT_DEF_EG700G
  352. 7, 24, 25, HAL_IOMUX_FUN_GPIO_24_PAD_SW_CLK, HAL_IOMUX_FUN_GPIO_25_PAD_SW_DIO,
  353. #elif defined CONFIG_QL_PROJECT_DEF_EC200G
  354. 2, 4, 5, HAL_IOMUX_FUN_GPIO_4_PAD_GPIO_4, HAL_IOMUX_FUN_GPIO_5_PAD_GPIO_5,
  355. #endif
  356. };