| // SPDX-License-Identifier: GPL-2.0-only | |
| /* | |
| * The NFC Controller Interface is the communication protocol between an | |
| * NFC Controller (NFCC) and a Device Host (DH). | |
| * | |
| * Copyright (C) 2011 Texas Instruments, Inc. | |
| * | |
| * Written by Ilan Elias <ilane@ti.com> | |
| * | |
| * Acknowledgements: | |
| * This file is based on lib.c, which was written | |
| * by Maxim Krasnyansky. | |
| */ | |
| #include <linux/module.h> | |
| #include <linux/kernel.h> | |
| #include <linux/types.h> | |
| #include <linux/errno.h> | |
| #include <net/nfc/nci.h> | |
| #include <net/nfc/nci_core.h> | |
| /* NCI status codes to Unix errno mapping */ | |
| int nci_to_errno(__u8 code) | |
| { | |
| switch (code) { | |
| case NCI_STATUS_OK: | |
| return 0; | |
| case NCI_STATUS_REJECTED: | |
| return -EBUSY; | |
| case NCI_STATUS_RF_FRAME_CORRUPTED: | |
| return -EBADMSG; | |
| case NCI_STATUS_NOT_INITIALIZED: | |
| return -EHOSTDOWN; | |
| case NCI_STATUS_SYNTAX_ERROR: | |
| case NCI_STATUS_SEMANTIC_ERROR: | |
| case NCI_STATUS_INVALID_PARAM: | |
| case NCI_STATUS_RF_PROTOCOL_ERROR: | |
| case NCI_STATUS_NFCEE_PROTOCOL_ERROR: | |
| return -EPROTO; | |
| case NCI_STATUS_UNKNOWN_GID: | |
| case NCI_STATUS_UNKNOWN_OID: | |
| return -EBADRQC; | |
| case NCI_STATUS_MESSAGE_SIZE_EXCEEDED: | |
| return -EMSGSIZE; | |
| case NCI_STATUS_DISCOVERY_ALREADY_STARTED: | |
| return -EALREADY; | |
| case NCI_STATUS_DISCOVERY_TARGET_ACTIVATION_FAILED: | |
| case NCI_STATUS_NFCEE_INTERFACE_ACTIVATION_FAILED: | |
| return -ECONNREFUSED; | |
| case NCI_STATUS_RF_TRANSMISSION_ERROR: | |
| case NCI_STATUS_NFCEE_TRANSMISSION_ERROR: | |
| return -ECOMM; | |
| case NCI_STATUS_RF_TIMEOUT_ERROR: | |
| case NCI_STATUS_NFCEE_TIMEOUT_ERROR: | |
| return -ETIMEDOUT; | |
| case NCI_STATUS_FAILED: | |
| default: | |
| return -ENOSYS; | |
| } | |
| } | |
| EXPORT_SYMBOL(nci_to_errno); |