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;
104 remaining_len = fw_info->frame_size - fw_info->written;
116 skb_put_data(skb, fw_info->data + fw_info->written, chunk_len);
133 struct nxp_nci_fw_info *fw_info = &info->fw_info;
137 reinit_completion(&fw_info->cmd_completion);
139 if (fw_info->written == 0) {
140 fw_info->frame_size = get_unaligned_be16(fw_info->data) &
142 fw_info->data += NXP_NCI_FW_HDR_LEN;
143 fw_info->size -= NXP_NCI_FW_HDR_LEN;
146 if (fw_info->frame_size > fw_info->size)
153 fw_info->written += r;
155 if (*fw_info->data == NXP_NCI_FW_CMD_RESET) {
156 fw_info->cmd_result = 0;
157 if (fw_info->fw)
158 schedule_work(&fw_info->work);
161 &fw_info->cmd_completion, NXP_NCI_FW_ANSWER_TIMEOUT);
172 struct nxp_nci_fw_info *fw_info;
175 fw_info = container_of(work, struct nxp_nci_fw_info, work);
176 info = container_of(fw_info, struct nxp_nci_info, fw_info);
180 r = fw_info->cmd_result;
184 if (fw_info->written == fw_info->frame_size) {
185 fw_info->data += fw_info->frame_size;
186 fw_info->size -= fw_info->frame_size;
187 fw_info->written = 0;
190 if (fw_info->size > 0)
194 if (r < 0 || fw_info->size == 0)
202 struct nxp_nci_fw_info *fw_info = &info->fw_info;
217 strcpy(fw_info->name, firmware_name);
219 r = request_firmware(&fw_info->fw, firmware_name,
226 release_firmware(fw_info->fw);
232 fw_info->data = fw_info->fw->data;
233 fw_info->size = fw_info->fw->size;
234 fw_info->written = 0;
235 fw_info->frame_size = 0;
236 fw_info->cmd_result = 0;
238 schedule_work(&fw_info->work);
295 struct nxp_nci_fw_info *fw_info = &info->fw_info;
297 complete(&fw_info->cmd_completion);
301 fw_info->cmd_result = -EBADMSG;
303 fw_info->cmd_result = nxp_nci_fw_read_status(*(u8 *)skb_pull(skb, NXP_NCI_FW_HDR_LEN));
306 fw_info->cmd_result = -EIO;
309 if (fw_info->fw)
310 schedule_work(&fw_info->work);