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:
Родитель
07a6b03707
Коммит
0aeb623d37
|
@ -307,21 +307,25 @@ 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)
|
||||
|
@ -329,26 +333,29 @@ static u8 fix_header(struct _adapter *padapter, u8 header, u16 header_addr)
|
|||
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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче