Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

NFC: nci: Add firmware download support

A simple forward for firmware download (i.e. sending a new firmware
to the NFC adapter) from the NFC subsystem to the drivers.

This feature is required to update the firmware of NXP-NCI NFC
controllers but can be used by any NCI driver.

This feature has been present in the HCI subsystem since 9a695d.

Signed-off-by: Clément Perrochaud <clement.perrochaud@effinnov.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>

authored by

Clément Perrochaud and committed by
Samuel Ortiz
25af01ed 5a352dd0

+12
+1
include/net/nfc/nci_core.h
··· 71 71 int (*close)(struct nci_dev *ndev); 72 72 int (*send)(struct nci_dev *ndev, struct sk_buff *skb); 73 73 int (*setup)(struct nci_dev *ndev); 74 + int (*fw_download)(struct nci_dev *ndev, const char *firmware_name); 74 75 __u32 (*get_rfprotocol)(struct nci_dev *ndev, __u8 rf_protocol); 75 76 int (*discover_se)(struct nci_dev *ndev); 76 77 int (*disable_se)(struct nci_dev *ndev, u32 se_idx);
+11
net/nfc/nci/core.c
··· 907 907 return 0; 908 908 } 909 909 910 + static int nci_fw_download(struct nfc_dev *nfc_dev, const char *firmware_name) 911 + { 912 + struct nci_dev *ndev = nfc_get_drvdata(nfc_dev); 913 + 914 + if (!ndev->ops->fw_download) 915 + return -ENOTSUPP; 916 + 917 + return ndev->ops->fw_download(ndev, firmware_name); 918 + } 919 + 910 920 static struct nfc_ops nci_nfc_ops = { 911 921 .dev_up = nci_dev_up, 912 922 .dev_down = nci_dev_down, ··· 932 922 .disable_se = nci_disable_se, 933 923 .discover_se = nci_discover_se, 934 924 .se_io = nci_se_io, 925 + .fw_download = nci_fw_download, 935 926 }; 936 927 937 928 /* ---- Interface to NCI drivers ---- */