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
16enum TX_ERROR_CODE {
17 TX_NO_ERROR = 0,
18 TX_NO_DEV,
19 TX_NO_SPC,
20 TX_NO_BUFFER,
21};
22
23enum CALLBACK_CONTEXT {
24 KERNEL_THREAD = 0,
25 USB_COMPLETE,
26};
27
28struct pdn_table {
29 u8 activate;
30 u32 dft_eps_id;
31 u32 nic_type;
32} __packed;
33
34struct nic;
35
36struct 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
52struct 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
63int gdm_lte_event_init(void);
64void gdm_lte_event_exit(void);
65
66void start_rx_proc(struct phy_dev *phy_dev);
67int register_lte_device(struct phy_dev *phy_dev, struct device *dev,
68 u8 *mac_address);
69void unregister_lte_device(struct phy_dev *phy_dev);
70
71#endif /* _GDM_LTE_H_ */
72

source code of linux/drivers/staging/gdm724x/gdm_lte.h