wcd-usbss-regmap.c 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  4. */
  5. #include <linux/regmap.h>
  6. #include <linux/device.h>
  7. #include "wcd-usbss-registers.h"
  8. extern const u8 wcd_usbss_reg_access[WCD_USBSS_NUM_REGISTERS];
  9. static struct reg_default wcd_usbss_defaults[] = {
  10. {WCD_USBSS_PAGE0_PAGE, 0x00},
  11. {WCD_USBSS_PMP_EN, 0x00},
  12. {WCD_USBSS_PMP_OUT1, 0x08},
  13. {WCD_USBSS_PMP_OUT2, 0x07},
  14. {WCD_USBSS_PMP_CLK, 0x10},
  15. {WCD_USBSS_PMP_MISC1, 0x00},
  16. {WCD_USBSS_PMP_MISC2, 0x00},
  17. {WCD_USBSS_RCO_EN, 0x00},
  18. {WCD_USBSS_RCO_RST, 0x01},
  19. {WCD_USBSS_RCO_CLK, 0x00},
  20. {WCD_USBSS_RCO_IBIAS, 0x00},
  21. {WCD_USBSS_RCO_MISC1, 0x00},
  22. {WCD_USBSS_RCO_MISC2, 0x01},
  23. {WCD_USBSS_DP_EN, 0x04},
  24. {WCD_USBSS_DP_BIAS, 0x0f},
  25. {WCD_USBSS_DP_DN_MISC1, 0x00},
  26. {WCD_USBSS_DN_EN, 0x04},
  27. {WCD_USBSS_DN_BIAS, 0x0f},
  28. {WCD_USBSS_DP_DN_MISC2, 0x34},
  29. {WCD_USBSS_MG1_EN, 0x0a},
  30. {WCD_USBSS_MG1_BIAS, 0x0f},
  31. {WCD_USBSS_MG1_CTSNS_CTL, 0x21},
  32. {WCD_USBSS_MG1_MISC, 0x00},
  33. {WCD_USBSS_MG2_EN, 0x0a},
  34. {WCD_USBSS_MG2_BIAS, 0x0f},
  35. {WCD_USBSS_MG2_CTSNS_CTL, 0x21},
  36. {WCD_USBSS_MG2_MISC, 0x00},
  37. {WCD_USBSS_BIAS_TOP, 0x00},
  38. {WCD_USBSS_VREF_CTRL, 0x40},
  39. {WCD_USBSS_TOP_MISC1, 0x20},
  40. {WCD_USBSS_TOP_MISC2, 0x0f},
  41. {WCD_USBSS_STATUS_1, 0x00},
  42. {WCD_USBSS_STATUS_2, 0x00},
  43. {WCD_USBSS_STATUS_3, 0x00},
  44. {WCD_USBSS_EXT_LIN_EN, 0x00},
  45. {WCD_USBSS_INT_LIN_EN, 0x00},
  46. {WCD_USBSS_COMBINER_IREF_PROG_1, 0x88},
  47. {WCD_USBSS_COMBINER_IREF_PROG_2, 0x88},
  48. {WCD_USBSS_EXTSW_AMP_BIAS, 0x00},
  49. {WCD_USBSS_INTSW_ILIFT, 0x88},
  50. {WCD_USBSS_EXT_SW_CTRL_1, 0x00},
  51. {WCD_USBSS_EXT_SW_CTRL_2, 0x0c},
  52. {WCD_USBSS_INT_SW_CTRL_1, 0x00},
  53. {WCD_USBSS_INT_SW_CTRL_2, 0x1b},
  54. {WCD_USBSS_INT_SW_CTRL_3, 0x90},
  55. {WCD_USBSS_ATEST_CTRL, 0x00},
  56. {WCD_USBSS_EXT_LIN_AUD_CEQ_PRG, 0xcc},
  57. {WCD_USBSS_EXT_LIN_GND_CEQ_PRG, 0xcc},
  58. {WCD_USBSS_LIN_STATUS_1, 0x00},
  59. {WCD_USBSS_LIN_STATUS_2, 0x00},
  60. {WCD_USBSS_LIN_STATUS_3, 0x00},
  61. {WCD_USBSS_LIN_STATUS_4, 0x00},
  62. {WCD_USBSS_SW_LIN_CTRL, 0x00},
  63. {WCD_USBSS_SW_LIN_CTRL_1, 0x00},
  64. {WCD_USBSS_LDO_3P6, 0x00},
  65. {WCD_USBSS_SWITCH_BANK_ATEST, 0x00},
  66. {WCD_USBSS_EQ_EN, 0x28},
  67. {WCD_USBSS_EQ_MISC, 0x19},
  68. {WCD_USBSS_STATUS_MISC, 0x00},
  69. {WCD_USBSS_FSM_DELAYS1, 0x00},
  70. {WCD_USBSS_FSM_DELAYS2, 0x00},
  71. {WCD_USBSS_FSM_DELAYS3, 0x00},
  72. {WCD_USBSS_FSM_DELAYS4, 0x00},
  73. {WCD_USBSS_FSM_DELAYS5, 0x00},
  74. {WCD_USBSS_FSM_DELAYS6, 0x00},
  75. {WCD_USBSS_FSM_DELAYS7, 0x00},
  76. {WCD_USBSS_FSM_DELAYS8, 0x00},
  77. {WCD_USBSS_FSM_DEBUG_SIGNALS, 0x00},
  78. {WCD_USBSS_FSM_OVERRIDE, 0x40},
  79. {WCD_USBSS_ENABLE_STATUS, 0xe0},
  80. {WCD_USBSS_FRZ_STATUS, 0x80},
  81. {WCD_USBSS_DPR_DNL_SWITCH_ENABLE_STATUS, 0x90},
  82. {WCD_USBSS_SBU_GSBU_SWITCH_ENABLE_STATUS, 0x00},
  83. {WCD_USBSS_DPAUX_SWITCH_ENABLE_STATUS, 0x00},
  84. {WCD_USBSS_DPR_DNL_EXTFET_GATE_MUX_STATUS, 0x44},
  85. {WCD_USBSS_SBU_EXTFET_GATE_MUX_OVP_STATUS, 0x00},
  86. {WCD_USBSS_CP_LIN_CNTL_STATUS, 0xc0},
  87. {WCD_USBSS_DISP_AUXP_THRESH, 0x60},
  88. {WCD_USBSS_DISP_AUXP_CTL, 0xc3},
  89. {WCD_USBSS_DISP_AUXM_THRESH, 0xa0},
  90. {WCD_USBSS_DISP_AUXM_CTL, 0xc3},
  91. {WCD_USBSS_CTRL_0, 0x90},
  92. {WCD_USBSS_CTRL_1, 0x00},
  93. {WCD_USBSS_DC_TRIMCODE_1, 0x00},
  94. {WCD_USBSS_DC_TRIMCODE_2, 0x00},
  95. {WCD_USBSS_DC_TRIMCODE_3, 0x00},
  96. {WCD_USBSS_AC_TRIMCODE_1, 0x00},
  97. {WCD_USBSS_AC_TRIMCODE_2, 0x00},
  98. {WCD_USBSS_CPLDO_CTL1, 0x08},
  99. {WCD_USBSS_CPLDO_CTL2, 0x00},
  100. {WCD_USBSS_LUT_REG0, 0x00},
  101. {WCD_USBSS_LUT_REG1, 0x00},
  102. {WCD_USBSS_LUT_REG2, 0x00},
  103. {WCD_USBSS_LUT_REG3, 0x00},
  104. {WCD_USBSS_LUT_REG4, 0x00},
  105. {WCD_USBSS_LUT_REG5, 0x00},
  106. {WCD_USBSS_LUT_REG6, 0x00},
  107. {WCD_USBSS_LUT_REG7, 0x00},
  108. {WCD_USBSS_LUT_REG8, 0x00},
  109. {WCD_USBSS_LUT_REG9, 0x00},
  110. {WCD_USBSS_LUT_REG10, 0x00},
  111. {WCD_USBSS_LUT_REG11, 0x00},
  112. {WCD_USBSS_LUT_REG12, 0x00},
  113. {WCD_USBSS_LUT_REG13, 0x00},
  114. {WCD_USBSS_LUT_REG14, 0x00},
  115. {WCD_USBSS_LUT_REG15, 0x00},
  116. {WCD_USBSS_LUT_REG16, 0x00},
  117. {WCD_USBSS_LUT_REG17, 0x00},
  118. {WCD_USBSS_LUT_REG18, 0x00},
  119. {WCD_USBSS_LUT_REG19, 0x00},
  120. {WCD_USBSS_LUT_REG20, 0x00},
  121. {WCD_USBSS_LUT_REG21, 0x00},
  122. {WCD_USBSS_LUT_REG22, 0x00},
  123. {WCD_USBSS_LUT_REG23, 0x00},
  124. {WCD_USBSS_LUT_REG24, 0x00},
  125. {WCD_USBSS_LUT_REG25, 0x00},
  126. {WCD_USBSS_LUT_REG26, 0x00},
  127. {WCD_USBSS_LUT_REG27, 0x00},
  128. {WCD_USBSS_LUT_REG28, 0x00},
  129. {WCD_USBSS_LUT_REG29, 0x00},
  130. {WCD_USBSS_LUT_REG30, 0x00},
  131. {WCD_USBSS_LUT_REG31, 0x00},
  132. {WCD_USBSS_LUT_REG32, 0x00},
  133. {WCD_USBSS_LUT_REG33, 0x00},
  134. {WCD_USBSS_LUT_REG34, 0x00},
  135. {WCD_USBSS_LUT_REG35, 0x00},
  136. {WCD_USBSS_LUT_REG36, 0x00},
  137. {WCD_USBSS_LUT_REG37, 0x00},
  138. {WCD_USBSS_LUT_REG38, 0x00},
  139. {WCD_USBSS_LUT_REG39, 0x00},
  140. {WCD_USBSS_LUT_REG40, 0x00},
  141. {WCD_USBSS_LUT_REG41, 0x00},
  142. {WCD_USBSS_LUT_REG42, 0x00},
  143. {WCD_USBSS_LUT_REG43, 0x00},
  144. {WCD_USBSS_LUT_REG44, 0x00},
  145. {WCD_USBSS_LUT_REG45, 0x00},
  146. {WCD_USBSS_LUT_REG46, 0x00},
  147. {WCD_USBSS_LUT_REG47, 0x00},
  148. {WCD_USBSS_LUT_REG48, 0x00},
  149. {WCD_USBSS_LUT_REG49, 0x00},
  150. {WCD_USBSS_LUT_REG50, 0x00},
  151. {WCD_USBSS_LUT_REG51, 0x00},
  152. {WCD_USBSS_LUT_REG52, 0x00},
  153. {WCD_USBSS_LUT_REG53, 0x00},
  154. {WCD_USBSS_LUT_REG54, 0x00},
  155. {WCD_USBSS_LUT_REG55, 0x00},
  156. {WCD_USBSS_LUT_REG56, 0x00},
  157. {WCD_USBSS_LUT_REG57, 0x00},
  158. {WCD_USBSS_LUT_REG58, 0x00},
  159. {WCD_USBSS_LUT_REG59, 0x00},
  160. {WCD_USBSS_LUT_REG60, 0x00},
  161. {WCD_USBSS_LUT_REG61, 0x00},
  162. {WCD_USBSS_LUT_REG62, 0x00},
  163. {WCD_USBSS_LUT_REG63, 0x00},
  164. {WCD_USBSS_LUT_REG64, 0x00},
  165. {WCD_USBSS_LUT_REG65, 0x00},
  166. {WCD_USBSS_LUT_REG66, 0x00},
  167. {WCD_USBSS_LUT_REG67, 0x00},
  168. {WCD_USBSS_LUT_REG68, 0x00},
  169. {WCD_USBSS_LUT_REG69, 0x00},
  170. {WCD_USBSS_LUT_REG70, 0x00},
  171. {WCD_USBSS_LUT_REG71, 0x00},
  172. {WCD_USBSS_LUT_REG72, 0x00},
  173. {WCD_USBSS_LUT_REG73, 0x00},
  174. {WCD_USBSS_LUT_REG74, 0x00},
  175. {WCD_USBSS_LUT_REG75, 0x00},
  176. {WCD_USBSS_LUT_REG76, 0x00},
  177. {WCD_USBSS_LUT_REG77, 0x00},
  178. {WCD_USBSS_LUT_REG78, 0x00},
  179. {WCD_USBSS_LUT_REG79, 0x00},
  180. {WCD_USBSS_LUT_REG80, 0x00},
  181. {WCD_USBSS_LUT_REG81, 0x00},
  182. {WCD_USBSS_LUT_REG82, 0x00},
  183. {WCD_USBSS_LUT_REG83, 0x00},
  184. {WCD_USBSS_LUT_REG84, 0x00},
  185. {WCD_USBSS_LUT_REG85, 0x00},
  186. {WCD_USBSS_LUT_REG86, 0x00},
  187. {WCD_USBSS_LUT_REG87, 0x00},
  188. {WCD_USBSS_LUT_REG88, 0x00},
  189. {WCD_USBSS_LUT_REG89, 0x00},
  190. {WCD_USBSS_LUT_REG90, 0x00},
  191. {WCD_USBSS_LUT_REG91, 0x00},
  192. {WCD_USBSS_LUT_REG92, 0x00},
  193. {WCD_USBSS_LUT_REG93, 0x00},
  194. {WCD_USBSS_LUT_REG94, 0x00},
  195. {WCD_USBSS_LUT_REG95, 0x00},
  196. {WCD_USBSS_LUT_REG96, 0x00},
  197. {WCD_USBSS_LUT_REG97, 0x00},
  198. {WCD_USBSS_LUT_REG98, 0x00},
  199. {WCD_USBSS_LUT_REG99, 0x00},
  200. {WCD_USBSS_LUT_REG100, 0x00},
  201. {WCD_USBSS_LUT_REG101, 0x00},
  202. {WCD_USBSS_LUT_REG102, 0x00},
  203. {WCD_USBSS_LUT_REG103, 0x00},
  204. {WCD_USBSS_LUT_REG104, 0x00},
  205. {WCD_USBSS_LUT_REG105, 0x00},
  206. {WCD_USBSS_LUT_REG106, 0x00},
  207. {WCD_USBSS_LUT_REG107, 0x00},
  208. {WCD_USBSS_LUT_REG108, 0x00},
  209. {WCD_USBSS_LUT_REG109, 0x00},
  210. {WCD_USBSS_LUT_REG110, 0x00},
  211. {WCD_USBSS_LUT_REG111, 0x00},
  212. {WCD_USBSS_LUT_REG112, 0x00},
  213. {WCD_USBSS_LUT_REG113, 0x00},
  214. {WCD_USBSS_LUT_REG114, 0x00},
  215. {WCD_USBSS_LUT_REG115, 0x00},
  216. {WCD_USBSS_LUT_REG116, 0x00},
  217. {WCD_USBSS_LUT_REG117, 0x00},
  218. {WCD_USBSS_LUT_REG118, 0x00},
  219. {WCD_USBSS_LUT_REG119, 0x00},
  220. {WCD_USBSS_LUT_REG120, 0x00},
  221. {WCD_USBSS_LUT_REG121, 0x00},
  222. {WCD_USBSS_LUT_REG122, 0x00},
  223. {WCD_USBSS_LUT_REG123, 0x00},
  224. {WCD_USBSS_LUT_REG124, 0x00},
  225. {WCD_USBSS_LUT_REG125, 0x00},
  226. {WCD_USBSS_LUT_REG126, 0x00},
  227. {WCD_USBSS_LUT_REG127, 0x00},
  228. {WCD_USBSS_LUT_REG128, 0x00},
  229. {WCD_USBSS_LUT_REG129, 0x00},
  230. {WCD_USBSS_LUT_REG130, 0x00},
  231. {WCD_USBSS_LUT_REG131, 0x00},
  232. {WCD_USBSS_LUT_REG132, 0x00},
  233. {WCD_USBSS_LUT_REG133, 0x00},
  234. {WCD_USBSS_LUT_REG134, 0x00},
  235. {WCD_USBSS_LUT_REG135, 0x00},
  236. {WCD_USBSS_LUT_REG136, 0x00},
  237. {WCD_USBSS_LUT_REG137, 0x00},
  238. {WCD_USBSS_LUT_REG138, 0x00},
  239. {WCD_USBSS_LUT_REG139, 0x00},
  240. {WCD_USBSS_LUT_REG140, 0x00},
  241. {WCD_USBSS_LUT_REG141, 0x00},
  242. {WCD_USBSS_LUT_REG142, 0x00},
  243. {WCD_USBSS_LUT_REG143, 0x00},
  244. {WCD_USBSS_LUT_REG144, 0x00},
  245. {WCD_USBSS_LUT_REG145, 0x00},
  246. {WCD_USBSS_LUT_REG146, 0x00},
  247. {WCD_USBSS_LUT_REG147, 0x00},
  248. {WCD_USBSS_LUT_REG148, 0x00},
  249. {WCD_USBSS_LUT_REG149, 0x00},
  250. {WCD_USBSS_LUT_REG150, 0x00},
  251. {WCD_USBSS_LUT_REG151, 0x00},
  252. {WCD_USBSS_LUT_REG152, 0x00},
  253. {WCD_USBSS_LUT_REG153, 0x00},
  254. {WCD_USBSS_LUT_REG154, 0x00},
  255. {WCD_USBSS_LUT_REG155, 0x00},
  256. {WCD_USBSS_LUT_REG156, 0x00},
  257. {WCD_USBSS_LUT_REG157, 0x00},
  258. {WCD_USBSS_LUT_REG158, 0x00},
  259. {WCD_USBSS_LUT_REG159, 0x00},
  260. {WCD_USBSS_LUT_REG160, 0x00},
  261. {WCD_USBSS_LUT_REG161, 0x00},
  262. {WCD_USBSS_LUT_REG162, 0x00},
  263. {WCD_USBSS_LUT_REG163, 0x00},
  264. {WCD_USBSS_LUT_REG164, 0x00},
  265. {WCD_USBSS_LUT_REG165, 0x00},
  266. {WCD_USBSS_LUT_REG166, 0x00},
  267. {WCD_USBSS_LUT_REG167, 0x00},
  268. {WCD_USBSS_LUT_REG168, 0x00},
  269. {WCD_USBSS_LUT_REG169, 0x00},
  270. {WCD_USBSS_LUT_REG170, 0x00},
  271. {WCD_USBSS_LUT_REG171, 0x00},
  272. {WCD_USBSS_LUT_REG172, 0x00},
  273. {WCD_USBSS_LUT_REG173, 0x00},
  274. {WCD_USBSS_LUT_REG174, 0x00},
  275. {WCD_USBSS_LUT_REG175, 0x00},
  276. {WCD_USBSS_LUT_REG176, 0x00},
  277. {WCD_USBSS_LUT_REG177, 0x00},
  278. {WCD_USBSS_LUT_REG178, 0x00},
  279. {WCD_USBSS_LUT_REG179, 0x00},
  280. {WCD_USBSS_LUT_REG180, 0x00},
  281. {WCD_USBSS_LUT_REG181, 0x00},
  282. {WCD_USBSS_LUT_REG182, 0x00},
  283. {WCD_USBSS_LUT_REG183, 0x00},
  284. {WCD_USBSS_LUT_REG184, 0x00},
  285. {WCD_USBSS_LUT_REG185, 0x00},
  286. {WCD_USBSS_LUT_REG186, 0x00},
  287. {WCD_USBSS_LUT_REG187, 0x00},
  288. {WCD_USBSS_LUT_REG188, 0x00},
  289. {WCD_USBSS_LUT_REG189, 0x00},
  290. {WCD_USBSS_LUT_REG190, 0x00},
  291. {WCD_USBSS_LUT_REG191, 0x00},
  292. {WCD_USBSS_LUT_REG192, 0x00},
  293. {WCD_USBSS_LUT_REG193, 0x00},
  294. {WCD_USBSS_LUT_REG194, 0x00},
  295. {WCD_USBSS_LUT_REG195, 0x00},
  296. {WCD_USBSS_LUT_REG196, 0x00},
  297. {WCD_USBSS_LUT_REG197, 0x00},
  298. {WCD_USBSS_LUT_REG198, 0x00},
  299. {WCD_USBSS_LUT_REG199, 0x00},
  300. {WCD_USBSS_LUT_REG200, 0x00},
  301. {WCD_USBSS_LUT_REG201, 0x00},
  302. {WCD_USBSS_LUT_REG202, 0x00},
  303. {WCD_USBSS_LUT_REG203, 0x00},
  304. {WCD_USBSS_LUT_REG204, 0x00},
  305. {WCD_USBSS_LUT_REG205, 0x00},
  306. {WCD_USBSS_LUT_REG206, 0x00},
  307. {WCD_USBSS_LUT_REG207, 0x00},
  308. {WCD_USBSS_LUT_REG208, 0x00},
  309. {WCD_USBSS_LUT_REG209, 0x00},
  310. {WCD_USBSS_LUT_REG210, 0x00},
  311. {WCD_USBSS_DATA_SEL, 0x2b},
  312. {WCD_USBSS_OFF3, 0x00},
  313. {WCD_USBSS_OFF2_LSB, 0x78},
  314. {WCD_USBSS_OFF2_MSB, 0x01},
  315. {WCD_USBSS_OFF1_LSB, 0x7f},
  316. {WCD_USBSS_OFF1_MSB, 0x01},
  317. {WCD_USBSS_AUD_L, 0x00},
  318. {WCD_USBSS_AUD_R, 0x00},
  319. {WCD_USBSS_GND_L, 0x00},
  320. {WCD_USBSS_GND_R, 0x00},
  321. {WCD_USBSS_USB_DIG_PAGE, 0x00},
  322. {WCD_USBSS_OVP_STATUS_SELF_CLEARING, 0x00},
  323. {WCD_USBSS_OVP_STATUS, 0x00},
  324. {WCD_USBSS_SWITCH_SETTINGS_ENABLE, 0x98},
  325. {WCD_USBSS_SWITCH_SELECT0, 0x14},
  326. {WCD_USBSS_SWITCH_SELECT1, 0x00},
  327. {WCD_USBSS_SWITCH_STATUS0, 0x00},
  328. {WCD_USBSS_SWITCH_STATUS1, 0x00},
  329. {WCD_USBSS_AUD_LEFT_SW_SLOW, 0x01},
  330. {WCD_USBSS_AUD_RIGHT_SW_SLOW, 0x01},
  331. {WCD_USBSS_AUD_MIC_SW_SLOW, 0x01},
  332. {WCD_USBSS_AUD_SENSE_SW_SLOW, 0x01},
  333. {WCD_USBSS_AUD_GND_SW_SLOW, 0x01},
  334. {WCD_USBSS_DELAY_R_SW, 0x00},
  335. {WCD_USBSS_DELAY_MIC_SW, 0x00},
  336. {WCD_USBSS_DELAY_SENSE_SW, 0x00},
  337. {WCD_USBSS_DELAY_GND_SW, 0x00},
  338. {WCD_USBSS_DELAY_L_SW, 0x00},
  339. {WCD_USBSS_EXT_FET_ENABLE_DELAY, 0x0f},
  340. {WCD_USBSS_FUNCTION_ENABLE, 0x01},
  341. {WCD_USBSS_USB_RST_CTL, 0x03},
  342. {WCD_USBSS_EQUALIZER1, 0xc0},
  343. {WCD_USBSS_SPARE_0, 0x00},
  344. {WCD_USBSS_DIG_FUNCTIONS_STATUS, 0x00},
  345. {WCD_USBSS_CLK_SOURCE, 0x00},
  346. {WCD_USBSS_USB_SS_CNTL, 0x0d},
  347. {WCD_USBSS_SPARE_1, 0x00},
  348. {WCD_USBSS_ANA_FUNCTIONS_STATUS, 0x00},
  349. {WCD_USBSS_FSM_STATUS, 0x00},
  350. {WCD_USBSS_SPARE_14, 0x00},
  351. {WCD_USBSS_SAFE_STATE_PD_DPAUX, 0x00},
  352. {WCD_USBSS_AUDIO_FSM_START, 0x00},
  353. {WCD_USBSS_FSM_RESET, 0x00},
  354. {WCD_USBSS_CHIP_ID0, 0x00},
  355. {WCD_USBSS_CHIP_ID1, 0x00},
  356. {WCD_USBSS_CHIP_ID2, 0x01},
  357. {WCD_USBSS_CHIP_ID3, 0x03},
  358. {WCD_USBSS_LINEARIZER_CFG, 0x00},
  359. {WCD_USBSS_RATIO_SPKR_REXT_L_LSB, 0x8f},
  360. {WCD_USBSS_RATIO_SPKR_REXT_L_MSB, 0x02},
  361. {WCD_USBSS_RATIO_SPKR_REXT_R_LSB, 0x8f},
  362. {WCD_USBSS_RATIO_SPKR_REXT_R_MSB, 0x02},
  363. {WCD_USBSS_SW_TAP_AUD_L_LSB, 0xd4},
  364. {WCD_USBSS_SW_TAP_AUD_L_MSB, 0x03},
  365. {WCD_USBSS_SW_TAP_AUD_R_LSB, 0xd4},
  366. {WCD_USBSS_SW_TAP_AUD_R_MSB, 0x03},
  367. {WCD_USBSS_SW_TAP_GND_L_LSB, 0x11},
  368. {WCD_USBSS_SW_TAP_GND_L_MSB, 0x00},
  369. {WCD_USBSS_SW_TAP_GND_R_LSB, 0x11},
  370. {WCD_USBSS_SW_TAP_GND_R_MSB, 0x00},
  371. {WCD_USBSS_HW_TAP_AUD_L_LSB, 0x00},
  372. {WCD_USBSS_HW_TAP_AUD_L_MSB, 0x00},
  373. {WCD_USBSS_HW_TAP_AUD_R_LSB, 0x00},
  374. {WCD_USBSS_HW_TAP_AUD_R_MSB, 0x00},
  375. {WCD_USBSS_HW_TAP_GND_L_LSB, 0x00},
  376. {WCD_USBSS_HW_TAP_GND_L_MSB, 0x00},
  377. {WCD_USBSS_HW_TAP_GND_R_LSB, 0x00},
  378. {WCD_USBSS_HW_TAP_GND_R_MSB, 0x00},
  379. {WCD_USBSS_AUD_COEF_L_K0_0, 0xd3},
  380. {WCD_USBSS_AUD_COEF_L_K0_1, 0x9e},
  381. {WCD_USBSS_AUD_COEF_L_K0_2, 0x3f},
  382. {WCD_USBSS_AUD_COEF_L_K1_0, 0x15},
  383. {WCD_USBSS_AUD_COEF_L_K1_1, 0xfd},
  384. {WCD_USBSS_AUD_COEF_L_K2_0, 0x7a},
  385. {WCD_USBSS_AUD_COEF_L_K2_1, 0x05},
  386. {WCD_USBSS_AUD_COEF_L_K3_0, 0x6e},
  387. {WCD_USBSS_AUD_COEF_L_K3_1, 0xf5},
  388. {WCD_USBSS_AUD_COEF_L_K4_0, 0xd1},
  389. {WCD_USBSS_AUD_COEF_L_K4_1, 0x0e},
  390. {WCD_USBSS_AUD_COEF_L_K5_0, 0x24},
  391. {WCD_USBSS_AUD_COEF_L_K5_1, 0xf6},
  392. {WCD_USBSS_AUD_COEF_R_K0_0, 0xd3},
  393. {WCD_USBSS_AUD_COEF_R_K0_1, 0x9e},
  394. {WCD_USBSS_AUD_COEF_R_K0_2, 0x3f},
  395. {WCD_USBSS_AUD_COEF_R_K1_0, 0x15},
  396. {WCD_USBSS_AUD_COEF_R_K1_1, 0xfd},
  397. {WCD_USBSS_AUD_COEF_R_K2_0, 0x7a},
  398. {WCD_USBSS_AUD_COEF_R_K2_1, 0x05},
  399. {WCD_USBSS_AUD_COEF_R_K3_0, 0x6e},
  400. {WCD_USBSS_AUD_COEF_R_K3_1, 0xf5},
  401. {WCD_USBSS_AUD_COEF_R_K4_0, 0xd1},
  402. {WCD_USBSS_AUD_COEF_R_K4_1, 0x0e},
  403. {WCD_USBSS_AUD_COEF_R_K5_0, 0x24},
  404. {WCD_USBSS_AUD_COEF_R_K5_1, 0xf6},
  405. {WCD_USBSS_GND_COEF_L_K0_0, 0xf4},
  406. {WCD_USBSS_GND_COEF_L_K0_1, 0x30},
  407. {WCD_USBSS_GND_COEF_L_K0_2, 0x00},
  408. {WCD_USBSS_GND_COEF_L_K1_0, 0xe9},
  409. {WCD_USBSS_GND_COEF_L_K1_1, 0x02},
  410. {WCD_USBSS_GND_COEF_L_K2_0, 0xe7},
  411. {WCD_USBSS_GND_COEF_L_K2_1, 0xf7},
  412. {WCD_USBSS_GND_COEF_L_K3_0, 0x7a},
  413. {WCD_USBSS_GND_COEF_L_K3_1, 0x12},
  414. {WCD_USBSS_GND_COEF_L_K4_0, 0x72},
  415. {WCD_USBSS_GND_COEF_L_K4_1, 0xe4},
  416. {WCD_USBSS_GND_COEF_L_K5_0, 0xa0},
  417. {WCD_USBSS_GND_COEF_L_K5_1, 0x12},
  418. {WCD_USBSS_GND_COEF_R_K0_0, 0xf4},
  419. {WCD_USBSS_GND_COEF_R_K0_1, 0x30},
  420. {WCD_USBSS_GND_COEF_R_K0_2, 0x00},
  421. {WCD_USBSS_GND_COEF_R_K1_0, 0xe9},
  422. {WCD_USBSS_GND_COEF_R_K1_1, 0x02},
  423. {WCD_USBSS_GND_COEF_R_K2_0, 0xe7},
  424. {WCD_USBSS_GND_COEF_R_K2_1, 0xf7},
  425. {WCD_USBSS_GND_COEF_R_K3_0, 0x7a},
  426. {WCD_USBSS_GND_COEF_R_K3_1, 0x12},
  427. {WCD_USBSS_GND_COEF_R_K4_0, 0x72},
  428. {WCD_USBSS_GND_COEF_R_K4_1, 0xe4},
  429. {WCD_USBSS_GND_COEF_R_K5_0, 0xa0},
  430. {WCD_USBSS_GND_COEF_R_K5_1, 0x12},
  431. {WCD_USBSS_AUD_L_SLOPE_SCALE_LSB, 0xe8},
  432. {WCD_USBSS_AUD_L_SLOPE_SCALE_MSB, 0x03},
  433. {WCD_USBSS_AUD_R_SLOPE_SCALE_LSB, 0xe8},
  434. {WCD_USBSS_AUD_R_SLOPE_SCALE_MSB, 0x03},
  435. {WCD_USBSS_GND_L_SLOPE_SCALE_LSB, 0xe8},
  436. {WCD_USBSS_GND_L_SLOPE_SCALE_MSB, 0x03},
  437. {WCD_USBSS_GND_R_SLOPE_SCALE_LSB, 0xe8},
  438. {WCD_USBSS_GND_R_SLOPE_SCALE_MSB, 0x03},
  439. {WCD_USBSS_AUD_L_FIRST_TAP, 0x00},
  440. {WCD_USBSS_AUD_R_FIRST_TAP, 0x00},
  441. {WCD_USBSS_GND_L_FIRST_TAP, 0x00},
  442. {WCD_USBSS_GND_R_FIRST_TAP, 0x00},
  443. {WCD_USBSS_FEATURE_SELECTION, 0x00},
  444. {WCD_USBSS_EFUSE_REG_0, 0x00},
  445. {WCD_USBSS_EFUSE_REG_1, 0x00},
  446. {WCD_USBSS_EFUSE_REG_2, 0x00},
  447. {WCD_USBSS_EFUSE_REG_3, 0x00},
  448. {WCD_USBSS_EFUSE_REG_4, 0x00},
  449. {WCD_USBSS_EFUSE_REG_5, 0x00},
  450. {WCD_USBSS_EFUSE_REG_6, 0x00},
  451. {WCD_USBSS_EFUSE_REG_7, 0x00},
  452. {WCD_USBSS_EFUSE_REG_8, 0x00},
  453. {WCD_USBSS_EFUSE_REG_9, 0x00},
  454. {WCD_USBSS_EFUSE_REG_10, 0x00},
  455. {WCD_USBSS_EFUSE_REG_11, 0x00},
  456. {WCD_USBSS_EFUSE_REG_12, 0x00},
  457. {WCD_USBSS_EFUSE_REG_13, 0x00},
  458. {WCD_USBSS_EFUSE_REG_14, 0x00},
  459. {WCD_USBSS_EFUSE_REG_15, 0x00},
  460. {WCD_USBSS_EFUSE_PRG_CTL, 0x00},
  461. {WCD_USBSS_EFUSE_CTL, 0x2b},
  462. {WCD_USBSS_EFUSE_TEST_CTL_0, 0x00},
  463. {WCD_USBSS_EFUSE_TEST_CTL_1, 0x00},
  464. {WCD_USBSS_EFUSE_T_DATA_0, 0x00},
  465. {WCD_USBSS_PAD_INP_DIS_0, 0x00},
  466. {WCD_USBSS_DRIVE_STRENGTH, 0x88},
  467. {WCD_USBSS_PULL_SEL, 0x00},
  468. {WCD_USBSS_HYST_CTL, 0x0f},
  469. {WCD_USBSS_PAD_MODE, 0x0f},
  470. {WCD_USBSS_ANA_CSR_DBG_ADD, 0x00},
  471. {WCD_USBSS_ANA_CSR_DBG_CTL, 0x00},
  472. };
  473. static bool wcd_usbss_writeable_register(struct device *dev, unsigned int reg)
  474. {
  475. if (reg <= (WCD_USBSS_BASE + 1))
  476. return false;
  477. return wcd_usbss_reg_access[WCD_USBSS_REG(reg)] & WR_REG;
  478. }
  479. static bool wcd_usbss_volatile_register(struct device *dev, unsigned int reg)
  480. {
  481. if (reg <= (WCD_USBSS_BASE + 1))
  482. return false;
  483. return ((wcd_usbss_reg_access[WCD_USBSS_REG(reg)] & RD_REG) &&
  484. !(wcd_usbss_reg_access[WCD_USBSS_REG(reg)] & WR_REG));
  485. }
  486. struct regmap_config wcd_usbss_regmap_config = {
  487. .reg_bits = 16,
  488. .val_bits = 8,
  489. .cache_type = REGCACHE_RBTREE,
  490. .reg_defaults = wcd_usbss_defaults,
  491. .num_reg_defaults = ARRAY_SIZE(wcd_usbss_defaults),
  492. .max_register = WCD_USBSS_MAX_REGISTER,
  493. .volatile_reg = wcd_usbss_volatile_register,
  494. .writeable_reg = wcd_usbss_writeable_register,
  495. .reg_format_endian = REGMAP_ENDIAN_NATIVE,
  496. .val_format_endian = REGMAP_ENDIAN_NATIVE,
  497. .use_single_read = true,
  498. .use_single_write = true,
  499. };