[bug report] staging: wfx: load the firmware faster
dan.carpenter at oracle.com
dan.carpenter at oracle.com
Thu Jul 9 09:26:29 UTC 2020
Hello Jérôme Pouiller,
The patch a9408ad79ff3: "staging: wfx: load the firmware faster" from
Jul 1, 2020, leads to the following static checker warning:
drivers/staging/wfx/fwio.c:192 upload_firmware()
error: uninitialized symbol 'bytes_done'.
drivers/staging/wfx/fwio.c
177 static int upload_firmware(struct wfx_dev *wdev, const u8 *data, size_t len)
178 {
179 int ret;
180 u32 offs, bytes_done;
^^^^^^^^^^
181 ktime_t now, start;
182
183 if (len % DNLD_BLOCK_SIZE) {
184 dev_err(wdev->dev, "firmware size is not aligned. Buffer overrun will occur\n");
185 return -EIO;
186 }
187 offs = 0;
188 while (offs < len) {
189 start = ktime_get();
190 for (;;) {
191 now = ktime_get();
192 if (offs + DNLD_BLOCK_SIZE - bytes_done < DNLD_FIFO_SIZE)
^^^^^^^^^^
Uninitialized.
193 break;
194 if (ktime_after(now, ktime_add_ms(start, DCA_TIMEOUT)))
195 return -ETIMEDOUT;
196 ret = sram_reg_read(wdev, WFX_DCA_GET, &bytes_done);
^^^^^^^^^^
too late. Hashtag Sad Face.
197 if (ret < 0)
198 return ret;
199 }
200 if (ktime_compare(now, start))
201 dev_dbg(wdev->dev, "answer after %lldus\n",
202 ktime_us_delta(now, start));
203
204 ret = sram_write_dma_safe(wdev, WFX_DNLD_FIFO +
205 (offs % DNLD_FIFO_SIZE),
206 data + offs, DNLD_BLOCK_SIZE);
207 if (ret < 0)
208 return ret;
209
210 // WFx seems to not support writing 0 in this register during
211 // first loop
212 offs += DNLD_BLOCK_SIZE;
213 ret = sram_reg_write(wdev, WFX_DCA_PUT, offs);
214 if (ret < 0)
215 return ret;
216 }
217 return 0;
218 }
regards,
dan carpenter
More information about the devel
mailing list