linux/drivers/staging/gdm724x/gdm_lte.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved.
   3 *
   4 * This software is licensed under the terms of the GNU General Public
   5 * License version 2, as published by the Free Software Foundation, and
   6 * may be copied, distributed, and modified under those terms.
   7 *
   8 * This program is distributed in the hope that it will be useful,
   9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11 * GNU General Public License for more details.
  12 */
  13
  14#ifndef _GDM_LTE_H_
  15#define _GDM_LTE_H_
  16
  17#include <linux/netdevice.h>
  18#include <linux/types.h>
  19
  20#include "gdm_endian.h"
  21
  22#define MAX_NIC_TYPE            4
  23#define MAX_RX_SUBMIT_COUNT     3
  24#define DRIVER_VERSION          "3.7.17.0"
  25
  26enum TX_ERROR_CODE {
  27        TX_NO_ERROR = 0,
  28        TX_NO_DEV,
  29        TX_NO_SPC,
  30        TX_NO_BUFFER,
  31};
  32
  33enum CALLBACK_CONTEXT {
  34        KERNEL_THREAD = 0,
  35        USB_COMPLETE,
  36};
  37
  38struct pdn_table {
  39        u8 activate;
  40        u32 dft_eps_id;
  41        u32 nic_type;
  42} __packed;
  43
  44struct nic;
  45
  46struct phy_dev {
  47        void    *priv_dev;
  48        struct net_device *dev[MAX_NIC_TYPE];
  49        int     (*send_hci_func)(void *priv_dev, void *data, int len,
  50                        void (*cb)(void *cb_data), void *cb_data);
  51        int     (*send_sdu_func)(void *priv_dev, void *data, int len,
  52                        unsigned int dftEpsId, unsigned int epsId,
  53                        void (*cb)(void *cb_data), void *cb_data,
  54                        int dev_idx, int nic_type);
  55        int     (*rcv_func)(void *priv_dev,
  56                        int (*cb)(void *cb_data, void *data, int len,
  57                                  int context),
  58                        void *cb_data, int context);
  59        struct gdm_endian * (*get_endian)(void *priv_dev);
  60};
  61
  62struct nic {
  63        struct net_device *netdev;
  64        struct phy_dev *phy_dev;
  65        struct net_device_stats stats;
  66        struct pdn_table pdn_table;
  67        u8 dest_mac_addr[ETH_ALEN];
  68        u8 src_mac_addr[ETH_ALEN];
  69        u32 nic_id;
  70        u16 vlan_id;
  71};
  72
  73int gdm_lte_event_init(void);
  74void gdm_lte_event_exit(void);
  75
  76void start_rx_proc(struct phy_dev *phy_dev);
  77int register_lte_device(struct phy_dev *phy_dev, struct device *dev,
  78                        u8 *mac_address);
  79void unregister_lte_device(struct phy_dev *phy_dev);
  80
  81#endif /* _GDM_LTE_H_ */
  82