Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * NCI based Driver for STMicroelectronics NFC Chip
0004  *
0005  * Copyright (C) 2014-2015  STMicroelectronics SAS. All rights reserved.
0006  */
0007 
0008 #ifndef __LOCAL_NDLC_H_
0009 #define __LOCAL_NDLC_H_
0010 
0011 #include <linux/skbuff.h>
0012 #include <net/nfc/nfc.h>
0013 
0014 struct st_nci_se_status;
0015 
0016 /* Low Level Transport description */
0017 struct llt_ndlc {
0018     struct nci_dev *ndev;
0019     const struct nfc_phy_ops *ops;
0020     void *phy_id;
0021 
0022     struct timer_list t1_timer;
0023     bool t1_active;
0024 
0025     struct timer_list t2_timer;
0026     bool t2_active;
0027 
0028     struct sk_buff_head rcv_q;
0029     struct sk_buff_head send_q;
0030     struct sk_buff_head ack_pending_q;
0031 
0032     struct work_struct sm_work;
0033 
0034     struct device *dev;
0035 
0036     /*
0037      * < 0 if hardware error occurred
0038      * and prevents normal operation.
0039      */
0040     int hard_fault;
0041     int powered;
0042 };
0043 
0044 int ndlc_open(struct llt_ndlc *ndlc);
0045 void ndlc_close(struct llt_ndlc *ndlc);
0046 int ndlc_send(struct llt_ndlc *ndlc, struct sk_buff *skb);
0047 void ndlc_recv(struct llt_ndlc *ndlc, struct sk_buff *skb);
0048 int ndlc_probe(void *phy_id, const struct nfc_phy_ops *phy_ops,
0049            struct device *dev, int phy_headroom, int phy_tailroom,
0050            struct llt_ndlc **ndlc_id, struct st_nci_se_status *se_status);
0051 void ndlc_remove(struct llt_ndlc *ndlc);
0052 #endif /* __LOCAL_NDLC_H__ */