linux/drivers/staging/gdm72xx/gdm_usb.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 __GDM72XX_GDM_USB_H__
  15#define __GDM72XX_GDM_USB_H__
  16
  17#include <linux/types.h>
  18#include <linux/usb.h>
  19#include <linux/list.h>
  20
  21#define B_DIFF_DL_DRV           (1 << 4)
  22#define B_DOWNLOAD              (1 << 5)
  23#define MAX_NR_SDU_BUF          64
  24
  25struct usb_tx {
  26        struct list_head        list;
  27#if defined(CONFIG_WIMAX_GDM72XX_USB_PM) || defined(CONFIG_WIMAX_GDM72XX_K_MODE)
  28        struct list_head        p_list;
  29#endif
  30        struct tx_cxt           *tx_cxt;
  31        struct urb              *urb;
  32        u8                      *buf;
  33        void (*callback)(void *cb_data);
  34        void                    *cb_data;
  35};
  36
  37struct tx_cxt {
  38        struct list_head        free_list;
  39        struct list_head        sdu_list;
  40        struct list_head        hci_list;
  41#if defined(CONFIG_WIMAX_GDM72XX_USB_PM) || defined(CONFIG_WIMAX_GDM72XX_K_MODE)
  42        struct list_head        pending_list;
  43#endif
  44        spinlock_t              lock;
  45};
  46
  47struct usb_rx {
  48        struct list_head        list;
  49        struct rx_cxt           *rx_cxt;
  50        struct urb              *urb;
  51        u8                      *buf;
  52        void (*callback)(void *cb_data, void *data, int len);
  53        void *cb_data;
  54};
  55
  56struct rx_cxt {
  57        struct list_head        free_list;
  58        struct list_head        used_list;
  59        spinlock_t              lock;
  60};
  61
  62struct usbwm_dev {
  63        struct usb_device       *usbdev;
  64#ifdef CONFIG_WIMAX_GDM72XX_USB_PM
  65        struct work_struct      pm_ws;
  66
  67        struct usb_interface    *intf;
  68#endif
  69#ifdef CONFIG_WIMAX_GDM72XX_K_MODE
  70        int bw_switch;
  71        struct list_head        list;
  72#endif
  73        struct tx_cxt           tx;
  74        struct rx_cxt           rx;
  75        int                     padding;
  76};
  77
  78#endif /* __GDM72XX_GDM_USB_H__ */
  79