Lines Matching +full:nfc +full:- +full:spi
2 HCI backend for NFC Core
5 - Author: Eric Lapuyade, Samuel Ortiz
6 - Contact: eric.lapuyade@intel.com, samuel.ortiz@intel.com
9 -------
12 enables easy writing of HCI-based NFC drivers. The HCI layer runs as an NFC Core
13 backend, implementing an abstract nfc device and translating NFC Core API
17 ---
19 HCI registers as an nfc device with NFC Core. Requests coming from userspace are
20 routed through netlink sockets to NFC Core and then to HCI. From this point,
26 and a translation will be forwarded to NFC Core as needed. There are hooks to
30 - one for executing commands : nfc_hci_msg_tx_work(). Only one command
32 - one for dispatching received events and commands : nfc_hci_msg_rx_work().
35 --------------------------
41 In case the chip supports pre-opened gates and pseudo-static pipes, the driver
45 -------------------
54 ----------------
58 can be connected using various phy (i2c, spi, ...)
61 --------------
90 - open() and close() shall turn the hardware on and off.
91 - hci_ready() is an optional entry point that is called right after the hci
94 - xmit() shall simply write a frame to the physical link.
95 - start_poll() is an optional entrypoint that shall set the hardware in polling
98 - dep_link_up() is called after a p2p target has been detected, to finish
100 to nfc core.
101 - dep_link_down() is called to bring the p2p link down.
102 - target_from_gate() is an optional entrypoint to return the nfc protocols
104 - complete_target_discovered() is an optional entry point to let the driver
107 - im_transceive() must be implemented by the driver if proprietary HCI commands
113 - tm_send() is called to send data in the case of a p2p connection
114 - check_presence() is an optional entry point that will be called regularly
118 - event_received() is called to handle an event coming from the chip. Driver
122 using nfc_hci_recv_frame(). HCI will take care of re-aggregation and handling
126 --------------
142 layers such as an llc to store the frame for re-emission, this
149 ---
181 The llc must be registered with nfc before it can be used. Do that by
190 ----------------
196 ------------------
199 - IRQ handler (IRQH):
203 - SHDLC State Machine worker (SMW)
209 - HCI Tx Cmd worker (MSGTXWQ)
215 - HCI Rx worker (MSGRXWQ)
219 - Syscall context from a userspace call (SYSCALL)
221 Any entrypoint in HCI called from NFC Core
224 -----------------------------------------------
267 ------------------------------------------
277 Typically, such an event will be propagated to NFC Core from MSGRXWQ context.
280 ----------------
282 Errors that occur synchronously with the execution of an NFC Core request are
290 - driver (pn544) fails to deliver an incoming frame: it stores the error such
296 - SMW is basically a background thread to handle incoming and outgoing shdlc
302 - HCI: if an internal HCI error happens (frame is lost), or HCI is reported an
304 command with that error, or notify NFC Core directly if no command is
307 - NFC Core: when NFC Core is notified of an error from below and polling is