1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * NCI based Driver for STMicroelectronics NFC Chip
4 *
5 * Copyright (C) 2014-2015  STMicroelectronics SAS. All rights reserved.
6 */
7
8#ifndef __LOCAL_NDLC_H_
9#define __LOCAL_NDLC_H_
10
11#include <linux/skbuff.h>
12#include <net/nfc/nfc.h>
13
14struct st_nci_se_status;
15
16/* Low Level Transport description */
17struct llt_ndlc {
18	struct nci_dev *ndev;
19	const struct nfc_phy_ops *ops;
20	void *phy_id;
21
22	struct timer_list t1_timer;
23	bool t1_active;
24
25	struct timer_list t2_timer;
26	bool t2_active;
27
28	struct sk_buff_head rcv_q;
29	struct sk_buff_head send_q;
30	struct sk_buff_head ack_pending_q;
31
32	struct work_struct sm_work;
33
34	struct device *dev;
35
36	/*
37	 * < 0 if hardware error occurred
38	 * and prevents normal operation.
39	 */
40	int hard_fault;
41	int powered;
42};
43
44int ndlc_open(struct llt_ndlc *ndlc);
45void ndlc_close(struct llt_ndlc *ndlc);
46int ndlc_send(struct llt_ndlc *ndlc, struct sk_buff *skb);
47void ndlc_recv(struct llt_ndlc *ndlc, struct sk_buff *skb);
48int ndlc_probe(void *phy_id, const struct nfc_phy_ops *phy_ops,
49	       struct device *dev, int phy_headroom, int phy_tailroom,
50	       struct llt_ndlc **ndlc_id, struct st_nci_se_status *se_status);
51void ndlc_remove(struct llt_ndlc *ndlc);
52#endif /* __LOCAL_NDLC_H__ */
53