PageRenderTime 50ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/drivers/net/wireless/tiwlan1251/common/src/BusAccess/Shm_Common/whalHwEeprom.c

https://bitbucket.org/cyanogenmod/cm-kernel
C | 577 lines | 237 code | 56 blank | 284 comment | 37 complexity | 090e41eaac8033930d9fa609581741c4 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
  1. /****************************************************************************
  2. **+-----------------------------------------------------------------------+**
  3. **| |**
  4. **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |**
  5. **| All rights reserved. |**
  6. **| |**
  7. **| Redistribution and use in source and binary forms, with or without |**
  8. **| modification, are permitted provided that the following conditions |**
  9. **| are met: |**
  10. **| |**
  11. **| * Redistributions of source code must retain the above copyright |**
  12. **| notice, this list of conditions and the following disclaimer. |**
  13. **| * Redistributions in binary form must reproduce the above copyright |**
  14. **| notice, this list of conditions and the following disclaimer in |**
  15. **| the documentation and/or other materials provided with the |**
  16. **| distribution. |**
  17. **| * Neither the name Texas Instruments nor the names of its |**
  18. **| contributors may be used to endorse or promote products derived |**
  19. **| from this software without specific prior written permission. |**
  20. **| |**
  21. **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |**
  22. **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |**
  23. **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
  24. **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |**
  25. **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
  26. **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |**
  27. **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
  28. **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
  29. **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |**
  30. **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
  31. **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |**
  32. **| |**
  33. **+-----------------------------------------------------------------------+**
  34. ****************************************************************************/
  35. /**************************************************************************/
  36. /* */
  37. /* MODULE: whalHwEeprom.c */
  38. /* PURPOSE: Wlan hardware EEPROM access routines implemenatation */
  39. /* */
  40. /**************************************************************************/
  41. #include "whalCommon.h"
  42. #include "whalHwDefs.h"
  43. #include "whalHwEeprom.h"
  44. #include "TNETWIF.h"
  45. /****************************************************************************
  46. * whal_hwEeprom_Create()
  47. ****************************************************************************
  48. * DESCRIPTION: Create the wlan hardware eeprom access object
  49. *
  50. * INPUTS:
  51. *
  52. * OUTPUT: None
  53. *
  54. * RETURNS: The Created object
  55. ****************************************************************************/
  56. HwEeprom_T *whal_hwEeprom_Create(TI_HANDLE hOs)
  57. {
  58. HwEeprom_T *pObj;
  59. pObj = os_memoryAlloc(hOs, sizeof(HwEeprom_T));
  60. if (pObj == NULL)
  61. return NULL;
  62. os_memoryZero(hOs, pObj, sizeof(HwEeprom_T));
  63. pObj->hOs = hOs;
  64. return(pObj);
  65. }
  66. /****************************************************************************
  67. * whal_hwEeprom_Destroy()
  68. ****************************************************************************
  69. * DESCRIPTION: Destroy the object
  70. *
  71. * INPUTS:
  72. * pHwEeprom The object to free
  73. *
  74. * OUTPUT: None
  75. *
  76. * RETURNS: OK or NOK
  77. ****************************************************************************/
  78. int whal_hwEeprom_Destroy(HwEeprom_T *pHwEeprom)
  79. {
  80. if (pHwEeprom)
  81. os_memoryFree(pHwEeprom->hOs, pHwEeprom, sizeof(HwEeprom_T));
  82. return OK;
  83. }
  84. /****************************************************************************
  85. * whal_hwEeprom_Config()
  86. ****************************************************************************
  87. * DESCRIPTION: Config the object
  88. *
  89. * INPUTS:
  90. * pHwEeprom The object to free
  91. * hTNETWIF hardware access object
  92. *
  93. * OUTPUT: None
  94. *
  95. * RETURNS: OK or NOK
  96. ****************************************************************************/
  97. int whal_hwEeprom_Config(HwEeprom_T *pHwEeprom, TI_HANDLE hTNETWIF, TI_HANDLE hReport)
  98. {
  99. pHwEeprom->hReport = hReport;
  100. pHwEeprom->hTNETWIF = hTNETWIF;
  101. return OK;
  102. }
  103. #ifdef USE_SYNC_API
  104. /************************************************************************
  105. * UINT32 whal_hwEepromReadByte(UINT16 wAddr,UINT8 *pbVal) *
  106. *************************************************************************
  107. * DESCRIPTION: Reads a single byte from EEPROM. *
  108. * *
  109. * INPUT: wAddr - 16-bits EEPROM addrress *
  110. * pbVal - pointer the to output parameter - EEPROM value *
  111. * *
  112. * OUTPUT: *pbVal contains EEPROM value *
  113. * *
  114. * RETURN: OK - successful *
  115. * NOK timeout *
  116. *************************************************************************/
  117. UINT32 whal_hwEepromReadByte(HwEeprom_T *pHwEeprom, UINT16 wAddr,UINT8 *pbVal)
  118. {
  119. UINT32 data;
  120. int i = 0x00;
  121. wAddr &= 0x07ff;
  122. TNETWIF_WriteRegSync(pHwEeprom->hTNETWIF, ACX_EE_ADDR_REG,(UINT32)wAddr);
  123. TNETWIF_WriteRegSync(pHwEeprom->hTNETWIF, ACX_EE_CTL_REG, EE_READ);
  124. while((TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,ACX_EE_CTL_REG,&data) & EE_READ) != 0x00)
  125. {
  126. if(i++ > EEPROM_ACCESS_TO)
  127. {
  128. return NOK; /* timeout */
  129. }
  130. }
  131. *pbVal = TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,ACX_EE_DATA_REG,&data) & 0xff;
  132. return OK;
  133. }
  134. /************************************************************************
  135. * UINT32 whal_hwEepromWriteByteNoUnp(UINT16 wAddr,UINT8 bVal) *
  136. *************************************************************************
  137. * DESCRIPTION: Writes a single byte to EEPROM *
  138. * *
  139. * INPUT: wAddr - 16-bits EEPROM addrress *
  140. * bVal - new value *
  141. * *
  142. * OUTPUT: N/A *
  143. * *
  144. * RETURN: OK - successful *
  145. * NOK timeout *
  146. *************************************************************************/
  147. UINT32 whal_hwEepromWriteByteNoUnp(HwEeprom_T *pHwEeprom, UINT16 wAddr,UINT8 bVal)
  148. {
  149. volatile int i=0;
  150. UINT32 data;
  151. wAddr &= 0x07ff;
  152. TNETWIF_WriteRegSync(pHwEeprom->hTNETWIF, ACX_EE_ADDR_REG,(UINT32)wAddr);
  153. TNETWIF_WriteRegSync(pHwEeprom->hTNETWIF, ACX_EE_DATA_REG,bVal);
  154. TNETWIF_WriteRegSync(pHwEeprom->hTNETWIF, ACX_EE_CTL_REG, EE_WRITE);
  155. while((TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,ACX_EE_CTL_REG,&data)& EE_WRITE) != 0x00)
  156. {
  157. volatile int y=0;
  158. for( ; y<100; y++) {}
  159. if(i++ > EEPROM_ACCESS_TO)
  160. {
  161. return NOK; /* timeout */
  162. }
  163. }
  164. return OK;
  165. }
  166. /************************************************************************
  167. * void whal_hwEepromProtect(void) *
  168. *************************************************************************
  169. * DESCRIPTION: Set EEPROM write protection. *
  170. * Inhibits writing to the EEPROM. *
  171. * *
  172. * INPUT: N/A *
  173. * *
  174. * OUTPUT: N/A *
  175. * *
  176. * RETURN: N/A *
  177. *************************************************************************/
  178. void whal_hwEepromProtect(HwEeprom_T *pHwEeprom)
  179. {
  180. /* Set up write protect. Should be according to board type and SW patch
  181. rather than according to Hardware EEPROM
  182. */
  183. TNETWIF_RegIsBitSet(pHwEeprom->hTNETWIF, ACX_GPIO_OUT_REG, 1ul << 9);
  184. }
  185. /************************************************************************
  186. * void whal_hwEepromUnprotect(void) *
  187. *************************************************************************
  188. * DESCRIPTION: Remove EEPROM write protection. *
  189. * Enables writing to the EEPROM. *
  190. * *
  191. * INPUT: N/A *
  192. * *
  193. * OUTPUT: N/A *
  194. * *
  195. * RETURN: N/A *
  196. *************************************************************************/
  197. void whal_hwEepromUnprotect(HwEeprom_T *pHwEeprom)
  198. {
  199. /* Turn off write protect. Should be according to board type and SW patch
  200. rather than according to Hardware EEPROM
  201. */
  202. TNETWIF_RegResetBitVal(pHwEeprom->hTNETWIF, ACX_GPIO_OUT_REG, 1ul << 9);
  203. }
  204. /************************************************************************
  205. * UINT32 whal_hwEepromWriteByte(UINT16 wAddr,UINT8 bVal) *
  206. *************************************************************************
  207. * DESCRIPTION: Writes a single byte to EEPROM *
  208. * *
  209. * INPUT: wAddr - 16-bits EEPROM addrress *
  210. * bVal - new value *
  211. * *
  212. * OUTPUT: N/A *
  213. * *
  214. * RETURN: OK - successful *
  215. * NOK timeout *
  216. *************************************************************************/
  217. UINT32 whal_hwEepromWriteByte(HwEeprom_T *pHwEeprom, UINT16 wAddr,UINT8 bVal)
  218. {
  219. UINT32 retCode;
  220. whal_hwEepromUnprotect(pHwEeprom);
  221. os_StalluSec(pHwEeprom->hOs, 100000);
  222. retCode = whal_hwEepromWriteByteNoUnp(pHwEeprom, wAddr, bVal);
  223. os_StalluSec(pHwEeprom->hOs, 100000);
  224. whal_hwEepromProtect(pHwEeprom);
  225. return retCode;
  226. }
  227. /************************************************************************
  228. * UINT32 whal_hwEepromGetCalValue(UINT8 *pbVal) *
  229. *************************************************************************
  230. * DESCRIPTION: Reads oscillator cal. value from EEPROM *
  231. * *
  232. * INPUT: N/A *
  233. * *
  234. * OUTPUT: pbVal - pointer to the output parameter *
  235. * *
  236. * RETURN: OK successful *
  237. * NOK timeout *
  238. *************************************************************************/
  239. UINT32 whal_hwEepromGetCalValue(HwEeprom_T *pHwEeprom, UINT8 *pbVal)
  240. {
  241. return whal_hwEepromReadByte(pHwEeprom, HW_EEPROM_OSC_ADDR,pbVal);
  242. }
  243. /************************************************************************
  244. * UINT32 whal_hwEepromSetCalValue(UINT8 bVal) *
  245. *************************************************************************
  246. * DESCRIPTION: Writes new oscillator cal. value to EEPROM *
  247. * *
  248. * INPUT: bVal - new oscillator cal. value *
  249. * *
  250. * OUTPUT: N/A *
  251. * *
  252. * RETURN: OK successful *
  253. * NOK timeout or invalid value *
  254. *************************************************************************/
  255. UINT32 whal_hwEepromSetCalValue(HwEeprom_T *pHwEeprom, UINT8 bVal)
  256. {
  257. if(bVal > MAX_OSC_CAL)
  258. {
  259. return NOK;
  260. }
  261. return whal_hwEepromWriteByte(pHwEeprom, HW_EEPROM_OSC_ADDR,bVal);
  262. }
  263. /************************************************************************
  264. * UINT32 whal_hwEepromGetBiasValue(UINT8 *pbVal) *
  265. *************************************************************************
  266. * DESCRIPTION: Reads bias value from EEPROM *
  267. * *
  268. * INPUT: N/A *
  269. * *
  270. * OUTPUT: pbVal - pointer to the output parameter *
  271. * *
  272. * RETURN: OK successful *
  273. * NOK timeout *
  274. *************************************************************************/
  275. UINT32 whal_hwEepromGetBiasValue(HwEeprom_T *pHwEeprom, UINT8 *pbVal)
  276. {
  277. return whal_hwEepromReadByte(pHwEeprom, HW_EEPROM_BIAS_ADDR,pbVal);
  278. }
  279. /************************************************************************
  280. * UINT32 whal_hwEepromSetBiasValue(UINT8 bVal) *
  281. *************************************************************************
  282. * DESCRIPTION: Writes new bias value to EEPROM *
  283. * *
  284. * INPUT: bVal - new bias value *
  285. * *
  286. * OUTPUT: N/A *
  287. * *
  288. * RETURN: OK successful *
  289. * NOK timeout *
  290. *************************************************************************/
  291. UINT32 whal_hwEepromSetBiasValue(HwEeprom_T *pHwEeprom, UINT8 bVal)
  292. {
  293. return whal_hwEepromWriteByte(pHwEeprom, HW_EEPROM_BIAS_ADDR,bVal);
  294. }
  295. /************************************************************************
  296. * UINT32 whal_hwEepromGetDACValue(UINT8 *pbVal) *
  297. *************************************************************************
  298. * DESCRIPTION: Reads DAC value from EEPROM *
  299. * *
  300. * INPUT: N/A *
  301. * *
  302. * OUTPUT: pbVal - pointer to the output parameter *
  303. * *
  304. * RETURN: OK successful *
  305. * NOK timeout *
  306. *************************************************************************/
  307. UINT32 whal_hwEepromGetDACValue(HwEeprom_T *pHwEeprom, UINT8 *pbVal)
  308. {
  309. return whal_hwEepromReadByte(pHwEeprom, HW_EEPROM_DAC_ADDR,pbVal);
  310. }
  311. /************************************************************************
  312. * UINT32 whal_hwEepromSetDACValue(UINT8 bVal) *
  313. *************************************************************************
  314. * DESCRIPTION: Writes new DAC value to EEPROM *
  315. * *
  316. * INPUT: bVal - new DAC value *
  317. * *
  318. * OUTPUT: N/A *
  319. * *
  320. * RETURN: OK successful *
  321. * NOK timeout *
  322. *************************************************************************/
  323. UINT32 whal_hwEepromSetDACValue(HwEeprom_T *pHwEeprom, UINT8 bVal)
  324. {
  325. return whal_hwEepromWriteByte(pHwEeprom, HW_EEPROM_DAC_ADDR,bVal);
  326. }
  327. /************************************************************************
  328. * int whal_hwEepromLoadBaseBandTable(void) *
  329. *************************************************************************
  330. * DESCRIPTION: Loads BB registers table from EEPROM *
  331. * *
  332. * INPUT: N/A *
  333. * *
  334. * OUTPUT: N/A *
  335. * *
  336. * RETURN: N/A *
  337. *************************************************************************/
  338. int whal_hwEepromLoadBaseBandTable(HwEeprom_T *pHwEeprom)
  339. {
  340. UINT8 bRegVal;
  341. UINT16 wTableAddress;
  342. UINT8 bNumberOfEntries;
  343. UINT16 wTableEnd;
  344. UINT8 bEntrySize;
  345. UINT8 bbAddr;
  346. UINT8 bbData;
  347. int addr;
  348. if(whal_hwEepromReadByte(pHwEeprom, 0x14a,&bRegVal) != OK)
  349. {
  350. return NOK;
  351. }
  352. wTableAddress = bRegVal;
  353. if(whal_hwEepromReadByte(pHwEeprom, 0x14b,&bRegVal) != OK)
  354. {
  355. return NOK;
  356. }
  357. wTableAddress |= bRegVal << 8;
  358. if(whal_hwEepromReadByte(pHwEeprom, wTableAddress,&bRegVal) != OK)
  359. {
  360. }
  361. bNumberOfEntries = bRegVal;
  362. if(whal_hwEepromReadByte(pHwEeprom, (UINT16)(wTableAddress+1),&bRegVal) != OK)
  363. {
  364. return NOK;
  365. }
  366. bEntrySize = bRegVal;
  367. WLAN_REPORT_INFORMATION(pHwEeprom->hReport, HAL_HW_CTRL_MODULE_LOG,
  368. ("\tTable Address: 0x%x\n\tNumber of elements: 0x%x\n\tEntry Size: 0x%x\n",
  369. wTableAddress,bNumberOfEntries,bEntrySize));
  370. wTableEnd = wTableAddress + (bEntrySize * (bNumberOfEntries + 1));
  371. for(addr = wTableAddress + 2; addr < wTableEnd; addr+= bEntrySize)
  372. {
  373. if(whal_hwEepromReadByte(pHwEeprom, (UINT16)addr,&bbAddr)!= OK)
  374. {
  375. return NOK;
  376. }
  377. if(whal_hwEepromReadByte(pHwEeprom, (UINT16)(addr+1),&bbData)!= OK)
  378. {
  379. return NOK;
  380. }
  381. /*
  382. whal_hwWritePHYReg(bbAddr,bbData);
  383. -- the follwing 3 statements do the same thing
  384. */
  385. TNETWIF_WriteRegSync(pHwEeprom->hTNETWIF, ACX_PHY_ADDR_REG, bbAddr);
  386. TNETWIF_WriteRegSync(pHwEeprom->hTNETWIF, ACX_PHY_DATA_REG, bbData);
  387. TNETWIF_WriteRegSync(pHwEeprom->hTNETWIF, ACX_PHY_CTRL_REG, 1 /* write */);
  388. }
  389. return OK;
  390. }/* END whal_hwEepromLoadBaseBandTable() */
  391. /************************************************************************
  392. * UINT32 whal_hwEepromGetAGCCell(UINT8 bTableOffset, UINT8 *pbVal) *
  393. *************************************************************************
  394. * DESCRIPTION: Reads one cell from ACG table *
  395. * *
  396. * INPUT: bTableOffset - zero-based offset of the cell in AGC *
  397. * table *
  398. * OUTPUT: pbVal - pointer to the output parameter *
  399. * *
  400. * RETURN: OK *
  401. * NOK - EEPROM write error *
  402. * INVALID_PARAMETER1 - invalid parameter 1 *
  403. *************************************************************************/
  404. UINT32 whal_hwEepromGetAGCCell(HwEeprom_T *pHwEeprom, UINT8 bTableOffset, UINT8 *pbVal)
  405. {
  406. if(bTableOffset > MAX_AGC_TABLE_ENTRIES)
  407. {
  408. *pbVal = 0x00;
  409. return (UINT32)INVALID_PARAMETER1;
  410. }
  411. return whal_hwEepromReadByte(pHwEeprom, (UINT16)(HW_EEPROM_AGC_TABLE_ADDR+bTableOffset),pbVal);
  412. }
  413. /************************************************************************
  414. * UINT32 whal_hwEepromSetAGCCell(UINT8 bTableOffset, UINT8 bVal) *
  415. *************************************************************************
  416. * DESCRIPTION: Writes one AGC table cell to EEPROM *
  417. * *
  418. * INPUT: bTableOffset - zero-based offset of the cell in AGC *
  419. * table *
  420. * bVal - new cell value *
  421. * OUTPUT: N/A *
  422. * *
  423. * RETURN: OK *
  424. * NOK - EEPROM write error *
  425. * INVALID_PARAMETER1 - invalid parameter 1 *
  426. *************************************************************************/
  427. UINT32 whal_hwEepromSetAGCCell(HwEeprom_T *pHwEeprom, UINT8 bTableOffset, UINT8 bVal)
  428. {
  429. if(bTableOffset > MAX_AGC_TABLE_ENTRIES)
  430. {
  431. return (UINT32)INVALID_PARAMETER1;
  432. }
  433. return whal_hwEepromWriteByte(pHwEeprom, (UINT16)(HW_EEPROM_AGC_TABLE_ADDR+bTableOffset), bVal);
  434. }
  435. /****************************************************************************
  436. * whal_hwCtrl_GetRadioTypeAndEEPROMversion()
  437. ****************************************************************************
  438. * DESCRIPTION:
  439. *
  440. * INPUTS: None
  441. *
  442. * OUTPUT: None
  443. *
  444. * RETURNS: OK or NOK
  445. ****************************************************************************/
  446. int whal_hwEeprom_GetRadioTypeAndEEPROMversion(HwEeprom_T *pHwEeprom, UINT32 *major, UINT32 *minor, UINT32 *bugfix)
  447. {
  448. /*volatile */
  449. UINT32 radioType;
  450. /*volatile */
  451. UINT32 eectl;
  452. /*
  453. * Read major eeprom version - offset 5
  454. */
  455. TNETWIF_WriteRegSync( pHwEeprom->hTNETWIF, EE_ADDR, 5);
  456. TNETWIF_WriteRegSync( pHwEeprom->hTNETWIF, EE_CTL, 0x2);
  457. do
  458. {
  459. TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,EE_CTL,&eectl);
  460. if (eectl == 0xffffffff)
  461. return -1;
  462. } while (eectl &0x2);
  463. TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,EE_DATA,major);
  464. /*
  465. * Read minor eeprom version - offset 9
  466. */
  467. TNETWIF_WriteRegSync( pHwEeprom->hTNETWIF, EE_ADDR, 9);
  468. TNETWIF_WriteRegSync( pHwEeprom->hTNETWIF, EE_CTL, 0x2);
  469. do
  470. {
  471. TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,EE_CTL,&eectl);
  472. if (eectl == 0xffffffff)
  473. return -1;
  474. } while (eectl &0x2);
  475. TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,EE_DATA,minor);
  476. /*
  477. * Read bugfix eeprom version - offset A
  478. */
  479. TNETWIF_WriteRegSync( pHwEeprom->hTNETWIF, EE_ADDR, 0xA);
  480. TNETWIF_WriteRegSync( pHwEeprom->hTNETWIF, EE_CTL, 0x2);
  481. do
  482. {
  483. TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,EE_CTL,&eectl);
  484. if (eectl == 0xffffffff)
  485. return -1;
  486. } while (eectl &0x2);
  487. TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,EE_DATA,bugfix);
  488. /*
  489. * Read radio type - offset 4
  490. */
  491. TNETWIF_WriteRegSync( pHwEeprom->hTNETWIF, EE_ADDR, 4);
  492. TNETWIF_WriteRegSync( pHwEeprom->hTNETWIF, EE_CTL, 0x2);
  493. do
  494. {
  495. TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,EE_CTL,&eectl);
  496. if (eectl == 0xffffffff)
  497. return -1;
  498. } while (eectl &0x2);
  499. TNETWIF_ReadRegSync(pHwEeprom->hTNETWIF,EE_DATA,&radioType);
  500. return(int)radioType;
  501. }
  502. void whal_hwEeprom_DumpEEPROM(HwEeprom_T *pHwEeprom)
  503. {
  504. UINT16 wAddr;
  505. UINT8 bVal;
  506. WLAN_REPORT_REPLY(pHwEeprom->hReport, HAL_HW_CTRL_MODULE_LOG,
  507. ("Dump EEPROM contents:"));
  508. for ( wAddr = 0; wAddr < 0x2ff; wAddr++)
  509. {
  510. if (whal_hwEepromReadByte(pHwEeprom, wAddr, &bVal) == OK)
  511. {
  512. WLAN_REPORT_REPLY(pHwEeprom->hReport, HAL_HW_CTRL_MODULE_LOG,
  513. ("\tEEPROM 0x%04X:\t0x%02X.\n", wAddr, bVal));
  514. } else
  515. {
  516. WLAN_REPORT_REPLY(pHwEeprom->hReport, HAL_HW_CTRL_MODULE_LOG,
  517. ("\tERROR: timeout"));
  518. }
  519. }
  520. }
  521. #endif /* USE_SYNC_API */