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