1*caab277bSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 26a2968aaSIlan Elias /* 36a2968aaSIlan Elias * The NFC Controller Interface is the communication protocol between an 46a2968aaSIlan Elias * NFC Controller (NFCC) and a Device Host (DH). 56a2968aaSIlan Elias * 66a2968aaSIlan Elias * Copyright (C) 2011 Texas Instruments, Inc. 76a2968aaSIlan Elias * 86a2968aaSIlan Elias * Written by Ilan Elias <ilane@ti.com> 96a2968aaSIlan Elias * 106a2968aaSIlan Elias * Acknowledgements: 116a2968aaSIlan Elias * This file is based on lib.c, which was written 126a2968aaSIlan Elias * by Maxim Krasnyansky. 136a2968aaSIlan Elias */ 146a2968aaSIlan Elias 156a2968aaSIlan Elias #include <linux/module.h> 166a2968aaSIlan Elias #include <linux/kernel.h> 176a2968aaSIlan Elias #include <linux/types.h> 186a2968aaSIlan Elias #include <linux/errno.h> 196a2968aaSIlan Elias 206a2968aaSIlan Elias #include <net/nfc/nci.h> 21502b4240SH Hartley Sweeten #include <net/nfc/nci_core.h> 226a2968aaSIlan Elias 236a2968aaSIlan Elias /* NCI status codes to Unix errno mapping */ nci_to_errno(__u8 code)246a2968aaSIlan Eliasint nci_to_errno(__u8 code) 256a2968aaSIlan Elias { 266a2968aaSIlan Elias switch (code) { 276a2968aaSIlan Elias case NCI_STATUS_OK: 286a2968aaSIlan Elias return 0; 296a2968aaSIlan Elias 306a2968aaSIlan Elias case NCI_STATUS_REJECTED: 316a2968aaSIlan Elias return -EBUSY; 326a2968aaSIlan Elias 33e8c0dacdSIlan Elias case NCI_STATUS_RF_FRAME_CORRUPTED: 346a2968aaSIlan Elias return -EBADMSG; 356a2968aaSIlan Elias 366a2968aaSIlan Elias case NCI_STATUS_NOT_INITIALIZED: 376a2968aaSIlan Elias return -EHOSTDOWN; 386a2968aaSIlan Elias 396a2968aaSIlan Elias case NCI_STATUS_SYNTAX_ERROR: 406a2968aaSIlan Elias case NCI_STATUS_SEMANTIC_ERROR: 416a2968aaSIlan Elias case NCI_STATUS_INVALID_PARAM: 426a2968aaSIlan Elias case NCI_STATUS_RF_PROTOCOL_ERROR: 436a2968aaSIlan Elias case NCI_STATUS_NFCEE_PROTOCOL_ERROR: 446a2968aaSIlan Elias return -EPROTO; 456a2968aaSIlan Elias 466a2968aaSIlan Elias case NCI_STATUS_UNKNOWN_GID: 476a2968aaSIlan Elias case NCI_STATUS_UNKNOWN_OID: 486a2968aaSIlan Elias return -EBADRQC; 496a2968aaSIlan Elias 506a2968aaSIlan Elias case NCI_STATUS_MESSAGE_SIZE_EXCEEDED: 516a2968aaSIlan Elias return -EMSGSIZE; 526a2968aaSIlan Elias 536a2968aaSIlan Elias case NCI_STATUS_DISCOVERY_ALREADY_STARTED: 546a2968aaSIlan Elias return -EALREADY; 556a2968aaSIlan Elias 566a2968aaSIlan Elias case NCI_STATUS_DISCOVERY_TARGET_ACTIVATION_FAILED: 576a2968aaSIlan Elias case NCI_STATUS_NFCEE_INTERFACE_ACTIVATION_FAILED: 586a2968aaSIlan Elias return -ECONNREFUSED; 596a2968aaSIlan Elias 606a2968aaSIlan Elias case NCI_STATUS_RF_TRANSMISSION_ERROR: 616a2968aaSIlan Elias case NCI_STATUS_NFCEE_TRANSMISSION_ERROR: 626a2968aaSIlan Elias return -ECOMM; 636a2968aaSIlan Elias 646a2968aaSIlan Elias case NCI_STATUS_RF_TIMEOUT_ERROR: 656a2968aaSIlan Elias case NCI_STATUS_NFCEE_TIMEOUT_ERROR: 666a2968aaSIlan Elias return -ETIMEDOUT; 676a2968aaSIlan Elias 686a2968aaSIlan Elias case NCI_STATUS_FAILED: 696a2968aaSIlan Elias default: 706a2968aaSIlan Elias return -ENOSYS; 716a2968aaSIlan Elias } 726a2968aaSIlan Elias } 736a2968aaSIlan Elias EXPORT_SYMBOL(nci_to_errno); 74