mirror of
https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
synced 2025-11-02 17:15:37 +01:00
Fixed MTP to work with TWRP
This commit is contained in:
commit
f6dfaef42e
50820 changed files with 20846062 additions and 0 deletions
152
drivers/net/wireless/ath/ar5523/ar5523.h
Normal file
152
drivers/net/wireless/ath/ar5523/ar5523.h
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
/*
|
||||
* Copyright (c) 2006 Damien Bergamini <damien.bergamini@free.fr>
|
||||
* Copyright (c) 2006 Sam Leffler, Errno Consulting
|
||||
* Copyright (c) 2007 Christoph Hellwig <hch@lst.de>
|
||||
* Copyright (c) 2008-2009 Weongyo Jeong <weongyo@freebsd.org>
|
||||
* Copyright (c) 2012 Pontus Fuchs <pontus.fuchs@gmail.com>
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#define AR5523_FLAG_PRE_FIRMWARE (1 << 0)
|
||||
#define AR5523_FLAG_ABG (1 << 1)
|
||||
|
||||
#define AR5523_FIRMWARE_FILE "ar5523.bin"
|
||||
|
||||
#define AR5523_CMD_TX_PIPE 0x01
|
||||
#define AR5523_DATA_TX_PIPE 0x02
|
||||
#define AR5523_CMD_RX_PIPE 0x81
|
||||
#define AR5523_DATA_RX_PIPE 0x82
|
||||
|
||||
#define ar5523_cmd_tx_pipe(dev) \
|
||||
usb_sndbulkpipe((dev), AR5523_CMD_TX_PIPE)
|
||||
#define ar5523_data_tx_pipe(dev) \
|
||||
usb_sndbulkpipe((dev), AR5523_DATA_TX_PIPE)
|
||||
#define ar5523_cmd_rx_pipe(dev) \
|
||||
usb_rcvbulkpipe((dev), AR5523_CMD_RX_PIPE)
|
||||
#define ar5523_data_rx_pipe(dev) \
|
||||
usb_rcvbulkpipe((dev), AR5523_DATA_RX_PIPE)
|
||||
|
||||
#define AR5523_DATA_TIMEOUT 10000
|
||||
#define AR5523_CMD_TIMEOUT 1000
|
||||
|
||||
#define AR5523_TX_DATA_COUNT 8
|
||||
#define AR5523_TX_DATA_RESTART_COUNT 2
|
||||
#define AR5523_RX_DATA_COUNT 16
|
||||
#define AR5523_RX_DATA_REFILL_COUNT 8
|
||||
|
||||
#define AR5523_CMD_ID 1
|
||||
#define AR5523_DATA_ID 2
|
||||
|
||||
#define AR5523_TX_WD_TIMEOUT (HZ * 2)
|
||||
#define AR5523_FLUSH_TIMEOUT (HZ * 3)
|
||||
|
||||
enum AR5523_flags {
|
||||
AR5523_HW_UP,
|
||||
AR5523_USB_DISCONNECTED,
|
||||
AR5523_CONNECTED
|
||||
};
|
||||
|
||||
struct ar5523_tx_cmd {
|
||||
struct ar5523 *ar;
|
||||
struct urb *urb_tx;
|
||||
void *buf_tx;
|
||||
void *odata;
|
||||
int olen;
|
||||
int flags;
|
||||
int res;
|
||||
struct completion done;
|
||||
};
|
||||
|
||||
/* This struct is placed in tx_info->driver_data. It must not be larger
|
||||
* than IEEE80211_TX_INFO_DRIVER_DATA_SIZE.
|
||||
*/
|
||||
struct ar5523_tx_data {
|
||||
struct list_head list;
|
||||
struct ar5523 *ar;
|
||||
struct sk_buff *skb;
|
||||
struct urb *urb;
|
||||
};
|
||||
|
||||
struct ar5523_rx_data {
|
||||
struct list_head list;
|
||||
struct ar5523 *ar;
|
||||
struct urb *urb;
|
||||
struct sk_buff *skb;
|
||||
};
|
||||
|
||||
struct ar5523 {
|
||||
struct usb_device *dev;
|
||||
struct ieee80211_hw *hw;
|
||||
|
||||
unsigned long flags;
|
||||
struct mutex mutex;
|
||||
struct workqueue_struct *wq;
|
||||
|
||||
struct ar5523_tx_cmd tx_cmd;
|
||||
|
||||
struct delayed_work stat_work;
|
||||
|
||||
struct timer_list tx_wd_timer;
|
||||
struct work_struct tx_wd_work;
|
||||
struct work_struct tx_work;
|
||||
struct list_head tx_queue_pending;
|
||||
struct list_head tx_queue_submitted;
|
||||
spinlock_t tx_data_list_lock;
|
||||
wait_queue_head_t tx_flush_waitq;
|
||||
|
||||
/* Queued + Submitted TX frames */
|
||||
atomic_t tx_nr_total;
|
||||
|
||||
/* Submitted TX frames */
|
||||
atomic_t tx_nr_pending;
|
||||
|
||||
void *rx_cmd_buf;
|
||||
struct urb *rx_cmd_urb;
|
||||
|
||||
struct ar5523_rx_data rx_data[AR5523_RX_DATA_COUNT];
|
||||
spinlock_t rx_data_list_lock;
|
||||
struct list_head rx_data_free;
|
||||
struct list_head rx_data_used;
|
||||
atomic_t rx_data_free_cnt;
|
||||
|
||||
struct work_struct rx_refill_work;
|
||||
|
||||
unsigned int rxbufsz;
|
||||
u8 serial[16];
|
||||
|
||||
struct ieee80211_channel channels[14];
|
||||
struct ieee80211_rate rates[12];
|
||||
struct ieee80211_supported_band band;
|
||||
struct ieee80211_vif *vif;
|
||||
};
|
||||
|
||||
/* flags for sending firmware commands */
|
||||
#define AR5523_CMD_FLAG_READ (1 << 1)
|
||||
#define AR5523_CMD_FLAG_MAGIC (1 << 2)
|
||||
|
||||
#define ar5523_dbg(ar, format, arg...) \
|
||||
dev_dbg(&(ar)->dev->dev, format, ## arg)
|
||||
|
||||
/* On USB hot-unplug there can be a lot of URBs in flight and they'll all
|
||||
* fail. Instead of dealing with them in every possible place just surpress
|
||||
* any messages on USB disconnect.
|
||||
*/
|
||||
#define ar5523_err(ar, format, arg...) \
|
||||
do { \
|
||||
if (!test_bit(AR5523_USB_DISCONNECTED, &ar->flags)) { \
|
||||
dev_err(&(ar)->dev->dev, format, ## arg); \
|
||||
} \
|
||||
} while (0)
|
||||
#define ar5523_info(ar, format, arg...) \
|
||||
dev_info(&(ar)->dev->dev, format, ## arg)
|
||||
Loading…
Add table
Add a link
Reference in a new issue