summaryrefslogtreecommitdiffstats
path: root/drivers/nfc/pn533.c
Commit message (Collapse)AuthorAgeFilesLines
* NFC: pn533: Turn radio on and off when bringing the device up and downSamuel Ortiz2013-04-111-4/+35
| | | | Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Add missing usb_put_devMarina Makienko2013-04-111-0/+1
| | | | | | | | | Add missing usb_put_dev on failure path in pn533_probe(). Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Marina Makienko <makienko@ispras.ru> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Increase version numberWaldemar Rymarkiewicz2013-04-111-1/+1
| | | | | | | | | | Major features added in 0.2 version: * frame ops added to support wider set of devices * support of ACS ACR122U Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Remove unused pn533_cmd_complete_tWaldemar Rymarkiewicz2013-04-111-2/+0
| | | | | Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Add pn533_abort_cmd procedureWaldemar Rymarkiewicz2013-04-111-14/+21
| | | | | | | | | | | | pn533_abort_cmd() aborts last command sent to the controller and cancels already requested urb. As ACR122U does not support any mechanism (as ACK for standard PN533) which aborts last command this cannot be issued for this device. Otherwise, acr122u will behave in an unstable way. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Add support for ACS ACR122U readerWaldemar Rymarkiewicz2013-04-111-2/+217
| | | | | | | | | | | | | | | | | | | | | | | | ACS ACR122U is an USB NFC reader, PC/SC and CCID compilant, based on NXP PN532 chip. Internally, it's build of MCU, PN532 and an antenna. MCU makes the device CCID and PC/SC compilant and provide USB connection. In this achitecture, a host cannot talk directly to PN532 and must rely on MCU. Luckily, MCU exposes pseud-APDU through PC/SC Escape mechanism which let the host to transmit standard PN532 commands directly to PN532 chip with some limitations. The frame roughly looks like: CCID header | APDU header | PN532 header (pc_to_rdr_escape) | (pseudo apdu Direct Tramsmit) | (len, TFI, cmd, params) Accordign to limitations, ACR122U does't provide any mechanism to abort last issued command. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Add protocol type for frame opsWaldemar Rymarkiewicz2013-04-111-3/+18
| | | | | | | | | | As not all devices require ACK confirmation of every request sent to the controller, differentiate two protocol types. First one, request-ack-response and the second one request-response type. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Move wq_in_error to cmd contextWaldemar Rymarkiewicz2013-04-111-12/+12
| | | | | | | | Rename 'wq_in_error' field to more relevant 'status' and move it to cmd context struct. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Re-group fields in struct pn533Waldemar Rymarkiewicz2013-04-111-9/+8
| | | | | Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Avoid function declarationsWaldemar Rymarkiewicz2013-04-111-12/+10
| | | | | | | Reorder code to avoid functions declaration. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Simplify __pn533_send_frame_asyncWaldemar Rymarkiewicz2013-04-111-17/+9
| | | | | | | | | | | | | | | | In all cases (send_cmd_async, send_data_async and send_sync) pn533_send_async_complete() handles all responses internally, so there is no need to pass this as a callback. Cmd context is passed to __pn533_send_frame_async in all the cases as well. It's already kept in struct pn533 which is available all the time the device is attached. So we can make use of it instead. Therefore, cmd_complete and cmd_complete_arg are no needed any more. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix incorrect kfree of complete argsWaldemar Rymarkiewicz2013-04-111-1/+1
| | | | | | | | We must free 'cmd_complete_mi_arg' and not 'cmd_complete_arg' when getting send error handling fragmented response. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Remove redundant cmd_ prefix in the structWaldemar Rymarkiewicz2013-04-111-4/+4
| | | | | | | 'cmd->code' looks better then 'cmd->cmd_code' Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Keep cmd context in pn533 structWaldemar Rymarkiewicz2013-04-111-5/+12
| | | | | | | | Keep cmd context in pn533 struct instead of only cmd code. The context already includes cmd_code. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Optimise issued cmd context trackingWaldemar Rymarkiewicz2013-04-111-52/+35
| | | | | | | | | | | Use struct pn533_cmd instead of pn533_send_async_complete_arg to track the context of the issued cmd. This way pn533_send_async_complete_arg struct is no needed anymore. Just move issuer complete callback to pn533_cmd struct. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix memleak while scheduling next cmdWaldemar Rymarkiewicz2013-04-111-2/+8
| | | | | | | | | In case of error from __pn533_send_frame_async() while sending next cmd from the queue (cmd_wq), cmd->req, cmd->resp and cmd->arg pointers won't be freed. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Rename pn533_fw_reset appropriatelyWaldemar Rymarkiewicz2013-04-111-3/+3
| | | | | | | Define explicitely it is Pasori specific reset command. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Update copyrights noteWaldemar Rymarkiewicz2013-04-111-6/+4
| | | | | | | Remove duplicated authors info from the header as well. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix div by zero while stopping pollingWaldemar Rymarkiewicz2013-04-111-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Depends on timing division by zero can happen when user stops polling. pn533_stop_poll() resets modulation counter on stop_poll, but meanwhile we get response for last poll request and try, despite of stop poll request, to schedule next modulation for polling. Log message: [345.922515] pn533 1-1.3:1.0: pn533_stop_poll [345.928314] pn533 1-1.3:1.0: pn533_send_ack [345.932769] pn533 1-1.3:1.0: Received a frame. [345.937438] PN533 RX: 00 00 ff 03 fd d5 4b 00 e0 00 [345.942840] pn533 1-1.3:1.0: pn533_poll_complete [345.947753] pn533 1-1.3:1.0: pn533_start_poll_complete [345.953186] Division by zero in kernel. [345.957244] [<c001b38c>] (unwind_backtrace+0x0/0xf0) [345.965698] [<c0260e78>] (Ldiv0+0x8/0x10) [345.974060] [<c0260e60>] (__aeabi_idivmod+0x8/0x18) [345.983978] [<c02e0064>] (pn533_poll_complete+0x3c0/0x500) [345.994903] [<c02df690>] (pn533_send_async_complete+0x7c/0xc0) [346.005828] [<c02e028c>] (pn533_wq_cmd_complete+0x1c/0x34) [346.016113] [<c005d134>] (process_one_work+0x1ac/0x57c) [346.025848] [<c005d85c>] (worker_thread+0x168/0x42c) [346.034576] [<c00620c0>] (kthread+0xa4/0xb0) Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Print out response status bits in hexWaldemar Rymarkiewicz2013-04-111-3/+4
| | | | | | | For better debugging as the codes are defined in hex in the spec. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Reword all std frame logic functWaldemar Rymarkiewicz2013-04-111-60/+61
| | | | | Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Use dynamic debug for pn533 hex dumpsSamuel Ortiz2013-04-111-4/+4
| | | | | | Those can be very verbose and we only want them when debugging pn533. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix target polling modeThierry Escande2013-02-081-1/+1
| | | | | | | Remove unneeded bitwise OR operator on uninitialized sk_buff data Signed-off-by: Thierry Escande <thierry.escande@linux.intel.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* nfc: pn533: Remove unreachable codeWaldemar Rymarkiewicz2013-01-291-2/+0
| | | | | Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* nfc: pn533: Use static poll_mod and std_frame_opsWaldemar Rymarkiewicz2013-01-291-2/+2
| | | | | | | These variables are not exported. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix bad allocation sizeThierry Escande2013-01-131-2/+2
| | | | | | | Use dereferenced pointer in sizeof instead of pointer itself. Signed-off-by: Thierry Escande <thierry.escande@linux.intel.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix missing parenthesisWaldemar Rymarkiewicz2013-01-101-1/+2
| | | | | | | | | This is a quite critical patch as it fixes potential reference to undefined general_bytes which were never set correctly on target activation due to missing parenthesis. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: Initial Secure Element APISamuel Ortiz2013-01-101-0/+1
| | | | | | | | | | 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 <sameo@linux.intel.com>
* NFC: pn533: Introduce ops for frame logicWaldemar Rymarkiewicz2013-01-101-73/+135
| | | | | | | | | Encapsulate whole frame logic (tx/rx frame structure and size) inside the ops structure to make the core driver generic for devices which handle frames in non standard menner (different then pn533 spec say). Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Remove unused dev->wq_in_frameWaldemar Rymarkiewicz2013-01-101-5/+0
| | | | | Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Cleanup pn533_cmd_complete_tWaldemar Rymarkiewicz2013-01-101-22/+7
| | | | | | | | | | | 'params' arg in pn533_cmd_complete_t definition has been deprecated and currently is not in use (resp skb is pass in arg ptr), so remove it. Also 'params_len' arg is used as a transfer status indicator, so simply reword it appropriately. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Remove deprecated dev->out_frame buffWaldemar Rymarkiewicz2013-01-101-6/+1
| | | | | | | As it's not used anymore get rid of that buffer. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Use skb in __pn533_send_cmd_frame_asynWaldemar Rymarkiewicz2013-01-101-26/+18
| | | | | | | | __pn533_send_cmd_frame_async() should be frame type independent. So, don't use pn533_frame type params and instead use skb for req and resp pointers. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Don't use out_frame in pn533_send_ackWaldemar Rymarkiewicz2013-01-101-25/+6
| | | | | | | | dev->out_frame buffer is much bigger for ACK frame needs. Use local buffer instead. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Cleanup debug messagesWaldemar Rymarkiewicz2013-01-101-25/+7
| | | | | | | | | Remove debug messages which do not include valueable informations in debug mode. Add some new ones for better tracking or reword when if necessary. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix urb->status handlingWaldemar Rymarkiewicz2013-01-101-16/+18
| | | | | | | | Fix text message to be more suitable for the error code and treat ESHUTDOWN as an error not debug msg. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Remove unused pn533_send_cmd_frame_asyWaldemar Rymarkiewicz2013-01-101-68/+7
| | | | | | | | | Remove obsolete send async api as it's no longer used. Remove global dev->in_frame as well, as each packet is kept is a seperate skb struct now, so that's not used anymore. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix minor style issuesWaldemar Rymarkiewicz2013-01-101-5/+5
| | | | | Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix open parenthesis alignmentWaldemar Rymarkiewicz2013-01-101-22/+19
| | | | | Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix spacing issuesWaldemar Rymarkiewicz2013-01-101-8/+8
| | | | | Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Fix quoted strings split across linesWaldemar Rymarkiewicz2013-01-101-35/+35
| | | | | Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Remove frame logic from poll cmdsWaldemar Rymarkiewicz2013-01-101-144/+126
| | | | | | | | Remove frame logic from start_pool cb using the new iface for async send. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Dump tx and rx data in debug modeWaldemar Rymarkiewicz2013-01-101-0/+6
| | | | | Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Del frame logic from Data Exchange cmdWaldemar Rymarkiewicz2013-01-101-168/+141
| | | | | | | | | | | Remove frame logic from transceive cb using new iface for async send. For pn533_wq_mi_recv() use pn533_send_cmd_direct_async which sends the cmd directly to the hardware, skipping cmd queue. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Del frame logic from InJumForDep cmdWaldemar Rymarkiewicz2013-01-101-62/+55
| | | | | | | | Remove frame logic from InJmumpForDEP command using the new iface for async send. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Del frame logic from TgGet/SetData cmdWaldemar Rymarkiewicz2013-01-101-64/+33
| | | | | | | | Remove frame logic from TgSetData and TgGetData commands using the new iface for async send. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Remove pn533_send_cmd_frame_syncWaldemar Rymarkiewicz2013-01-101-112/+85
| | | | | | | | | | | Remove obsolate pn533_send_cmd_frame_sync() and use previously added new iface for sync send. The new interface require the use of individual skb for each cmd which removes some memcpy calls and hides frame logic. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Add pn533_alloc_skb for req allocationWaldemar Rymarkiewicz2013-01-101-6/+16
| | | | | | | Allocate sk_buff for the request. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Add a new pn533_send_sync ifaceWaldemar Rymarkiewicz2013-01-101-1/+54
| | | | | | | | | | | | | | | It is intended to replace pn533_send_cmd_frame_sync() iface which requires from the caller to create complete frame. The new function constructs a complete frame itself and sends it out in sync manner. This way frame logic is hidden from the caller. pn533_send_cmd_sync() returns ERR_PTR in case of an error or a pointer to valid response sk_buff otherwise. The pointer must be freed by the caller when it's been consumed. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
* NFC: pn533: Add a new pn533_send_data_async ifaceWaldemar Rymarkiewicz2013-01-101-0/+31
| | | | | | | | This iface is intended to be used with DEP transfers. It differs from pn533_send_cmd_async() in the way the response skb is allocated. Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
OpenPOWER on IntegriCloud