Lines Matching defs:fw_dnld
108 if (priv->fw_dnld.fw) {
109 release_firmware(priv->fw_dnld.fw);
110 priv->fw_dnld.fw = NULL;
111 priv->fw_dnld.header = NULL;
112 priv->fw_dnld.binary_config = NULL;
120 if (timer_pending(&priv->fw_dnld.timer))
121 del_timer_sync(&priv->fw_dnld.timer);
130 nfc_fw_download_done(priv->ndev->nfc_dev, priv->fw_dnld.name, error);
135 struct nfcmrvl_private *priv = from_timer(priv, t, fw_dnld.timer);
138 priv->fw_dnld.state = STATE_RESET;
153 priv->fw_dnld.state = STATE_INIT;
171 memcpy(cmd.param.val, &priv->fw_dnld.header->ref_clock, 4);
176 priv->fw_dnld.state = STATE_SET_REF_CLOCK;
184 priv->fw_dnld.state = STATE_OPEN_LC;
204 &priv->fw_dnld.binary_config->uart.baudrate,
207 priv->fw_dnld.binary_config->uart.flow_control;
212 &priv->fw_dnld.binary_config->i2c.clk,
219 &priv->fw_dnld.binary_config->spi.clk,
228 priv->fw_dnld.state = STATE_SET_HI_CONFIG;
253 priv->fw_dnld.state = STATE_FW_DNLD;
254 priv->fw_dnld.substate = SUBSTATE_WAIT_COMMAND;
255 priv->fw_dnld.offset = priv->fw_dnld.binary_config->offset;
266 switch (priv->fw_dnld.substate) {
297 priv->fw_dnld.substate = SUBSTATE_WAIT_NACK_CREDIT;
300 priv->fw_dnld.chunk_len = len;
306 priv->fw_dnld.substate = SUBSTATE_WAIT_ACK_CREDIT;
316 if (priv->fw_dnld.chunk_len == 0) {
320 priv->fw_dnld.state = STATE_CLOSE_LC;
324 out_skb = alloc_lc_skb(priv, priv->fw_dnld.chunk_len);
328 ((uint8_t *)priv->fw_dnld.fw->data) + priv->fw_dnld.offset,
329 priv->fw_dnld.chunk_len);
331 priv->fw_dnld.substate = SUBSTATE_WAIT_DATA_CREDIT;
342 priv->fw_dnld.offset += priv->fw_dnld.chunk_len;
343 priv->fw_dnld.chunk_len = 0;
344 priv->fw_dnld.substate = SUBSTATE_WAIT_COMMAND;
354 priv->fw_dnld.substate = SUBSTATE_WAIT_COMMAND;
367 priv->fw_dnld.state = STATE_BOOT;
383 &priv->fw_dnld.binary_config->config);
385 if (priv->fw_dnld.binary_config == &priv->fw_dnld.header->helper) {
391 priv->fw_dnld.state = STATE_RESET;
392 priv->fw_dnld.binary_config = &priv->fw_dnld.header->firmware;
405 struct nfcmrvl_fw_dnld *fw_dnld = container_of(work,
408 struct nfcmrvl_private *priv = container_of(fw_dnld,
410 fw_dnld);
412 while ((skb = skb_dequeue(&fw_dnld->rx_q))) {
415 switch (fw_dnld->state) {
458 INIT_WORK(&priv->fw_dnld.rx_work, fw_dnld_rx_work);
461 priv->fw_dnld.rx_wq = create_singlethread_workqueue(name);
462 if (!priv->fw_dnld.rx_wq)
464 skb_queue_head_init(&priv->fw_dnld.rx_q);
470 destroy_workqueue(priv->fw_dnld.rx_wq);
484 skb_queue_tail(&priv->fw_dnld.rx_q, skb);
485 queue_work(priv->fw_dnld.rx_wq, &priv->fw_dnld.rx_work);
496 struct nfcmrvl_fw_dnld *fw_dnld = &priv->fw_dnld;
505 strcpy(fw_dnld->name, firmware_name);
513 res = request_firmware(&fw_dnld->fw, firmware_name,
520 fw_dnld->header = (const struct nfcmrvl_fw *) priv->fw_dnld.fw->data;
522 if (fw_dnld->header->magic != NFCMRVL_FW_MAGIC ||
523 fw_dnld->header->phy != priv->phy) {
525 firmware_name, fw_dnld->header->magic,
526 fw_dnld->header->phy);
527 release_firmware(fw_dnld->fw);
528 fw_dnld->header = NULL;
532 if (fw_dnld->header->helper.offset != 0) {
534 fw_dnld->binary_config = &fw_dnld->header->helper;
537 fw_dnld->binary_config = &fw_dnld->header->firmware;
541 timer_setup(&priv->fw_dnld.timer, fw_dnld_timeout, 0);
542 mod_timer(&priv->fw_dnld.timer,
547 &fw_dnld->header->bootrom.config);
553 priv->fw_dnld.state = STATE_RESET;