root/drivers/nfc/nfcmrvl/nfcmrvl.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /**
   2  * Marvell NFC driver
   3  *
   4  * Copyright (C) 2014-2015, Marvell International Ltd.
   5  *
   6  * This software file (the "File") is distributed by Marvell International
   7  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
   8  * (the "License").  You may use, redistribute and/or modify this File in
   9  * accordance with the terms and conditions of the License, a copy of which
  10  * is available on the worldwide web at
  11  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
  12  *
  13  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
  14  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
  15  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
  16  * this warranty disclaimer.
  17  **/
  18 
  19 #ifndef _NFCMRVL_H_
  20 #define _NFCMRVL_H_
  21 
  22 #include <linux/platform_data/nfcmrvl.h>
  23 
  24 #include "fw_dnld.h"
  25 
  26 /* Define private flags: */
  27 #define NFCMRVL_NCI_RUNNING                     1
  28 #define NFCMRVL_PHY_ERROR                       2
  29 
  30 #define NFCMRVL_EXT_COEX_ID                     0xE0
  31 #define NFCMRVL_NOT_ALLOWED_ID                  0xE1
  32 #define NFCMRVL_ACTIVE_ID                       0xE2
  33 #define NFCMRVL_EXT_COEX_ENABLE                 1
  34 #define NFCMRVL_GPIO_PIN_NFC_NOT_ALLOWED        0xA
  35 #define NFCMRVL_GPIO_PIN_NFC_ACTIVE             0xB
  36 #define NFCMRVL_NCI_MAX_EVENT_SIZE              260
  37 
  38 /*
  39 ** NCI FW Parmaters
  40 */
  41 
  42 #define NFCMRVL_PB_BAIL_OUT                     0x11
  43 #define NFCMRVL_PROP_REF_CLOCK                  0xF0
  44 #define NFCMRVL_PROP_SET_HI_CONFIG              0xF1
  45 
  46 /*
  47 ** HCI defines
  48 */
  49 
  50 #define NFCMRVL_HCI_EVENT_HEADER_SIZE           0x04
  51 #define NFCMRVL_HCI_EVENT_CODE                  0x04
  52 #define NFCMRVL_HCI_NFC_EVENT_CODE              0xFF
  53 #define NFCMRVL_HCI_COMMAND_CODE                0x01
  54 #define NFCMRVL_HCI_OGF                         0x81
  55 #define NFCMRVL_HCI_OCF                         0xFE
  56 
  57 enum nfcmrvl_phy {
  58         NFCMRVL_PHY_USB         = 0,
  59         NFCMRVL_PHY_UART        = 1,
  60         NFCMRVL_PHY_I2C         = 2,
  61         NFCMRVL_PHY_SPI         = 3,
  62 };
  63 
  64 struct nfcmrvl_private {
  65 
  66         unsigned long flags;
  67 
  68         /* Platform configuration */
  69         struct nfcmrvl_platform_data config;
  70 
  71         /* Parent dev */
  72         struct nci_dev *ndev;
  73 
  74         /* FW download context */
  75         struct nfcmrvl_fw_dnld fw_dnld;
  76 
  77         /* FW download support */
  78         bool support_fw_dnld;
  79 
  80         /*
  81         ** PHY related information
  82         */
  83 
  84         /* PHY driver context */
  85         void *drv_data;
  86         /* PHY device */
  87         struct device *dev;
  88         /* PHY type */
  89         enum nfcmrvl_phy phy;
  90         /* Low level driver ops */
  91         struct nfcmrvl_if_ops *if_ops;
  92 };
  93 
  94 struct nfcmrvl_if_ops {
  95         int (*nci_open) (struct nfcmrvl_private *priv);
  96         int (*nci_close) (struct nfcmrvl_private *priv);
  97         int (*nci_send) (struct nfcmrvl_private *priv, struct sk_buff *skb);
  98         void (*nci_update_config)(struct nfcmrvl_private *priv,
  99                                   const void *param);
 100 };
 101 
 102 void nfcmrvl_nci_unregister_dev(struct nfcmrvl_private *priv);
 103 int nfcmrvl_nci_recv_frame(struct nfcmrvl_private *priv, struct sk_buff *skb);
 104 struct nfcmrvl_private *nfcmrvl_nci_register_dev(enum nfcmrvl_phy phy,
 105                                 void *drv_data,
 106                                 struct nfcmrvl_if_ops *ops,
 107                                 struct device *dev,
 108                                 struct nfcmrvl_platform_data *pdata);
 109 
 110 
 111 void nfcmrvl_chip_reset(struct nfcmrvl_private *priv);
 112 void nfcmrvl_chip_halt(struct nfcmrvl_private *priv);
 113 
 114 int nfcmrvl_parse_dt(struct device_node *node,
 115                      struct nfcmrvl_platform_data *pdata);
 116 
 117 #endif

/* [<][>][^][v][top][bottom][index][help] */