staging: r8712u: Merging Realtek's latest (v2.6.6). Rework efuse data handling.
authorAli Bahar <ali@internetdog.org>
Sat, 3 Sep 2011 19:14:17 +0000 (03:14 +0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 7 Sep 2011 00:00:34 +0000 (17:00 -0700)
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>
drivers/staging/rtl8712/rtl8712_efuse.c

index 1dc12b7a2f52fc8ffa96ce81d3a2d06628990c7b..b08e9a25c9c550b5e3daa58b3dd3be1a04a2d833 100644 (file)
@@ -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;
        }