• Home
  • Raw
  • Download

Lines Matching refs:fw_info

24 static int s3fwrn5_fw_send_msg(struct s3fwrn5_fw_info *fw_info,  in s3fwrn5_fw_send_msg()  argument
28 container_of(fw_info, struct s3fwrn5_info, fw_info); in s3fwrn5_fw_send_msg()
31 reinit_completion(&fw_info->completion); in s3fwrn5_fw_send_msg()
38 &fw_info->completion, msecs_to_jiffies(1000)); in s3fwrn5_fw_send_msg()
44 if (!fw_info->rsp) in s3fwrn5_fw_send_msg()
47 *rsp = fw_info->rsp; in s3fwrn5_fw_send_msg()
48 fw_info->rsp = NULL; in s3fwrn5_fw_send_msg()
53 static int s3fwrn5_fw_prep_msg(struct s3fwrn5_fw_info *fw_info, in s3fwrn5_fw_prep_msg() argument
59 hdr.type = type | fw_info->parity; in s3fwrn5_fw_prep_msg()
60 fw_info->parity ^= 0x80; in s3fwrn5_fw_prep_msg()
77 static int s3fwrn5_fw_get_bootinfo(struct s3fwrn5_fw_info *fw_info, in s3fwrn5_fw_get_bootinfo() argument
86 ret = s3fwrn5_fw_prep_msg(fw_info, &msg, S3FWRN5_FW_MSG_CMD, in s3fwrn5_fw_get_bootinfo()
91 ret = s3fwrn5_fw_send_msg(fw_info, msg, &rsp); in s3fwrn5_fw_get_bootinfo()
109 static int s3fwrn5_fw_enter_update_mode(struct s3fwrn5_fw_info *fw_info, in s3fwrn5_fw_enter_update_mode() argument
123 ret = s3fwrn5_fw_prep_msg(fw_info, &msg, S3FWRN5_FW_MSG_CMD, in s3fwrn5_fw_enter_update_mode()
128 ret = s3fwrn5_fw_send_msg(fw_info, msg, &rsp); in s3fwrn5_fw_enter_update_mode()
143 ret = s3fwrn5_fw_prep_msg(fw_info, &msg, S3FWRN5_FW_MSG_DATA, 0, in s3fwrn5_fw_enter_update_mode()
148 ret = s3fwrn5_fw_send_msg(fw_info, msg, &rsp); in s3fwrn5_fw_enter_update_mode()
163 ret = s3fwrn5_fw_prep_msg(fw_info, &msg, S3FWRN5_FW_MSG_DATA, 0, in s3fwrn5_fw_enter_update_mode()
168 ret = s3fwrn5_fw_send_msg(fw_info, msg, &rsp); in s3fwrn5_fw_enter_update_mode()
182 static int s3fwrn5_fw_update_sector(struct s3fwrn5_fw_info *fw_info, in s3fwrn5_fw_update_sector() argument
194 ret = s3fwrn5_fw_prep_msg(fw_info, &msg, S3FWRN5_FW_MSG_CMD, in s3fwrn5_fw_update_sector()
199 ret = s3fwrn5_fw_send_msg(fw_info, msg, &rsp); in s3fwrn5_fw_update_sector()
215 ret = s3fwrn5_fw_prep_msg(fw_info, &msg, in s3fwrn5_fw_update_sector()
220 ret = s3fwrn5_fw_send_msg(fw_info, msg, &rsp); in s3fwrn5_fw_update_sector()
241 static int s3fwrn5_fw_complete_update_mode(struct s3fwrn5_fw_info *fw_info) in s3fwrn5_fw_complete_update_mode() argument
249 ret = s3fwrn5_fw_prep_msg(fw_info, &msg, S3FWRN5_FW_MSG_CMD, in s3fwrn5_fw_complete_update_mode()
254 ret = s3fwrn5_fw_send_msg(fw_info, msg, &rsp); in s3fwrn5_fw_complete_update_mode()
283 int s3fwrn5_fw_request_firmware(struct s3fwrn5_fw_info *fw_info) in s3fwrn5_fw_request_firmware() argument
285 struct s3fwrn5_fw_image *fw = &fw_info->fw; in s3fwrn5_fw_request_firmware()
291 ret = request_firmware(&fw->fw, fw_info->fw_name, in s3fwrn5_fw_request_firmware()
292 &fw_info->ndev->nfc_dev->dev); in s3fwrn5_fw_request_firmware()
321 static void s3fwrn5_fw_release_firmware(struct s3fwrn5_fw_info *fw_info) in s3fwrn5_fw_release_firmware() argument
323 release_firmware(fw_info->fw.fw); in s3fwrn5_fw_release_firmware()
358 int s3fwrn5_fw_setup(struct s3fwrn5_fw_info *fw_info) in s3fwrn5_fw_setup() argument
365 ret = s3fwrn5_fw_get_bootinfo(fw_info, &bootinfo); in s3fwrn5_fw_setup()
367 dev_err(&fw_info->ndev->nfc_dev->dev, in s3fwrn5_fw_setup()
374 ret = s3fwrn5_fw_get_base_addr(&bootinfo, &fw_info->base_addr); in s3fwrn5_fw_setup()
376 dev_err(&fw_info->ndev->nfc_dev->dev, in s3fwrn5_fw_setup()
381 fw_info->sector_size = bootinfo.sector_size; in s3fwrn5_fw_setup()
383 fw_info->sig_size = s3fwrn5_fw_is_custom(&bootinfo) ? in s3fwrn5_fw_setup()
384 fw_info->fw.custom_sig_size : fw_info->fw.sig_size; in s3fwrn5_fw_setup()
385 fw_info->sig = s3fwrn5_fw_is_custom(&bootinfo) ? in s3fwrn5_fw_setup()
386 fw_info->fw.custom_sig : fw_info->fw.sig; in s3fwrn5_fw_setup()
391 s3fwrn5_fw_release_firmware(fw_info); in s3fwrn5_fw_setup()
395 bool s3fwrn5_fw_check_version(const struct s3fwrn5_fw_info *fw_info, u32 version) in s3fwrn5_fw_check_version() argument
397 struct s3fwrn5_fw_version *new = (void *) &fw_info->fw.version; in s3fwrn5_fw_check_version()
410 int s3fwrn5_fw_download(struct s3fwrn5_fw_info *fw_info) in s3fwrn5_fw_download() argument
412 struct s3fwrn5_fw_image *fw = &fw_info->fw; in s3fwrn5_fw_download()
418 image_size = fw_info->sector_size * fw->image_sectors; in s3fwrn5_fw_download()
424 dev_err(&fw_info->ndev->nfc_dev->dev, in s3fwrn5_fw_download()
433 dev_err(&fw_info->ndev->nfc_dev->dev, in s3fwrn5_fw_download()
440 dev_info(&fw_info->ndev->nfc_dev->dev, in s3fwrn5_fw_download()
441 "Firmware update: %s\n", fw_info->fw_name); in s3fwrn5_fw_download()
443 ret = s3fwrn5_fw_enter_update_mode(fw_info, hash_data, in s3fwrn5_fw_download()
444 SHA1_DIGEST_SIZE, fw_info->sig, fw_info->sig_size); in s3fwrn5_fw_download()
446 dev_err(&fw_info->ndev->nfc_dev->dev, in s3fwrn5_fw_download()
451 for (off = 0; off < image_size; off += fw_info->sector_size) { in s3fwrn5_fw_download()
452 ret = s3fwrn5_fw_update_sector(fw_info, in s3fwrn5_fw_download()
453 fw_info->base_addr + off, fw->image + off); in s3fwrn5_fw_download()
455 dev_err(&fw_info->ndev->nfc_dev->dev, in s3fwrn5_fw_download()
461 ret = s3fwrn5_fw_complete_update_mode(fw_info); in s3fwrn5_fw_download()
463 dev_err(&fw_info->ndev->nfc_dev->dev, in s3fwrn5_fw_download()
468 dev_info(&fw_info->ndev->nfc_dev->dev, in s3fwrn5_fw_download()
474 void s3fwrn5_fw_init(struct s3fwrn5_fw_info *fw_info, const char *fw_name) in s3fwrn5_fw_init() argument
476 fw_info->parity = 0x00; in s3fwrn5_fw_init()
477 fw_info->rsp = NULL; in s3fwrn5_fw_init()
478 fw_info->fw.fw = NULL; in s3fwrn5_fw_init()
479 strcpy(fw_info->fw_name, fw_name); in s3fwrn5_fw_init()
480 init_completion(&fw_info->completion); in s3fwrn5_fw_init()
483 void s3fwrn5_fw_cleanup(struct s3fwrn5_fw_info *fw_info) in s3fwrn5_fw_cleanup() argument
485 s3fwrn5_fw_release_firmware(fw_info); in s3fwrn5_fw_cleanup()
491 struct s3fwrn5_fw_info *fw_info = &info->fw_info; in s3fwrn5_fw_recv_frame() local
493 if (WARN_ON(fw_info->rsp)) { in s3fwrn5_fw_recv_frame()
498 fw_info->rsp = skb; in s3fwrn5_fw_recv_frame()
500 complete(&fw_info->completion); in s3fwrn5_fw_recv_frame()