Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/net/nfc/nci/lib.c
26282 views
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 <[email protected]>
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
75