linux/drivers/staging/gdm724x/gdm_lte.h
<<
>>
Prefs
   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