Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c54795d authored by Christophe Ricard's avatar Christophe Ricard Committed by Samuel Ortiz
Browse files

NFC: st21nfca: Align st21nfca driver with other nfc driver



Align st21nfca driver with or nfc driver:
- Remove st21nfca_ prefix
- Merge st21nfca_se.h, st21nfca_dep.h in st21nfca.h

Signed-off-by: default avatarChristophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent e67e7e59
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
# Makefile for ST21NFCA HCI based NFC driver
#

st21nfca_hci-objs = st21nfca.o st21nfca_dep.o st21nfca_se.o
st21nfca_hci-objs = core.o dep.o se.o
obj-$(CONFIG_NFC_ST21NFCA)     += st21nfca_hci.o

st21nfca_i2c-objs  = i2c.o
+0 −2
Original line number Diff line number Diff line
@@ -22,8 +22,6 @@
#include <net/nfc/llc.h>

#include "st21nfca.h"
#include "st21nfca_dep.h"
#include "st21nfca_se.h"

#define DRIVER_DESC "HCI NFC driver for ST21NFCA"

+0 −1
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
#include <net/nfc/hci.h>

#include "st21nfca.h"
#include "st21nfca_dep.h"

#define ST21NFCA_NFCIP1_INITIATOR 0x00
#define ST21NFCA_NFCIP1_REQ 0xd4
+0 −1
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
#include <net/nfc/hci.h>

#include "st21nfca.h"
#include "st21nfca_se.h"

#define ST21NFCA_EVT_UICC_ACTIVATE		0x10
#define ST21NFCA_EVT_UICC_DEACTIVATE	0x13
+79 −19
Original line number Diff line number Diff line
@@ -18,9 +18,8 @@
#define __LOCAL_ST21NFCA_H_

#include <net/nfc/hci.h>

#include "st21nfca_dep.h"
#include "st21nfca_se.h"
#include <linux/skbuff.h>
#include <linux/workqueue.h>

#define HCI_MODE 0

@@ -46,10 +45,25 @@
#define ST21NFCA_HCI_LLC_MAX_SIZE       (ST21NFCA_HCI_LLC_LEN_CRC + 1 + \
					ST21NFCA_HCI_LLC_MAX_PAYLOAD)

/* Reader RF commands */
#define ST21NFCA_WR_XCHG_DATA           0x10

#define ST21NFCA_DEVICE_MGNT_GATE       0x01
#define ST21NFCA_RF_READER_F_GATE       0x14
#define ST21NFCA_RF_CARD_F_GATE		0x24
#define ST21NFCA_APDU_READER_GATE	0xf0
#define ST21NFCA_CONNECTIVITY_GATE	0x41

/*
 * ref ISO7816-3 chap 8.1. the initial character TS is followed by a
 * sequence of at most 32 characters.
 */
#define ST21NFCA_ESE_MAX_LENGTH		33
#define ST21NFCA_ESE_HOST_ID		0xc0

#define DRIVER_DESC "HCI NFC driver for ST21NFCA"

#define ST21NFCA_HCI_MODE		0

#define ST21NFCA_NUM_DEVICES		256

struct st21nfca_se_status {
@@ -57,17 +71,42 @@ struct st21nfca_se_status {
	bool is_uicc_present;
};

int st21nfca_hci_probe(void *phy_id, struct nfc_phy_ops *phy_ops,
		       char *llc_name, int phy_headroom, int phy_tailroom,
		       int phy_payload, struct nfc_hci_dev **hdev,
			   struct st21nfca_se_status *se_status);
void st21nfca_hci_remove(struct nfc_hci_dev *hdev);

enum st21nfca_state {
	ST21NFCA_ST_COLD,
	ST21NFCA_ST_READY,
};

struct st21nfca_dep_info {
	struct sk_buff *tx_pending;
	struct work_struct tx_work;
	u8 curr_nfc_dep_pni;
	u32 idx;
	u8 to;
	u8 did;
	u8 bsi;
	u8 bri;
	u8 lri;
} __packed;

struct st21nfca_se_info {
	u8 atr[ST21NFCA_ESE_MAX_LENGTH];
	struct completion req_completion;

	struct timer_list bwi_timer;
	int wt_timeout; /* in msecs */
	bool bwi_active;

	struct timer_list se_active_timer;
	bool se_active;
	int expected_pipes;
	int count_pipes;

	bool xch_error;

	se_io_cb_t cb;
	void *cb_context;
};

struct st21nfca_hci_info {
	struct nfc_phy_ops *phy_ops;
	void *phy_id;
@@ -87,13 +126,34 @@ struct st21nfca_hci_info {
	struct st21nfca_se_info se_info;
};

/* Reader RF commands */
#define ST21NFCA_WR_XCHG_DATA           0x10
int st21nfca_hci_probe(void *phy_id, struct nfc_phy_ops *phy_ops,
		       char *llc_name, int phy_headroom, int phy_tailroom,
		       int phy_payload, struct nfc_hci_dev **hdev,
			   struct st21nfca_se_status *se_status);
void st21nfca_hci_remove(struct nfc_hci_dev *hdev);

#define ST21NFCA_DEVICE_MGNT_GATE       0x01
#define ST21NFCA_RF_READER_F_GATE       0x14
#define ST21NFCA_RF_CARD_F_GATE			0x24
#define ST21NFCA_APDU_READER_GATE		0xf0
#define ST21NFCA_CONNECTIVITY_GATE		0x41
int st21nfca_dep_event_received(struct nfc_hci_dev *hdev,
				u8 event, struct sk_buff *skb);
int st21nfca_tm_send_dep_res(struct nfc_hci_dev *hdev, struct sk_buff *skb);

int st21nfca_im_send_atr_req(struct nfc_hci_dev *hdev, u8 *gb, size_t gb_len);
int st21nfca_im_send_dep_req(struct nfc_hci_dev *hdev, struct sk_buff *skb);
void st21nfca_dep_init(struct nfc_hci_dev *hdev);
void st21nfca_dep_deinit(struct nfc_hci_dev *hdev);

int st21nfca_connectivity_event_received(struct nfc_hci_dev *hdev, u8 host,
					u8 event, struct sk_buff *skb);
int st21nfca_apdu_reader_event_received(struct nfc_hci_dev *hdev,
					u8 event, struct sk_buff *skb);

int st21nfca_hci_discover_se(struct nfc_hci_dev *hdev);
int st21nfca_hci_enable_se(struct nfc_hci_dev *hdev, u32 se_idx);
int st21nfca_hci_disable_se(struct nfc_hci_dev *hdev, u32 se_idx);
int st21nfca_hci_se_io(struct nfc_hci_dev *hdev, u32 se_idx,
		u8 *apdu, size_t apdu_length,
		se_io_cb_t cb, void *cb_context);

void st21nfca_se_init(struct nfc_hci_dev *hdev);
void st21nfca_se_deinit(struct nfc_hci_dev *hdev);

#endif /* __LOCAL_ST21NFCA_H_ */
Loading