1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved. */ |
3 | |
4 | #ifndef _GDM_LTE_H_ |
5 | #define _GDM_LTE_H_ |
6 | |
7 | #include <linux/netdevice.h> |
8 | #include <linux/types.h> |
9 | |
10 | #include "gdm_endian.h" |
11 | |
12 | #define MAX_NIC_TYPE 4 |
13 | #define MAX_RX_SUBMIT_COUNT 3 |
14 | #define DRIVER_VERSION "3.7.17.0" |
15 | |
16 | enum TX_ERROR_CODE { |
17 | TX_NO_ERROR = 0, |
18 | TX_NO_DEV, |
19 | TX_NO_SPC, |
20 | TX_NO_BUFFER, |
21 | }; |
22 | |
23 | enum CALLBACK_CONTEXT { |
24 | KERNEL_THREAD = 0, |
25 | USB_COMPLETE, |
26 | }; |
27 | |
28 | struct pdn_table { |
29 | u8 activate; |
30 | u32 dft_eps_id; |
31 | u32 nic_type; |
32 | } __packed; |
33 | |
34 | struct nic; |
35 | |
36 | struct phy_dev { |
37 | void *priv_dev; |
38 | struct net_device *dev[MAX_NIC_TYPE]; |
39 | int (*send_hci_func)(void *priv_dev, void *data, int len, |
40 | void (*cb)(void *cb_data), void *cb_data); |
41 | int (*send_sdu_func)(void *priv_dev, void *data, int len, |
42 | unsigned int dft_eps_id, unsigned int eps_id, |
43 | void (*cb)(void *cb_data), void *cb_data, |
44 | int dev_idx, int nic_type); |
45 | int (*rcv_func)(void *priv_dev, |
46 | int (*cb)(void *cb_data, void *data, int len, |
47 | int context), |
48 | void *cb_data, int context); |
49 | u8 (*get_endian)(void *priv_dev); |
50 | }; |
51 | |
52 | struct nic { |
53 | struct net_device *netdev; |
54 | struct phy_dev *phy_dev; |
55 | struct net_device_stats stats; |
56 | struct pdn_table pdn_table; |
57 | u8 dest_mac_addr[ETH_ALEN]; |
58 | u8 src_mac_addr[ETH_ALEN]; |
59 | u32 nic_id; |
60 | u16 vlan_id; |
61 | }; |
62 | |
63 | int gdm_lte_event_init(void); |
64 | void gdm_lte_event_exit(void); |
65 | |
66 | void start_rx_proc(struct phy_dev *phy_dev); |
67 | int register_lte_device(struct phy_dev *phy_dev, struct device *dev, |
68 | u8 *mac_address); |
69 | void unregister_lte_device(struct phy_dev *phy_dev); |
70 | |
71 | #endif /* _GDM_LTE_H_ */ |
72 | |