pmic_auxadc.c 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. #include <generated/autoconf.h>
  2. #include <linux/kernel.h>
  3. #include <linux/init.h>
  4. #include <linux/module.h>
  5. #include <linux/slab.h>
  6. #include <linux/sched.h>
  7. #include <linux/spinlock.h>
  8. #include <linux/interrupt.h>
  9. #include <linux/list.h>
  10. #include <linux/mutex.h>
  11. #include <linux/kthread.h>
  12. #include <linux/wakelock.h>
  13. #include <linux/device.h>
  14. #include <linux/kdev_t.h>
  15. #include <linux/fs.h>
  16. #include <linux/cdev.h>
  17. #include <linux/delay.h>
  18. #include <linux/platform_device.h>
  19. #include <linux/proc_fs.h>
  20. #include <linux/syscalls.h>
  21. #include <linux/sched.h>
  22. #include <linux/writeback.h>
  23. #include <linux/seq_file.h>
  24. #include <asm/uaccess.h>
  25. #include <mt-plat/upmu_common.h>
  26. #include <mach/upmu_sw.h>
  27. /*#include <mach/eint.h> TBD*/
  28. #include <mach/mt_pmic_wrap.h>
  29. #if defined CONFIG_MTK_LEGACY
  30. #include <mt-plat/mt_gpio.h>
  31. #endif
  32. /*#include <mach/mtk_rtc.h> TBD*/
  33. #include <mach/mt_spm_mtcmos.h>
  34. #if defined(CONFIG_MTK_SMART_BATTERY)
  35. #include <mt-plat/battery_meter.h>
  36. #include <mt-plat/battery_common.h>
  37. #endif
  38. #include <linux/time.h>
  39. /*#include <mach/pmic_mt6328_sw.h>*/
  40. #include <mach/mt_pmic.h>
  41. #include <mach/mt_battery_meter.h>
  42. /*
  43. * PMIC-AUXADC related define
  44. */
  45. #define VOLTAGE_FULL_RANGE 1800
  46. #define VOLTAGE_FULL_RANGE_6311 3200
  47. #define ADC_PRECISE 32768 /* 15 bits*/
  48. #define ADC_PRECISE_CH7 131072 /* 17 bits*/
  49. #define ADC_PRECISE_6311 4096 /* 12 bits*/
  50. /*
  51. * PMIC-AUXADC global variable
  52. */
  53. #define PMICTAG "[Auxadc] "
  54. #if defined PMIC_DEBUG_PR_DBG
  55. #define PMICLOG2(fmt, arg...) pr_err(PMICTAG fmt, ##arg)
  56. #else
  57. #define PMICLOG2(fmt, arg...)
  58. #endif
  59. signed int count_time_out = 15;
  60. struct wake_lock pmicAuxadc_irq_lock;
  61. /*static DEFINE_SPINLOCK(pmic_adc_lock);*/
  62. static DEFINE_MUTEX(pmic_adc_mutex);
  63. void pmic_auxadc_init(void)
  64. {
  65. /*signed int adc_busy;*/
  66. wake_lock_init(&pmicAuxadc_irq_lock, WAKE_LOCK_SUSPEND, "pmicAuxadc irq wakelock");
  67. pmic_set_register_value(PMIC_AUXADC_AVG_NUM_LARGE, 6); /* 1.3ms */
  68. pmic_set_register_value(PMIC_AUXADC_AVG_NUM_SMALL, 2); /* 0.8ms */
  69. pmic_set_register_value(PMIC_AUXADC_AVG_NUM_SEL, 0x83); /* 0.8ms */
  70. pmic_set_register_value(PMIC_RG_VBUF_EN, 0x1);
  71. PMICLOG2("****[pmic_auxadc_init] DONE\n");
  72. }
  73. void pmic_auxadc_lock(void)
  74. {
  75. wake_lock(&pmicAuxadc_irq_lock);
  76. mutex_lock(&pmic_adc_mutex);
  77. }
  78. void pmic_auxadc_unlock(void)
  79. {
  80. mutex_unlock(&pmic_adc_mutex);
  81. wake_unlock(&pmicAuxadc_irq_lock);
  82. }
  83. signed int PMIC_IMM_GetCurrent(void)
  84. {
  85. signed int ret = 0;
  86. int count = 0;
  87. signed int batsns, isense;
  88. signed int ADC_I_SENSE = 1; /* 1 measure time*/
  89. signed int ADC_BAT_SENSE = 1; /* 1 measure time*/
  90. signed int ICharging = 0;
  91. pmic_set_register_value(PMIC_AUXADC_CK_AON, 1);
  92. pmic_set_register_value(PMIC_RG_VBUF_EN, 1);
  93. pmic_set_register_value(PMIC_RG_CLKSQ_EN_AUX_AP_MODE, 1);
  94. wake_lock(&pmicAuxadc_irq_lock);
  95. mutex_lock(&pmic_adc_mutex);
  96. ret = pmic_config_interface(MT6328_AUXADC_RQST0_SET, 0x3, 0xffff, 0);
  97. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH0_BY_AP) != 1) {
  98. /*msleep(1);*/
  99. usleep_range(1000, 2000);
  100. if ((count++) > count_time_out) {
  101. PMICLOG2("[PMIC_IMM_GetCurrent] batsns Time out!\n");
  102. break;
  103. }
  104. }
  105. batsns = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH0_BY_AP);
  106. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH1_BY_AP) != 1) {
  107. /*msleep(1);*/
  108. usleep_range(1000, 2000);
  109. if ((count++) > count_time_out) {
  110. PMICLOG2("[PMIC_IMM_GetCurrent] isense Time out!\n");
  111. break;
  112. }
  113. }
  114. isense = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH1_BY_AP);
  115. ADC_BAT_SENSE = (batsns * 3 * VOLTAGE_FULL_RANGE) / 32768;
  116. ADC_I_SENSE = (isense * 3 * VOLTAGE_FULL_RANGE) / 32768;
  117. #if defined(CONFIG_MTK_SMART_BATTERY)
  118. ICharging =
  119. (ADC_I_SENSE - ADC_BAT_SENSE +
  120. g_I_SENSE_offset) * 1000 / batt_meter_cust_data.cust_r_sense;
  121. #endif
  122. mutex_unlock(&pmic_adc_mutex);
  123. wake_unlock(&pmicAuxadc_irq_lock);
  124. return ICharging;
  125. }
  126. /*
  127. * PMIC-AUXADC
  128. */
  129. unsigned int PMIC_IMM_GetOneChannelValue(pmic_adc_ch_list_enum dwChannel, int deCount, int trimd)
  130. {
  131. signed int ret = 0;
  132. signed int ret_data;
  133. signed int r_val_temp = 0;
  134. signed int adc_result = 0;
  135. int count = 0;
  136. unsigned int busy;
  137. /*
  138. CH0: BATSNS
  139. CH1: ISENSE
  140. CH2: VCDT
  141. CH3: BAT ON
  142. CH4: PMIC TEMP
  143. CH5: ACCDET
  144. CH6:
  145. CH7: TSX
  146. CH8:
  147. CH9:
  148. CH10:
  149. CH11:
  150. CH12:
  151. CH13:
  152. CH14:
  153. CH15:
  154. BATSNS 3v-4.5v
  155. ISENSE 1.5-4.5v
  156. BATON 0-1.8v
  157. VCDT 4v-14v
  158. ACCDET 1.8v
  159. GPS 1.8v
  160. */
  161. if (dwChannel > 15)
  162. return -1;
  163. /*upmu_set_reg_value(0x28c,0x0002);*/
  164. pmic_set_register_value(PMIC_AUXADC_CK_AON, 1);
  165. pmic_set_register_value(PMIC_RG_VBUF_EN, 1);
  166. pmic_set_register_value(PMIC_RG_CLKSQ_EN_AUX_AP_MODE, 1);
  167. /*upmu_set_reg_value(0x0a44,0x010a);*/
  168. wake_lock(&pmicAuxadc_irq_lock);
  169. mutex_lock(&pmic_adc_mutex);
  170. /*ret=pmic_config_interface(MT6328_TOP_CLKSQ_SET,(1<<2),0xffff,0);*/
  171. ret = pmic_config_interface(MT6328_AUXADC_RQST0_SET, (1 << dwChannel), 0xffff, 0);
  172. busy = upmu_get_reg_value(0E84);
  173. udelay(50);
  174. switch (dwChannel) {
  175. case 0:
  176. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH0_BY_AP) != 1) {
  177. /*msleep(1);*/
  178. usleep_range(1000, 2000);
  179. if ((count++) > count_time_out) {
  180. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  181. dwChannel);
  182. break;
  183. }
  184. }
  185. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH0_BY_AP);
  186. break;
  187. case 1:
  188. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH1_BY_AP) != 1) {
  189. /*msleep(1);*/
  190. usleep_range(1000, 2000);
  191. if ((count++) > count_time_out) {
  192. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  193. dwChannel);
  194. break;
  195. }
  196. }
  197. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH1_BY_AP);
  198. break;
  199. case 2:
  200. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH2) != 1) {
  201. /*msleep(1)*/
  202. usleep_range(1000, 2000);
  203. if ((count++) > count_time_out) {
  204. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  205. dwChannel);
  206. break;
  207. }
  208. }
  209. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH2);
  210. break;
  211. case 3:
  212. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH3) != 1) {
  213. /*msleep(1)*/
  214. usleep_range(1000, 2000);
  215. if ((count++) > count_time_out) {
  216. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  217. dwChannel);
  218. break;
  219. }
  220. }
  221. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH3);
  222. break;
  223. case 4:
  224. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH4) != 1) {
  225. /*msleep(1)*/
  226. usleep_range(1000, 2000);
  227. if ((count++) > count_time_out) {
  228. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  229. dwChannel);
  230. break;
  231. }
  232. }
  233. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH4);
  234. break;
  235. case 5:
  236. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH5) != 1) {
  237. /*msleep(1)*/
  238. usleep_range(1000, 2000);
  239. if ((count++) > count_time_out) {
  240. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  241. dwChannel);
  242. break;
  243. }
  244. }
  245. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH5);
  246. break;
  247. case 6:
  248. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH6) != 1) {
  249. /*msleep(1)*/
  250. usleep_range(1000, 2000);
  251. if ((count++) > count_time_out) {
  252. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  253. dwChannel);
  254. break;
  255. }
  256. }
  257. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH6);
  258. break;
  259. case 7:
  260. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH7_BY_AP) != 1) {
  261. /*msleep(1)*/
  262. usleep_range(1000, 2000);
  263. if ((count++) > count_time_out) {
  264. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  265. dwChannel);
  266. break;
  267. }
  268. }
  269. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH7_BY_AP);
  270. break;
  271. case 8:
  272. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH8) != 1) {
  273. /*msleep(1)*/
  274. usleep_range(1000, 2000);
  275. if ((count++) > count_time_out) {
  276. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  277. dwChannel);
  278. break;
  279. }
  280. }
  281. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH8);
  282. break;
  283. case 9:
  284. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH9) != 1) {
  285. /*msleep(1)*/
  286. usleep_range(1000, 2000);
  287. if ((count++) > count_time_out) {
  288. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  289. dwChannel);
  290. break;
  291. }
  292. }
  293. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH9);
  294. break;
  295. case 10:
  296. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH10) != 1) {
  297. /*msleep(1)*/
  298. usleep_range(1000, 2000);
  299. if ((count++) > count_time_out) {
  300. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  301. dwChannel);
  302. break;
  303. }
  304. }
  305. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH10);
  306. break;
  307. case 11:
  308. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH11) != 1) {
  309. usleep_range(1000, 1200);
  310. if ((count++) > count_time_out) {
  311. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  312. dwChannel);
  313. break;
  314. }
  315. }
  316. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH11);
  317. break;
  318. case 12:
  319. case 13:
  320. case 14:
  321. case 15:
  322. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH12_15) != 1) {
  323. /*msleep(1)*/
  324. usleep_range(1000, 2000);
  325. if ((count++) > count_time_out) {
  326. PMICLOG2("[IMM_GetOneChannelValue_PMIC] (%d) Time out!\n",
  327. dwChannel);
  328. break;
  329. }
  330. }
  331. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH12_15);
  332. break;
  333. default:
  334. PMICLOG2("[AUXADC] Invalid channel value(%d,%d)\n", dwChannel, trimd);
  335. mutex_unlock(&pmic_adc_mutex);
  336. wake_unlock(&pmicAuxadc_irq_lock);
  337. return -1;
  338. break;
  339. }
  340. switch (dwChannel) {
  341. case 0:
  342. r_val_temp = 3;
  343. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 32768;
  344. break;
  345. case 1:
  346. r_val_temp = 3;
  347. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 32768;
  348. break;
  349. case 2:
  350. r_val_temp = 1;
  351. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 4096;
  352. break;
  353. case 3:
  354. r_val_temp = 1;
  355. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 4096;
  356. break;
  357. case 4:
  358. r_val_temp = 1;
  359. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 4096;
  360. break;
  361. case 5:
  362. r_val_temp = 1;
  363. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 4096;
  364. break;
  365. case 6:
  366. r_val_temp = 1;
  367. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 4096;
  368. break;
  369. case 7:
  370. r_val_temp = 1;
  371. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 32768;
  372. break;
  373. case 8:
  374. r_val_temp = 1;
  375. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 4096;
  376. break;
  377. case 9:
  378. case 10:
  379. case 11:
  380. case 12:
  381. case 13:
  382. case 14:
  383. case 15:
  384. r_val_temp = 1;
  385. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 4096;
  386. break;
  387. default:
  388. PMICLOG2("[AUXADC] Invalid channel value(%d,%d)\n", dwChannel, trimd);
  389. mutex_unlock(&pmic_adc_mutex);
  390. wake_unlock(&pmicAuxadc_irq_lock);
  391. return -1;
  392. break;
  393. }
  394. mutex_unlock(&pmic_adc_mutex);
  395. wake_unlock(&pmicAuxadc_irq_lock);
  396. /*PMICLOG2("[AUXADC] ch=%d raw=%d data=%d\n", dwChannel, ret_data,adc_result);*/
  397. /*return ret_data;*/
  398. return adc_result;
  399. }
  400. unsigned int PMIC_IMM_GetOneChannelValueMD(unsigned char dwChannel, int deCount, int trimd)
  401. {
  402. signed int ret = 0;
  403. signed int ret_data;
  404. signed int r_val_temp = 0;
  405. signed int adc_result = 0;
  406. int count = 0;
  407. /*
  408. CH0: BATSNS
  409. CH1: ISENSE
  410. CH4: PMIC TEMP
  411. CH7: TSX by MD
  412. CH8: TSX by GPS
  413. */
  414. if (dwChannel != 0 && dwChannel != 1 && dwChannel != 4 && dwChannel != 7 && dwChannel != 8)
  415. return -1;
  416. wake_lock(&pmicAuxadc_irq_lock);
  417. mutex_lock(&pmic_adc_mutex);
  418. ret = pmic_config_interface(MT6328_TOP_CLKSQ_SET, (1 << 3), 0xffff, 0);
  419. ret = pmic_config_interface(MT6328_AUXADC_RQST1_SET, (1 << dwChannel), 0xffff, 0);
  420. mutex_unlock(&pmic_adc_mutex);
  421. udelay(10);
  422. switch (dwChannel) {
  423. case 0:
  424. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH0_BY_MD) != 1) {
  425. /*msleep(1)*/
  426. usleep_range(1000, 2000);
  427. if ((count++) > count_time_out) {
  428. PMICLOG2("[PMIC_IMM_GetOneChannelValueMD] (%d) Time out!\n",
  429. dwChannel);
  430. break;
  431. }
  432. }
  433. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH0_BY_MD);
  434. break;
  435. case 1:
  436. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH1_BY_MD) != 1) {
  437. /*msleep(1)*/
  438. usleep_range(1000, 2000);
  439. if ((count++) > count_time_out) {
  440. PMICLOG2("[PMIC_IMM_GetOneChannelValueMD] (%d) Time out!\n",
  441. dwChannel);
  442. break;
  443. }
  444. }
  445. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH1_BY_MD);
  446. break;
  447. case 4:
  448. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH4_BY_MD) != 1) {
  449. /*msleep(1)*/
  450. usleep_range(1000, 2000);
  451. if ((count++) > count_time_out) {
  452. PMICLOG2("[PMIC_IMM_GetOneChannelValueMD] (%d) Time out!\n",
  453. dwChannel);
  454. break;
  455. }
  456. }
  457. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH4_BY_MD);
  458. break;
  459. case 7:
  460. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH7_BY_MD) != 1) {
  461. /*msleep(1)*/
  462. usleep_range(1000, 2000);
  463. if ((count++) > count_time_out) {
  464. PMICLOG2("[PMIC_IMM_GetOneChannelValueMD] (%d) Time out!\n",
  465. dwChannel);
  466. break;
  467. }
  468. }
  469. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH7_BY_MD);
  470. break;
  471. case 8:
  472. while (pmic_get_register_value(PMIC_AUXADC_ADC_RDY_CH7_BY_GPS) != 1) {
  473. /*msleep(1)*/
  474. usleep_range(1000, 2000);
  475. if ((count++) > count_time_out) {
  476. PMICLOG2("[PMIC_IMM_GetOneChannelValueMD] (%d) Time out!\n",
  477. dwChannel);
  478. break;
  479. }
  480. }
  481. ret_data = pmic_get_register_value(PMIC_AUXADC_ADC_OUT_CH7_BY_GPS);
  482. break;
  483. default:
  484. PMICLOG2("[AUXADC] Invalid channel value(%d,%d)\n", dwChannel, trimd);
  485. wake_unlock(&pmicAuxadc_irq_lock);
  486. return -1;
  487. break;
  488. }
  489. switch (dwChannel) {
  490. case 0:
  491. r_val_temp = 3;
  492. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 32768;
  493. break;
  494. case 1:
  495. r_val_temp = 3;
  496. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 32768;
  497. break;
  498. case 4:
  499. r_val_temp = 1;
  500. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 4096;
  501. break;
  502. case 7:
  503. r_val_temp = 1;
  504. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 32768;
  505. break;
  506. case 8:
  507. r_val_temp = 1;
  508. adc_result = (ret_data * r_val_temp * VOLTAGE_FULL_RANGE) / 32768;
  509. break;
  510. default:
  511. PMICLOG2("[AUXADC] Invalid channel value(%d,%d)\n", dwChannel, trimd);
  512. wake_unlock(&pmicAuxadc_irq_lock);
  513. return -1;
  514. break;
  515. }
  516. wake_unlock(&pmicAuxadc_irq_lock);
  517. PMICLOG2("[AUXADC] PMIC_IMM_GetOneChannelValueMD ch=%d raw=%d data=%d\n", dwChannel,
  518. ret_data, adc_result);
  519. return ret_data;
  520. /*return adc_result;*/
  521. }