Skip to content

Commit

Permalink
staging: r8712u: Merging Realtek's latest (v2.6.6). Rework efuse data…
Browse files Browse the repository at this point in the history
… 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>
  • Loading branch information
Ali Bahar authored and Greg Kroah-Hartman committed Sep 7, 2011
1 parent 07a6b03 commit 0aeb623
Showing 1 changed file with 41 additions and 34 deletions.
75 changes: 41 additions & 34 deletions drivers/staging/rtl8712/rtl8712_efuse.c
Original file line number Diff line number Diff line change
Expand Up @@ -307,48 +307,55 @@ static u8 fix_header(struct _adapter *padapter, u8 header, u16 header_addr)
continue;
}
for (i = 0; i < PGPKG_MAX_WORDS; i++) {
if (BIT(i) & word_en)
continue;
if (!(BIT(i) & pkt.word_en)) {
if (efuse_one_byte_read(padapter, addr,
&value) == true)
pkt.data[i*2] = value;
else
return false;
if (efuse_one_byte_read(padapter, addr + 1,
&value) == true)
pkt.data[i*2 + 1] = value;
else
return false;
if (BIT(i) & word_en) {
if (BIT(i) & pkt.word_en) {
if (efuse_one_byte_read(
padapter, addr,
&value) == true)
pkt.data[i*2] = value;
else
return false;
if (efuse_one_byte_read(
padapter,
addr + 1,
&value) == true)
pkt.data[i*2 + 1] =
value;
else
return false;
}
addr += 2;
}
addr += 2;
}
}
if (addr != header_addr)
return false;
addr++;
/* fill original data */
for (i = 0; i < PGPKG_MAX_WORDS; i++) {
if (BIT(i) & pkt.word_en)
continue;
efuse_one_byte_write(padapter, addr, pkt.data[i*2]);
efuse_one_byte_write(padapter, addr+1, pkt.data[i*2 + 1]);
/* additional check */
if (efuse_one_byte_read(padapter, addr, &value) == false)
ret = false;
else if (pkt.data[i*2] != value) {
ret = false;
if (0xFF == value) /* write again */
efuse_one_byte_write(padapter, addr,
pkt.data[i * 2]);
}
if (efuse_one_byte_read(padapter, addr+1, &value) == false)
ret = false;
else if (pkt.data[i*2 + 1] != value) {
ret = false;
if (0xFF == value) /* write again */
efuse_one_byte_write(padapter, addr+1,
pkt.data[i*2 + 1]);
if (BIT(i) & pkt.word_en) {
efuse_one_byte_write(padapter, addr, pkt.data[i*2]);
efuse_one_byte_write(padapter, addr+1,
pkt.data[i*2 + 1]);
/* additional check */
if (efuse_one_byte_read(padapter, addr, &value)
== false)
ret = false;
else if (pkt.data[i*2] != value) {
ret = false;
if (0xFF == value) /* write again */
efuse_one_byte_write(padapter, addr,
pkt.data[i * 2]);
}
if (efuse_one_byte_read(padapter, addr+1, &value) ==
false)
ret = false;
else if (pkt.data[i*2 + 1] != value) {
ret = false;
if (0xFF == value) /* write again */
efuse_one_byte_write(padapter, addr+1,
pkt.data[i*2 + 1]);
}
}
addr += 2;
}
Expand Down

0 comments on commit 0aeb623

Please sign in to comment.