diff options
author | Bongsu Jeon <bongsu.jeon@samsung.com> | 2020-12-04 07:52:57 +0900 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2020-12-04 15:30:47 -0800 |
commit | 4fb7b98c7be3f7ea55dff36296d51881c6e1ee10 (patch) | |
tree | d1e1d7e05a4e46d24d8f56a18cc97e9f10784dc1 /drivers/nfc/s3fwrn5/core.c | |
parent | 43be3a3c65ff9c0e4f2ac1c4a7e22784b3827695 (diff) | |
download | linux-4fb7b98c7be3f7ea55dff36296d51881c6e1ee10.tar.gz |
nfc: s3fwrn5: skip the NFC bootloader mode
If there isn't a proper NFC firmware image, Bootloader mode will be
skipped.
Signed-off-by: Bongsu Jeon <bongsu.jeon@samsung.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20201203225257.2446-1-bongsu.jeon@samsung.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/nfc/s3fwrn5/core.c')
-rw-r--r-- | drivers/nfc/s3fwrn5/core.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/drivers/nfc/s3fwrn5/core.c b/drivers/nfc/s3fwrn5/core.c index f8e5d78d9078..c00b7a07c3ee 100644 --- a/drivers/nfc/s3fwrn5/core.c +++ b/drivers/nfc/s3fwrn5/core.c @@ -20,13 +20,26 @@ NFC_PROTO_ISO14443_B_MASK | \ NFC_PROTO_ISO15693_MASK) +static int s3fwrn5_firmware_init(struct s3fwrn5_info *info) +{ + struct s3fwrn5_fw_info *fw_info = &info->fw_info; + int ret; + + s3fwrn5_fw_init(fw_info, "sec_s3fwrn5_firmware.bin"); + + /* Get firmware data */ + ret = s3fwrn5_fw_request_firmware(fw_info); + if (ret < 0) + dev_err(&fw_info->ndev->nfc_dev->dev, + "Failed to get fw file, ret=%02x\n", ret); + return ret; +} + static int s3fwrn5_firmware_update(struct s3fwrn5_info *info) { bool need_update; int ret; - s3fwrn5_fw_init(&info->fw_info, "sec_s3fwrn5_firmware.bin"); - /* Update firmware */ s3fwrn5_set_wake(info, false); @@ -109,6 +122,12 @@ static int s3fwrn5_nci_post_setup(struct nci_dev *ndev) struct s3fwrn5_info *info = nci_get_drvdata(ndev); int ret; + if (s3fwrn5_firmware_init(info)) { + //skip bootloader mode + ret = 0; + goto out; + } + ret = s3fwrn5_firmware_update(info); if (ret < 0) goto out; |