Lines Matching defs:fw_info

54 	struct nxp_nci_fw_info *fw_info = &info->fw_info;
65 if (fw_info->fw) {
66 release_firmware(fw_info->fw);
67 fw_info->fw = NULL;
70 nfc_fw_download_done(info->ndev->nfc_dev, fw_info->name, (u32) -result);
90 struct nxp_nci_fw_info *fw_info = &info->fw_info;
102 remaining_len = fw_info->frame_size - fw_info->written;
114 skb_put_data(skb, fw_info->data + fw_info->written, chunk_len);
130 struct nxp_nci_fw_info *fw_info = &info->fw_info;
134 reinit_completion(&fw_info->cmd_completion);
136 if (fw_info->written == 0) {
137 fw_info->frame_size = get_unaligned_be16(fw_info->data) &
139 fw_info->data += NXP_NCI_FW_HDR_LEN;
140 fw_info->size -= NXP_NCI_FW_HDR_LEN;
143 if (fw_info->frame_size > fw_info->size)
150 fw_info->written += r;
152 if (*fw_info->data == NXP_NCI_FW_CMD_RESET) {
153 fw_info->cmd_result = 0;
154 if (fw_info->fw)
155 schedule_work(&fw_info->work);
158 &fw_info->cmd_completion, NXP_NCI_FW_ANSWER_TIMEOUT);
169 struct nxp_nci_fw_info *fw_info;
172 fw_info = container_of(work, struct nxp_nci_fw_info, work);
173 info = container_of(fw_info, struct nxp_nci_info, fw_info);
177 r = fw_info->cmd_result;
181 if (fw_info->written == fw_info->frame_size) {
182 fw_info->data += fw_info->frame_size;
183 fw_info->size -= fw_info->frame_size;
184 fw_info->written = 0;
187 if (fw_info->size > 0)
191 if (r < 0 || fw_info->size == 0)
199 struct nxp_nci_fw_info *fw_info = &info->fw_info;
214 strcpy(fw_info->name, firmware_name);
216 r = request_firmware(&fw_info->fw, firmware_name,
223 release_firmware(fw_info->fw);
229 fw_info->data = fw_info->fw->data;
230 fw_info->size = fw_info->fw->size;
231 fw_info->written = 0;
232 fw_info->frame_size = 0;
233 fw_info->cmd_result = 0;
235 schedule_work(&fw_info->work);
292 struct nxp_nci_fw_info *fw_info = &info->fw_info;
294 complete(&fw_info->cmd_completion);
298 fw_info->cmd_result = -EBADMSG;
300 fw_info->cmd_result = nxp_nci_fw_read_status(*(u8 *)skb_pull(skb, NXP_NCI_FW_HDR_LEN));
303 fw_info->cmd_result = -EIO;
306 if (fw_info->fw)
307 schedule_work(&fw_info->work);