Linux Audio

Check our new training course

Loading...
 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 */
24int 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}
73EXPORT_SYMBOL(nci_to_errno);