spmi_dbg.c 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("MediaTek Software") are
  4. * protected under relevant copyright laws. The information contained herein is
  5. * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
  6. * the prior written permission of MediaTek inc. and/or its licensors, any
  7. * reproduction, modification, use or disclosure of MediaTek Software, and
  8. * information contained herein, in whole or in part, shall be strictly
  9. * prohibited.
  10. *
  11. * MediaTek Inc. (C) 2019. All rights reserved.
  12. *
  13. * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  14. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  15. * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
  16. * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
  17. * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
  18. * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
  19. * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
  20. * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
  21. * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES
  22. * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
  23. * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
  24. * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
  25. * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
  26. * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  27. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
  28. * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE
  29. * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE
  30. * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
  31. * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  32. *
  33. * The following software/firmware and/or related documentation ("MediaTek
  34. * Software") have been modified by MediaTek Inc. All revisions are subject to
  35. * any receiver's applicable license agreements with MediaTek Inc.
  36. */
  37. /*
  38. * MTK SPMI Driver
  39. *
  40. * Copyright 2018 MediaTek Co.,Ltd.
  41. *
  42. * DESCRIPTION:
  43. * This file provides API for other drivers to access PMIC registers
  44. *
  45. */
  46. #include <pmif.h>
  47. #include <spmi.h>
  48. #include <spmi_sw.h>
  49. #include <pmif_sw.h>
  50. #if (SPMI_CTP)
  51. #define sprintf FormatString
  52. #endif
  53. enum pmif_dbg_regs {
  54. PMIF_INIT_DONE,
  55. PMIF_INF_BUSY_STA,
  56. PMIF_OTHER_BUSY_STA_0,
  57. PMIF_OTHER_BUSY_STA_1,
  58. PMIF_IRQ_EVENT_EN_0,
  59. PMIF_IRQ_FLAG_0,
  60. PMIF_IRQ_CLR_0,
  61. PMIF_IRQ_EVENT_EN_1,
  62. PMIF_IRQ_FLAG_1,
  63. PMIF_IRQ_CLR_1,
  64. PMIF_IRQ_EVENT_EN_2,
  65. PMIF_IRQ_FLAG_2,
  66. PMIF_IRQ_CLR_2,
  67. PMIF_IRQ_EVENT_EN_3,
  68. PMIF_IRQ_FLAG_3,
  69. PMIF_IRQ_CLR_3,
  70. PMIF_IRQ_EVENT_EN_4,
  71. PMIF_IRQ_FLAG_4,
  72. PMIF_IRQ_CLR_4,
  73. PMIF_WDT_EVENT_EN_0,
  74. PMIF_WDT_FLAG_0,
  75. PMIF_WDT_EVENT_EN_1,
  76. PMIF_WDT_FLAG_1,
  77. PMIF_MONITOR_CTRL,
  78. PMIF_MONITOR_TARGET_CHAN_0,
  79. PMIF_MONITOR_TARGET_CHAN_1,
  80. PMIF_MONITOR_TARGET_CHAN_2,
  81. PMIF_MONITOR_TARGET_CHAN_3,
  82. PMIF_MONITOR_TARGET_CHAN_4,
  83. PMIF_MONITOR_TARGET_CHAN_5,
  84. PMIF_MONITOR_TARGET_CHAN_6,
  85. PMIF_MONITOR_TARGET_CHAN_7,
  86. PMIF_MONITOR_TARGET_WRITE,
  87. PMIF_MONITOR_TARGET_SLVID_0,
  88. PMIF_MONITOR_TARGET_SLVID_1,
  89. PMIF_MONITOR_TARGET_ADDR_0,
  90. PMIF_MONITOR_TARGET_ADDR_1,
  91. PMIF_MONITOR_TARGET_ADDR_2,
  92. PMIF_MONITOR_TARGET_ADDR_3,
  93. PMIF_MONITOR_TARGET_ADDR_4,
  94. PMIF_MONITOR_TARGET_ADDR_5,
  95. PMIF_MONITOR_TARGET_ADDR_6,
  96. PMIF_MONITOR_TARGET_ADDR_7,
  97. PMIF_MONITOR_TARGET_WDATA_0,
  98. PMIF_MONITOR_TARGET_WDATA_1,
  99. PMIF_MONITOR_TARGET_WDATA_2,
  100. PMIF_MONITOR_TARGET_WDATA_3,
  101. PMIF_MONITOR_TARGET_WDATA_4,
  102. PMIF_MONITOR_TARGET_WDATA_5,
  103. PMIF_MONITOR_TARGET_WDATA_6,
  104. PMIF_MONITOR_TARGET_WDATA_7,
  105. PMIF_MONITOR_STA,
  106. PMIF_MONITOR_RECORD_0_0,
  107. PMIF_MONITOR_RECORD_0_1,
  108. PMIF_MONITOR_RECORD_0_2,
  109. PMIF_MONITOR_RECORD_0_3,
  110. PMIF_MONITOR_RECORD_0_4,
  111. PMIF_MONITOR_RECORD_1_0,
  112. PMIF_MONITOR_RECORD_1_1,
  113. PMIF_MONITOR_RECORD_1_2,
  114. PMIF_MONITOR_RECORD_1_3,
  115. PMIF_MONITOR_RECORD_1_4,
  116. PMIF_MONITOR_RECORD_2_0,
  117. PMIF_MONITOR_RECORD_2_1,
  118. PMIF_MONITOR_RECORD_2_2,
  119. PMIF_MONITOR_RECORD_2_3,
  120. PMIF_MONITOR_RECORD_2_4,
  121. PMIF_MONITOR_RECORD_3_0,
  122. PMIF_MONITOR_RECORD_3_1,
  123. PMIF_MONITOR_RECORD_3_2,
  124. PMIF_MONITOR_RECORD_3_3,
  125. PMIF_MONITOR_RECORD_3_4,
  126. PMIF_MONITOR_RECORD_4_0,
  127. PMIF_MONITOR_RECORD_4_1,
  128. PMIF_MONITOR_RECORD_4_2,
  129. PMIF_MONITOR_RECORD_4_3,
  130. PMIF_MONITOR_RECORD_4_4,
  131. PMIF_MONITOR_RECORD_5_0,
  132. PMIF_MONITOR_RECORD_5_1,
  133. PMIF_MONITOR_RECORD_5_2,
  134. PMIF_MONITOR_RECORD_5_3,
  135. PMIF_MONITOR_RECORD_5_4,
  136. PMIF_MONITOR_RECORD_6_0,
  137. PMIF_MONITOR_RECORD_6_1,
  138. PMIF_MONITOR_RECORD_6_2,
  139. PMIF_MONITOR_RECORD_6_3,
  140. PMIF_MONITOR_RECORD_6_4,
  141. PMIF_MONITOR_RECORD_7_0,
  142. PMIF_MONITOR_RECORD_7_1,
  143. PMIF_MONITOR_RECORD_7_2,
  144. PMIF_MONITOR_RECORD_7_3,
  145. PMIF_MONITOR_RECORD_7_4,
  146. PMIF_MONITOR_RECORD_8_0,
  147. PMIF_MONITOR_RECORD_8_1,
  148. PMIF_MONITOR_RECORD_8_2,
  149. PMIF_MONITOR_RECORD_8_3,
  150. PMIF_MONITOR_RECORD_8_4,
  151. PMIF_MONITOR_RECORD_9_0,
  152. PMIF_MONITOR_RECORD_9_1,
  153. PMIF_MONITOR_RECORD_9_2,
  154. PMIF_MONITOR_RECORD_9_3,
  155. PMIF_MONITOR_RECORD_9_4,
  156. PMIF_MONITOR_RECORD_10_0,
  157. PMIF_MONITOR_RECORD_10_1,
  158. PMIF_MONITOR_RECORD_10_2,
  159. PMIF_MONITOR_RECORD_10_3,
  160. PMIF_MONITOR_RECORD_10_4,
  161. PMIF_MONITOR_RECORD_11_0,
  162. PMIF_MONITOR_RECORD_11_1,
  163. PMIF_MONITOR_RECORD_11_2,
  164. PMIF_MONITOR_RECORD_11_3,
  165. PMIF_MONITOR_RECORD_11_4,
  166. PMIF_MONITOR_RECORD_12_0,
  167. PMIF_MONITOR_RECORD_12_1,
  168. PMIF_MONITOR_RECORD_12_2,
  169. PMIF_MONITOR_RECORD_12_3,
  170. PMIF_MONITOR_RECORD_12_4,
  171. PMIF_MONITOR_RECORD_13_0,
  172. PMIF_MONITOR_RECORD_13_1,
  173. PMIF_MONITOR_RECORD_13_2,
  174. PMIF_MONITOR_RECORD_13_3,
  175. PMIF_MONITOR_RECORD_13_4,
  176. PMIF_MONITOR_RECORD_14_0,
  177. PMIF_MONITOR_RECORD_14_1,
  178. PMIF_MONITOR_RECORD_14_2,
  179. PMIF_MONITOR_RECORD_14_3,
  180. PMIF_MONITOR_RECORD_14_4,
  181. PMIF_MONITOR_RECORD_15_0,
  182. PMIF_MONITOR_RECORD_15_1,
  183. PMIF_MONITOR_RECORD_15_2,
  184. PMIF_MONITOR_RECORD_15_3,
  185. PMIF_MONITOR_RECORD_15_4,
  186. PMIF_MONITOR_RECORD_16_0,
  187. PMIF_MONITOR_RECORD_16_1,
  188. PMIF_MONITOR_RECORD_16_2,
  189. PMIF_MONITOR_RECORD_16_3,
  190. PMIF_MONITOR_RECORD_16_4,
  191. PMIF_MONITOR_RECORD_17_0,
  192. PMIF_MONITOR_RECORD_17_1,
  193. PMIF_MONITOR_RECORD_17_2,
  194. PMIF_MONITOR_RECORD_17_3,
  195. PMIF_MONITOR_RECORD_17_4,
  196. PMIF_MONITOR_RECORD_18_0,
  197. PMIF_MONITOR_RECORD_18_1,
  198. PMIF_MONITOR_RECORD_18_2,
  199. PMIF_MONITOR_RECORD_18_3,
  200. PMIF_MONITOR_RECORD_18_4,
  201. PMIF_MONITOR_RECORD_19_0,
  202. PMIF_MONITOR_RECORD_19_1,
  203. PMIF_MONITOR_RECORD_19_2,
  204. PMIF_MONITOR_RECORD_19_3,
  205. PMIF_MONITOR_RECORD_19_4,
  206. PMIF_MONITOR_RECORD_20_0,
  207. PMIF_MONITOR_RECORD_20_1,
  208. PMIF_MONITOR_RECORD_20_2,
  209. PMIF_MONITOR_RECORD_20_3,
  210. PMIF_MONITOR_RECORD_20_4,
  211. PMIF_MONITOR_RECORD_21_0,
  212. PMIF_MONITOR_RECORD_21_1,
  213. PMIF_MONITOR_RECORD_21_2,
  214. PMIF_MONITOR_RECORD_21_3,
  215. PMIF_MONITOR_RECORD_21_4,
  216. PMIF_MONITOR_RECORD_22_0,
  217. PMIF_MONITOR_RECORD_22_1,
  218. PMIF_MONITOR_RECORD_22_2,
  219. PMIF_MONITOR_RECORD_22_3,
  220. PMIF_MONITOR_RECORD_22_4,
  221. PMIF_MONITOR_RECORD_23_0,
  222. PMIF_MONITOR_RECORD_23_1,
  223. PMIF_MONITOR_RECORD_23_2,
  224. PMIF_MONITOR_RECORD_23_3,
  225. PMIF_MONITOR_RECORD_23_4,
  226. PMIF_MONITOR_RECORD_24_0,
  227. PMIF_MONITOR_RECORD_24_1,
  228. PMIF_MONITOR_RECORD_24_2,
  229. PMIF_MONITOR_RECORD_24_3,
  230. PMIF_MONITOR_RECORD_24_4,
  231. PMIF_MONITOR_RECORD_25_0,
  232. PMIF_MONITOR_RECORD_25_1,
  233. PMIF_MONITOR_RECORD_25_2,
  234. PMIF_MONITOR_RECORD_25_3,
  235. PMIF_MONITOR_RECORD_25_4,
  236. PMIF_MONITOR_RECORD_26_0,
  237. PMIF_MONITOR_RECORD_26_1,
  238. PMIF_MONITOR_RECORD_26_2,
  239. PMIF_MONITOR_RECORD_26_3,
  240. PMIF_MONITOR_RECORD_26_4,
  241. PMIF_MONITOR_RECORD_27_0,
  242. PMIF_MONITOR_RECORD_27_1,
  243. PMIF_MONITOR_RECORD_27_2,
  244. PMIF_MONITOR_RECORD_27_3,
  245. PMIF_MONITOR_RECORD_27_4,
  246. PMIF_MONITOR_RECORD_28_0,
  247. PMIF_MONITOR_RECORD_28_1,
  248. PMIF_MONITOR_RECORD_28_2,
  249. PMIF_MONITOR_RECORD_28_3,
  250. PMIF_MONITOR_RECORD_28_4,
  251. PMIF_MONITOR_RECORD_29_0,
  252. PMIF_MONITOR_RECORD_29_1,
  253. PMIF_MONITOR_RECORD_29_2,
  254. PMIF_MONITOR_RECORD_29_3,
  255. PMIF_MONITOR_RECORD_29_4,
  256. PMIF_MONITOR_RECORD_30_0,
  257. PMIF_MONITOR_RECORD_30_1,
  258. PMIF_MONITOR_RECORD_30_2,
  259. PMIF_MONITOR_RECORD_30_3,
  260. PMIF_MONITOR_RECORD_30_4,
  261. PMIF_MONITOR_RECORD_31_0,
  262. PMIF_MONITOR_RECORD_31_1,
  263. PMIF_MONITOR_RECORD_31_2,
  264. PMIF_MONITOR_RECORD_31_3,
  265. PMIF_MONITOR_RECORD_31_4,
  266. PMIF_DEBUG_CTRL,
  267. PMIF_RESERVED_0,
  268. PMIF_SWINF_0_ACC,
  269. PMIF_SWINF_0_WDATA_31_0,
  270. PMIF_SWINF_0_WDATA_63_32,
  271. PMIF_SWINF_0_RDATA_31_0,
  272. PMIF_SWINF_0_RDATA_63_32,
  273. PMIF_SWINF_0_VLD_CLR,
  274. PMIF_SWINF_0_STA,
  275. PMIF_SWINF_1_ACC,
  276. PMIF_SWINF_1_WDATA_31_0,
  277. PMIF_SWINF_1_WDATA_63_32,
  278. PMIF_SWINF_1_RDATA_31_0,
  279. PMIF_SWINF_1_RDATA_63_32,
  280. PMIF_SWINF_1_VLD_CLR,
  281. PMIF_SWINF_1_STA,
  282. PMIF_SWINF_2_ACC,
  283. PMIF_SWINF_2_WDATA_31_0,
  284. PMIF_SWINF_2_WDATA_63_32,
  285. PMIF_SWINF_2_RDATA_31_0,
  286. PMIF_SWINF_2_RDATA_63_32,
  287. PMIF_SWINF_2_VLD_CLR,
  288. PMIF_SWINF_2_STA,
  289. PMIF_SWINF_3_ACC,
  290. PMIF_SWINF_3_WDATA_31_0,
  291. PMIF_SWINF_3_WDATA_63_32,
  292. PMIF_SWINF_3_RDATA_31_0,
  293. PMIF_SWINF_3_RDATA_63_32,
  294. PMIF_SWINF_3_VLD_CLR,
  295. PMIF_SWINF_3_STA,
  296. };
  297. static int mt6xxx_pmif_dbg_regs[] = {
  298. [PMIF_INIT_DONE] = 0x0000,
  299. [PMIF_INF_BUSY_STA] = 0x0018,
  300. [PMIF_OTHER_BUSY_STA_0] = 0x001C,
  301. [PMIF_OTHER_BUSY_STA_1] = 0x0020,
  302. [PMIF_IRQ_EVENT_EN_0] = 0x0418,
  303. [PMIF_IRQ_FLAG_0] = 0x0420,
  304. [PMIF_IRQ_CLR_0] = 0x0424,
  305. [PMIF_IRQ_EVENT_EN_1] = 0x0428,
  306. [PMIF_IRQ_FLAG_1] = 0x0430,
  307. [PMIF_IRQ_CLR_1] = 0x0434,
  308. [PMIF_IRQ_EVENT_EN_2] = 0x0438,
  309. [PMIF_IRQ_FLAG_2] = 0x0440,
  310. [PMIF_IRQ_CLR_2] = 0x0444,
  311. [PMIF_IRQ_EVENT_EN_3] = 0x0448,
  312. [PMIF_IRQ_FLAG_3] = 0x0450,
  313. [PMIF_IRQ_CLR_3] = 0x0454,
  314. [PMIF_IRQ_EVENT_EN_4] = 0x0458,
  315. [PMIF_IRQ_FLAG_4] = 0x0460,
  316. [PMIF_IRQ_CLR_4] = 0x0464,
  317. [PMIF_WDT_EVENT_EN_0] = 0x046C,
  318. [PMIF_WDT_FLAG_0] = 0x0470,
  319. [PMIF_WDT_EVENT_EN_1] = 0x0474,
  320. [PMIF_WDT_FLAG_1] = 0x0478,
  321. [PMIF_MONITOR_CTRL] = 0x047C,
  322. [PMIF_MONITOR_TARGET_CHAN_0] = 0x0480,
  323. [PMIF_MONITOR_TARGET_CHAN_1] = 0x0484,
  324. [PMIF_MONITOR_TARGET_CHAN_2] = 0x0488,
  325. [PMIF_MONITOR_TARGET_CHAN_3] = 0x048C,
  326. [PMIF_MONITOR_TARGET_CHAN_4] = 0x0490,
  327. [PMIF_MONITOR_TARGET_CHAN_5] = 0x0494,
  328. [PMIF_MONITOR_TARGET_CHAN_6] = 0x0498,
  329. [PMIF_MONITOR_TARGET_CHAN_7] = 0x049C,
  330. [PMIF_MONITOR_TARGET_WRITE] = 0x04A0,
  331. [PMIF_MONITOR_TARGET_SLVID_0] = 0x04A4,
  332. [PMIF_MONITOR_TARGET_SLVID_1] = 0x04A8,
  333. [PMIF_MONITOR_TARGET_ADDR_0] = 0x04AC,
  334. [PMIF_MONITOR_TARGET_ADDR_1] = 0x04B0,
  335. [PMIF_MONITOR_TARGET_ADDR_2] = 0x04B4,
  336. [PMIF_MONITOR_TARGET_ADDR_3] = 0x04B8,
  337. [PMIF_MONITOR_TARGET_ADDR_4] = 0x04BC,
  338. [PMIF_MONITOR_TARGET_ADDR_5] = 0x04C0,
  339. [PMIF_MONITOR_TARGET_ADDR_6] = 0x04C4,
  340. [PMIF_MONITOR_TARGET_ADDR_7] = 0x04C8,
  341. [PMIF_MONITOR_TARGET_WDATA_0] = 0x04CC,
  342. [PMIF_MONITOR_TARGET_WDATA_1] = 0x04D0,
  343. [PMIF_MONITOR_TARGET_WDATA_2] = 0x04D4,
  344. [PMIF_MONITOR_TARGET_WDATA_3] = 0x04D8,
  345. [PMIF_MONITOR_TARGET_WDATA_4] = 0x04DC,
  346. [PMIF_MONITOR_TARGET_WDATA_5] = 0x04E0,
  347. [PMIF_MONITOR_TARGET_WDATA_6] = 0x04E4,
  348. [PMIF_MONITOR_TARGET_WDATA_7] = 0x04E8,
  349. [PMIF_MONITOR_STA] = 0x04EC,
  350. [PMIF_MONITOR_RECORD_0_0] = 0x04F0,
  351. [PMIF_MONITOR_RECORD_0_1] = 0x04F4,
  352. [PMIF_MONITOR_RECORD_0_2] = 0x04F8,
  353. [PMIF_MONITOR_RECORD_0_3] = 0x04FC,
  354. [PMIF_MONITOR_RECORD_0_4] = 0x0500,
  355. [PMIF_MONITOR_RECORD_1_0] = 0x0504,
  356. [PMIF_MONITOR_RECORD_1_1] = 0x0508,
  357. [PMIF_MONITOR_RECORD_1_2] = 0x050C,
  358. [PMIF_MONITOR_RECORD_1_3] = 0x0510,
  359. [PMIF_MONITOR_RECORD_1_4] = 0x0514,
  360. [PMIF_MONITOR_RECORD_2_0] = 0x0518,
  361. [PMIF_MONITOR_RECORD_2_1] = 0x051C,
  362. [PMIF_MONITOR_RECORD_2_2] = 0x0520,
  363. [PMIF_MONITOR_RECORD_2_3] = 0x0524,
  364. [PMIF_MONITOR_RECORD_2_4] = 0x0528,
  365. [PMIF_MONITOR_RECORD_3_0] = 0x052C,
  366. [PMIF_MONITOR_RECORD_3_1] = 0x0530,
  367. [PMIF_MONITOR_RECORD_3_2] = 0x0534,
  368. [PMIF_MONITOR_RECORD_3_3] = 0x0538,
  369. [PMIF_MONITOR_RECORD_3_4] = 0x053C,
  370. [PMIF_MONITOR_RECORD_4_0] = 0x0540,
  371. [PMIF_MONITOR_RECORD_4_1] = 0x0544,
  372. [PMIF_MONITOR_RECORD_4_2] = 0x0548,
  373. [PMIF_MONITOR_RECORD_4_3] = 0x054C,
  374. [PMIF_MONITOR_RECORD_4_4] = 0x0550,
  375. [PMIF_MONITOR_RECORD_5_0] = 0x0554,
  376. [PMIF_MONITOR_RECORD_5_1] = 0x0558,
  377. [PMIF_MONITOR_RECORD_5_2] = 0x055C,
  378. [PMIF_MONITOR_RECORD_5_3] = 0x0560,
  379. [PMIF_MONITOR_RECORD_5_4] = 0x0564,
  380. [PMIF_MONITOR_RECORD_6_0] = 0x0568,
  381. [PMIF_MONITOR_RECORD_6_1] = 0x056C,
  382. [PMIF_MONITOR_RECORD_6_2] = 0x0570,
  383. [PMIF_MONITOR_RECORD_6_3] = 0x0574,
  384. [PMIF_MONITOR_RECORD_6_4] = 0x0578,
  385. [PMIF_MONITOR_RECORD_7_0] = 0x057C,
  386. [PMIF_MONITOR_RECORD_7_1] = 0x0580,
  387. [PMIF_MONITOR_RECORD_7_2] = 0x0584,
  388. [PMIF_MONITOR_RECORD_7_3] = 0x0588,
  389. [PMIF_MONITOR_RECORD_7_4] = 0x058C,
  390. [PMIF_MONITOR_RECORD_8_0] = 0x0590,
  391. [PMIF_MONITOR_RECORD_8_1] = 0x0594,
  392. [PMIF_MONITOR_RECORD_8_2] = 0x0598,
  393. [PMIF_MONITOR_RECORD_8_3] = 0x059C,
  394. [PMIF_MONITOR_RECORD_8_4] = 0x05A0,
  395. [PMIF_MONITOR_RECORD_9_0] = 0x05A4,
  396. [PMIF_MONITOR_RECORD_9_1] = 0x05A8,
  397. [PMIF_MONITOR_RECORD_9_2] = 0x05AC,
  398. [PMIF_MONITOR_RECORD_9_3] = 0x05B0,
  399. [PMIF_MONITOR_RECORD_9_4] = 0x05B4,
  400. [PMIF_MONITOR_RECORD_10_0] = 0x05B8,
  401. [PMIF_MONITOR_RECORD_10_1] = 0x05BC,
  402. [PMIF_MONITOR_RECORD_10_2] = 0x05C0,
  403. [PMIF_MONITOR_RECORD_10_3] = 0x05C4,
  404. [PMIF_MONITOR_RECORD_10_4] = 0x05C8,
  405. [PMIF_MONITOR_RECORD_11_0] = 0x05CC,
  406. [PMIF_MONITOR_RECORD_11_1] = 0x05D0,
  407. [PMIF_MONITOR_RECORD_11_2] = 0x05D4,
  408. [PMIF_MONITOR_RECORD_11_3] = 0x05D8,
  409. [PMIF_MONITOR_RECORD_11_4] = 0x05DC,
  410. [PMIF_MONITOR_RECORD_12_0] = 0x05E0,
  411. [PMIF_MONITOR_RECORD_12_1] = 0x05E4,
  412. [PMIF_MONITOR_RECORD_12_2] = 0x05E8,
  413. [PMIF_MONITOR_RECORD_12_3] = 0x05EC,
  414. [PMIF_MONITOR_RECORD_12_4] = 0x05F0,
  415. [PMIF_MONITOR_RECORD_13_0] = 0x05F4,
  416. [PMIF_MONITOR_RECORD_13_1] = 0x05F8,
  417. [PMIF_MONITOR_RECORD_13_2] = 0x05FC,
  418. [PMIF_MONITOR_RECORD_13_3] = 0x0600,
  419. [PMIF_MONITOR_RECORD_13_4] = 0x0604,
  420. [PMIF_MONITOR_RECORD_14_0] = 0x0608,
  421. [PMIF_MONITOR_RECORD_14_1] = 0x060C,
  422. [PMIF_MONITOR_RECORD_14_2] = 0x0610,
  423. [PMIF_MONITOR_RECORD_14_3] = 0x0614,
  424. [PMIF_MONITOR_RECORD_14_4] = 0x0618,
  425. [PMIF_MONITOR_RECORD_15_0] = 0x061C,
  426. [PMIF_MONITOR_RECORD_15_1] = 0x0620,
  427. [PMIF_MONITOR_RECORD_15_2] = 0x0624,
  428. [PMIF_MONITOR_RECORD_15_3] = 0x0628,
  429. [PMIF_MONITOR_RECORD_15_4] = 0x062C,
  430. [PMIF_MONITOR_RECORD_16_0] = 0x0630,
  431. [PMIF_MONITOR_RECORD_16_1] = 0x0634,
  432. [PMIF_MONITOR_RECORD_16_2] = 0x0638,
  433. [PMIF_MONITOR_RECORD_16_3] = 0x063C,
  434. [PMIF_MONITOR_RECORD_16_4] = 0x0640,
  435. [PMIF_MONITOR_RECORD_17_0] = 0x0644,
  436. [PMIF_MONITOR_RECORD_17_1] = 0x0648,
  437. [PMIF_MONITOR_RECORD_17_2] = 0x064C,
  438. [PMIF_MONITOR_RECORD_17_3] = 0x0650,
  439. [PMIF_MONITOR_RECORD_17_4] = 0x0654,
  440. [PMIF_MONITOR_RECORD_18_0] = 0x0658,
  441. [PMIF_MONITOR_RECORD_18_1] = 0x065C,
  442. [PMIF_MONITOR_RECORD_18_2] = 0x0660,
  443. [PMIF_MONITOR_RECORD_18_3] = 0x0664,
  444. [PMIF_MONITOR_RECORD_18_4] = 0x0668,
  445. [PMIF_MONITOR_RECORD_19_0] = 0x066C,
  446. [PMIF_MONITOR_RECORD_19_1] = 0x0670,
  447. [PMIF_MONITOR_RECORD_19_2] = 0x0674,
  448. [PMIF_MONITOR_RECORD_19_3] = 0x0678,
  449. [PMIF_MONITOR_RECORD_19_4] = 0x067C,
  450. [PMIF_MONITOR_RECORD_20_0] = 0x0680,
  451. [PMIF_MONITOR_RECORD_20_1] = 0x0684,
  452. [PMIF_MONITOR_RECORD_20_2] = 0x0688,
  453. [PMIF_MONITOR_RECORD_20_3] = 0x068C,
  454. [PMIF_MONITOR_RECORD_20_4] = 0x0690,
  455. [PMIF_MONITOR_RECORD_21_0] = 0x0694,
  456. [PMIF_MONITOR_RECORD_21_1] = 0x0698,
  457. [PMIF_MONITOR_RECORD_21_2] = 0x069C,
  458. [PMIF_MONITOR_RECORD_21_3] = 0x06A0,
  459. [PMIF_MONITOR_RECORD_21_4] = 0x06A4,
  460. [PMIF_MONITOR_RECORD_22_0] = 0x06A8,
  461. [PMIF_MONITOR_RECORD_22_1] = 0x06AC,
  462. [PMIF_MONITOR_RECORD_22_2] = 0x06B0,
  463. [PMIF_MONITOR_RECORD_22_3] = 0x06B4,
  464. [PMIF_MONITOR_RECORD_22_4] = 0x06B8,
  465. [PMIF_MONITOR_RECORD_23_0] = 0x06BC,
  466. [PMIF_MONITOR_RECORD_23_1] = 0x06C0,
  467. [PMIF_MONITOR_RECORD_23_2] = 0x06C4,
  468. [PMIF_MONITOR_RECORD_23_3] = 0x06C8,
  469. [PMIF_MONITOR_RECORD_23_4] = 0x06CC,
  470. [PMIF_MONITOR_RECORD_24_0] = 0x06D0,
  471. [PMIF_MONITOR_RECORD_24_1] = 0x06D4,
  472. [PMIF_MONITOR_RECORD_24_2] = 0x06D8,
  473. [PMIF_MONITOR_RECORD_24_3] = 0x06DC,
  474. [PMIF_MONITOR_RECORD_24_4] = 0x06E0,
  475. [PMIF_MONITOR_RECORD_25_0] = 0x06E4,
  476. [PMIF_MONITOR_RECORD_25_1] = 0x06E8,
  477. [PMIF_MONITOR_RECORD_25_2] = 0x06EC,
  478. [PMIF_MONITOR_RECORD_25_3] = 0x06F0,
  479. [PMIF_MONITOR_RECORD_25_4] = 0x06F4,
  480. [PMIF_MONITOR_RECORD_26_0] = 0x06F8,
  481. [PMIF_MONITOR_RECORD_26_1] = 0x06FC,
  482. [PMIF_MONITOR_RECORD_26_2] = 0x0700,
  483. [PMIF_MONITOR_RECORD_26_3] = 0x0704,
  484. [PMIF_MONITOR_RECORD_26_4] = 0x0708,
  485. [PMIF_MONITOR_RECORD_27_0] = 0x070C,
  486. [PMIF_MONITOR_RECORD_27_1] = 0x0710,
  487. [PMIF_MONITOR_RECORD_27_2] = 0x0714,
  488. [PMIF_MONITOR_RECORD_27_3] = 0x0718,
  489. [PMIF_MONITOR_RECORD_27_4] = 0x071C,
  490. [PMIF_MONITOR_RECORD_28_0] = 0x0720,
  491. [PMIF_MONITOR_RECORD_28_1] = 0x0724,
  492. [PMIF_MONITOR_RECORD_28_2] = 0x0728,
  493. [PMIF_MONITOR_RECORD_28_3] = 0x072C,
  494. [PMIF_MONITOR_RECORD_28_4] = 0x0730,
  495. [PMIF_MONITOR_RECORD_29_0] = 0x0734,
  496. [PMIF_MONITOR_RECORD_29_1] = 0x0738,
  497. [PMIF_MONITOR_RECORD_29_2] = 0x073C,
  498. [PMIF_MONITOR_RECORD_29_3] = 0x0740,
  499. [PMIF_MONITOR_RECORD_29_4] = 0x0744,
  500. [PMIF_MONITOR_RECORD_30_0] = 0x0748,
  501. [PMIF_MONITOR_RECORD_30_1] = 0x074C,
  502. [PMIF_MONITOR_RECORD_30_2] = 0x0750,
  503. [PMIF_MONITOR_RECORD_30_3] = 0x0754,
  504. [PMIF_MONITOR_RECORD_30_4] = 0x0758,
  505. [PMIF_MONITOR_RECORD_31_0] = 0x075C,
  506. [PMIF_MONITOR_RECORD_31_1] = 0x0760,
  507. [PMIF_MONITOR_RECORD_31_2] = 0x0764,
  508. [PMIF_MONITOR_RECORD_31_3] = 0x0768,
  509. [PMIF_MONITOR_RECORD_31_4] = 0x076C,
  510. [PMIF_DEBUG_CTRL] = 0x0770,
  511. [PMIF_RESERVED_0] = 0x0778,
  512. [PMIF_SWINF_0_ACC] = 0x0C00,
  513. [PMIF_SWINF_0_WDATA_31_0] = 0x0C04,
  514. [PMIF_SWINF_0_WDATA_63_32] = 0x0C08,
  515. [PMIF_SWINF_0_RDATA_31_0] = 0x0C14,
  516. [PMIF_SWINF_0_RDATA_63_32] = 0x0C18,
  517. [PMIF_SWINF_0_VLD_CLR] = 0x0C24,
  518. [PMIF_SWINF_0_STA] = 0x0C28,
  519. [PMIF_SWINF_1_ACC] = 0x0C40,
  520. [PMIF_SWINF_1_WDATA_31_0] = 0x0C44,
  521. [PMIF_SWINF_1_WDATA_63_32] = 0x0C48,
  522. [PMIF_SWINF_1_RDATA_31_0] = 0x0C54,
  523. [PMIF_SWINF_1_RDATA_63_32] = 0x0C58,
  524. [PMIF_SWINF_1_VLD_CLR] = 0x0C64,
  525. [PMIF_SWINF_1_STA] = 0x0C68,
  526. [PMIF_SWINF_2_ACC] = 0x0C80,
  527. [PMIF_SWINF_2_WDATA_31_0] = 0x0C84,
  528. [PMIF_SWINF_2_WDATA_63_32] = 0x0C88,
  529. [PMIF_SWINF_2_RDATA_31_0] = 0x0C94,
  530. [PMIF_SWINF_2_RDATA_63_32] = 0x0C98,
  531. [PMIF_SWINF_2_VLD_CLR] = 0x0CA4,
  532. [PMIF_SWINF_2_STA] = 0x0CA8,
  533. [PMIF_SWINF_3_ACC] = 0x0CC0,
  534. [PMIF_SWINF_3_WDATA_31_0] = 0x0CC4,
  535. [PMIF_SWINF_3_WDATA_63_32] = 0x0CC8,
  536. [PMIF_SWINF_3_RDATA_31_0] = 0x0CD4,
  537. [PMIF_SWINF_3_RDATA_63_32] = 0x0CD8,
  538. [PMIF_SWINF_3_VLD_CLR] = 0x0CE4,
  539. [PMIF_SWINF_3_STA] = 0x0CE8,
  540. };
  541. /* spmi & pmif debug mechanism */
  542. void spmi_dump_pmif_busy_reg(int mstid)
  543. {
  544. struct pmif *arb = get_pmif_controller(PMIF_SPMI, mstid);
  545. unsigned int offset, tmp_dat;
  546. unsigned int start, end;
  547. start = arb->dbgregs[PMIF_INF_BUSY_STA];
  548. end = arb->dbgregs[PMIF_OTHER_BUSY_STA_1];
  549. PMIF_CRI("");
  550. for (offset = start; offset <= end; offset += 4) {
  551. tmp_dat = DRV_Reg32(arb->base + offset);
  552. PMIF_CRIL("(0x%x)=0x%x ", offset, tmp_dat);
  553. }
  554. PMIF_CRIL("\n");
  555. }
  556. void spmi_dump_pmif_swinf_reg(int mstid)
  557. {
  558. struct pmif *arb = get_pmif_controller(PMIF_SPMI, mstid);
  559. unsigned int swinf = 0, step, offset, tmp_dat;
  560. unsigned int cmd, is_write, slvid, bytecnt, addr;
  561. unsigned int wd_31_0, rd_31_0;
  562. unsigned int err, sbusy, done, qfillcnt, qfreecnt, qempty, qfull;
  563. unsigned int req, fsm, en;
  564. step = arb->dbgregs[PMIF_SWINF_1_ACC] - arb->dbgregs[PMIF_SWINF_0_ACC];
  565. for (swinf = 0; swinf < 4; swinf++) {
  566. offset = arb->dbgregs[PMIF_SWINF_0_ACC] + swinf * step;
  567. tmp_dat = DRV_Reg32(arb->base + offset);
  568. cmd = (tmp_dat & (0x3 << 30)) >> 30;
  569. is_write = (tmp_dat & (0x1 << 29)) >> 29;
  570. slvid = (tmp_dat & (0xf << 24)) >> 24;
  571. bytecnt = (tmp_dat & (0xf << 16)) >> 16;
  572. addr = (tmp_dat & (0xffff << 0)) >> 0;
  573. offset = arb->dbgregs[PMIF_SWINF_0_WDATA_31_0] + swinf * step;
  574. wd_31_0 = DRV_Reg32(arb->base + offset);
  575. offset = arb->dbgregs[PMIF_SWINF_0_RDATA_31_0] + swinf * step;
  576. rd_31_0 = DRV_Reg32(arb->base + offset);
  577. offset = arb->dbgregs[PMIF_SWINF_0_STA] + swinf * step;
  578. tmp_dat = DRV_Reg32(arb->base + offset);
  579. err = (tmp_dat & (0x1 << 18)) >> 18;
  580. sbusy = (tmp_dat & (0x1 << 17)) >> 17;
  581. done = (tmp_dat & (0x1 << 15)) >> 15;
  582. qfillcnt = (tmp_dat & (0xf << 11)) >> 11;
  583. qfreecnt = (tmp_dat & (0xf << 7)) >> 7;
  584. qempty = (tmp_dat & (0x1 << 6)) >> 6;
  585. qfull = (tmp_dat & (0x1 << 5)) >> 5;
  586. req = (tmp_dat & (0x1 << 4)) >> 4;
  587. fsm = (tmp_dat & (0x7 << 1)) >> 1;
  588. en = (tmp_dat & (0x1 << 0)) >> 0;
  589. PMIF_CRI("[swinf:%d, cmd:0x%x, is_write:%d, slvid:%d ",
  590. swinf, cmd, is_write, slvid);
  591. if (is_write) {
  592. PMIF_CRIL("bytecnt:%d (write addr 0x%x=0x%x)]\n",
  593. bytecnt, addr, wd_31_0);
  594. } else {
  595. PMIF_CRIL("bytecnt:%d (read addr 0x%x=0x%x)]\n",
  596. bytecnt, addr, rd_31_0);
  597. }
  598. PMIF_CRI("[err:%d, sbusy:%d, done:%d, qfillcnt:%d ",
  599. err, sbusy, done, qfillcnt);
  600. PMIF_CRIL("qfreecnt:%d, qempty:%d, qfull:%d, req:%d ",
  601. qfreecnt, qempty, qfull, req);
  602. PMIF_CRIL("fsm:%d, en:%d]\n", fsm, en);
  603. }
  604. }
  605. void spmi_dump_pmif_reg(int mstid)
  606. {
  607. struct pmif *arb = get_pmif_controller(PMIF_SPMI, mstid);
  608. unsigned int offset, tmp_dat;
  609. unsigned int start, end;
  610. int i = 0;
  611. start = arb->dbgregs[PMIF_INIT_DONE];
  612. end = arb->dbgregs[PMIF_RESERVED_0];
  613. PMIF_CRI("");
  614. for (offset = start; offset <= end; offset += 4) {
  615. tmp_dat = DRV_Reg32(arb->base + offset);
  616. PMIF_CRIL("(0x%x)=0x%x ", offset, tmp_dat);
  617. i++;
  618. if (i % 8 == 0)
  619. PMIF_CRIL("\n[PMIF] ");
  620. }
  621. PMIF_CRIL("\n");
  622. }
  623. void spmi_dump_pmif_record_reg(int mstid)
  624. {
  625. struct pmif *arb = get_pmif_controller(PMIF_SPMI, mstid);
  626. unsigned int i = 0, step, offset, tmp_dat;
  627. unsigned int chan, cmd, is_write, slvid, bytecnt, addr;
  628. unsigned int wd_31_0;
  629. step = arb->dbgregs[PMIF_MONITOR_RECORD_1_0] - arb->dbgregs[PMIF_MONITOR_RECORD_0_0];
  630. for (i = 0; i < 32; i++) {
  631. offset = arb->dbgregs[PMIF_MONITOR_RECORD_0_0] + i * step;
  632. tmp_dat = DRV_Reg32(arb->base + offset);
  633. chan = (tmp_dat & (0xf8 << 27)) >> 27;
  634. cmd = (tmp_dat & (0x3 << 25)) >> 25;
  635. is_write = (tmp_dat & (0x1 << 24)) >> 24;
  636. slvid = (tmp_dat & (0xf << 20)) >> 20;
  637. bytecnt = (tmp_dat & (0xf << 16)) >> 16;
  638. addr = (tmp_dat & (0xffff << 0)) >> 0;
  639. offset = arb->dbgregs[PMIF_MONITOR_RECORD_0_1] + i * step;
  640. wd_31_0 = DRV_Reg32(arb->base + offset);
  641. PMIF_CRI("[swinf:%d, cmd:0x%x, rw:0x%x, slvid:%d, ",
  642. chan, cmd, is_write, slvid);
  643. PMIF_CRIL("bytecnt:%d, (addr 0x%x=0x%x)]\n",
  644. bytecnt, addr, wd_31_0);
  645. }
  646. /* logging mode no need to clear record */
  647. }
  648. void spmi_dump_spmimst_reg(int mstid)
  649. {
  650. struct pmif *arb = get_pmif_controller(PMIF_SPMI, mstid);
  651. unsigned int offset, tmp_dat;
  652. unsigned int start, end;
  653. int i = 0;
  654. start = arb->spmimst_regs[SPMI_OP_ST_CTRL];
  655. end = arb->spmimst_regs[SPMI_REC4];
  656. SPMI_CRI("");
  657. for (offset = start; offset <= end; offset += 4) {
  658. tmp_dat = DRV_Reg32(arb->spmimst_base + offset);
  659. SPMI_CRIL("(0x%x)=0x%x ", offset, tmp_dat);
  660. i++;
  661. if (i % 8 == 0)
  662. SPMI_CRIL("\n[SPMI] ");
  663. }
  664. #if SPMI_RCS_SUPPORT
  665. offset = arb->spmimst_regs[SPMI_DEC_DBG];
  666. tmp_dat = DRV_Reg32(arb->spmimst_base + offset);
  667. SPMI_CRIL("(0x%x)=0x%x ", offset, tmp_dat);
  668. #endif
  669. offset = arb->spmimst_regs[SPMI_MST_DBG];
  670. tmp_dat = DRV_Reg32(arb->spmimst_base + offset);
  671. SPMI_CRIL("(0x%x)=0x%x\n", offset, tmp_dat);
  672. }
  673. int spmi_pmif_dbg_init(struct pmif *arb)
  674. {
  675. #if PMIF_MATCH_SUPPORT
  676. unsigned int int_en = 0;
  677. #endif
  678. arb->dbgregs = mt6xxx_pmif_dbg_regs;
  679. #if PMIF_MATCH_SUPPORT
  680. /* enable matching mode */
  681. PMIF_CRI("PMIF Matching Mode\n");
  682. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_IRQ_CLR_0], 0xffffffff);
  683. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_IRQ_CLR_1], 0xffffffff);
  684. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_IRQ_CLR_2], 0xffffffff);
  685. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_IRQ_CLR_3], 0xffffffff);
  686. int_en = DRV_Reg32(arb->base + arb->dbgregs[PMIF_IRQ_EVENT_EN_3]);
  687. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_IRQ_EVENT_EN_3],
  688. int_en | (0x1 << 7));
  689. /* set monitor channel, should same as ARB_EN */
  690. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_TARGET_CHAN_0],
  691. 0x2f5);
  692. /* [31:16] addr mask, ffff mean all bit check
  693. * [15:0] addr, which addr been checked
  694. */
  695. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_TARGET_ADDR_0],
  696. 0xffff03a5);
  697. /* [31:16] wdata mask, ffff mean all bit check
  698. * [15:0] data, which data been checked
  699. */
  700. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_TARGET_WDATA_0],
  701. 0xffff005a);
  702. /*
  703. * BIT[0] MONITOR_TARGET_WRITE_0
  704. * BIT[1] MONITOR_TARGET_WRITE_0_MASK: 0, rw all check, 1, check
  705. * BIT[0] if BIT[0] = 0, only check read;otherwise only check write.
  706. */
  707. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_TARGET_WRITE],
  708. 0x3);
  709. /* reset then enable */
  710. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_CTRL], 0x800);
  711. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_CTRL], 0x405);
  712. #else
  713. /* init pmif debug mechanism, hw matching mode or sw logging mode */
  714. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_TARGET_CHAN_0],
  715. 0x2f5);
  716. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_TARGET_ADDR_0],
  717. 0x0);
  718. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_TARGET_WDATA_0],
  719. 0x0);
  720. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_TARGET_WRITE],
  721. 0x001);
  722. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_CTRL], 0x800);
  723. DRV_WriteReg32(arb->base + arb->dbgregs[PMIF_MONITOR_CTRL], 0x5);
  724. #endif /* end of PMIF_MATCH_SUPPORT */
  725. return 0;
  726. }