Merge tag 'linux-watchdog-5.11-rc1' of git://www.linux-watchdog.org/linux-watchdog
[linux-2.6-microblaze.git] / drivers / staging / gdm724x / gdm_lte.h
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_ */