Advertisement
gimmeitorilltell

Practice file

Aug 4th, 2017
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.83 KB | None | 0 0
  1.  
  2. /*
  3. * Based on the work of Tony Sun
  4. * Zhenglq : Add for Get nv data from modem using SMEM.
  5. */
  6.  
  7. #include <linux/types.h>
  8. //#include <linux/sysdev.h>
  9. #include <linux/proc_fs.h>
  10. #include "smd_private.h"
  11. //#include "include/mach/proc_comm.h"
  12. #include <linux/module.h>
  13. #include <linux/string.h>
  14. #include <linux/errno.h>
  15. #include <linux/uaccess.h>
  16. #include <linux/slab.h>
  17.  
  18. #define NV_WIFI_ADDR_SIZE 6
  19. #define NV_BT_ADDR_SIZE 6
  20. #define NV_MAX_SIZE 512
  21. /* [BEGIN] guohh1 20131011 add for FACTORYDATACHECK */
  22. //#define NV_OTHERS_SIZE (NV_MAX_SIZE - NV_WIFI_ADDR_SIZE - NV_BT_ADDR_SIZE)
  23. <<<<<<< HEAD
  24. #define NV_OTHERS_SIZE (NV_MAX_SIZE - NV_WIFI_ADDR_SIZE - NV_BT_ADDR_SIZE-32-32-16-16-16 -16 - 32 -100)
  25. =======
  26. //#define NV_OTHERS_SIZE (NV_MAX_SIZE - NV_WIFI_ADDR_SIZE - NV_BT_ADDR_SIZE-32-32-16-16-16 -16 - 32 -100)
  27. //[quanfj1] added for run qlogd when the first booting
  28. #define NV_OTHERS_SIZE (NV_MAX_SIZE - NV_WIFI_ADDR_SIZE - NV_BT_ADDR_SIZE-32-32-16-16-16 -16 - 32 -100 -32)
  29. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  30. /* [END ] guohh1 20131011 add for FACTORYDATACHECK*/
  31.  
  32. struct smem_nv {
  33. unsigned char nv_wifi[NV_WIFI_ADDR_SIZE];
  34. unsigned char nv_bt[NV_BT_ADDR_SIZE];
  35. /* [BEGIN] guohh1 20131011 add for FACTORYDATACHECK */
  36. unsigned char nv_sn1[32];
  37. unsigned char nv_sn2[32];
  38. unsigned char nv_meid[16];
  39. unsigned char nv_imei1[16];
  40. unsigned char nv_imei2[16];
  41. unsigned char nv_hwid[16];
  42. unsigned char nv_station[32];
  43. /* [END ] guohh1 20131011 add for FACTORYDATACHECK*/
  44. <<<<<<< HEAD
  45. /* [BEGIN][PLAT-66][MODEM][guohh11][20150610] read NV2498 and set proc */
  46. unsigned char nv_2498[100];
  47. /* [END][PLAT-66][MODEM][guohh11][20150610] read NV2498 and set proc */
  48. unsigned char nv_others[NV_OTHERS_SIZE];
  49. =======
  50.  
  51. //[quanfj1] read NV_FANCY_RUN_QLOGD_ALWAYS and set proc
  52. unsigned char nv_qlogd[32];
  53.  
  54. /* [BEGIN][PLAT-66][MODEM][guohh11][20150610] read NV2498 and set proc */
  55. unsigned char nv_2498[100];
  56. /* [END][PLAT-66][MODEM][guohh11][20150610] read NV2498 and set proc */
  57. unsigned char nv_others[NV_OTHERS_SIZE];
  58. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  59. };
  60. static struct smem_nv * psmem_nv = NULL;
  61.  
  62. void dump_smem(struct smem_nv *buf)
  63. {
  64. <<<<<<< HEAD
  65. int i;
  66.  
  67. for(i=0;i<NV_WIFI_ADDR_SIZE;i++)
  68. printk(KERN_ALERT "wifi[%d] = %d ", i, (int)(buf->nv_wifi[i]));
  69.  
  70. for(i=0;i<NV_BT_ADDR_SIZE;i++)
  71. printk(KERN_ALERT "bt[%d]= %d ", i,(int)buf->nv_bt[i]);
  72.  
  73. for(i=0;i<32;i++)
  74. printk(KERN_ALERT "sn1[%d]= %d ", i,(int)buf->nv_sn1[i]);
  75.  
  76. for(i=0;i<32;i++)
  77. printk(KERN_ALERT "sn2[%d]= %d ",i, (int)buf->nv_sn2[i]);
  78.  
  79. for(i=0;i<16;i++)
  80. printk(KERN_ALERT "meid[%d]= %d ",i, (int)buf->nv_meid[i]);
  81. printk(KERN_ALERT "\n");
  82.  
  83. for(i=0;i<16;i++)
  84. printk(KERN_ALERT "imei1[%d]= %d ",i, (int)buf->nv_imei1[i]);
  85. printk(KERN_ALERT "\n");
  86.  
  87. for(i=0;i<16;i++)
  88. printk(KERN_ALERT "imei2[%d]= %d ", i, (int)buf->nv_imei2[i]);
  89. printk(KERN_ALERT "\n");
  90.  
  91. for(i=0;i<16;i++)
  92. printk(KERN_ALERT "hwid[%d]= %d ", i, (int)buf->nv_hwid[i]);
  93. printk(KERN_ALERT "\n");
  94.  
  95. for(i=0;i<32;i++)
  96. printk(KERN_ALERT "station[%d]= %d ", i, (int)buf->nv_station[i]);
  97. printk(KERN_ALERT "\n");
  98.  
  99. for(i=0;i<100;i++)
  100. printk(KERN_ALERT "2498[%d]= %d ", i, (int)buf->nv_2498[i]);
  101. printk(KERN_ALERT "\n");
  102.  
  103. for(i=0;i<NV_OTHERS_SIZE;i++)
  104. printk(KERN_ALERT "others[%d]= %d ", i, (int)buf->nv_others[i]);
  105. printk(KERN_ALERT "\n");
  106.  
  107. printk(KERN_ALERT "\n");
  108.  
  109. return;
  110. =======
  111. print_hex_dump(KERN_ALERT, "wifi : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_wifi, NV_WIFI_ADDR_SIZE, false);
  112. print_hex_dump(KERN_ALERT, "bt : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_bt, NV_BT_ADDR_SIZE, false);
  113. print_hex_dump(KERN_ALERT, "sn1 : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_sn1, 32, true);
  114. print_hex_dump(KERN_ALERT, "sn2 : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_sn2, 32, true);
  115. print_hex_dump(KERN_ALERT, "meid : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_meid, 16, true);
  116. print_hex_dump(KERN_ALERT, "imei1 : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_imei1, 16, true);
  117. print_hex_dump(KERN_ALERT, "imei2 : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_imei2, 16, true);
  118. print_hex_dump(KERN_ALERT, "hwid : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_hwid, 16, true);
  119. print_hex_dump(KERN_ALERT, "station: ", DUMP_PREFIX_NONE, 16, 1, buf->nv_station, 32, true);
  120. print_hex_dump(KERN_ALERT, "2498 : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_2498, 100, true);
  121. print_hex_dump(KERN_ALERT, "qlogd : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_qlogd, 32, true);
  122. print_hex_dump(KERN_ALERT, "others : ", DUMP_PREFIX_NONE, 16, 1, buf->nv_others, NV_OTHERS_SIZE, false);
  123. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  124. }
  125.  
  126. static void smem_read_nv(void)
  127. {
  128. struct smem_nv * buf;
  129.  
  130. buf = smem_alloc(SMEM_ID_VENDOR_READ_NV, NV_MAX_SIZE,SMEM_APPS,2);//shixy1,flag 1 need to be confirm here
  131. if(!buf)
  132. printk(KERN_ERR "SMEM_ID_VENDOR_READ_NV smem_alloc failed\n");
  133. //dump_smem(buf);
  134.  
  135. psmem_nv = kzalloc(sizeof(struct smem_nv),GFP_KERNEL);
  136. if(!psmem_nv)
  137. printk(KERN_ERR "++++++++++++++++++++++=malloc psmem_nv fail \n");
  138.  
  139. memcpy( psmem_nv, buf, sizeof(struct smem_nv));
  140. dump_smem(psmem_nv);
  141.  
  142. return;
  143. }
  144.  
  145. static long dump_wifi_addr(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  146. {
  147. loff_t pos = *f_pos;
  148.  
  149. if (!psmem_nv)
  150. smem_read_nv();
  151.  
  152. if (!psmem_nv)
  153. {
  154. printk(KERN_ERR "Could not get smem for wlan mac nv\n");
  155. return 0;
  156. }
  157.  
  158. <<<<<<< HEAD
  159. printk(KERN_ERR "wifi addr = 0x %02x %02x %02x %02x %02x %02x\n",
  160. psmem_nv->nv_wifi[0],psmem_nv->nv_wifi[1],psmem_nv->nv_wifi[2],
  161. psmem_nv->nv_wifi[3],psmem_nv->nv_wifi[4],psmem_nv->nv_wifi[5]);
  162. =======
  163. //printk(KERN_ERR "wifi addr = 0x %02x %02x %02x %02x %02x %02x\n",
  164. // psmem_nv->nv_wifi[0],psmem_nv->nv_wifi[1],psmem_nv->nv_wifi[2],
  165. // psmem_nv->nv_wifi[3],psmem_nv->nv_wifi[4],psmem_nv->nv_wifi[5]);
  166. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  167.  
  168. if(pos >= NV_WIFI_ADDR_SIZE)
  169. {
  170. count = 0;
  171. goto out;
  172. }
  173.  
  174. if(count > (NV_WIFI_ADDR_SIZE - pos))
  175. count = NV_WIFI_ADDR_SIZE - pos;
  176.  
  177. pos += count;
  178.  
  179. <<<<<<< HEAD
  180. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),NV_WIFI_ADDR_SIZE);
  181. =======
  182. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),NV_WIFI_ADDR_SIZE);
  183. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  184. if(copy_to_user(buf,psmem_nv->nv_wifi+*f_pos,count)){
  185. count = -EFAULT;
  186. goto out;
  187. }
  188.  
  189. *f_pos = pos;
  190.  
  191. out:
  192. return count;
  193. }
  194.  
  195. int wlan_get_nv_mac(char* buf)
  196. {
  197. int ret = -1;
  198.  
  199. if (!psmem_nv)
  200. smem_read_nv();
  201.  
  202. if (!psmem_nv){
  203. printk(KERN_ERR "Could not get smem for wlan mac nv\n");
  204. return ret;
  205. }
  206.  
  207. printk(KERN_ERR "wifi addr = 0x %02x %02x %02x %02x %02x %02x\n",
  208. psmem_nv->nv_wifi[0],psmem_nv->nv_wifi[1],psmem_nv->nv_wifi[2],
  209. psmem_nv->nv_wifi[3],psmem_nv->nv_wifi[4],psmem_nv->nv_wifi[5]);
  210. memcpy( buf, psmem_nv->nv_wifi, NV_WIFI_ADDR_SIZE);
  211. return 0;
  212. }
  213. EXPORT_SYMBOL_GPL(wlan_get_nv_mac);
  214.  
  215. static long dump_bt_addr(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  216. {
  217. loff_t pos = *f_pos;
  218. size_t len;
  219.  
  220. if (!psmem_nv)
  221. smem_read_nv();
  222.  
  223. if (!psmem_nv)
  224. {
  225. printk(KERN_ERR "Could not get smem for bt mac nv\n");
  226. return 0;
  227. }
  228.  
  229. len = sizeof(psmem_nv->nv_bt);
  230.  
  231. <<<<<<< HEAD
  232. printk(KERN_ALERT"count = %d f_pos = %d len = %d\n",(int)count, (int)pos,(int)len);
  233. =======
  234. //printk(KERN_ALERT"count = %d f_pos = %d len = %d\n",(int)count, (int)pos,(int)len);
  235. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  236. if(pos >= len )
  237. {
  238. count = 0;
  239. goto out;
  240. }
  241.  
  242. if(count > (len - pos))
  243. count = len - pos;
  244.  
  245. pos += count;
  246.  
  247. <<<<<<< HEAD
  248. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  249. =======
  250. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  251. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  252. if(copy_to_user(buf,psmem_nv->nv_bt + (*f_pos),count)){
  253. count = -EFAULT;
  254. goto out;
  255. }
  256.  
  257. *f_pos = pos;
  258.  
  259. out:
  260. return count;
  261. }
  262.  
  263. /* [BEGIN] guohh1 20131011 add for FACTORYDATACHECK */
  264. static long dump_lnv_sn1(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  265. {
  266. loff_t pos = *f_pos;
  267. size_t len;
  268.  
  269. if (!psmem_nv)
  270. smem_read_nv();
  271.  
  272. if (!psmem_nv)
  273. return 0;
  274.  
  275. len = sizeof(psmem_nv->nv_sn1);
  276.  
  277. if(pos >= len)
  278. {
  279. count = 0;
  280. goto out;
  281. }
  282.  
  283. if(count > (len - pos))
  284. count = len - pos;
  285.  
  286. pos += count;
  287.  
  288. <<<<<<< HEAD
  289. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  290. =======
  291. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  292. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  293. if(copy_to_user(buf,psmem_nv->nv_sn1+*f_pos,count)){
  294. count = -EFAULT;
  295. goto out;
  296. }
  297.  
  298. *f_pos = pos;
  299.  
  300. out:
  301. return count;
  302. }
  303.  
  304. static long dump_lnv_sn2(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  305. {
  306. loff_t pos = *f_pos;
  307. size_t len;
  308.  
  309. if (!psmem_nv)
  310. smem_read_nv();
  311.  
  312. if (!psmem_nv)
  313. return 0;
  314.  
  315. len = sizeof(psmem_nv->nv_sn2);
  316.  
  317. if(pos >= len)
  318. {
  319. count = 0;
  320. goto out;
  321. }
  322.  
  323. if(count > (len - pos))
  324. count = len - pos;
  325.  
  326. pos += count;
  327.  
  328. <<<<<<< HEAD
  329. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  330. =======
  331. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  332. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  333. if(copy_to_user(buf,psmem_nv->nv_sn2+*f_pos,count)){
  334. count = -EFAULT;
  335. goto out;
  336. }
  337.  
  338. *f_pos = pos;
  339.  
  340. out:
  341. return count;
  342. }
  343.  
  344. static long dump_lnv_meid(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  345. {
  346. loff_t pos = *f_pos;
  347. size_t len;
  348.  
  349. if (!psmem_nv)
  350. smem_read_nv();
  351.  
  352. if (!psmem_nv)
  353. return 0;
  354.  
  355. len = sizeof(psmem_nv->nv_meid);
  356.  
  357. if(pos >= len)
  358. {
  359. count = 0;
  360. goto out;
  361. }
  362.  
  363. if(count > (len - pos))
  364. count = len - pos;
  365.  
  366. pos += count;
  367.  
  368. <<<<<<< HEAD
  369. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  370. =======
  371. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  372. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  373. if(copy_to_user(buf,psmem_nv->nv_meid+*f_pos,count)){
  374. count = -EFAULT;
  375. goto out;
  376. }
  377.  
  378. *f_pos = pos;
  379.  
  380. out:
  381. return count;
  382. }
  383.  
  384. static long dump_lnv_imei1(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  385. {
  386. loff_t pos = *f_pos;
  387. size_t len;
  388.  
  389. if (!psmem_nv)
  390. smem_read_nv();
  391.  
  392. if (!psmem_nv)
  393. return 0;
  394.  
  395. len = sizeof(psmem_nv->nv_imei1);
  396.  
  397. if(pos >= len)
  398. {
  399. count = 0;
  400. goto out;
  401. }
  402.  
  403. if(count > (len - pos))
  404. count = len - pos;
  405.  
  406. pos += count;
  407.  
  408. <<<<<<< HEAD
  409. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  410. =======
  411. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  412. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  413. if(copy_to_user(buf,psmem_nv->nv_imei1+*f_pos,count)){
  414. count = -EFAULT;
  415. goto out;
  416. }
  417.  
  418. *f_pos = pos;
  419.  
  420. out:
  421. return count;
  422. }
  423.  
  424. static long dump_lnv_imei2(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  425. {
  426. loff_t pos = *f_pos;
  427. size_t len;
  428.  
  429. if (!psmem_nv)
  430. smem_read_nv();
  431.  
  432. if (!psmem_nv)
  433. return 0;
  434.  
  435. len = sizeof(psmem_nv->nv_imei2);
  436.  
  437. if(pos >= len)
  438. {
  439. count = 0;
  440. goto out;
  441. }
  442.  
  443. if(count > (len - pos))
  444. count = len - pos;
  445.  
  446. pos += count;
  447.  
  448. <<<<<<< HEAD
  449. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  450. =======
  451. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  452. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  453. if(copy_to_user(buf,psmem_nv->nv_imei2+*f_pos,count)){
  454. count = -EFAULT;
  455. goto out;
  456. }
  457.  
  458. *f_pos = pos;
  459.  
  460. out:
  461. return count;
  462. }
  463.  
  464. static long dump_lnv_hwid(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  465. {
  466. loff_t pos = *f_pos;
  467. size_t len;
  468.  
  469. if (!psmem_nv)
  470. smem_read_nv();
  471.  
  472. if (!psmem_nv)
  473. return 0;
  474.  
  475. len = sizeof(psmem_nv->nv_hwid);
  476.  
  477. if(pos >= len)
  478. {
  479. count = 0;
  480. goto out;
  481. }
  482.  
  483. if(count > (len - pos))
  484. count = len - pos;
  485.  
  486. pos += count;
  487.  
  488. <<<<<<< HEAD
  489. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  490. =======
  491. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  492. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  493. if(copy_to_user(buf,psmem_nv->nv_hwid+*f_pos,count)){
  494. count = -EFAULT;
  495. goto out;
  496. }
  497.  
  498. *f_pos = pos;
  499.  
  500. out:
  501. return count;
  502. }
  503.  
  504. static long dump_lnv_station(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  505. {
  506. loff_t pos = *f_pos;
  507. size_t len;
  508.  
  509. if (!psmem_nv)
  510. smem_read_nv();
  511.  
  512. if (!psmem_nv)
  513. return 0;
  514.  
  515. len = sizeof(psmem_nv->nv_station);
  516.  
  517. if(pos >= len)
  518. {
  519. count = 0;
  520. goto out;
  521. }
  522.  
  523. if(count > (len - pos))
  524. count = len - pos;
  525.  
  526. pos += count;
  527.  
  528. <<<<<<< HEAD
  529. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  530. =======
  531. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  532. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  533. if(copy_to_user(buf,psmem_nv->nv_station+*f_pos,count)){
  534. count = -EFAULT;
  535. goto out;
  536. }
  537.  
  538. *f_pos = pos;
  539.  
  540. out:
  541. return count;
  542. }
  543. /* [END ] guohh1 20131011 add for FACTORYDATACHECK*/
  544. /* [BEGIN][PLAT-66][MODEM][guohh11][20150610] read NV2498 and set proc */
  545. static long dump_lnv_nv2498(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  546. {
  547. loff_t pos = *f_pos;
  548. size_t len;
  549.  
  550. if (!psmem_nv)
  551. smem_read_nv();
  552.  
  553. if (!psmem_nv)
  554. return 0;
  555.  
  556. len = sizeof(psmem_nv->nv_2498);
  557.  
  558. if(pos >= len)
  559. {
  560. count = 0;
  561. goto out;
  562. }
  563.  
  564. if(count > (len - pos))
  565. count = len - pos;
  566.  
  567. pos += count;
  568.  
  569. <<<<<<< HEAD
  570. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d addr = %lld\n",(int)count, (int)pos, (int)(*f_pos),(int)len,(long long)psmem_nv->nv_2498);
  571. =======
  572. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d addr = %lld\n",(int)count, (int)pos, (int)(*f_pos),(int)len,(long long)psmem_nv->nv_2498);
  573. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  574. if(copy_to_user(buf,psmem_nv->nv_2498 + (*f_pos),count)){
  575. count = -EFAULT;
  576. goto out;
  577. }
  578.  
  579. *f_pos = pos;
  580.  
  581. out:
  582. return count;
  583. }
  584. /* [END][PLAT-66][MODEM][guohh11][20150610] read NV2498 and set proc */
  585. <<<<<<< HEAD
  586. =======
  587.  
  588.  
  589. //[quanfj1] read NV_FANCY_RUN_QLOGD_ALWAYS and set proc
  590. static long dump_lnv_qlogd(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  591. {
  592. loff_t pos = *f_pos;
  593. size_t len;
  594.  
  595. if (!psmem_nv)
  596. smem_read_nv();
  597.  
  598. if (!psmem_nv)
  599. return 0;
  600.  
  601. len = sizeof(psmem_nv->nv_qlogd);
  602.  
  603. if(pos >= len)
  604. {
  605. count = 0;
  606. goto out;
  607. }
  608.  
  609. if(count > (len - pos))
  610. count = len - pos;
  611.  
  612. pos += count;
  613.  
  614. if(copy_to_user(buf,psmem_nv->nv_qlogd + (*f_pos),count)){
  615. count = -EFAULT;
  616. goto out;
  617. }
  618.  
  619. *f_pos = pos;
  620.  
  621. out:
  622. return count;
  623. }
  624.  
  625. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  626. static long dump_lnv_debug(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
  627. {
  628. loff_t pos = *f_pos;
  629. size_t len;
  630.  
  631. if (!psmem_nv)
  632. smem_read_nv();
  633.  
  634. if (!psmem_nv)
  635. return 0;
  636.  
  637. len = sizeof(struct smem_nv);
  638.  
  639. if(pos >= len)
  640. {
  641. count = 0;
  642. goto out;
  643. }
  644.  
  645. if(count > (len - pos))
  646. count = len - pos;
  647.  
  648. pos += count;
  649.  
  650. *f_pos = pos;
  651.  
  652. <<<<<<< HEAD
  653. printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  654. =======
  655. //printk(KERN_ALERT"count = %d pos = %d f_pos = %d len = %d\n",(int)count, (int)pos, (int)(*f_pos),(int)len);
  656. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  657. dump_smem(psmem_nv);
  658.  
  659. out:
  660. return count;
  661. }
  662.  
  663.  
  664. #define DECLARE_FOPS(name) static const struct file_operations name## _fops = { \
  665. .read = name, \
  666. };
  667.  
  668. #if 0
  669. #define DECLARE_OPEN(name) static int name## _open(struct inode *inode,struct file *file)\
  670. {\
  671. if (!psmem_nv)\
  672. {\
  673. psmem_nv = smem_read_nv();\
  674. dump_data();\
  675. }\
  676. if (!psmem_nv)\
  677. return 0;\
  678. \
  679. return single_open(file,name## _show,psmem_nv);\
  680. }
  681.  
  682.  
  683. DECLARE_OPEN(dump_wifi_addr)
  684. //DECLARE_OPEN(wlan_get_nv_mac)
  685. DECLARE_OPEN(dump_bt_addr)
  686. DECLARE_OPEN(dump_lnv_sn1)
  687. DECLARE_OPEN(dump_lnv_sn2)
  688. DECLARE_OPEN(dump_lnv_meid)
  689. DECLARE_OPEN(dump_lnv_imei1)
  690. DECLARE_OPEN(dump_lnv_imei2)
  691. DECLARE_OPEN(dump_lnv_hwid)
  692. DECLARE_OPEN(dump_lnv_station)
  693. DECLARE_OPEN(dump_lnv_globalmode_status)
  694. DECLARE_OPEN(dump_lnv_uemode)
  695. DECLARE_OPEN(dump_lnv_nv2498)
  696. #endif
  697.  
  698. DECLARE_FOPS(dump_wifi_addr)
  699. DECLARE_FOPS(dump_bt_addr)
  700. DECLARE_FOPS(dump_lnv_sn1)
  701. DECLARE_FOPS(dump_lnv_sn2)
  702. DECLARE_FOPS(dump_lnv_meid)
  703. DECLARE_FOPS(dump_lnv_imei1)
  704. DECLARE_FOPS(dump_lnv_imei2)
  705. DECLARE_FOPS(dump_lnv_hwid)
  706. DECLARE_FOPS(dump_lnv_station)
  707. DECLARE_FOPS(dump_lnv_nv2498)
  708. <<<<<<< HEAD
  709. =======
  710. DECLARE_FOPS(dump_lnv_qlogd)
  711. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  712. DECLARE_FOPS(dump_lnv_debug)
  713.  
  714. static void show_nv(void)
  715. {
  716. struct proc_dir_entry *wifi_addr_entry;
  717. struct proc_dir_entry *bt_addr_entry;
  718. /* [BEGIN] guohh1 20131011 add for FACTORYDATACHECK */
  719. struct proc_dir_entry *sn1_addr_entry;
  720. struct proc_dir_entry *sn2_addr_entry;
  721. struct proc_dir_entry *meid_addr_entry;
  722. struct proc_dir_entry *imei1_addr_entry;
  723. struct proc_dir_entry *imei2_addr_entry;
  724. struct proc_dir_entry *hwid_addr_entry;
  725. struct proc_dir_entry *station_addr_entry;
  726. /* [END ] guohh1 20131011 add for FACTORYDATACHECK*/
  727. <<<<<<< HEAD
  728. =======
  729.  
  730. struct proc_dir_entry *qlogd_addr_entry; //[quanfj1] read NV_FANCY_RUN_QLOGD_ALWAYS and set proc
  731.  
  732. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  733. /* [BEGIN][PLAT-66][MODEM][guohh11][20150610] read NV2498 and set proc */
  734. struct proc_dir_entry *nv2498_addr_entry;
  735. /* [END][PLAT-66][MODEM][guohh11][20150610] read NV2498 and set proc */
  736. struct proc_dir_entry *debug_entry;
  737.  
  738. wifi_addr_entry = proc_create("mac_wifi", 0, NULL, &dump_wifi_addr_fops);
  739. bt_addr_entry = proc_create("mac_bt", 0, NULL, &dump_bt_addr_fops);
  740. /* [BEGIN] guohh1 20131011 add for FACTORYDATACHECK */
  741. sn1_addr_entry = proc_create("lnvsn1", 0, NULL, &dump_lnv_sn1_fops);
  742. sn2_addr_entry = proc_create("lnvshowcode", 0, NULL, &dump_lnv_sn2_fops);
  743. meid_addr_entry = proc_create("lnvmeid", 0, NULL, &dump_lnv_meid_fops);
  744. imei1_addr_entry = proc_create("lnvimei1", 0, NULL, &dump_lnv_imei1_fops);
  745. imei2_addr_entry = proc_create("lnvimei2", 0, NULL, &dump_lnv_imei2_fops);
  746. hwid_addr_entry = proc_create("lnvhwid", 0, NULL, &dump_lnv_hwid_fops);
  747. station_addr_entry = proc_create("lnvstation", 0, NULL, &dump_lnv_station_fops);
  748. /* [END ] guohh1 20131011 add for FACTORYDATACHECK*/
  749. <<<<<<< HEAD
  750. =======
  751.  
  752. //[quanfj1] read NV_FANCY_RUN_QLOGD_ALWAYS and set proc
  753. qlogd_addr_entry = proc_create("lnvqlogd", 0, NULL, &dump_lnv_qlogd_fops);
  754.  
  755. >>>>>>> ab30b4acc7a405faa58279ef1f0092df32371c49
  756. /* [BEGIN][PLAT-66][MODEM][guohh11][20150610] read NV2498 and set proc */
  757. nv2498_addr_entry = proc_create("lnv2498", 0, NULL, &dump_lnv_nv2498_fops);
  758. /* [END][PLAT-66][MODEM][guohh11][20150610] read NV2498 and set proc */
  759. debug_entry = proc_create("ln_debug", 0, NULL, &dump_lnv_debug_fops);
  760.  
  761. }
  762.  
  763. static int __init shenqi_nv_init(void)
  764. {
  765. printk("%s(),%d\n",__func__,__LINE__);
  766. show_nv();
  767.  
  768. return 1;
  769. }
  770.  
  771. static void __exit shenqi_nv_exit(void)
  772. {
  773. printk("%s(),%d\n",__func__,__LINE__);
  774. kfree(psmem_nv);
  775. psmem_nv = NULL;
  776. }
  777.  
  778. module_init(shenqi_nv_init);
  779. module_exit(shenqi_nv_exit);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement