data = (u8 *)mac;
        data += __le16_to_cpu(mac->fw_offset);
 
-       generic_ocp_write(tp, __le16_to_cpu(mac->fw_reg), 0xff, length, data,
-                         type);
+       if (generic_ocp_write(tp, __le16_to_cpu(mac->fw_reg), 0xff, length,
+                             data, type) < 0) {
+               dev_err(&tp->intf->dev, "Write %s fw fail\n",
+                       type ? "PLA" : "USB");
+               return;
+       }
 
        ocp_write_word(tp, type, __le16_to_cpu(mac->bp_ba_addr),
                       __le16_to_cpu(mac->bp_ba_value));
 
-       generic_ocp_write(tp, __le16_to_cpu(mac->bp_start), BYTE_EN_DWORD,
-                         __le16_to_cpu(mac->bp_num) << 1, mac->bp, type);
+       if (generic_ocp_write(tp, __le16_to_cpu(mac->bp_start), BYTE_EN_DWORD,
+                             ALIGN(__le16_to_cpu(mac->bp_num) << 1, 4),
+                             mac->bp, type) < 0) {
+               dev_err(&tp->intf->dev, "Write %s bp fail\n",
+                       type ? "PLA" : "USB");
+               return;
+       }
 
        bp_en_addr = __le16_to_cpu(mac->bp_en_addr);
        if (bp_en_addr)