staging: r8712u: Merging Realtek's latest (v2.6.6). Rework efuse data handling.

Rework efuse data handling.

Signed-off-by: Ali Bahar <ali@internetDog.org>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Ali Bahar 2011-09-04 03:14:17 +08:00 committed by Greg Kroah-Hartman
parent 07a6b03707
commit 0aeb623d37
1 changed files with 41 additions and 34 deletions

View File

@ -307,34 +307,39 @@ static u8 fix_header(struct _adapter *padapter, u8 header, u16 header_addr)
continue; continue;
} }
for (i = 0; i < PGPKG_MAX_WORDS; i++) { for (i = 0; i < PGPKG_MAX_WORDS; i++) {
if (BIT(i) & word_en) if (BIT(i) & word_en) {
continue; if (BIT(i) & pkt.word_en) {
if (!(BIT(i) & pkt.word_en)) { if (efuse_one_byte_read(
if (efuse_one_byte_read(padapter, addr, padapter, addr,
&value) == true) &value) == true)
pkt.data[i*2] = value; pkt.data[i*2] = value;
else else
return false; return false;
if (efuse_one_byte_read(padapter, addr + 1, if (efuse_one_byte_read(
padapter,
addr + 1,
&value) == true) &value) == true)
pkt.data[i*2 + 1] = value; pkt.data[i*2 + 1] =
value;
else else
return false; return false;
} }
addr += 2; addr += 2;
} }
} }
}
if (addr != header_addr) if (addr != header_addr)
return false; return false;
addr++; addr++;
/* fill original data */ /* fill original data */
for (i = 0; i < PGPKG_MAX_WORDS; i++) { for (i = 0; i < PGPKG_MAX_WORDS; i++) {
if (BIT(i) & pkt.word_en) if (BIT(i) & pkt.word_en) {
continue;
efuse_one_byte_write(padapter, addr, pkt.data[i*2]); efuse_one_byte_write(padapter, addr, pkt.data[i*2]);
efuse_one_byte_write(padapter, addr+1, pkt.data[i*2 + 1]); efuse_one_byte_write(padapter, addr+1,
pkt.data[i*2 + 1]);
/* additional check */ /* additional check */
if (efuse_one_byte_read(padapter, addr, &value) == false) if (efuse_one_byte_read(padapter, addr, &value)
== false)
ret = false; ret = false;
else if (pkt.data[i*2] != value) { else if (pkt.data[i*2] != value) {
ret = false; ret = false;
@ -342,7 +347,8 @@ static u8 fix_header(struct _adapter *padapter, u8 header, u16 header_addr)
efuse_one_byte_write(padapter, addr, efuse_one_byte_write(padapter, addr,
pkt.data[i * 2]); pkt.data[i * 2]);
} }
if (efuse_one_byte_read(padapter, addr+1, &value) == false) if (efuse_one_byte_read(padapter, addr+1, &value) ==
false)
ret = false; ret = false;
else if (pkt.data[i*2 + 1] != value) { else if (pkt.data[i*2 + 1] != value) {
ret = false; ret = false;
@ -350,6 +356,7 @@ static u8 fix_header(struct _adapter *padapter, u8 header, u16 header_addr)
efuse_one_byte_write(padapter, addr+1, efuse_one_byte_write(padapter, addr+1,
pkt.data[i*2 + 1]); pkt.data[i*2 + 1]);
} }
}
addr += 2; addr += 2;
} }
return ret; return ret;