linux/net/nfc/nci/lib.c
<<
>>
Prefs
   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);
  74