|
@@ -2711,27 +2711,30 @@ static int b43_upload_initvals(struct b43_wldev *dev)
|
|
|
struct b43_firmware *fw = &dev->fw;
|
|
|
const struct b43_iv *ivals;
|
|
|
size_t count;
|
|
|
- int err;
|
|
|
|
|
|
hdr = (const struct b43_fw_header *)(fw->initvals.data->data);
|
|
|
ivals = (const struct b43_iv *)(fw->initvals.data->data + hdr_len);
|
|
|
count = be32_to_cpu(hdr->size);
|
|
|
- err = b43_write_initvals(dev, ivals, count,
|
|
|
+ return b43_write_initvals(dev, ivals, count,
|
|
|
fw->initvals.data->size - hdr_len);
|
|
|
- if (err)
|
|
|
- goto out;
|
|
|
- if (fw->initvals_band.data) {
|
|
|
- hdr = (const struct b43_fw_header *)(fw->initvals_band.data->data);
|
|
|
- ivals = (const struct b43_iv *)(fw->initvals_band.data->data + hdr_len);
|
|
|
- count = be32_to_cpu(hdr->size);
|
|
|
- err = b43_write_initvals(dev, ivals, count,
|
|
|
- fw->initvals_band.data->size - hdr_len);
|
|
|
- if (err)
|
|
|
- goto out;
|
|
|
- }
|
|
|
-out:
|
|
|
+}
|
|
|
|
|
|
- return err;
|
|
|
+static int b43_upload_initvals_band(struct b43_wldev *dev)
|
|
|
+{
|
|
|
+ const size_t hdr_len = sizeof(struct b43_fw_header);
|
|
|
+ const struct b43_fw_header *hdr;
|
|
|
+ struct b43_firmware *fw = &dev->fw;
|
|
|
+ const struct b43_iv *ivals;
|
|
|
+ size_t count;
|
|
|
+
|
|
|
+ if (!fw->initvals_band.data)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ hdr = (const struct b43_fw_header *)(fw->initvals_band.data->data);
|
|
|
+ ivals = (const struct b43_iv *)(fw->initvals_band.data->data + hdr_len);
|
|
|
+ count = be32_to_cpu(hdr->size);
|
|
|
+ return b43_write_initvals(dev, ivals, count,
|
|
|
+ fw->initvals_band.data->size - hdr_len);
|
|
|
}
|
|
|
|
|
|
/* Initialize the GPIOs
|
|
@@ -3100,6 +3103,10 @@ static int b43_chip_init(struct b43_wldev *dev)
|
|
|
if (err)
|
|
|
goto err_gpio_clean;
|
|
|
|
|
|
+ err = b43_upload_initvals_band(dev);
|
|
|
+ if (err)
|
|
|
+ goto err_gpio_clean;
|
|
|
+
|
|
|
/* Turn the Analog on and initialize the PHY. */
|
|
|
phy->ops->switch_analog(dev, 1);
|
|
|
err = b43_phy_init(dev);
|