1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * The NFC Controller Interface is the communication protocol between an 4*4882a593Smuzhiyun * NFC Controller (NFCC) and a Device Host (DH). 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (C) 2011 Texas Instruments, Inc. 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Written by Ilan Elias <ilane@ti.com> 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * Acknowledgements: 11*4882a593Smuzhiyun * This file is based on lib.c, which was written 12*4882a593Smuzhiyun * by Maxim Krasnyansky. 13*4882a593Smuzhiyun */ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #include <linux/module.h> 16*4882a593Smuzhiyun #include <linux/kernel.h> 17*4882a593Smuzhiyun #include <linux/types.h> 18*4882a593Smuzhiyun #include <linux/errno.h> 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #include <net/nfc/nci.h> 21*4882a593Smuzhiyun #include <net/nfc/nci_core.h> 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun /* NCI status codes to Unix errno mapping */ nci_to_errno(__u8 code)24*4882a593Smuzhiyunint nci_to_errno(__u8 code) 25*4882a593Smuzhiyun { 26*4882a593Smuzhiyun switch (code) { 27*4882a593Smuzhiyun case NCI_STATUS_OK: 28*4882a593Smuzhiyun return 0; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun case NCI_STATUS_REJECTED: 31*4882a593Smuzhiyun return -EBUSY; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun case NCI_STATUS_RF_FRAME_CORRUPTED: 34*4882a593Smuzhiyun return -EBADMSG; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun case NCI_STATUS_NOT_INITIALIZED: 37*4882a593Smuzhiyun return -EHOSTDOWN; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun case NCI_STATUS_SYNTAX_ERROR: 40*4882a593Smuzhiyun case NCI_STATUS_SEMANTIC_ERROR: 41*4882a593Smuzhiyun case NCI_STATUS_INVALID_PARAM: 42*4882a593Smuzhiyun case NCI_STATUS_RF_PROTOCOL_ERROR: 43*4882a593Smuzhiyun case NCI_STATUS_NFCEE_PROTOCOL_ERROR: 44*4882a593Smuzhiyun return -EPROTO; 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun case NCI_STATUS_UNKNOWN_GID: 47*4882a593Smuzhiyun case NCI_STATUS_UNKNOWN_OID: 48*4882a593Smuzhiyun return -EBADRQC; 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun case NCI_STATUS_MESSAGE_SIZE_EXCEEDED: 51*4882a593Smuzhiyun return -EMSGSIZE; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun case NCI_STATUS_DISCOVERY_ALREADY_STARTED: 54*4882a593Smuzhiyun return -EALREADY; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun case NCI_STATUS_DISCOVERY_TARGET_ACTIVATION_FAILED: 57*4882a593Smuzhiyun case NCI_STATUS_NFCEE_INTERFACE_ACTIVATION_FAILED: 58*4882a593Smuzhiyun return -ECONNREFUSED; 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun case NCI_STATUS_RF_TRANSMISSION_ERROR: 61*4882a593Smuzhiyun case NCI_STATUS_NFCEE_TRANSMISSION_ERROR: 62*4882a593Smuzhiyun return -ECOMM; 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun case NCI_STATUS_RF_TIMEOUT_ERROR: 65*4882a593Smuzhiyun case NCI_STATUS_NFCEE_TIMEOUT_ERROR: 66*4882a593Smuzhiyun return -ETIMEDOUT; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun case NCI_STATUS_FAILED: 69*4882a593Smuzhiyun default: 70*4882a593Smuzhiyun return -ENOSYS; 71*4882a593Smuzhiyun } 72*4882a593Smuzhiyun } 73*4882a593Smuzhiyun EXPORT_SYMBOL(nci_to_errno); 74