Lines Matching defs:fw_dnld

95 	if (priv->fw_dnld.fw) {
96 release_firmware(priv->fw_dnld.fw);
97 priv->fw_dnld.fw = NULL;
98 priv->fw_dnld.header = NULL;
99 priv->fw_dnld.binary_config = NULL;
107 if (timer_pending(&priv->fw_dnld.timer))
108 del_timer_sync(&priv->fw_dnld.timer);
117 nfc_fw_download_done(priv->ndev->nfc_dev, priv->fw_dnld.name, error);
122 struct nfcmrvl_private *priv = from_timer(priv, t, fw_dnld.timer);
125 priv->fw_dnld.state = STATE_RESET;
140 priv->fw_dnld.state = STATE_INIT;
159 memcpy(cmd.param.val, &priv->fw_dnld.header->ref_clock, 4);
164 priv->fw_dnld.state = STATE_SET_REF_CLOCK;
172 priv->fw_dnld.state = STATE_OPEN_LC;
192 &priv->fw_dnld.binary_config->uart.baudrate,
195 priv->fw_dnld.binary_config->uart.flow_control;
200 &priv->fw_dnld.binary_config->i2c.clk,
207 &priv->fw_dnld.binary_config->spi.clk,
216 priv->fw_dnld.state = STATE_SET_HI_CONFIG;
241 priv->fw_dnld.state = STATE_FW_DNLD;
242 priv->fw_dnld.substate = SUBSTATE_WAIT_COMMAND;
243 priv->fw_dnld.offset = priv->fw_dnld.binary_config->offset;
254 switch (priv->fw_dnld.substate) {
285 priv->fw_dnld.substate = SUBSTATE_WAIT_NACK_CREDIT;
288 priv->fw_dnld.chunk_len = len;
294 priv->fw_dnld.substate = SUBSTATE_WAIT_ACK_CREDIT;
304 if (priv->fw_dnld.chunk_len == 0) {
308 priv->fw_dnld.state = STATE_CLOSE_LC;
312 out_skb = alloc_lc_skb(priv, priv->fw_dnld.chunk_len);
316 ((uint8_t *)priv->fw_dnld.fw->data) + priv->fw_dnld.offset,
317 priv->fw_dnld.chunk_len);
319 priv->fw_dnld.substate = SUBSTATE_WAIT_DATA_CREDIT;
330 priv->fw_dnld.offset += priv->fw_dnld.chunk_len;
331 priv->fw_dnld.chunk_len = 0;
332 priv->fw_dnld.substate = SUBSTATE_WAIT_COMMAND;
342 priv->fw_dnld.substate = SUBSTATE_WAIT_COMMAND;
355 priv->fw_dnld.state = STATE_BOOT;
372 &priv->fw_dnld.binary_config->config);
374 if (priv->fw_dnld.binary_config == &priv->fw_dnld.header->helper) {
380 priv->fw_dnld.state = STATE_RESET;
381 priv->fw_dnld.binary_config = &priv->fw_dnld.header->firmware;
394 struct nfcmrvl_fw_dnld *fw_dnld = container_of(work,
397 struct nfcmrvl_private *priv = container_of(fw_dnld,
399 fw_dnld);
401 while ((skb = skb_dequeue(&fw_dnld->rx_q))) {
404 switch (fw_dnld->state) {
447 INIT_WORK(&priv->fw_dnld.rx_work, fw_dnld_rx_work);
450 priv->fw_dnld.rx_wq = create_singlethread_workqueue(name);
451 if (!priv->fw_dnld.rx_wq)
453 skb_queue_head_init(&priv->fw_dnld.rx_q);
459 destroy_workqueue(priv->fw_dnld.rx_wq);
473 skb_queue_tail(&priv->fw_dnld.rx_q, skb);
474 queue_work(priv->fw_dnld.rx_wq, &priv->fw_dnld.rx_work);
485 struct nfcmrvl_fw_dnld *fw_dnld = &priv->fw_dnld;
494 strcpy(fw_dnld->name, firmware_name);
502 res = request_firmware(&fw_dnld->fw, firmware_name,
509 fw_dnld->header = (const struct nfcmrvl_fw *) priv->fw_dnld.fw->data;
511 if (fw_dnld->header->magic != NFCMRVL_FW_MAGIC ||
512 fw_dnld->header->phy != priv->phy) {
514 firmware_name, fw_dnld->header->magic,
515 fw_dnld->header->phy);
516 release_firmware(fw_dnld->fw);
517 fw_dnld->header = NULL;
521 if (fw_dnld->header->helper.offset != 0) {
523 fw_dnld->binary_config = &fw_dnld->header->helper;
526 fw_dnld->binary_config = &fw_dnld->header->firmware;
530 timer_setup(&priv->fw_dnld.timer, fw_dnld_timeout, 0);
531 mod_timer(&priv->fw_dnld.timer,
536 &fw_dnld->header->bootrom.config);
542 priv->fw_dnld.state = STATE_RESET;