Lines Matching refs:i1480

62 int fw_hdr_load(struct i1480 *i1480, struct fw_hdr *hdr, unsigned hdr_cnt,  in fw_hdr_load()  argument
68 dev_err(i1480->dev, "fw hdr #%u/%zu: EOF reached in header at " in fw_hdr_load()
80 dev_err(i1480->dev, "fw hdr #%u/%zu: EOF reached in data; " in fw_hdr_load()
108 int fw_hdrs_load(struct i1480 *i1480, struct fw_hdr **phdr, in fw_hdrs_load() argument
129 dev_err(i1480->dev, "Cannot allocate fw header " in fw_hdrs_load()
133 result = fw_hdr_load(i1480, hdr, hdr_cnt, in fw_hdrs_load()
167 ssize_t i1480_fw_cmp(struct i1480 *i1480, struct fw_hdr *hdr) in i1480_fw_cmp() argument
176 chunk_size = size < i1480->buf_size ? size : i1480->buf_size; in i1480_fw_cmp()
177 result = i1480->read(i1480, hdr->address + src_itr, chunk_size); in i1480_fw_cmp()
179 dev_err(i1480->dev, "error reading for verification: " in i1480_fw_cmp()
183 if (memcmp(i1480->cmd_buf, bin + src_itr, result)) { in i1480_fw_cmp()
184 u8 *buf = i1480->cmd_buf; in i1480_fw_cmp()
187 dev_err(i1480->dev, "byte failed at " in i1480_fw_cmp()
213 int mac_fw_hdrs_push(struct i1480 *i1480, struct fw_hdr *hdr, in mac_fw_hdrs_push() argument
216 struct device *dev = i1480->dev; in mac_fw_hdrs_push()
228 result = i1480->write(i1480, hdr_itr->address, hdr_itr->bin, in mac_fw_hdrs_push()
237 result = i1480_fw_cmp(i1480, hdr_itr); in mac_fw_hdrs_push()
266 int mac_fw_upload_enable(struct i1480 *i1480) in mac_fw_upload_enable() argument
270 u32 *buffer = (u32 *)i1480->cmd_buf; in mac_fw_upload_enable()
272 if (i1480->hw_rev > 1) in mac_fw_upload_enable()
274 result = i1480->read(i1480, reg, sizeof(u32)); in mac_fw_upload_enable()
278 result = i1480->write(i1480, reg, buffer, sizeof(u32)); in mac_fw_upload_enable()
283 dev_err(i1480->dev, "can't enable fw upload mode: %d\n", result); in mac_fw_upload_enable()
290 int mac_fw_upload_disable(struct i1480 *i1480) in mac_fw_upload_disable() argument
294 u32 *buffer = (u32 *)i1480->cmd_buf; in mac_fw_upload_disable()
296 if (i1480->hw_rev > 1) in mac_fw_upload_disable()
298 result = i1480->read(i1480, reg, sizeof(u32)); in mac_fw_upload_disable()
302 result = i1480->write(i1480, reg, buffer, sizeof(u32)); in mac_fw_upload_disable()
307 dev_err(i1480->dev, "can't disable fw upload mode: %d\n", result); in mac_fw_upload_disable()
325 int __mac_fw_upload(struct i1480 *i1480, const char *fw_name, in __mac_fw_upload() argument
332 result = request_firmware(&fw, fw_name, i1480->dev); in __mac_fw_upload()
335 result = fw_hdrs_load(i1480, &fw_hdrs, fw->data, fw->size); in __mac_fw_upload()
337 dev_err(i1480->dev, "%s fw '%s': failed to parse firmware " in __mac_fw_upload()
341 result = mac_fw_upload_enable(i1480); in __mac_fw_upload()
344 result = mac_fw_hdrs_push(i1480, fw_hdrs, fw_name, fw_tag); in __mac_fw_upload()
345 mac_fw_upload_disable(i1480); in __mac_fw_upload()
348 dev_info(i1480->dev, "%s fw '%s': uploaded\n", fw_tag, fw_name); in __mac_fw_upload()
350 dev_err(i1480->dev, "%s fw '%s': failed to upload (%d), " in __mac_fw_upload()
364 int i1480_pre_fw_upload(struct i1480 *i1480) in i1480_pre_fw_upload() argument
367 result = __mac_fw_upload(i1480, i1480->pre_fw_name, "PRE"); in i1480_pre_fw_upload()
388 int i1480_cmd_reset(struct i1480 *i1480) in i1480_cmd_reset() argument
391 struct uwb_rccb *cmd = (void *) i1480->cmd_buf; in i1480_cmd_reset()
395 } __attribute__((packed)) *reply = (void *) i1480->evt_buf; in i1480_cmd_reset()
402 result = i1480_cmd(i1480, "RESET", sizeof(*cmd), sizeof(*reply)); in i1480_cmd_reset()
406 dev_err(i1480->dev, "RESET: command execution failed: %u\n", in i1480_cmd_reset()
418 int i1480_fw_is_running_q(struct i1480 *i1480) in i1480_fw_is_running_q() argument
422 u32 *val = (u32 *) i1480->cmd_buf; in i1480_fw_is_running_q()
426 result = i1480->read(i1480, 0x80080000, 4); in i1480_fw_is_running_q()
428 dev_err(i1480->dev, "Can't read 0x8008000: %d\n", result); in i1480_fw_is_running_q()
434 dev_err(i1480->dev, "Timed out waiting for fw to start\n"); in i1480_fw_is_running_q()
451 int i1480_mac_fw_upload(struct i1480 *i1480) in i1480_mac_fw_upload() argument
454 struct i1480_rceb *rcebe = (void *) i1480->evt_buf; in i1480_mac_fw_upload()
456 result = __mac_fw_upload(i1480, i1480->mac_fw_name, "MAC"); in i1480_mac_fw_upload()
458 result = __mac_fw_upload(i1480, i1480->mac_fw_name_deprecate, in i1480_mac_fw_upload()
465 dev_warn(i1480->dev, in i1480_mac_fw_upload()
468 i1480->mac_fw_name_deprecate, i1480->mac_fw_name); in i1480_mac_fw_upload()
469 result = i1480_fw_is_running_q(i1480); in i1480_mac_fw_upload()
472 result = i1480->rc_setup ? i1480->rc_setup(i1480) : 0; in i1480_mac_fw_upload()
474 dev_err(i1480->dev, "Cannot setup after MAC fw upload: %d\n", in i1480_mac_fw_upload()
478 result = i1480->wait_init_done(i1480); /* wait init'on */ in i1480_mac_fw_upload()
480 dev_err(i1480->dev, "MAC fw '%s': Initialization timed out " in i1480_mac_fw_upload()
481 "(%d)\n", i1480->mac_fw_name, result); in i1480_mac_fw_upload()
485 if (i1480->evt_result != sizeof(*rcebe)) { in i1480_mac_fw_upload()
486 dev_err(i1480->dev, "MAC fw '%s': initialization event returns " in i1480_mac_fw_upload()
488 i1480->mac_fw_name, i1480->evt_result, sizeof(*rcebe)); in i1480_mac_fw_upload()
492 if (i1480_rceb_check(i1480, &rcebe->rceb, NULL, 0, i1480_CET_VS1, in i1480_mac_fw_upload()
494 dev_err(i1480->dev, "wrong initialization event 0x%02x/%04x/%02x " in i1480_mac_fw_upload()
501 result = i1480_cmd_reset(i1480); in i1480_mac_fw_upload()
503 dev_err(i1480->dev, "MAC fw '%s': MBOA reset failed (%d)\n", in i1480_mac_fw_upload()
504 i1480->mac_fw_name, result); in i1480_mac_fw_upload()