1 /* 2 * NCI based Driver for STMicroelectronics NFC Chip 3 * 4 * Copyright (C) 2014-2015 STMicroelectronics SAS. All rights reserved. 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms and conditions of the GNU General Public License, 8 * version 2, as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 #ifndef __LOCAL_NDLC_H_ 20 #define __LOCAL_NDLC_H_ 21 22 #include <linux/skbuff.h> 23 #include <net/nfc/nfc.h> 24 25 struct st_nci_se_status; 26 27 /* Low Level Transport description */ 28 struct llt_ndlc { 29 struct nci_dev *ndev; 30 struct nfc_phy_ops *ops; 31 void *phy_id; 32 33 struct timer_list t1_timer; 34 bool t1_active; 35 36 struct timer_list t2_timer; 37 bool t2_active; 38 39 struct sk_buff_head rcv_q; 40 struct sk_buff_head send_q; 41 struct sk_buff_head ack_pending_q; 42 43 struct work_struct sm_work; 44 45 struct device *dev; 46 47 /* 48 * < 0 if hardware error occurred 49 * and prevents normal operation. 50 */ 51 int hard_fault; 52 int powered; 53 }; 54 55 int ndlc_open(struct llt_ndlc *ndlc); 56 void ndlc_close(struct llt_ndlc *ndlc); 57 int ndlc_send(struct llt_ndlc *ndlc, struct sk_buff *skb); 58 void ndlc_recv(struct llt_ndlc *ndlc, struct sk_buff *skb); 59 int ndlc_probe(void *phy_id, struct nfc_phy_ops *phy_ops, struct device *dev, 60 int phy_headroom, int phy_tailroom, struct llt_ndlc **ndlc_id, 61 struct st_nci_se_status *se_status); 62 void ndlc_remove(struct llt_ndlc *ndlc); 63 #endif /* __LOCAL_NDLC_H__ */ 64