light.c 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662
  1. /*
  2. * Copyright (C) 2017-2020 Alibaba Group Holding Limited
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <common.h>
  7. #include <command.h>
  8. #include <asm/io.h>
  9. #include <asm/types.h>
  10. #include <thead/clock_config.h>
  11. #include <linux/bitops.h>
  12. #include <asm/arch-thead/light-iopmp.h>
  13. #define SOC_PIN_AP_RIGHT_TOP (0x0)
  14. #define SOC_PIN_AP_LEFT_TOP (0x1)
  15. #define SOC_PIN_AON (0x2)
  16. #define PAD_GRP_BASE_SET(x) (x << 12)
  17. #define PAD_GRP_IDX_GET(x) ( (x >> 12) & 0xF)
  18. #define PAD_INDEX(x) (x & 0xFFF)
  19. #define LIGHT_GPIO1_BADDR 0xffec006000
  20. #define LIGHT_GPIO2_BADDR 0xffe7f34000
  21. #define LIGHT_GPIO3_BADDR 0xffe7f38000
  22. #define LIGHT_GPIO1_13 (0x1 << 13)
  23. #define LIGHT_GPIO3_21 (0x1 << 21)
  24. #define LIGHT_GPIO2_26 (0x1 << 26)
  25. #define LIGHT_GPIO2_28 (0x1 << 28)
  26. #define GMAC0_APB3S_BADDR 0xffec003000
  27. #define GMAC1_APB3S_BADDR 0xffec004000
  28. static uint64_t apb3s_baddr;
  29. typedef enum {
  30. UART0_TXD = PAD_GRP_BASE_SET(SOC_PIN_AP_RIGHT_TOP),
  31. UART0_RXD,
  32. QSPI0_SCLK,
  33. QSPI0_CSN0,
  34. QSPI0_CSN1,
  35. QSPI0_D0_MOSI,
  36. QSPI0_D1_MISO,
  37. QSPI0_D2_WP,
  38. QSPI0_D3_HOLD,
  39. I2C2_SCL,
  40. I2C2_SDA,
  41. I2C3_SCL,
  42. I2C3_SDA,
  43. GPIO2_13,
  44. SPI_SCLK,
  45. SPI_CSN,
  46. SPI_MOSI,
  47. SPI_MISO,
  48. GPIO2_18,
  49. GPIO2_19,
  50. GPIO2_20,
  51. GPIO2_21,
  52. GPIO2_22,
  53. GPIO2_23,
  54. GPIO2_24,
  55. GPIO2_25,
  56. SDIO0_WPRTN,
  57. SDIO0_DETN,
  58. SDIO1_WPRTN,
  59. SDIO1_DETN,
  60. GPIO2_30,
  61. GPIO2_31,
  62. GPIO3_0,
  63. GPIO3_1,
  64. GPIO3_2,
  65. GPIO3_3,
  66. HDMI_SCL,
  67. HDMI_SDA,
  68. HDMI_CEC,
  69. GMAC0_TX_CLK,
  70. GMAC0_RX_CLK,
  71. GMAC0_TXEN,
  72. GMAC0_TXD0,
  73. GMAC0_TXD1,
  74. GMAC0_TXD2,
  75. GMAC0_TXD3,
  76. GMAC0_RXDV,
  77. GMAC0_RXD0,
  78. GMAC0_RXD1,
  79. GMAC0_RXD2,
  80. GMAC0_RXD3,
  81. GMAC0_MDC,
  82. GMAC0_MDIO,
  83. GMAC0_COL,
  84. GMAC0_CRS,
  85. QSPI1_SCLK = PAD_GRP_BASE_SET(SOC_PIN_AP_LEFT_TOP),
  86. QSPI1_CSN0,
  87. QSPI1_D0_MOSI,
  88. QSPI1_D1_MISO,
  89. QSPI1_D2_WP,
  90. QSPI1_D3_HOLD,
  91. I2C0_SCL,
  92. I2C0_SDA,
  93. I2C1_SCL,
  94. I2C1_SDA,
  95. UART1_TXD,
  96. UART1_RXD,
  97. UART4_TXD,
  98. UART4_RXD,
  99. UART4_CTSN,
  100. UART4_RTSN,
  101. UART3_TXD,
  102. UART3_RXD,
  103. GPIO0_18,
  104. GPIO0_19,
  105. GPIO0_20,
  106. GPIO0_21,
  107. GPIO0_22,
  108. GPIO0_23,
  109. GPIO0_24,
  110. GPIO0_25,
  111. GPIO0_26,
  112. GPIO0_27,
  113. GPIO0_28,
  114. GPIO0_29,
  115. GPIO0_30,
  116. GPIO0_31,
  117. GPIO1_0,
  118. GPIO1_1,
  119. GPIO1_2,
  120. GPIO1_3,
  121. GPIO1_4,
  122. GPIO1_5,
  123. GPIO1_6,
  124. GPIO1_7,
  125. GPIO1_8,
  126. GPIO1_9,
  127. GPIO1_10,
  128. GPIO1_11,
  129. GPIO1_12,
  130. GPIO1_13,
  131. GPIO1_14,
  132. GPIO1_15,
  133. GPIO1_16,
  134. CLK_OUT_0,
  135. CLK_OUT_1,
  136. CLK_OUT_2,
  137. CLK_OUT_3,
  138. GPIO1_21,
  139. GPIO1_22,
  140. GPIO1_23,
  141. GPIO1_24,
  142. GPIO1_25,
  143. GPIO1_26,
  144. GPIO1_27,
  145. GPIO1_28,
  146. GPIO1_29,
  147. GPIO1_30,
  148. OSC_CLK_IN= PAD_GRP_BASE_SET(SOC_PIN_AON),
  149. OSC_CLK_OUT,
  150. SYS_RST_N,
  151. RTC_CLK_IN,
  152. RTC_CLK_OUT,
  153. TEST_MODE,
  154. DFT_PROT_DIS_0,
  155. DEBUG_MODE,
  156. POR_SEL,
  157. I2C_AON_SCL,
  158. I2C_AON_SDA,
  159. CPU_JTG_TCLK,
  160. CPU_JTG_TMS,
  161. CPU_JTG_TDI,
  162. CPU_JTG_TDO,
  163. CPU_JTG_TRST,
  164. AOGPIO_7,
  165. AOGPIO_8,
  166. AOGPIO_9,
  167. AOGPIO_10,
  168. AOGPIO_11,
  169. AOGPIO_12,
  170. AOGPIO_13,
  171. AOGPIO_14,
  172. AOGPIO_15,
  173. AUDIO_PA0,
  174. AUDIO_PA1,
  175. AUDIO_PA2,
  176. AUDIO_PA3,
  177. AUDIO_PA4,
  178. AUDIO_PA5,
  179. AUDIO_PA6,
  180. AUDIO_PA7,
  181. AUDIO_PA8,
  182. AUDIO_PA9,
  183. AUDIO_PA10,
  184. AUDIO_PA11,
  185. AUDIO_PA12,
  186. AUDIO_PA13,
  187. AUDIO_PA14,
  188. AUDIO_PA15,
  189. AUDIO_PA16,
  190. AUDIO_PA17,
  191. AUDIO_PA27,
  192. AUDIO_PA28,
  193. AUDIO_PA29,
  194. AUDIO_PA30,
  195. } pin_name_t;
  196. enum {
  197. PIN_PD,
  198. PIN_PU,
  199. PIN_PN,
  200. };
  201. enum {
  202. PIN_SPEED_NORMAL,
  203. PIN_SPEED_FAST
  204. };
  205. #define PIN_DRV_MAX (15)
  206. #define USBPHY_TEST_CTRL2 0xFFEC03F02C
  207. #define USBPHY_TEST_CTRL3 0xFFEC03F030
  208. #define SYSCLK_USB_CTRL 0xFFFC02D104
  209. #define REF_SSP_EN 0xFFEC03F034
  210. #define USB3_DRD_SWRST 0xFFEC02C014
  211. #define SOC_OM_ADDRBASE 0xFFEF018010
  212. #define ISO7816_CARD_ADDRBASE 0xFFF7F30000
  213. #define REG_CONFIG_OFF 0x10
  214. #define MIE (1<<7)
  215. #define LIGHT_IOPMP_DEFAULT_ATTR 0xffffffff
  216. #define LIGHT_IOPMP_DEFAULT_OFF 0xc0
  217. #ifndef CONFIG_TARGET_LIGHT_FPGA_FM_C910
  218. #define PADMUX_REG_ADDR(base,index) ((void*)(base) + ((index >> 3) << 2))
  219. #define PADMUX_REG_BIT_POS(index) ((index & 0x7) << 2)
  220. #define PADMUX_REG_MASK(index) (0xF << PADMUX_REG_BIT_POS(index))
  221. #define PADCFG_REG_ADDR(base,index) ((void*)(base) + ((index >> 1) << 2))
  222. #define PADCFG_REG_BIT_POS(index) ((index & 0x1) << 4)
  223. #define PADCFG_REG_PULL_MASK(index) (0x70 << PADCFG_REG_BIT_POS(index))
  224. #define PADCFG_REG_DRV_MASK(index) (0xF << PADCFG_REG_BIT_POS(index))
  225. #define PADCFG_REG_SLEW_MASK(index) (0x100 << PADCFG_REG_BIT_POS(index))
  226. #define PADMUX_CFG(grp_addr_base,index,pin_func) \
  227. { \
  228. uint32_t val; \
  229. val = readl(PADMUX_REG_ADDR(grp_addr_base,index)); \
  230. val &=~PADMUX_REG_MASK(index); \
  231. val |= pin_func << PADMUX_REG_BIT_POS(index); \
  232. writel(val,PADMUX_REG_ADDR(grp_addr_base,index)); \
  233. }
  234. #define PADCFG_PULL(grp_addr_base,index,bpull,bpullup) \
  235. { \
  236. uint32_t val; \
  237. val = readl(PADCFG_REG_ADDR(grp_addr_base,index)); \
  238. val &=~PADCFG_REG_PULL_MASK(index); \
  239. val |= ((bpull<<4)|(bpullup<<5)) << PADCFG_REG_BIT_POS(index); \
  240. writel(val,PADCFG_REG_ADDR(grp_addr_base,index)); \
  241. }
  242. #define PADCFG_SLEW(grp_addr_base,index,bfast) \
  243. { \
  244. uint32_t val; \
  245. val = readl(PADCFG_REG_ADDR(grp_addr_base,index)); \
  246. val &=~PADCFG_REG_SLEW_MASK(index); \
  247. val |= (bfast<<8) << PADCFG_REG_BIT_POS(index); \
  248. writel(val,PADCFG_REG_ADDR(grp_addr_base,index)); \
  249. }
  250. #define PADCFG_DRV(grp_addr_base,index,strength) \
  251. { \
  252. uint32_t val; \
  253. val = readl(PADCFG_REG_ADDR(grp_addr_base,index)); \
  254. val &=~PADCFG_REG_DRV_MASK(index); \
  255. val |= (strength) << PADCFG_REG_BIT_POS(index); \
  256. writel(val,PADCFG_REG_ADDR(grp_addr_base,index)); \
  257. }
  258. struct pinmux_addr_t {
  259. uint32_t pin_grp_id;
  260. uint32_t *pin_grp_cfg_base;
  261. uint32_t *pin_grp_mux_base;
  262. };
  263. #define PIN_GRP_ADDR_DEF(grp_idx,cfg_base,mux_base) \
  264. { \
  265. .pin_grp_id = grp_idx, \
  266. .pin_grp_cfg_base =(uint32_t*) cfg_base, \
  267. .pin_grp_mux_base =(uint32_t*) mux_base, \
  268. }
  269. struct pinmux_addr_t g_soc_pin_grp_addr[] = {
  270. PIN_GRP_ADDR_DEF(SOC_PIN_AP_RIGHT_TOP, 0xFFEC007000,0xFFEC007400),
  271. PIN_GRP_ADDR_DEF(SOC_PIN_AP_LEFT_TOP, 0xFFE7F3C000,0xFFE7F3C400),
  272. PIN_GRP_ADDR_DEF(SOC_PIN_AON, 0xFFFFF4A000,0xFFFFF4A400),
  273. };
  274. static void iso7816_card_glb_interrupt_disable(void)
  275. {
  276. writel(readl((void *)(ISO7816_CARD_ADDRBASE + REG_CONFIG_OFF)) & (~MIE), (void *)(ISO7816_CARD_ADDRBASE + REG_CONFIG_OFF));
  277. }
  278. static int light_pinmx_get_cfg_base(pin_name_t pin_name, uint32_t** cfg_base)
  279. {
  280. uint32_t grp_num = ARRAY_SIZE(g_soc_pin_grp_addr);
  281. uint32_t grp_idx = PAD_GRP_IDX_GET(pin_name);
  282. uint32_t i;
  283. for(i = 0; i < grp_num; i++) {
  284. if (grp_idx == g_soc_pin_grp_addr[i].pin_grp_id)
  285. break;
  286. }
  287. if (i == grp_num)
  288. return -1;
  289. *cfg_base = g_soc_pin_grp_addr[i].pin_grp_cfg_base;
  290. return 0;
  291. }
  292. static int light_pinmx_get_mux_base(pin_name_t pin_name, uint32_t** cfg_base)
  293. {
  294. uint32_t grp_num = ARRAY_SIZE(g_soc_pin_grp_addr);
  295. uint32_t grp_idx = PAD_GRP_IDX_GET(pin_name);
  296. uint32_t i;
  297. for(i = 0; i < grp_num; i++) {
  298. if (grp_idx == g_soc_pin_grp_addr[i].pin_grp_id)
  299. break;
  300. }
  301. if (i == grp_num)
  302. return -1;
  303. *cfg_base = g_soc_pin_grp_addr[i].pin_grp_mux_base;
  304. return 0;
  305. }
  306. /*******************************************************************************
  307. * function: danica_ioreuse_inital
  308. *
  309. * description:
  310. * initial danica_pinmux
  311. *******************************************************************************/
  312. static inline int light_pin_pllmode(pin_name_t pin_name, uint32_t mode)
  313. {
  314. uint32_t bpull,bpullup;
  315. uint32_t *reg_addr;
  316. int ret;
  317. ret = light_pinmx_get_cfg_base(pin_name,&reg_addr);
  318. if (ret)
  319. return ret;
  320. switch (mode)
  321. {
  322. case PIN_PD:
  323. bpull =1;
  324. bpullup = 0;
  325. /* code */
  326. break;
  327. case PIN_PU:
  328. bpull =1;
  329. bpullup = 1;
  330. /* code */
  331. break;
  332. case PIN_PN:
  333. bpull =0;
  334. bpullup = 0;
  335. /* code */
  336. break;
  337. default:
  338. return -1;
  339. break;
  340. }
  341. PADCFG_PULL(reg_addr,PAD_INDEX(pin_name),bpull,bpullup);
  342. return 0;
  343. }
  344. /**
  345. \brief set pin speed
  346. \param[in] pin_name pin name, defined in soc.h.
  347. \param[in] speed io speed
  348. \return error code
  349. */
  350. static inline int light_pin_speed(pin_name_t pin_name, uint32_t speed)
  351. {
  352. uint32_t bfast;
  353. uint32_t *reg_addr;
  354. int ret;
  355. ret = light_pinmx_get_cfg_base(pin_name,&reg_addr);
  356. if (ret)
  357. return ret;
  358. switch (speed)
  359. {
  360. case PIN_SPEED_NORMAL:
  361. bfast = 0;
  362. break;
  363. case PIN_SPEED_FAST:
  364. bfast = 1;
  365. break;
  366. default:
  367. return -1;
  368. }
  369. PADCFG_SLEW(reg_addr,PAD_INDEX(pin_name),bfast);
  370. return 0;
  371. }
  372. /**
  373. \brief set pin drive
  374. \param[in] pin_name pin name, defined in soc.h.
  375. \param[in] drive io drive
  376. \return error code
  377. */
  378. static inline int light_pin_drv_strength(pin_name_t pin_name, uint32_t strength)
  379. {
  380. uint32_t *reg_addr;
  381. int ret;
  382. ret = light_pinmx_get_cfg_base(pin_name,&reg_addr);
  383. if (ret)
  384. return ret;
  385. if(strength > PIN_DRV_MAX) {
  386. return -1;
  387. }
  388. PADCFG_DRV(reg_addr,PAD_INDEX(pin_name),strength);
  389. return 0;
  390. }
  391. int light_pin_mux(pin_name_t pin_name, uint32_t pin_func)
  392. {
  393. uint32_t *reg_addr;
  394. int ret;
  395. ret = light_pinmx_get_mux_base(pin_name,&reg_addr);
  396. if (ret)
  397. return ret;
  398. PADMUX_CFG(reg_addr,PAD_INDEX(pin_name),pin_func);
  399. return 0;
  400. }
  401. int light_pin_cfg(pin_name_t pin_name,uint32_t slew_rate, uint32_t pullmode,uint32_t drvstrength)
  402. {
  403. int ret;
  404. ret = light_pin_speed(pin_name,slew_rate);
  405. if (ret)
  406. return ret;
  407. ret = light_pin_pllmode(pin_name,pullmode);
  408. if (ret )
  409. return ret;
  410. ret = light_pin_drv_strength(pin_name,drvstrength);
  411. return ret;
  412. }
  413. #endif
  414. static struct light_iopmp_list {
  415. int iopmp_type;
  416. u64 reg;
  417. } light_iopmp_lists[] = {
  418. {IOPMP_EMMC, 0xFFFC028000},
  419. {IOPMP_SDIO0, 0xFFFC029000},
  420. {IOPMP_SDIO1, 0xFFFC02A000},
  421. {IOPMP_USB0, 0xFFFC02E000},
  422. {IOPMP_AO, 0xFFFFC21000},
  423. {IOPMP_AUD, 0xFFFFC22000},
  424. {IOPMP_CHIP_DBG, 0xFFFFC37000},
  425. {IOPMP_EIP120I, 0xFFFF220000},
  426. {IOPMP_EIP120II, 0xFFFF230000},
  427. {IOPMP_EIP120III, 0xFFFF240000},
  428. {IOPMP_ISP0, 0xFFF4080000},
  429. {IOPMP_ISP1, 0xFFF4081000},
  430. {IOPMP_DW200, 0xFFF4082000},
  431. {IOPMP_VIPRE, 0xFFF4083000},
  432. {IOPMP_VENC, 0xFFFCC60000},
  433. {IOPMP_VDEC, 0xFFFCC61000},
  434. {IOPMP_G2D, 0xFFFCC62000},
  435. {IOPMP_FCE, 0xFFFCC63000},
  436. {IOPMP_NPU, 0xFFFF01C000},
  437. {IOPMP0_DPU, 0xFFFF520000},
  438. {IOPMP1_DPU, 0xFFFF521000},
  439. {IOPMP_GPU, 0xFFFF522000},
  440. {IOPMP_GMAC1, 0xFFFC001000},
  441. {IOPMP_GMAC2, 0xFFFC002000},
  442. {IOPMP_DMAC, 0xFFFFC20000},
  443. {IOPMP_TEE_DMAC, 0xFFFF250000},
  444. {IOPMP_DSP0, 0xFFFF058000},
  445. {IOPMP_DSP1, 0xFFFF059000},
  446. {IOPMP_AUDIO, 0xFFFFC22000},
  447. {IOPMP_AUDIO0, 0xFFCB02E000},
  448. {IOPMP_AUDIO1, 0xFFCB02F000},
  449. };
  450. static void light_iopmp_config(void)
  451. {
  452. int i = 0;
  453. int entry_size;
  454. entry_size = ARRAY_SIZE(light_iopmp_lists);
  455. while (i < entry_size) {
  456. writel(LIGHT_IOPMP_DEFAULT_ATTR, (void *)(light_iopmp_lists[i].reg) + LIGHT_IOPMP_DEFAULT_OFF);
  457. i++;
  458. }
  459. }
  460. void board_lmb_reserve(struct lmb *lmb)
  461. {
  462. lmb_add(lmb, (phys_addr_t)0x0, (phys_addr_t)0x20000000);
  463. lmb_add(lmb, (phys_addr_t)0xffffef8000, (phys_addr_t)(64*1024));
  464. lmb_add(lmb, (phys_addr_t)0xffc0000000, (phys_addr_t)(128 * 1024));
  465. }
  466. int dw_txclk_set_rate(u32 rate)
  467. {
  468. switch (rate) {
  469. case 125000000:
  470. writel(0x4, (void *)(apb3s_baddr + 0xc));
  471. writel(0x80000004, (void *)(apb3s_baddr + 0xc));
  472. break;
  473. case 25000000:
  474. writel(0x14, (void *)(apb3s_baddr + 0xc));
  475. writel(0x80000014, (void *)(apb3s_baddr + 0xc));
  476. break;
  477. case 2500000:
  478. writel(0xc8, (void *)(apb3s_baddr + 0xc));
  479. writel(0x800000c8, (void *)(apb3s_baddr + 0xc));
  480. break;
  481. default:
  482. return -EINVAL;
  483. }
  484. return 0;
  485. }
  486. static void gmac_phy_rst(void)
  487. {
  488. //GPIO reset
  489. writel(readl((void *)(LIGHT_GPIO3_BADDR + 0x4)) | LIGHT_GPIO3_21,
  490. (void *)(LIGHT_GPIO3_BADDR + 0x4));
  491. writel(readl((void *)(LIGHT_GPIO1_BADDR + 0x4)) | LIGHT_GPIO1_13,
  492. (void *)(LIGHT_GPIO1_BADDR + 0x4));
  493. writel(readl((void *)LIGHT_GPIO3_BADDR) & ~LIGHT_GPIO3_21,
  494. (void *)LIGHT_GPIO3_BADDR);
  495. writel(readl((void *)LIGHT_GPIO1_BADDR) & ~LIGHT_GPIO1_13,
  496. (void *)LIGHT_GPIO1_BADDR);
  497. /* At least 10ms */
  498. mdelay(12);
  499. writel(readl((void *)LIGHT_GPIO3_BADDR) | LIGHT_GPIO3_21,
  500. (void *)LIGHT_GPIO3_BADDR);
  501. writel(readl((void *)LIGHT_GPIO1_BADDR) | LIGHT_GPIO1_13,
  502. (void *)LIGHT_GPIO1_BADDR);
  503. }
  504. static void gmac_glue_init(uint64_t apb3s_baddr)
  505. {
  506. /* Interface select mii:0 rgmii:1 */
  507. //writel(0x0, (void *)(apb3s_baddr + 0x1c));
  508. writel(0x1, (void *)(apb3s_baddr + 0x1c));
  509. writel(0x7e, (void *)(apb3s_baddr + 0x0));
  510. writel(0x4, (void *)(apb3s_baddr + 0xc));
  511. writel(0x80000004, (void *)(apb3s_baddr + 0xc));
  512. /* Clock source pad:0 pll:1 */
  513. //writel(0x0, (void *)(apb3s_baddr + 0x18));
  514. writel(0x1, (void *)(apb3s_baddr + 0x18));
  515. /* tx clk direction output:0 input:1 */
  516. //writel(0x1, (void *)(apb3s_baddr + 0x20));
  517. writel(0x0, (void *)(apb3s_baddr + 0x20));
  518. }
  519. void gmac_hw_init(void)
  520. {
  521. gmac_phy_rst();
  522. apb3s_baddr = GMAC1_APB3S_BADDR;
  523. gmac_glue_init(apb3s_baddr);
  524. apb3s_baddr = GMAC0_APB3S_BADDR;
  525. gmac_glue_init(apb3s_baddr);
  526. }
  527. static void wifi_en(void)
  528. {
  529. uint32_t val;
  530. writel(readl((void *)(LIGHT_GPIO2_BADDR + 0x4)) | LIGHT_GPIO2_26 | LIGHT_GPIO2_28,
  531. (void *)(LIGHT_GPIO2_BADDR + 0x4));
  532. /* kernel driver will reset wifi module */
  533. val = readl((void *)LIGHT_GPIO2_BADDR);
  534. val |= LIGHT_GPIO2_26 | LIGHT_GPIO2_28;
  535. writel(val, (void *)LIGHT_GPIO2_BADDR);
  536. }
  537. static void usb_phy_test_config(void)
  538. {
  539. writel(0x77F, (void *)USBPHY_TEST_CTRL3);
  540. writel(0x15150F0, (void *)USBPHY_TEST_CTRL2);
  541. }
  542. static void usb_clk_config(void)
  543. {
  544. writel(readl((void *)SYSCLK_USB_CTRL) | 0xf, (void *)SYSCLK_USB_CTRL);
  545. writel(readl((void *)REF_SSP_EN) | 0x1, (void *)REF_SSP_EN);
  546. udelay(10);
  547. writel(0x0, (void *)USB3_DRD_SWRST);
  548. udelay(1000);
  549. writel(0x7, (void *)USB3_DRD_SWRST);
  550. }
  551. #if defined (CONFIG_TARGET_LIGHT_FPGA_FM_C910)
  552. static void light_iopin_init(void)
  553. {
  554. return;
  555. }
  556. #elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_A)
  557. static void light_iopin_init(void)
  558. {
  559. /*AON-PADMUX*/
  560. light_pin_mux(AOGPIO_7,3);
  561. light_pin_mux(AOGPIO_8,3);
  562. light_pin_mux(AOGPIO_9,3);
  563. light_pin_mux(AOGPIO_10,3);
  564. light_pin_mux(AOGPIO_12,1);
  565. light_pin_mux(AOGPIO_13,1);
  566. light_pin_mux(AUDIO_PA9,3);
  567. light_pin_mux(AUDIO_PA10,3);
  568. light_pin_mux(AUDIO_PA11,3);
  569. light_pin_mux(AUDIO_PA12,3);
  570. light_pin_mux(AUDIO_PA27,3);
  571. light_pin_mux(AUDIO_PA28,3);
  572. light_pin_mux(AUDIO_PA29,3);
  573. light_pin_mux(AUDIO_PA30,3);
  574. light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
  575. light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
  576. light_pin_cfg(AOGPIO_7,PIN_SPEED_NORMAL,PIN_PD,2);
  577. light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PN,2);
  578. light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
  579. light_pin_cfg(AOGPIO_10,PIN_SPEED_NORMAL,PIN_PD,2);
  580. light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PU,2);
  581. light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PU,2);
  582. light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PN,2);
  583. light_pin_cfg(AUDIO_PA11,PIN_SPEED_NORMAL,PIN_PN,2);
  584. light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PN,2);
  585. light_pin_cfg(AUDIO_PA27,PIN_SPEED_NORMAL,PIN_PN,2);
  586. light_pin_cfg(AUDIO_PA28,PIN_SPEED_NORMAL,PIN_PN,2);
  587. light_pin_cfg(AUDIO_PA29,PIN_SPEED_NORMAL,PIN_PU,2);
  588. light_pin_cfg(AUDIO_PA30,PIN_SPEED_NORMAL,PIN_PU,2);
  589. /*AP-LEFT-TOP PADMUX*/
  590. light_pin_mux(QSPI1_CSN0,4);
  591. light_pin_mux(QSPI1_SCLK,4);
  592. light_pin_mux(QSPI1_D0_MOSI,4);
  593. light_pin_mux(QSPI1_D1_MISO,4);
  594. light_pin_mux(QSPI1_D2_WP,2);
  595. light_pin_mux(QSPI1_D3_HOLD,2);
  596. light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8);
  597. light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8);
  598. light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8);
  599. light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8);
  600. light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PN,8);
  601. light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,8);
  602. light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,5);
  603. light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,5);
  604. light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,5);
  605. light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,5);
  606. light_pin_mux(UART1_TXD,3);
  607. light_pin_mux(UART1_RXD,3);
  608. light_pin_cfg(UART1_TXD,PIN_SPEED_NORMAL,PIN_PU,2);
  609. light_pin_cfg(UART1_RXD,PIN_SPEED_NORMAL,PIN_PU,2);
  610. light_pin_mux(UART3_TXD,1);
  611. light_pin_mux(UART3_RXD,1);
  612. light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,8);
  613. light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,8);
  614. light_pin_mux(GPIO0_18,1);
  615. light_pin_mux(GPIO0_19,1);
  616. light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,5);
  617. light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,5);
  618. light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
  619. light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
  620. light_pin_cfg(GPIO0_22,PIN_SPEED_NORMAL,PIN_PN,2);
  621. light_pin_cfg(GPIO0_23,PIN_SPEED_NORMAL,PIN_PN,2);
  622. light_pin_cfg(GPIO0_31,PIN_SPEED_NORMAL,PIN_PU,2);
  623. light_pin_mux(CLK_OUT_0,1);
  624. light_pin_mux(CLK_OUT_1,1);
  625. light_pin_mux(CLK_OUT_2,1);
  626. light_pin_mux(CLK_OUT_3,1);
  627. /*AP-RIGHT-TOP PADMUX*/
  628. light_pin_mux(QSPI0_CSN0,2);
  629. light_pin_mux(QSPI0_SCLK,2);
  630. light_pin_mux(QSPI0_D0_MOSI,2);
  631. light_pin_mux(QSPI0_D1_MISO,2);
  632. light_pin_mux(QSPI0_D2_WP,2);
  633. light_pin_mux(QSPI0_D3_HOLD,2);
  634. light_pin_cfg(QSPI0_CSN0,PIN_SPEED_NORMAL,PIN_PN,0x8);
  635. light_pin_cfg(QSPI0_SCLK,PIN_SPEED_NORMAL,PIN_PN,0x8);
  636. light_pin_cfg(QSPI0_D0_MOSI,PIN_SPEED_NORMAL,PIN_PN,0x8);
  637. light_pin_cfg(QSPI0_D1_MISO,PIN_SPEED_NORMAL,PIN_PN,0x8);
  638. light_pin_cfg(QSPI0_D2_WP,PIN_SPEED_NORMAL,PIN_PN,0x8);
  639. light_pin_cfg(QSPI0_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,0x8);
  640. light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  641. light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  642. light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  643. light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  644. light_pin_mux(SPI_CSN,3);
  645. light_pin_mux(SPI_SCLK,3);
  646. light_pin_mux(SPI_MISO,3);
  647. light_pin_mux(SPI_MOSI,3);
  648. light_pin_mux(GPIO1_21,3);
  649. light_pin_mux(GPIO1_22,3);
  650. light_pin_mux(GPIO1_23,3);
  651. light_pin_mux(GPIO1_24,3);
  652. light_pin_mux(GPIO1_25,3);
  653. light_pin_cfg(SPI_CSN,PIN_SPEED_NORMAL,PIN_PU,2);
  654. light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PU,2);
  655. light_pin_cfg(SPI_MISO,PIN_SPEED_NORMAL,PIN_PU,2);
  656. light_pin_cfg(SPI_MOSI,PIN_SPEED_NORMAL,PIN_PU,2);
  657. light_pin_cfg(GPIO1_7, PIN_SPEED_NORMAL, PIN_PU, 0x2);
  658. light_pin_cfg(GPIO1_8, PIN_SPEED_NORMAL, PIN_PU, 0x2);
  659. light_pin_cfg(GPIO1_9, PIN_SPEED_NORMAL, PIN_PU, 0x2);
  660. light_pin_cfg(GPIO1_21, PIN_SPEED_NORMAL, PIN_PU, 0x2);
  661. light_pin_cfg(GPIO1_22, PIN_SPEED_NORMAL, PIN_PU, 0x2);
  662. light_pin_cfg(GPIO1_23, PIN_SPEED_NORMAL, PIN_PU, 0x2);
  663. light_pin_cfg(GPIO1_24, PIN_SPEED_NORMAL, PIN_PU, 0x2);
  664. light_pin_cfg(GPIO1_25, PIN_SPEED_NORMAL, PIN_PU, 0x2);
  665. light_pin_mux(GPIO2_18,1);
  666. light_pin_mux(GPIO2_19,1);
  667. light_pin_mux(GPIO2_20,1);
  668. light_pin_mux(GPIO2_21,1);
  669. light_pin_mux(GPIO2_22,1);
  670. light_pin_mux(GPIO2_23,1);
  671. light_pin_mux(GPIO2_24,1);
  672. light_pin_mux(GPIO2_25,1);
  673. light_pin_cfg(GPIO2_13, PIN_SPEED_NORMAL, PIN_PD, 0x2);
  674. light_pin_cfg(GPIO2_18, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  675. light_pin_cfg(GPIO2_19, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  676. light_pin_cfg(GPIO2_20, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  677. light_pin_cfg(GPIO2_21, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  678. light_pin_cfg(GPIO2_22, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  679. light_pin_cfg(GPIO2_23, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  680. light_pin_cfg(GPIO2_24, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  681. light_pin_cfg(GPIO2_25, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  682. light_pin_mux(SDIO0_WPRTN,3);
  683. light_pin_mux(SDIO0_DETN,3);
  684. light_pin_mux(SDIO1_WPRTN,3);
  685. light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2);
  686. light_pin_cfg(SDIO0_DETN,PIN_SPEED_NORMAL,PIN_PU,2);
  687. light_pin_mux(GPIO2_30,1);
  688. light_pin_mux(GPIO2_31,1);
  689. light_pin_mux(GPIO3_0,1);
  690. light_pin_mux(GPIO3_1,1);
  691. light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  692. light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  693. light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  694. light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  695. light_pin_mux(GPIO3_3,1);
  696. light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  697. light_pin_mux(GMAC0_COL,3);
  698. light_pin_mux(GMAC0_CRS,3);
  699. light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
  700. light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
  701. /* GMAC0 pad drive strength configurate to 0xF */
  702. light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  703. light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  704. light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  705. light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  706. light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  707. light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  708. light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  709. light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  710. light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  711. light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  712. light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  713. light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  714. }
  715. #elif defined ( CONFIG_TARGET_LIGHT_FM_C910_VAL_B) || defined ( CONFIG_TARGET_LIGHT_FM_C910_B_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER)
  716. static void light_iopin_init(void)
  717. {
  718. /* aon-padmux config */
  719. light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
  720. light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
  721. light_pin_cfg(AOGPIO_7,PIN_SPEED_NORMAL,PIN_PU,2);//soc_aud_3v3_en_reg
  722. light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PU,2);//soc_aud_1v8_en_reg
  723. light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
  724. light_pin_cfg(AOGPIO_10,PIN_SPEED_NORMAL,PIN_PN,2);
  725. light_pin_cfg(AOGPIO_11,PIN_SPEED_NORMAL,PIN_PN,2);
  726. light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PN,2);
  727. light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
  728. light_pin_mux(AOGPIO_7,3);
  729. light_pin_mux(AOGPIO_8,3);
  730. light_pin_mux(AOGPIO_9,3);
  731. light_pin_mux(AOGPIO_10,3);
  732. light_pin_mux(AOGPIO_11,0);
  733. light_pin_mux(AOGPIO_12,1);
  734. light_pin_mux(AOGPIO_13,1);
  735. light_pin_mux(AOGPIO_14,0);
  736. light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PU,2); ///WL_DEV_WAKE_HOST
  737. light_pin_mux(AOGPIO_15,0);
  738. light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PU,2); ///BT_DEV_WAKE_HOST
  739. light_pin_mux(AUDIO_PA4,3); ///NC
  740. light_pin_cfg(AUDIO_PA4,PIN_SPEED_NORMAL,PIN_PN,2);
  741. light_pin_mux(AUDIO_PA5,3); ///NC
  742. light_pin_cfg(AUDIO_PA5,PIN_SPEED_NORMAL,PIN_PN,2);
  743. light_pin_mux(AUDIO_PA11,3); ///NC
  744. light_pin_cfg(AUDIO_PA11,PIN_SPEED_NORMAL,PIN_PN,2);
  745. light_pin_mux(AUDIO_PA16,3); ///NC
  746. light_pin_cfg(AUDIO_PA16,PIN_SPEED_NORMAL,PIN_PN,2);
  747. light_pin_mux(AUDIO_PA9,3);
  748. light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PU,2);// reset signal for audio-pa
  749. light_pin_mux(AUDIO_PA10,3); ///NC
  750. light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PN,2);
  751. light_pin_mux(AUDIO_PA12,3); ///NC
  752. light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PN,2);
  753. light_pin_mux(AUDIO_PA13,0);
  754. /*ap-padmux on left/top */
  755. light_pin_mux(QSPI1_CSN0,3);
  756. light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8);
  757. light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8);
  758. light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8);
  759. light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8);
  760. light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PN,8);
  761. light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,8);
  762. light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  763. light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  764. light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  765. light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  766. light_pin_mux(UART3_TXD,1);
  767. light_pin_mux(UART3_RXD,1);
  768. light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
  769. light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
  770. light_pin_mux(GPIO0_18,1);
  771. light_pin_mux(GPIO0_19,1);
  772. light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
  773. light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
  774. light_pin_mux(GPIO0_20,0);
  775. light_pin_mux(GPIO0_21,0);
  776. light_pin_mux(GPIO0_22,1);
  777. light_pin_mux(GPIO0_23,1);
  778. light_pin_mux(GPIO0_24,1);
  779. light_pin_mux(GPIO0_25,1);
  780. light_pin_mux(GPIO0_26,1);
  781. light_pin_mux(GPIO0_27,0);
  782. light_pin_mux(GPIO0_28,0);
  783. light_pin_mux(GPIO0_29,0);
  784. light_pin_mux(GPIO0_30,0);
  785. light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
  786. light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
  787. light_pin_cfg(GPIO0_27,PIN_SPEED_NORMAL,PIN_PN,2);//soc_dovdd18_ir_reg
  788. light_pin_cfg(GPIO0_28,PIN_SPEED_NORMAL,PIN_PN,2);//soc_avdd25_ir_reg
  789. light_pin_cfg(GPIO0_29,PIN_SPEED_NORMAL,PIN_PN,2);//soc_dvdd12_ir_reg
  790. light_pin_cfg(GPIO0_30,PIN_SPEED_NORMAL,PIN_PU,2);//soc_vdd_3v3_en_reg for uart/gmac/debug_port/hdmi/sd
  791. light_pin_mux(GPIO1_0,1);
  792. light_pin_mux(GPIO1_1,1);
  793. light_pin_mux(GPIO1_2,1);
  794. light_pin_mux(GPIO1_3,1);
  795. light_pin_mux(GPIO1_4,1);
  796. light_pin_mux(GPIO1_9,0);
  797. light_pin_mux(GPIO1_10,0);
  798. light_pin_mux(GPIO1_11,0);
  799. light_pin_mux(GPIO1_12,0);
  800. light_pin_mux(GPIO1_13,0);
  801. light_pin_mux(GPIO1_14,0);
  802. light_pin_mux(GPIO1_15,0);
  803. light_pin_mux(GPIO1_16,0);
  804. light_pin_mux(GPIO1_24,3);
  805. light_pin_mux(GPIO1_25,3);
  806. light_pin_cfg(GPIO1_0,PIN_SPEED_NORMAL,PIN_PN,2);
  807. light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
  808. light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
  809. light_pin_cfg(GPIO1_3,PIN_SPEED_NORMAL,PIN_PN,2);
  810. light_pin_cfg(GPIO1_4,PIN_SPEED_NORMAL,PIN_PN,2);
  811. #ifndef defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER)
  812. light_pin_cfg(GPIO1_9,PIN_SPEED_NORMAL,PIN_PN,2); //soc_vdd18_lcd0_en_reg --backup regulator
  813. #else
  814. light_pin_cfg(GPIO1_9,PIN_SPEED_NORMAL,PIN_PU,2); //soc_vdd18_lcd0_en_reg
  815. #endif
  816. light_pin_cfg(GPIO1_10,PIN_SPEED_NORMAL,PIN_PN,2);//soc_lcd0_bias_en_reg
  817. light_pin_cfg(GPIO1_11,PIN_SPEED_NORMAL,PIN_PN,2);
  818. #ifndef defined (CONFIG_TARGET_LIGHT_FM_C910_B_POWER)
  819. light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PN,2);//reg_tp_pwr_en --touch pannel
  820. #else
  821. light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PU,2);//reg_tp_pwr_en --touch pannel
  822. #endif
  823. light_pin_cfg(GPIO1_13,PIN_SPEED_NORMAL,PIN_PN,2);//soc_dovdd18_rgb_reg
  824. light_pin_cfg(GPIO1_14,PIN_SPEED_NORMAL,PIN_PN,2);//soc_dvdd12_rgb_reg
  825. light_pin_cfg(GPIO1_15,PIN_SPEED_NORMAL,PIN_PN,2);//soc_avdd28_rgb_reg
  826. light_pin_cfg(GPIO1_16,PIN_SPEED_NORMAL,PIN_PN,2);
  827. light_pin_cfg(GPIO1_24,PIN_SPEED_NORMAL,PIN_PN,2);
  828. light_pin_cfg(GPIO1_25,PIN_SPEED_NORMAL,PIN_PN,2);
  829. light_pin_mux(CLK_OUT_0,1);
  830. light_pin_mux(CLK_OUT_1,1);
  831. light_pin_mux(CLK_OUT_2,3);
  832. light_pin_mux(CLK_OUT_3,1);
  833. light_pin_cfg(CLK_OUT_2,PIN_SPEED_NORMAL,PIN_PU,2);///volume key
  834. /*ap-pdmux on righ/top*/
  835. light_pin_mux(QSPI0_SCLK,2);
  836. light_pin_mux(QSPI0_CSN0,2);
  837. light_pin_mux(QSPI0_CSN1,2);
  838. light_pin_mux(QSPI0_D0_MOSI,2);
  839. light_pin_mux(QSPI0_D1_MISO,2);
  840. light_pin_mux(QSPI0_D2_WP,2);
  841. light_pin_mux(QSPI0_D3_HOLD,2);
  842. light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  843. light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  844. light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  845. light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  846. light_pin_mux(SPI_CSN,3);
  847. light_pin_mux(SPI_MOSI,3);
  848. light_pin_mux(SPI_MISO,3);
  849. light_pin_mux(SPI_SCLK,3);
  850. light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PU,2); ///vdd5v_se_en
  851. light_pin_mux(GPIO2_18,0);
  852. light_pin_mux(GPIO2_19,0);
  853. light_pin_mux(GPIO2_20,0);
  854. light_pin_mux(GPIO2_21,0);
  855. light_pin_mux(GPIO2_22,0);
  856. light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PU,2); ///WL_HOST_WAKE_DEV
  857. light_pin_mux(GPIO2_23,0);
  858. light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PU,2); ///BT_DEV_WAKE_HOST
  859. light_pin_mux(GPIO2_24,0);
  860. light_pin_mux(GPIO2_25,0);
  861. light_pin_cfg(GPIO2_18,PIN_SPEED_NORMAL,PIN_PN,2);
  862. light_pin_cfg(GPIO2_19,PIN_SPEED_NORMAL,PIN_PN,2);
  863. light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
  864. light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PU,2); //audio-pa-reset
  865. light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2);
  866. light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2);
  867. light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2);
  868. light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PN,2);
  869. light_pin_mux(SDIO0_WPRTN,3);
  870. light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PN,2);///NC
  871. light_pin_mux(SDIO1_WPRTN,3);
  872. light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PD,2);//gpio2_28 vbus_en
  873. light_pin_mux(SDIO1_DETN,3);
  874. light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2); //gpio2_29 wcn33_en
  875. light_pin_mux(GPIO2_30,0);
  876. light_pin_mux(GPIO2_31,0);
  877. light_pin_mux(GPIO3_0,0);
  878. light_pin_mux(GPIO3_1,0);
  879. light_pin_mux(GPIO3_2,1);
  880. light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0x2);//soc_avdd28_scan_en_reg
  881. light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0x2);//soc_dovdd18_scan_reg
  882. light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0x2); //soc_dvdd12_scan_reg
  883. light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0x2);
  884. light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  885. light_pin_mux(GMAC0_COL,3);
  886. light_pin_mux(GMAC0_CRS,3);
  887. light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);//gmac0_phy0_rst
  888. light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);//gmac0_phy0_int
  889. /* GMAC0 pad drive strength configurate to 0xF */
  890. light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  891. light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  892. light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  893. light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  894. light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  895. light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  896. light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  897. light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  898. light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  899. light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  900. light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  901. light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  902. }
  903. #elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_DISCRETE)
  904. static void light_iopin_init(void)
  905. {
  906. /* aon-padmux config */
  907. light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
  908. light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
  909. light_pin_cfg(AOGPIO_7,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
  910. light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
  911. light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
  912. light_pin_cfg(AOGPIO_10,PIN_SPEED_NORMAL,PIN_PN,2);
  913. light_pin_cfg(AOGPIO_11,PIN_SPEED_NORMAL,PIN_PN,2);
  914. light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PN,2);
  915. light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
  916. light_pin_mux(AOGPIO_7,3);
  917. light_pin_mux(AOGPIO_8,3);
  918. light_pin_mux(AOGPIO_9,3);
  919. light_pin_mux(AOGPIO_10,3);
  920. light_pin_mux(AOGPIO_11,0);
  921. light_pin_mux(AOGPIO_12,0); ///aud-tx
  922. light_pin_mux(AOGPIO_13,0); ///aud-rx
  923. light_pin_mux(AOGPIO_14,0);
  924. light_pin_mux(AOGPIO_15,0);
  925. light_pin_mux(AUDIO_PA9,3);
  926. light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PN,2); ///audio-pa-rst
  927. light_pin_mux(AUDIO_PA10,3); ///aud_3v3_en
  928. light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PU,2);
  929. light_pin_mux(AUDIO_PA12,3); ///aud_1v8_en
  930. light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PU,2);
  931. light_pin_mux(AUDIO_PA13,0);
  932. /*ap-padmux on left/top */
  933. light_pin_mux(QSPI1_CSN0,3);
  934. light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8); ///se-spi
  935. light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8); ///se-spi
  936. light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8); ///se-spi
  937. light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8); ///se-spi
  938. light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PN,8); ///uart5-rx
  939. light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,8); ///uart5-tx
  940. light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  941. light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  942. light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  943. light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  944. light_pin_mux(UART3_TXD,1);
  945. light_pin_mux(UART3_RXD,1);
  946. light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
  947. light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
  948. light_pin_mux(GPIO0_18,1);
  949. light_pin_mux(GPIO0_19,1);
  950. light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
  951. light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
  952. light_pin_mux(GPIO0_20,0);
  953. light_pin_mux(GPIO0_21,0);
  954. light_pin_mux(GPIO0_22,1);
  955. light_pin_mux(GPIO0_23,1);
  956. light_pin_mux(GPIO0_24,1);
  957. light_pin_mux(GPIO0_25,1);
  958. light_pin_mux(GPIO0_26,1);
  959. light_pin_mux(GPIO0_27,0);
  960. light_pin_mux(GPIO0_28,0);
  961. light_pin_mux(GPIO0_29,0);
  962. light_pin_mux(GPIO0_30,0);
  963. light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
  964. light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
  965. light_pin_cfg(GPIO0_27,PIN_SPEED_NORMAL,PIN_PN,2); /// NC
  966. light_pin_cfg(GPIO0_28,PIN_SPEED_NORMAL,PIN_PN,2); /// AVDD25_IR_EN
  967. light_pin_cfg(GPIO0_29,PIN_SPEED_NORMAL,PIN_PN,2); /// DVDD12_IR_EN
  968. light_pin_cfg(GPIO0_30,PIN_SPEED_NORMAL,PIN_PN,2); /// vdd-3v3-en (gmac,uart,led)
  969. light_pin_mux(GPIO1_0,1);
  970. light_pin_mux(GPIO1_1,1);
  971. light_pin_mux(GPIO1_2,1);
  972. light_pin_mux(GPIO1_3,1);
  973. light_pin_mux(GPIO1_4,1);
  974. light_pin_mux(GPIO1_9,0);
  975. light_pin_mux(GPIO1_10,0);
  976. light_pin_mux(GPIO1_11,0);
  977. light_pin_mux(GPIO1_12,0);
  978. light_pin_mux(GPIO1_13,0);
  979. light_pin_mux(GPIO1_14,0);
  980. light_pin_mux(GPIO1_15,0);
  981. light_pin_mux(GPIO1_16,0);
  982. light_pin_mux(GPIO1_21,3);
  983. light_pin_mux(GPIO1_22,3);
  984. light_pin_mux(GPIO1_23,3);
  985. light_pin_mux(GPIO1_24,3);
  986. light_pin_mux(GPIO1_25,3);
  987. light_pin_cfg(GPIO1_0,PIN_SPEED_NORMAL,PIN_PN,2);
  988. light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
  989. light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
  990. light_pin_cfg(GPIO1_3,PIN_SPEED_NORMAL,PIN_PN,2);
  991. light_pin_cfg(GPIO1_4,PIN_SPEED_NORMAL,PIN_PN,2);
  992. light_pin_cfg(GPIO1_9,PIN_SPEED_NORMAL,PIN_PN,2); ///VDD18_LCD0_EN
  993. light_pin_cfg(GPIO1_10,PIN_SPEED_NORMAL,PIN_PN,2); ///LCD0_BIAS_EN
  994. light_pin_cfg(GPIO1_11,PIN_SPEED_NORMAL,PIN_PN,2); /// LCD_ID0
  995. light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PN,2); /// VDD28_TP0_EN
  996. light_pin_cfg(GPIO1_13,PIN_SPEED_NORMAL,PIN_PN,2); /// DOVDD18_RGB_EN
  997. light_pin_cfg(GPIO1_14,PIN_SPEED_NORMAL,PIN_PN,2); /// DVDD12_RGB_EN
  998. light_pin_cfg(GPIO1_15,PIN_SPEED_NORMAL,PIN_PN,2); /// AVDD28_RGB_EN
  999. light_pin_cfg(GPIO1_16,PIN_SPEED_NORMAL,PIN_PN,2); /// RGBCAM_RESET
  1000. light_pin_cfg(GPIO1_21,PIN_SPEED_NORMAL,PIN_PN,2);
  1001. light_pin_cfg(GPIO1_22,PIN_SPEED_NORMAL,PIN_PN,2);
  1002. light_pin_cfg(GPIO1_23,PIN_SPEED_NORMAL,PIN_PN,2);
  1003. light_pin_cfg(GPIO1_24,PIN_SPEED_NORMAL,PIN_PN,2);
  1004. light_pin_cfg(GPIO1_25,PIN_SPEED_NORMAL,PIN_PN,2);
  1005. light_pin_cfg(GPIO1_26,PIN_SPEED_NORMAL,PIN_PN,2); /// DBB2LEDDRIVER_EN1
  1006. light_pin_mux(CLK_OUT_0,1);
  1007. light_pin_mux(CLK_OUT_1,1);
  1008. light_pin_mux(CLK_OUT_3,1);
  1009. light_pin_mux(CLK_OUT_2,3);
  1010. light_pin_cfg(CLK_OUT_2,PIN_SPEED_NORMAL,PIN_PU,2); ///volume key
  1011. /*ap-pdmux on righ/top*/
  1012. light_pin_mux(QSPI0_SCLK,2);
  1013. light_pin_mux(QSPI0_CSN0,2);
  1014. light_pin_mux(QSPI0_CSN1,2);
  1015. light_pin_mux(QSPI0_D0_MOSI,2);
  1016. light_pin_mux(QSPI0_D1_MISO,2);
  1017. light_pin_mux(QSPI0_D2_WP,2);
  1018. light_pin_mux(QSPI0_D3_HOLD,2);
  1019. light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1020. light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1021. light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1022. light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1023. light_pin_mux(SPI_CSN,3);
  1024. light_pin_mux(SPI_MOSI,3);
  1025. light_pin_mux(SPI_MISO,3);
  1026. light_pin_mux(SPI_SCLK,3);
  1027. light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
  1028. light_pin_mux(GPIO2_18,0);
  1029. light_pin_mux(GPIO2_19,0);
  1030. light_pin_mux(GPIO2_20,0);
  1031. light_pin_mux(GPIO2_21,0);
  1032. light_pin_mux(GPIO2_22,0);
  1033. light_pin_mux(GPIO2_23,0);
  1034. light_pin_mux(GPIO2_24,0);
  1035. light_pin_mux(GPIO2_25,0);
  1036. light_pin_cfg(GPIO2_18,PIN_SPEED_NORMAL,PIN_PN,2);
  1037. light_pin_cfg(GPIO2_19,PIN_SPEED_NORMAL,PIN_PN,2);
  1038. light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
  1039. light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
  1040. light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2); ///WIFI_BT_GPIO2
  1041. light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2); ///WIFI_BT_GPIO3
  1042. light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2); ///WIFI_BT_RST_N
  1043. light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PU,2); ///KEY1
  1044. light_pin_mux(SDIO0_WPRTN,3);
  1045. light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
  1046. light_pin_mux(SDIO1_WPRTN,3);
  1047. light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2); ///VBUS_EN
  1048. light_pin_mux(SDIO1_DETN,3);
  1049. light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2); ///WCN33_EN
  1050. light_pin_mux(GPIO2_30,0);
  1051. light_pin_mux(GPIO2_31,0);
  1052. light_pin_mux(GPIO3_0,0);
  1053. light_pin_mux(GPIO3_1,0);
  1054. light_pin_mux(GPIO3_2,1);
  1055. light_pin_mux(GPIO3_3,0);
  1056. light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
  1057. light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
  1058. light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
  1059. light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0x2);
  1060. light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1061. light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 0x2); /// WAKEUP_IN_CAT1
  1062. light_pin_mux(GMAC0_COL,3);
  1063. light_pin_mux(GMAC0_CRS,3);
  1064. light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
  1065. light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
  1066. /* GMAC0 pad drive strength configurate to 0xF */
  1067. light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1068. light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1069. light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1070. light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1071. light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1072. light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1073. light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1074. light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1075. light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1076. light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1077. light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1078. light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1079. }
  1080. #elif defined (CONFIG_TARGET_LIGHT_FM_C910_VAL_ANT_REF) || defined (CONFIG_TARGET_LIGHT_FM_C910_BEAGLE)
  1081. static void light_iopin_init(void)
  1082. {
  1083. /* aon-padmux config */
  1084. light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,8);
  1085. light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,8);
  1086. light_pin_cfg(AOGPIO_7,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
  1087. light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PN,2); ///NC
  1088. light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
  1089. light_pin_cfg(AOGPIO_10,PIN_SPEED_NORMAL,PIN_PN,2);
  1090. light_pin_cfg(AOGPIO_11,PIN_SPEED_NORMAL,PIN_PN,2);
  1091. light_pin_cfg(AOGPIO_14,PIN_SPEED_NORMAL,PIN_PN,2);
  1092. light_pin_cfg(AOGPIO_15,PIN_SPEED_NORMAL,PIN_PN,2);
  1093. light_pin_mux(AOGPIO_7,3);
  1094. light_pin_mux(AOGPIO_8,3);
  1095. light_pin_mux(AOGPIO_9,3);
  1096. light_pin_mux(AOGPIO_10,3);
  1097. light_pin_mux(AOGPIO_11,0);
  1098. light_pin_mux(AOGPIO_12,1);
  1099. light_pin_mux(AOGPIO_13,1);
  1100. light_pin_mux(AOGPIO_14,0);
  1101. light_pin_mux(AOGPIO_15,0);
  1102. light_pin_mux(AUDIO_PA9,3); ///AUDIO-PA-RESET
  1103. light_pin_cfg(AUDIO_PA9,PIN_SPEED_NORMAL,PIN_PN,2);
  1104. light_pin_mux(AUDIO_PA10,3); /// AUD-3V3-EN
  1105. light_pin_cfg(AUDIO_PA10,PIN_SPEED_NORMAL,PIN_PU,2);
  1106. light_pin_mux(AUDIO_PA12,3); /// AUD-1V8-EN
  1107. light_pin_cfg(AUDIO_PA12,PIN_SPEED_NORMAL,PIN_PU,2);
  1108. light_pin_mux(AUDIO_PA13,0);
  1109. /*ap-padmux on left/top */
  1110. light_pin_mux(QSPI1_CSN0,3);
  1111. light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8); ///se-spi
  1112. light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8); ///se-spi
  1113. light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8); ///se-spi
  1114. light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8); ///se-spi
  1115. light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PN,8); ///NC
  1116. light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PN,8); ///NC
  1117. light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1118. light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1119. light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1120. light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1121. light_pin_mux(UART3_TXD,1);
  1122. light_pin_mux(UART3_RXD,1);
  1123. light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
  1124. light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
  1125. light_pin_mux(GPIO0_18,1);
  1126. light_pin_mux(GPIO0_19,1);
  1127. light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
  1128. light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
  1129. light_pin_mux(GPIO0_20,0);
  1130. light_pin_mux(GPIO0_21,0);
  1131. light_pin_mux(GPIO0_22,1);
  1132. light_pin_mux(GPIO0_23,1);
  1133. light_pin_mux(GPIO0_24,1);
  1134. light_pin_mux(GPIO0_25,1);
  1135. light_pin_mux(GPIO0_26,1);
  1136. light_pin_mux(GPIO0_27,0);
  1137. light_pin_mux(GPIO0_28,0);
  1138. light_pin_mux(GPIO0_29,0);
  1139. light_pin_mux(GPIO0_30,0);
  1140. light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
  1141. light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
  1142. light_pin_cfg(GPIO0_27,PIN_SPEED_NORMAL,PIN_PN,2); ///< NC(not used)
  1143. light_pin_cfg(GPIO0_28,PIN_SPEED_NORMAL,PIN_PN,2); ///< AVDD25_IR_EN
  1144. light_pin_cfg(GPIO0_29,PIN_SPEED_NORMAL,PIN_PN,2); ///< DVDD12_IR_EN
  1145. light_pin_cfg(GPIO0_30,PIN_SPEED_NORMAL,PIN_PU,2); ///< gmac,uart,led
  1146. light_pin_mux(GPIO1_0,1);
  1147. light_pin_mux(GPIO1_1,1);
  1148. light_pin_mux(GPIO1_2,1);
  1149. light_pin_mux(GPIO1_3,1);
  1150. light_pin_mux(GPIO1_4,1);
  1151. light_pin_mux(GPIO1_9,0);
  1152. light_pin_mux(GPIO1_10,0);
  1153. light_pin_mux(GPIO1_11,0);
  1154. light_pin_mux(GPIO1_12,0);
  1155. light_pin_mux(GPIO1_13,0);
  1156. light_pin_mux(GPIO1_14,0);
  1157. light_pin_mux(GPIO1_15,0);
  1158. light_pin_mux(GPIO1_16,0);
  1159. light_pin_mux(GPIO1_21,3);
  1160. light_pin_mux(GPIO1_22,3);
  1161. light_pin_mux(GPIO1_23,3);
  1162. light_pin_mux(GPIO1_24,3);
  1163. light_pin_mux(GPIO1_25,3);
  1164. light_pin_cfg(GPIO1_0,PIN_SPEED_NORMAL,PIN_PN,2);
  1165. light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
  1166. light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
  1167. light_pin_cfg(GPIO1_3,PIN_SPEED_NORMAL,PIN_PN,2);
  1168. light_pin_cfg(GPIO1_4,PIN_SPEED_NORMAL,PIN_PN,2);
  1169. light_pin_cfg(GPIO1_9,PIN_SPEED_NORMAL,PIN_PN,2); ///<VDD18_LCD0_EN
  1170. light_pin_cfg(GPIO1_10,PIN_SPEED_NORMAL,PIN_PN,2); ///<LCD0_BIAS_EN
  1171. light_pin_cfg(GPIO1_11,PIN_SPEED_NORMAL,PIN_PN,2);
  1172. light_pin_cfg(GPIO1_12,PIN_SPEED_NORMAL,PIN_PN,2); ///<TOUCH-PANNEL VDD28_TP0_EN
  1173. light_pin_cfg(GPIO1_13,PIN_SPEED_NORMAL,PIN_PN,2); ///<DOVDD18_RGB_EN
  1174. light_pin_cfg(GPIO1_14,PIN_SPEED_NORMAL,PIN_PN,2); ///<DVDD12_RGB_EN
  1175. light_pin_cfg(GPIO1_15,PIN_SPEED_NORMAL,PIN_PN,2); ///<AVDD28_RGB_EN
  1176. light_pin_cfg(GPIO1_16,PIN_SPEED_NORMAL,PIN_PN,2);
  1177. light_pin_cfg(GPIO1_21,PIN_SPEED_NORMAL,PIN_PN,2);
  1178. light_pin_cfg(GPIO1_22,PIN_SPEED_NORMAL,PIN_PN,2);
  1179. light_pin_cfg(GPIO1_23,PIN_SPEED_NORMAL,PIN_PN,2); ///<LED_PDN
  1180. light_pin_cfg(GPIO1_24,PIN_SPEED_NORMAL,PIN_PN,2);
  1181. light_pin_cfg(GPIO1_25,PIN_SPEED_NORMAL,PIN_PN,2);
  1182. light_pin_cfg(GPIO1_26,PIN_SPEED_NORMAL,PIN_PN,2); ///<DBB2LEDDRIVER_EN
  1183. light_pin_mux(CLK_OUT_0,1);
  1184. light_pin_mux(CLK_OUT_1,1);
  1185. light_pin_mux(CLK_OUT_3,1);
  1186. light_pin_mux(CLK_OUT_2,3);
  1187. light_pin_cfg(CLK_OUT_2,PIN_SPEED_NORMAL,PIN_PU,2); ///volume key "-"
  1188. /*ap-pdmux on righ/top*/
  1189. light_pin_mux(QSPI0_SCLK,3); ///NC
  1190. light_pin_mux(QSPI0_CSN0,3); ///NC
  1191. light_pin_mux(QSPI0_CSN1,3); ///NC
  1192. light_pin_mux(QSPI0_D0_MOSI,3); ///NC
  1193. light_pin_mux(QSPI0_D1_MISO,3); ///NC
  1194. light_pin_mux(QSPI0_D2_WP,3); ///NC
  1195. light_pin_mux(QSPI0_D3_HOLD,3); ///NC
  1196. light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1197. light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1198. light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1199. light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1200. light_pin_mux(SPI_CSN,3); /// W_DISABLE_CATE1
  1201. light_pin_mux(SPI_MOSI,3); /// NC
  1202. light_pin_mux(SPI_MISO,3); /// RERST1_N_CAT1
  1203. light_pin_mux(SPI_SCLK,3);
  1204. light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PN,2); /// NC
  1205. light_pin_mux(GPIO2_18,0);
  1206. light_pin_mux(GPIO2_19,0);
  1207. light_pin_mux(GPIO2_20,0);
  1208. light_pin_mux(GPIO2_21,0);
  1209. light_pin_mux(GPIO2_22,0);
  1210. light_pin_mux(GPIO2_23,0);
  1211. light_pin_mux(GPIO2_24,0);
  1212. light_pin_mux(GPIO2_25,0);
  1213. light_pin_cfg(GPIO2_18,PIN_SPEED_NORMAL,PIN_PN,2);
  1214. light_pin_cfg(GPIO2_19,PIN_SPEED_NORMAL,PIN_PN,2);
  1215. light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
  1216. light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PN,2); ///<NC
  1217. light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2); ///<WIFI_BT_GPIO2
  1218. light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2); ///<WIFI_BT_GPIO3
  1219. light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2); ///<WIFI_BT_RST_N
  1220. light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PU,2); ///KEY1
  1221. light_pin_mux(SDIO0_WPRTN,3);
  1222. light_pin_cfg(SDIO0_WPRTN,PIN_SPEED_NORMAL,PIN_PN,2); ///< NC
  1223. light_pin_mux(SDIO1_WPRTN,3);
  1224. light_pin_cfg(SDIO1_WPRTN,PIN_SPEED_NORMAL,PIN_PU,2); ///VBUS_EN
  1225. light_pin_mux(SDIO1_DETN,3);
  1226. light_pin_cfg(SDIO1_DETN,PIN_SPEED_NORMAL,PIN_PN,2); ///WCN_33_EN
  1227. light_pin_mux(GPIO2_30,0);
  1228. light_pin_mux(GPIO2_31,0);
  1229. light_pin_mux(GPIO3_0,0);
  1230. light_pin_mux(GPIO3_1,0);
  1231. light_pin_mux(GPIO3_2,1);
  1232. light_pin_mux(GPIO3_3,0);
  1233. light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
  1234. light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
  1235. light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0x2); ///NC
  1236. light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0x2);
  1237. light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1238. light_pin_cfg(GPIO3_3, PIN_SPEED_NORMAL, PIN_PN, 0x2);
  1239. light_pin_mux(GMAC0_COL,3);
  1240. light_pin_mux(GMAC0_CRS,3);
  1241. light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
  1242. light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
  1243. /* GMAC0 pad drive strength configurate to 0xF */
  1244. light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1245. light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1246. light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1247. light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1248. light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1249. light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1250. light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1251. light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1252. light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1253. light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1254. light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1255. light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1256. }
  1257. #else
  1258. static void light_iopin_init(void)
  1259. {
  1260. light_pin_cfg(I2C_AON_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1261. light_pin_cfg(I2C_AON_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1262. light_pin_cfg(AOGPIO_8,PIN_SPEED_NORMAL,PIN_PN,2);
  1263. light_pin_cfg(AOGPIO_9,PIN_SPEED_NORMAL,PIN_PN,2);
  1264. light_pin_mux(AOGPIO_10,1);
  1265. light_pin_mux(AOGPIO_11,1);
  1266. light_pin_mux(AOGPIO_12,1);
  1267. light_pin_mux(AOGPIO_13,1);
  1268. light_pin_mux(AUDIO_PA30,3);
  1269. /*qspi1 cs0 gpio0-1 pad strength and pin-pull mode*/
  1270. light_pin_mux(QSPI1_CSN0,3);
  1271. light_pin_cfg(QSPI1_CSN0,PIN_SPEED_NORMAL,PIN_PN,8);
  1272. light_pin_cfg(QSPI1_SCLK,PIN_SPEED_NORMAL,PIN_PN,8);
  1273. light_pin_cfg(QSPI1_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,8);
  1274. light_pin_cfg(QSPI1_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,8);
  1275. light_pin_cfg(QSPI1_D2_WP,PIN_SPEED_NORMAL,PIN_PU,8);
  1276. light_pin_cfg(QSPI1_D3_HOLD,PIN_SPEED_NORMAL,PIN_PU,8);
  1277. light_pin_cfg(I2C0_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1278. light_pin_cfg(I2C0_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1279. light_pin_cfg(I2C1_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1280. light_pin_cfg(I2C1_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1281. light_pin_mux(UART3_TXD,1);
  1282. light_pin_mux(UART3_RXD,1);
  1283. light_pin_cfg(UART3_TXD,PIN_SPEED_NORMAL,PIN_PN,2);
  1284. light_pin_cfg(UART3_RXD,PIN_SPEED_NORMAL,PIN_PN,2);
  1285. light_pin_mux(GPIO0_18,1);
  1286. light_pin_mux(GPIO0_19,1);
  1287. light_pin_cfg(GPIO0_18,PIN_SPEED_NORMAL,PIN_PN,4);
  1288. light_pin_cfg(GPIO0_19,PIN_SPEED_NORMAL,PIN_PN,4);
  1289. light_pin_mux(GPIO0_20,2);
  1290. light_pin_mux(GPIO0_21,2);
  1291. light_pin_cfg(GPIO0_20,PIN_SPEED_NORMAL,PIN_PN,2);
  1292. light_pin_cfg(GPIO0_21,PIN_SPEED_NORMAL,PIN_PN,2);
  1293. light_pin_cfg(GPIO0_30,PIN_SPEED_NORMAL,PIN_PU,2);
  1294. light_pin_mux(GPIO1_0,1);
  1295. light_pin_mux(GPIO1_1,1);
  1296. light_pin_mux(GPIO1_2,1);
  1297. light_pin_mux(GPIO1_3,1);
  1298. light_pin_mux(GPIO1_4,1);
  1299. light_pin_cfg(GPIO1_0,PIN_SPEED_NORMAL,PIN_PN,2);
  1300. light_pin_cfg(GPIO1_1,PIN_SPEED_NORMAL,PIN_PN,2);
  1301. light_pin_cfg(GPIO1_2,PIN_SPEED_NORMAL,PIN_PN,2);
  1302. light_pin_cfg(GPIO1_3,PIN_SPEED_NORMAL,PIN_PN,2);
  1303. light_pin_cfg(GPIO1_4,PIN_SPEED_NORMAL,PIN_PN,2);
  1304. light_pin_mux(GPIO1_24,3);
  1305. light_pin_cfg(GPIO1_24,PIN_SPEED_NORMAL,PIN_PD,2);
  1306. light_pin_mux(GPIO1_25,3);
  1307. light_pin_cfg(GPIO1_25,PIN_SPEED_NORMAL,PIN_PD,2);
  1308. light_pin_mux(CLK_OUT_0,1);
  1309. light_pin_mux(CLK_OUT_1,1);
  1310. light_pin_mux(CLK_OUT_2,1);
  1311. light_pin_mux(CLK_OUT_3,1);
  1312. light_pin_cfg(I2C2_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1313. light_pin_cfg(I2C2_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1314. light_pin_cfg(I2C3_SCL,PIN_SPEED_NORMAL,PIN_PN,4);
  1315. light_pin_cfg(I2C3_SDA,PIN_SPEED_NORMAL,PIN_PN,4);
  1316. light_pin_mux(GPIO2_18,1);
  1317. light_pin_mux(GPIO2_19,1);
  1318. light_pin_mux(GPIO2_20,1);
  1319. light_pin_mux(GPIO2_21,1);
  1320. light_pin_mux(GPIO2_22,1);
  1321. light_pin_mux(GPIO2_23,1);
  1322. light_pin_mux(GPIO2_24,1);
  1323. light_pin_mux(GPIO2_25,1);
  1324. light_pin_cfg(GPIO2_13,PIN_SPEED_NORMAL,PIN_PD,2);
  1325. light_pin_cfg(GPIO2_18,PIN_SPEED_NORMAL,PIN_PN,2);
  1326. light_pin_cfg(GPIO2_19,PIN_SPEED_NORMAL,PIN_PN,2);
  1327. light_pin_cfg(GPIO2_20,PIN_SPEED_NORMAL,PIN_PN,2);
  1328. light_pin_cfg(GPIO2_21,PIN_SPEED_NORMAL,PIN_PN,2);
  1329. light_pin_cfg(GPIO2_22,PIN_SPEED_NORMAL,PIN_PN,2);
  1330. light_pin_cfg(GPIO2_23,PIN_SPEED_NORMAL,PIN_PN,2);
  1331. light_pin_cfg(GPIO2_24,PIN_SPEED_NORMAL,PIN_PN,2);
  1332. light_pin_cfg(GPIO2_25,PIN_SPEED_NORMAL,PIN_PN,2);
  1333. light_pin_cfg(GPIO2_18, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1334. light_pin_cfg(GPIO2_19, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1335. light_pin_cfg(GPIO2_20, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1336. light_pin_cfg(GPIO2_21, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1337. light_pin_cfg(GPIO2_22, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1338. light_pin_cfg(GPIO2_23, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1339. light_pin_cfg(GPIO2_24, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1340. light_pin_cfg(GPIO2_25, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1341. light_pin_mux(SDIO0_WPRTN,3);
  1342. light_pin_mux(SDIO1_WPRTN,3);
  1343. light_pin_mux(SDIO1_DETN,3);
  1344. light_pin_mux(GPIO2_30,1);
  1345. light_pin_mux(GPIO2_31,1);
  1346. light_pin_mux(GPIO3_0,1);
  1347. light_pin_mux(GPIO3_1,1);
  1348. light_pin_mux(GPIO3_2,1);
  1349. light_pin_cfg(GPIO2_30, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1350. light_pin_cfg(GPIO2_31, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1351. light_pin_cfg(GPIO3_0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1352. light_pin_cfg(GPIO3_1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1353. light_pin_cfg(GPIO3_2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1354. light_pin_mux(GMAC0_COL,3);
  1355. light_pin_mux(GMAC0_CRS,3);
  1356. light_pin_cfg(GMAC0_COL,PIN_SPEED_NORMAL,PIN_PU,2);
  1357. light_pin_cfg(GMAC0_CRS,PIN_SPEED_NORMAL,PIN_PU,2);
  1358. /*spi0 cs0 gpio2-15 pad strength and pin-pull mode*/
  1359. light_pin_mux(SPI_CSN,3);
  1360. light_pin_cfg(SPI_CSN,PIN_SPEED_NORMAL,PIN_PN,5);
  1361. light_pin_cfg(SPI_SCLK,PIN_SPEED_NORMAL,PIN_PN,5);
  1362. light_pin_cfg(SPI_MISO,PIN_SPEED_NORMAL,PIN_PU,5);
  1363. light_pin_cfg(SPI_MOSI,PIN_SPEED_NORMAL,PIN_PU,5);
  1364. /*qspi0 cs0 gpio2-3, pad strength and pin-pull mode */
  1365. light_pin_mux(QSPI0_CSN0,3);
  1366. light_pin_cfg(QSPI0_CSN0,PIN_SPEED_NORMAL,PIN_PN,0xA);
  1367. light_pin_cfg(QSPI0_SCLK,PIN_SPEED_NORMAL,PIN_PN,0xA);
  1368. light_pin_cfg(QSPI0_D0_MOSI,PIN_SPEED_NORMAL,PIN_PU,0xA);
  1369. light_pin_cfg(QSPI0_D1_MISO,PIN_SPEED_NORMAL,PIN_PU,0xA);
  1370. light_pin_cfg(QSPI0_D2_WP,PIN_SPEED_NORMAL,PIN_PU,0xA);
  1371. light_pin_cfg(QSPI0_D3_HOLD,PIN_SPEED_NORMAL,PIN_PU,0xA);
  1372. /* GMAC0 pad drive strength configurate to 0xF */
  1373. light_pin_cfg(GMAC0_TX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1374. light_pin_cfg(GMAC0_RX_CLK, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1375. light_pin_cfg(GMAC0_TXEN, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1376. light_pin_cfg(GMAC0_TXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1377. light_pin_cfg(GMAC0_TXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1378. light_pin_cfg(GMAC0_TXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1379. light_pin_cfg(GMAC0_TXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1380. light_pin_cfg(GMAC0_RXDV, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1381. light_pin_cfg(GMAC0_RXD0, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1382. light_pin_cfg(GMAC0_RXD1, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1383. light_pin_cfg(GMAC0_RXD2, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1384. light_pin_cfg(GMAC0_RXD3, PIN_SPEED_NORMAL, PIN_PN, 0xF);
  1385. }
  1386. #endif
  1387. static void light_pwm_config(void)
  1388. {
  1389. /* pwm0 */
  1390. writel(0x4b0, (void *)0xFFEC01C008);
  1391. writel(0x258, (void *)0xFFEC01C00c);
  1392. writel(0x328, (void *)0xFFEC01C000);
  1393. }
  1394. int board_init(void)
  1395. {
  1396. light_iopmp_config();
  1397. light_iopin_init();
  1398. clk_config();
  1399. gmac_hw_init();
  1400. usb_clk_config();
  1401. usb_phy_test_config();
  1402. wifi_en();
  1403. iso7816_card_glb_interrupt_disable();
  1404. light_pwm_config();
  1405. return 0;
  1406. }
  1407. static void light_usb_boot_check(void)
  1408. {
  1409. int boot_mode;
  1410. uchar env_enetaddr[6]={0};
  1411. uchar env_enet1addr[6]={0};
  1412. int env_ethaddr_flag,env_eth1addr_flag;
  1413. boot_mode = readl((void *)SOC_OM_ADDRBASE) & 0x7;
  1414. if (boot_mode & BIT(2))
  1415. return;
  1416. #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
  1417. env_set("usb_fastboot", "yes");
  1418. #endif
  1419. /*Get this version ethaddr(mac addr) env,which follows one board, trans to next version env*/
  1420. env_ethaddr_flag = eth_env_get_enetaddr_by_index("eth", 0, env_enetaddr);
  1421. env_eth1addr_flag = eth_env_get_enetaddr_by_index("eth", 1, env_enet1addr);
  1422. run_command("env default -a -f", 0);
  1423. /*If mac addr in last version env is valid, before save,inherit env mac addr */
  1424. if(env_ethaddr_flag){
  1425. eth_env_set_enetaddr_by_index("eth", 0, env_enetaddr);
  1426. run_command("printenv ethaddr",0);
  1427. }else{
  1428. printf("env ethaddr not exist or invalid\n");
  1429. }
  1430. if(env_eth1addr_flag){
  1431. eth_env_set_enetaddr_by_index("eth", 1, env_enet1addr);
  1432. run_command("printenv eth1addr",0);
  1433. }else{
  1434. printf("env eth1addr not exist or invalid\n");
  1435. }
  1436. run_command("env save", 0);
  1437. run_command("run gpt_partition", 0);
  1438. run_command("fastboot usb 0", 0);
  1439. }
  1440. int board_late_init(void)
  1441. {
  1442. #if CONFIG_IS_ENABLED(LIGHT_SEC_UPGRADE)
  1443. extern void sec_upgrade_thread(void);
  1444. extern void sec_firmware_version_dump(void);
  1445. sec_upgrade_thread();
  1446. sec_firmware_version_dump();
  1447. #endif
  1448. light_usb_boot_check();
  1449. ap_peri_clk_disable();
  1450. return 0;
  1451. }
  1452. static int do_env_ethaddr_check(cmd_tbl_t *cmdtp, int flag, int argc,
  1453. char * const argv[])
  1454. {
  1455. uchar env_enetaddr[6]={0};
  1456. int i;
  1457. for(i=0;i<2;i++){
  1458. if(eth_env_get_enetaddr_by_index("eth", i, env_enetaddr)){
  1459. printf("env (eth%d) MAC address ok- %pM\n",i, env_enetaddr);
  1460. }
  1461. else {
  1462. printf("env (eth%d) MAC address invalid - %pM\n",i, env_enetaddr);
  1463. printf(" * Check that the Ethernet address (MAC) is not 00:00:00:00:00:00,\n"
  1464. " is not a multicast address(first byte low bit zero is not multi addr), \n"
  1465. "and is not FF:FF:FF:FF:FF:FF.\n");
  1466. }
  1467. }
  1468. return 0;
  1469. }
  1470. U_BOOT_CMD(
  1471. chk_ethaddr, 2, 0, do_env_ethaddr_check,
  1472. "check ethaddrs in environment variables is valid",
  1473. ""
  1474. );