aboutsummaryrefslogtreecommitdiff
path: root/include/net/nfc/hci.h
AgeCommit message (Collapse)AuthorFilesLines
2021-07-25nfc: constify nfc_hci_opsKrzysztof Kozlowski1-2/+2
Neither the core nor the drivers modify the passed pointer to struct nfc_hci_ops, so make it a pointer to const for correctness and safety. Signed-off-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2021-07-25nfc: constify pointer to nfc_vendor_cmdKrzysztof Kozlowski1-1/+1
Neither the core nor the drivers modify the passed pointer to struct nfc_vendor_cmd, so make it a pointer to const for correctness and safety. Signed-off-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2019-05-21treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13Thomas Gleixner1-13/+1
Based on 2 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not see http www gnu org licenses this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details [based] [from] [clk] [highbank] [c] you should have received a copy of the gnu general public license along with this program if not see http www gnu org licenses extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 355 file(s). Signed-off-by: Thomas Gleixner <[email protected]> Reviewed-by: Kate Stewart <[email protected]> Reviewed-by: Jilayne Lovejoy <[email protected]> Reviewed-by: Steve Winslow <[email protected]> Reviewed-by: Allison Randal <[email protected]> Cc: [email protected] Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
2018-09-18NFC: Fix the number of pipesSuren Baghdasaryan1-1/+1
According to ETSI TS 102 622 specification chapter 4.4 pipe identifier is 7 bits long which allows for 128 unique pipe IDs. Because NFC_HCI_MAX_PIPES is used as the number of pipes supported and not as the max pipe ID, its value should be 128 instead of 127. nfc_hci_recv_from_llc extracts pipe ID from packet header using NFC_HCI_FRAGMENT(0x7F) mask which allows for pipe ID value of 127. Same happens when NCI_HCP_MSG_GET_PIPE() is being used. With pipes array having only 127 elements and pipe ID of 127 the OOB memory access will result. Cc: Samuel Ortiz <[email protected]> Cc: Allen Pais <[email protected]> Cc: "David S. Miller" <[email protected]> Suggested-by: Dan Carpenter <[email protected]> Signed-off-by: Suren Baghdasaryan <[email protected]> Reviewed-by: Kees Cook <[email protected]> Cc: stable <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2015-06-09NFC: Introduce vendor commands structuresSamuel Ortiz1-0/+7
Together with inline routines to associate a vendor commands array with an NFC device. Vendor commands allow vendors to implement their very specific operations from driver code instead of adding new stack ops for non NFC generic commands. Vendors need to select their own unique IDs and use that as a namespace for defining sub commands. Signed-off-by: Samuel Ortiz <[email protected]>
2015-04-06nfc: hci: Add comment to explain NFC_HCI_MAX_PIPESChristophe Ricard1-0/+4
According to specification etsi 102 622 chapter 4.4 pipes identifier is 7 bits long giving a 127 possible pipes value. Reported-by: Dan Carpenter <[email protected]> Signed-off-by: Christophe Ricard <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2015-01-28NFC: hci: Add cmd_received handlerChristophe Ricard1-0/+8
When a command is received, it is sometime needed to let the CLF driver do some additional operations. (ex: count remaining pipe notification...) Signed-off-by: Christophe Ricard <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2015-01-27NFC: hci: Change nfc_hci_send_response gate parameter to pipeChristophe Ricard1-2/+0
As there can be several pipes connected to the same gate, we need to know which pipe ID to use when sending an HCI response. A gate ID is not enough. Instead of changing the nfc_hci_send_response() API to something not aligned with the rest of the HCI API, we call nfc_hci_hcp_message_tx directly. Signed-off-by: Christophe Ricard <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2015-01-27NFC: hci: Add pipes table to reference them with a tuple {gate, host}Christophe Ricard1-1/+12
In order to keep host source information on specific hci event (such as evt_connectivity or evt_transaction) and because 2 pipes can be connected to the same gate, it is necessary to add a table referencing every pipe with a {gate, host} tuple. Signed-off-by: Christophe Ricard <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2015-01-27NFC: hci: Change event_received handler gate parameter to pipeChristophe Ricard1-1/+1
Several pipes may point to the same CLF gate, so getting the gate ID as an input is not enough. For example dual secure element may have 2 pipes (1 for uicc and 1 for eSE) pointing to the connectivity gate. As resolving gate and host IDs can be done from a pipe, we now pass the pipe ID to the event received handler. Signed-off-by: Christophe Ricard <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2014-12-02NFC: hci: Add specific hci macro to not create a pipeChristophe Ricard1-0/+1
Some pipe are only created by other host (different than the Terminal Host). The pipe values will for example be notified by NFC_HCI_ADM_NOTIFY_PIPE_CREATED. Signed-off-by: Christophe Ricard <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2014-12-02NFC: hci: Add se_io HCI operandChristophe Ricard1-0/+3
se_io allows to send apdu over the CLF to the embedded Secure Element. Signed-off-by: Christophe Ricard <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2014-07-23NFC: hci: Add stop_poll HCI operand.Christophe Ricard1-0/+1
stop_poll allows to stop CLF reader polling. Some other operations might be necessary for some CLF to stop polling. For example in card mode. Signed-off-by: Christophe Ricard <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2014-04-22NFC: hci: Add load_session HCI operandChristophe Ricard1-0/+1
load_session allows a CLF to restore the gate <-> pipe table from some proprietary location. The main advantage to add this function is to reduce the memory wear by running pipe creation (and storing) only once. Signed-off-by: Christophe Ricard <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2013-12-06include/net/: Fix FSF address in file headersJeff Kirsher1-3/+1
Several files refer to an old address for the Free Software Foundation in the file header comment. Resolve by replacing the address with the URL <http://www.gnu.org/licenses/> so that we do not have to keep updating the header comments anytime the address changes. Signed-off-by: Jeff Kirsher <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2013-09-25NFC: Move struct nfc_phy_ops out of HCI up to nfc core levelEric Lapuyade1-6/+0
struct nfc_phy_ops is not an HCI structure only, it can also be used by NCI or direct NFC Core drivers. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2013-07-31NFC: netlink: Rename CMD_FW_UPLOAD to CMD_FW_DOWNLOADSamuel Ortiz1-1/+1
Loading a firmware into a target is typically called firmware download, not firmware upload. So we rename the netlink API to NFC_CMD_FW_DOWNLOAD in order to avoid any terminology confusion from userspace. Signed-off-by: Samuel Ortiz <[email protected]>
2013-06-14NFC: Extend and fix the internal secure element APISamuel Ortiz1-2/+3
Secure elements need to be discovered after enabling the NFC controller. This is typically done by the NCI core and the HCI drivers (HCI does not specify how to discover SEs, it is left to the specific drivers). Also, the SE enable/disable API explicitely takes a SE index as its argument. Signed-off-by: Samuel Ortiz <[email protected]>
2013-06-14NFC: Remove the static supported_se fieldSamuel Ortiz1-1/+0
Supported secure elements are typically found during a discovery process initiated when the NFC controller is up and running. For a given NFC chipset there can be many configurations (embedded SE or not, with or without a SIM card wired to the NFC controller SWP interface, etc...) and thus driver code will never know before hand which SEs are available. So we remove this field, it will be replaced by a real SE discovery mechanism. Signed-off-by: Samuel Ortiz <[email protected]>
2013-06-14NFC: HCI: Implement fw_upload opsEric Lapuyade1-0/+1
This is a simple forward to the HCI driver. When driver is done with the operation, it shall directly notify NFC Core by calling nfc_fw_upload_done(). Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2013-01-10NFC: Initial Secure Element APISamuel Ortiz1-0/+3
Each NFC adapter can have several links to different secure elements and that property needs to be exported by the drivers. A secure element link can be enabled and disabled, and card emulation will be handled by the currently active one. Otherwise card emulation will be host implemented. Signed-off-by: Samuel Ortiz <[email protected]>
2013-01-10NFC: Add HCI quirks to support driver (non)standard implementationsEric Lapuyade1-0/+13
Some chips diverge from the HCI spec in their implementation of standard features. This adds a new quirks parameter to nfc_hci_allocate_device() to let the driver indicate its divergence. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2013-01-10NFC: Added error handling in event_received hci opsEric Lapuyade1-2/+2
There is no use to return an error if the caller doesn't get it. Signed-off-by: Samuel Ortiz <[email protected]>
2013-01-10NFC: Fixed nfc core and hci unregistration and cleanupEric Lapuyade1-0/+2
When an adapter is removed, it will unregister itself from hci and/or nfc core. In order to do that safely, work tasks must first be canceled and prevented to be scheduled again, before the hci or nfc device can be destroyed. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-11-19NFC: Export nfc_hci_sak_to_protocol()Eric Lapuyade1-0/+1
Some HCI drivers will need it. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-11-19NFC: Export nfc_hci_result_to_errno as it can be needed by HCI driversEric Lapuyade1-0/+2
Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-10-26NFC: Separate pn544 hci driver in HW dependant and independant partsEric Lapuyade1-0/+6
The driver now has all HCI stuff isolated in one file, and all the hardware link specifics in another. Writing a pn544 driver on top of another hardware link is now just a matter of adding a new file for that new hardware specifics. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-10-26NFC: Implement HCI DEP send and receive dataArron Wang1-1/+2
And implement the corresponding hooks for pn544. Signed-off-by: Arron Wang <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-10-26NFC: Implement HCI DEP link up and downArron Wang1-0/+3
And implement the corresponding hooks for pn544. Signed-off-by: Arron Wang <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-10-26NFC: Pass hardware specific HCI event to driverArron Wang1-0/+3
Signed-off-by: Arron Wang <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-10-26NFC: Set local gb and DEP registriesArron Wang1-0/+3
Set the local general bytes and default value for NFCIP1 Target/Initiator registries if the protocol is NFC-DEP Signed-off-by: Arron Wang <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-09-25NFC: xmit from hci ops must return 0 or negativeWaldemar Rymarkiewicz1-0/+5
xmit callback provided by a driver encapsulates upper layers data and sends it to the hardware. So, HCI does not know the exact amount of data being sent and thus can't handle partially sent frames properly. Therefore, the driver must return 0 for completely sent frame or negative for failure. Signed-off-by: Waldemar Rymarkiewicz <[email protected]> Acked-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-09-25NFC: Changed HCI and PN544 HCI driver to use the new HCI LLC CoreEric Lapuyade1-0/+3
The previous shdlc HCI driver and its header are removed from the tree. PN544 now registers directly with HCI and passes the name of the llc it requires (shdlc). HCI instantiation now allocates the required llc instance. The llc is started when the HCI device is brought up. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-09-25NFC: Modified hci_transceive to become an asynchronous operationEric Lapuyade1-2/+6
This enables the completion callback to be called from a different context, preventing a possible deadlock if the callback resulted in the invocation of a nested call to the currently locked nfc_dev. This is also more in line with the im_transceive nfc_ops for NFC Core or NCI drivers which already behave asynchronously. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-09-25NFC: Add a public nfc_hci_send_cmd_async methodEric Lapuyade1-0/+3
This method initiates execution of an HCI cmd. Result will be delivered through an asynchronous callback. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-09-25NFC: Use system_nrt_wq instead of custom onesTejun Heo1-2/+0
NFC is using a number of custom ordered workqueues w/ WQ_MEM_RECLAIM. WQ_MEM_RECLAIM is unnecessary unless NFC is gonna be used as transport for storage device, and all use cases match one work item to one ordered workqueue - IOW, there's no actual ordering going on at all and using system_nrt_wq gives the same behavior. There's nothing to be gained by using custom workqueues. Use system_nrt_wq instead and drop all the custom ones. Signed-off-by: Tejun Heo <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-07-09NFC: Allow HCI driver to pre-open pipes to some gatesEric Lapuyade1-3/+14
Some NFC chips will statically create and open pipes for both standard and proprietary gates. The driver can now pass this information to HCI such that HCI will not attempt to create and open them, but will instead directly use the passed pipe ids. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-07-09NFC: Prepare asynchronous error management for driver and shdlcEric Lapuyade1-0/+2
Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]>
2012-06-04NFC: Add target mode protocols to the polling loop startup routineSamuel Ortiz1-1/+2
Signed-off-by: Samuel Ortiz <[email protected]>
2012-05-15NFC: HCI drivers don't have to keep track of polling stateEric Lapuyade1-2/+0
The NFC core code already does that for them. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2012-05-15NFC: Add HCI/SHDLC support to let driver check for tag presenceEric Lapuyade1-0/+2
Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2012-05-15NFC: Remove useless HCI private nfc target tableEric Lapuyade1-2/+0
Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2012-04-12NFC: HCI supportEric Lapuyade1-0/+198
This is an implementation of ETSI TS 102 622 specification. Many NFC chipsets use HCI as the host <-> target protocol on top of a serial link like i2c. Signed-off-by: Eric Lapuyade <[email protected]> Signed-off-by: Samuel Ortiz <[email protected]> Signed-off-by: John W. Linville <[email protected]>