mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 14:19:09 -04:00
qcacmn: Fix kernel module check patch warnings in HIF USB files
Fix kernel module check patch warnings in HIF USB files Change-Id: Ia9a76aedcef83bb582e44fc76a486137bd22362b CRs-fixed: 2033001
This commit is contained in:
parent
8e0313588d
commit
af3fb2cbb0
8 changed files with 136 additions and 132 deletions
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2016 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2016-2017 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
#include "reg_struct.h"
|
||||
#include "targaddrs.h"
|
||||
/*** WARNING : Add to the end of the TABLE! do not change the order ****/
|
||||
typedef struct targetdef_s TARGET_REGISTER_TABLE;
|
||||
struct targetdef_s;
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@
|
|||
#define HIF_GET_CE_STATE(scn) ((struct HIF_CE_state *)scn)
|
||||
#define HIF_GET_SDIO_SOFTC(scn) ((struct hif_sdio_softc *)scn)
|
||||
#define HIF_GET_USB_SOFTC(scn) ((struct hif_usb_softc *)scn)
|
||||
#define HIF_GET_USB_DEVICE(scn) ((HIF_DEVICE_USB *)scn)
|
||||
#define HIF_GET_USB_DEVICE(scn) ((struct HIF_DEVICE_USB *)scn)
|
||||
#define HIF_GET_SOFTC(scn) ((struct hif_softc *)scn)
|
||||
#define GET_HIF_OPAQUE_HDL(scn) ((struct hif_opaque_softc *)scn)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2017 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
|
|
@ -191,6 +191,7 @@ static QDF_STATUS hif_send_internal(HIF_DEVICE_USB *hif_usb_device,
|
|||
i < (send_context->new_alloc ? frag_count : frag_count - 1); i++) {
|
||||
int frag_len = qdf_nbuf_get_frag_len(buf, i);
|
||||
unsigned char *frag_addr = qdf_nbuf_get_frag_vaddr(buf, i);
|
||||
|
||||
qdf_mem_copy(data_ptr, frag_addr, frag_len);
|
||||
data_ptr += frag_len;
|
||||
}
|
||||
|
|
@ -275,6 +276,7 @@ QDF_STATUS hif_send_head(struct hif_opaque_softc *scn, uint8_t pipe_id,
|
|||
{
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
HIF_DEVICE_USB *device = HIF_GET_USB_DEVICE(scn);
|
||||
|
||||
HIF_TRACE("+%s", __func__);
|
||||
status = hif_send_internal(device, pipe_id, NULL, wbuf, nbytes);
|
||||
HIF_TRACE("-%s", __func__);
|
||||
|
|
@ -288,7 +290,8 @@ QDF_STATUS hif_send_head(struct hif_opaque_softc *scn, uint8_t pipe_id,
|
|||
*
|
||||
* Return: # of free resources in pipe_id
|
||||
*/
|
||||
uint16_t hif_get_free_queue_number(struct hif_opaque_softc *scn, uint8_t pipe_id)
|
||||
uint16_t hif_get_free_queue_number(struct hif_opaque_softc *scn,
|
||||
uint8_t pipe_id)
|
||||
{
|
||||
HIF_DEVICE_USB *device = HIF_GET_USB_DEVICE(scn);
|
||||
|
||||
|
|
@ -321,6 +324,7 @@ void hif_post_init(struct hif_opaque_softc *scn, void *target,
|
|||
void hif_detach_htc(struct hif_opaque_softc *scn)
|
||||
{
|
||||
HIF_DEVICE_USB *device = HIF_GET_USB_DEVICE(scn);
|
||||
|
||||
usb_hif_flush_all(device);
|
||||
qdf_mem_zero(&device->htc_callbacks, sizeof(device->htc_callbacks));
|
||||
}
|
||||
|
|
@ -856,8 +860,8 @@ QDF_STATUS hif_diag_write_mem(struct hif_opaque_softc *scn,
|
|||
uint8_t *data, int nbytes)
|
||||
{
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
HIF_TRACE("+%s", __func__);
|
||||
|
||||
HIF_TRACE("+%s", __func__);
|
||||
if ((address & 0x3) || ((uintptr_t)data & 0x3))
|
||||
return QDF_STATUS_E_IO;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2017 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
|
|
@ -45,19 +45,19 @@
|
|||
|
||||
#ifdef HIF_USB_TASKLET
|
||||
#define HIF_USB_SCHEDULE_WORK(pipe)\
|
||||
tasklet_schedule(&pipe->io_complete_tasklet);
|
||||
tasklet_schedule(&pipe->io_complete_tasklet)
|
||||
|
||||
#define HIF_USB_INIT_WORK(pipe)\
|
||||
tasklet_init(&pipe->io_complete_tasklet,\
|
||||
usb_hif_io_comp_tasklet,\
|
||||
(long unsigned int)pipe);
|
||||
(unsigned long)pipe)
|
||||
|
||||
#define HIF_USB_FLUSH_WORK(pipe) flush_work(&pipe->io_complete_work);
|
||||
#define HIF_USB_FLUSH_WORK(pipe) flush_work(&pipe->io_complete_work)
|
||||
#else
|
||||
#define HIF_USB_SCHEDULE_WORK(pipe) schedule_work(&pipe->io_complete_work);
|
||||
#define HIF_USB_SCHEDULE_WORK(pipe) schedule_work(&pipe->io_complete_work)
|
||||
#define HIF_USB_INIT_WORK(pipe)\
|
||||
INIT_WORK(&pipe->io_complete_work,\
|
||||
usb_hif_io_comp_work);
|
||||
usb_hif_io_comp_work)
|
||||
#define HIF_USB_FLUSH_WORK(pipe)
|
||||
#endif
|
||||
|
||||
|
|
@ -70,15 +70,15 @@
|
|||
#define USB_HIF_SUSPEND ATH_DEBUG_MAKE_MODULE_MASK(5)
|
||||
#define USB_HIF_ISOC_SUPPORT ATH_DEBUG_MAKE_MODULE_MASK(6)
|
||||
|
||||
struct _HIF_USB_PIPE;
|
||||
struct HIF_USB_PIPE;
|
||||
|
||||
typedef struct _HIF_URB_CONTEXT {
|
||||
struct HIF_URB_CONTEXT {
|
||||
DL_LIST link;
|
||||
struct _HIF_USB_PIPE *pipe;
|
||||
struct HIF_USB_PIPE *pipe;
|
||||
qdf_nbuf_t buf;
|
||||
struct urb *urb;
|
||||
struct hif_usb_send_context *send_context;
|
||||
} HIF_URB_CONTEXT;
|
||||
};
|
||||
|
||||
#define HIF_USB_PIPE_FLAG_TX (1 << 0)
|
||||
|
||||
|
|
@ -87,7 +87,7 @@ typedef struct _HIF_URB_CONTEXT {
|
|||
*/
|
||||
struct hif_usb_send_context {
|
||||
A_BOOL new_alloc;
|
||||
HIF_DEVICE_USB *hif_usb_device;
|
||||
struct HIF_DEVICE_USB *hif_usb_device;
|
||||
qdf_nbuf_t netbuf;
|
||||
unsigned int transfer_id;
|
||||
unsigned int head_data_len;
|
||||
|
|
@ -95,30 +95,32 @@ struct hif_usb_send_context {
|
|||
|
||||
extern unsigned int hif_usb_disable_rxdata2;
|
||||
|
||||
extern QDF_STATUS usb_hif_submit_ctrl_in(HIF_DEVICE_USB *macp,
|
||||
extern QDF_STATUS usb_hif_submit_ctrl_in(struct HIF_DEVICE_USB *macp,
|
||||
uint8_t req,
|
||||
uint16_t value,
|
||||
uint16_t index,
|
||||
void *data, uint32_t size);
|
||||
|
||||
extern QDF_STATUS usb_hif_submit_ctrl_out(HIF_DEVICE_USB *macp,
|
||||
extern QDF_STATUS usb_hif_submit_ctrl_out(struct HIF_DEVICE_USB *macp,
|
||||
uint8_t req,
|
||||
uint16_t value,
|
||||
uint16_t index,
|
||||
void *data, uint32_t size);
|
||||
|
||||
QDF_STATUS usb_hif_setup_pipe_resources(HIF_DEVICE_USB *device);
|
||||
void usb_hif_cleanup_pipe_resources(HIF_DEVICE_USB *device);
|
||||
void usb_hif_prestart_recv_pipes(HIF_DEVICE_USB *device);
|
||||
void usb_hif_start_recv_pipes(HIF_DEVICE_USB *device);
|
||||
void usb_hif_flush_all(HIF_DEVICE_USB *device);
|
||||
void usb_hif_cleanup_transmit_urb(HIF_URB_CONTEXT *urb_context);
|
||||
void usb_hif_enqueue_pending_transfer(HIF_USB_PIPE *pipe,
|
||||
HIF_URB_CONTEXT *urb_context);
|
||||
void usb_hif_remove_pending_transfer(HIF_URB_CONTEXT *urb_context);
|
||||
HIF_URB_CONTEXT *usb_hif_alloc_urb_from_pipe(HIF_USB_PIPE *pipe);
|
||||
QDF_STATUS usb_hif_setup_pipe_resources(struct HIF_DEVICE_USB *device);
|
||||
void usb_hif_cleanup_pipe_resources(struct HIF_DEVICE_USB *device);
|
||||
void usb_hif_prestart_recv_pipes(struct HIF_DEVICE_USB *device);
|
||||
void usb_hif_start_recv_pipes(struct HIF_DEVICE_USB *device);
|
||||
void usb_hif_flush_all(struct HIF_DEVICE_USB *device);
|
||||
void usb_hif_cleanup_transmit_urb(struct HIF_URB_CONTEXT *urb_context);
|
||||
void usb_hif_enqueue_pending_transfer(struct HIF_USB_PIPE *pipe,
|
||||
struct HIF_URB_CONTEXT *urb_context);
|
||||
void usb_hif_remove_pending_transfer(struct HIF_URB_CONTEXT *urb_context);
|
||||
struct HIF_URB_CONTEXT *usb_hif_alloc_urb_from_pipe(struct HIF_USB_PIPE *pipe);
|
||||
void hif_usb_device_deinit(struct hif_usb_softc *sc);
|
||||
QDF_STATUS hif_usb_device_init(struct hif_usb_softc *sc);
|
||||
#ifdef HIF_USB_TASKLET
|
||||
void usb_hif_io_comp_tasklet(long unsigned int context);
|
||||
void usb_hif_io_comp_tasklet(unsigned long context);
|
||||
#else
|
||||
void usb_hif_io_comp_work(struct work_struct *work);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2017 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
|
|
@ -48,10 +48,7 @@ void *fw_ram_seg_addr[FW_RAM_SEG_CNT];
|
|||
|
||||
|
||||
static int hif_usb_unload_dev_num = -1;
|
||||
struct hif_usb_softc *g_usb_sc = NULL;
|
||||
|
||||
void hif_usb_device_deinit(struct hif_usb_softc *sc);
|
||||
QDF_STATUS hif_usb_device_init(struct hif_usb_softc *sc);
|
||||
struct hif_usb_softc *g_usb_sc;
|
||||
|
||||
/**
|
||||
* hif_usb_diag_write_cold_reset() - reset SOC by sending a diag command
|
||||
|
|
@ -234,10 +231,11 @@ QDF_STATUS hif_usb_enable_bus(struct hif_softc *scn,
|
|||
/* disable lpm to avoid usb2.0 probe timeout */
|
||||
hif_usb_disable_lpm(usbdev);
|
||||
|
||||
/* params need to be added - TO DO
|
||||
scn->enableuartprint = 1;
|
||||
scn->enablefwlog = 0;
|
||||
scn->max_no_of_peers = 1; */
|
||||
/* params need to be added - TODO
|
||||
* scn->enableuartprint = 1;
|
||||
* scn->enablefwlog = 0;
|
||||
* scn->max_no_of_peers = 1;
|
||||
*/
|
||||
|
||||
sc->interface = interface;
|
||||
sc->reboot_notifier.notifier_call = hif_usb_reboot;
|
||||
|
|
@ -373,6 +371,7 @@ int hif_usb_bus_resume(struct hif_softc *hif_ctx)
|
|||
int hif_usb_bus_reset_resume(struct hif_softc *hif_ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
HIF_ENTER();
|
||||
if (hif_usb_diag_write_cold_reset(hif_ctx) != QDF_STATUS_SUCCESS)
|
||||
ret = 1;
|
||||
|
|
@ -454,7 +453,8 @@ void hif_usb_reg_tbl_attach(struct hif_softc *scn)
|
|||
return;
|
||||
|
||||
/* assign target register table if we find
|
||||
corresponding type */
|
||||
* corresponding type
|
||||
*/
|
||||
hif_register_tbl_attach(scn, hif_type);
|
||||
target_register_tbl_attach(scn, target_type);
|
||||
/* read the chip revision*/
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2017 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
|
|
@ -84,7 +84,7 @@ struct fw_ramdump {
|
|||
};
|
||||
|
||||
/* USB Endpoint definition */
|
||||
typedef enum {
|
||||
enum HIF_USB_PIPE_ID {
|
||||
HIF_TX_CTRL_PIPE = 0,
|
||||
HIF_TX_DATA_LP_PIPE,
|
||||
HIF_TX_DATA_MP_PIPE,
|
||||
|
|
@ -94,11 +94,11 @@ typedef enum {
|
|||
HIF_RX_DATA2_PIPE,
|
||||
HIF_RX_INT_PIPE,
|
||||
HIF_USB_PIPE_MAX
|
||||
} HIF_USB_PIPE_ID;
|
||||
};
|
||||
|
||||
#define HIF_USB_PIPE_INVALID HIF_USB_PIPE_MAX
|
||||
|
||||
typedef struct _HIF_USB_PIPE {
|
||||
struct HIF_USB_PIPE {
|
||||
DL_LIST urb_list_head;
|
||||
DL_LIST urb_pending_list;
|
||||
int32_t urb_alloc;
|
||||
|
|
@ -118,9 +118,9 @@ typedef struct _HIF_USB_PIPE {
|
|||
struct sk_buff_head io_comp_queue;
|
||||
struct usb_endpoint_descriptor *ep_desc;
|
||||
int32_t urb_prestart_cnt;
|
||||
} HIF_USB_PIPE;
|
||||
};
|
||||
|
||||
typedef struct _HIF_DEVICE_USB {
|
||||
struct HIF_DEVICE_USB {
|
||||
struct hif_softc ol_sc;
|
||||
qdf_spinlock_t cs_lock;
|
||||
qdf_spinlock_t tx_lock;
|
||||
|
|
@ -128,15 +128,14 @@ typedef struct _HIF_DEVICE_USB {
|
|||
struct hif_msg_callbacks htc_callbacks;
|
||||
struct usb_device *udev;
|
||||
struct usb_interface *interface;
|
||||
HIF_USB_PIPE pipes[HIF_USB_PIPE_MAX];
|
||||
struct HIF_USB_PIPE pipes[HIF_USB_PIPE_MAX];
|
||||
uint8_t *diag_cmd_buffer;
|
||||
uint8_t *diag_resp_buffer;
|
||||
void *claimed_context;
|
||||
A_BOOL is_bundle_enabled;
|
||||
uint16_t rx_bundle_cnt;
|
||||
uint32_t rx_bundle_buf_len;
|
||||
} HIF_DEVICE_USB;
|
||||
|
||||
};
|
||||
|
||||
struct hif_usb_softc {
|
||||
struct _HIF_DEVICE_USB hif_hdl;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
#define MISSING 0
|
||||
|
||||
typedef struct targetdef_s {
|
||||
struct targetdef_s {
|
||||
u_int32_t d_RTC_SOC_BASE_ADDRESS;
|
||||
u_int32_t d_RTC_WMAC_BASE_ADDRESS;
|
||||
u_int32_t d_SYSTEM_SLEEP_OFFSET;
|
||||
|
|
@ -293,7 +293,7 @@ typedef struct targetdef_s {
|
|||
u_int32_t d_SOC_CHIP_ID_REVISION_MASK;
|
||||
u_int32_t d_SOC_CHIP_ID_REVISION_LSB;
|
||||
/* chip id end */
|
||||
} TARGET_REGISTER_TABLE;
|
||||
};
|
||||
|
||||
#define RTC_SOC_BASE_ADDRESS \
|
||||
(scn->targetdef->d_RTC_SOC_BASE_ADDRESS)
|
||||
|
|
@ -987,7 +987,7 @@ typedef struct targetdef_s {
|
|||
SOC_CPU_CLOCK_STANDARD_MASK)
|
||||
/* PLL end */
|
||||
|
||||
typedef struct hostdef_s {
|
||||
struct hostdef_s {
|
||||
uint32_t d_INT_STATUS_ENABLE_ERROR_LSB;
|
||||
uint32_t d_INT_STATUS_ENABLE_ERROR_MASK;
|
||||
uint32_t d_INT_STATUS_ENABLE_CPU_LSB;
|
||||
|
|
@ -1046,7 +1046,7 @@ typedef struct hostdef_s {
|
|||
uint32_t d_SOC_PCIE_BASE_ADDRESS;
|
||||
uint32_t d_MSI_MAGIC_ADR_ADDRESS;
|
||||
uint32_t d_MSI_MAGIC_ADDRESS;
|
||||
} HOST_REGISTER_TABLE;
|
||||
};
|
||||
|
||||
#define INT_STATUS_ENABLE_ERROR_LSB \
|
||||
(scn->hostdef->d_INT_STATUS_ENABLE_ERROR_LSB)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2017 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
|
|
@ -42,23 +42,23 @@
|
|||
((x & FW_RAMDUMP_PATTERN_MASK) == \
|
||||
FW_RAMDUMP_PATTERN)) ? 1 : 0)
|
||||
|
||||
static void usb_hif_post_recv_transfers(HIF_USB_PIPE *recv_pipe,
|
||||
static void usb_hif_post_recv_transfers(struct HIF_USB_PIPE *recv_pipe,
|
||||
int buffer_length);
|
||||
static void usb_hif_post_recv_bundle_transfers
|
||||
(HIF_USB_PIPE *recv_pipe,
|
||||
(struct HIF_USB_PIPE *recv_pipe,
|
||||
int buffer_length);
|
||||
static void usb_hif_cleanup_recv_urb(HIF_URB_CONTEXT *urb_context);
|
||||
static void usb_hif_cleanup_recv_urb(struct HIF_URB_CONTEXT *urb_context);
|
||||
|
||||
|
||||
/**
|
||||
* usb_hif_free_urb_to_pipe() - add urb back to urb list of a pipe
|
||||
* @pipe: pointer to HIF_USB_PIPE
|
||||
* @urb_context: pointer to HIF_URB_CONTEXT
|
||||
* @pipe: pointer to struct HIF_USB_PIPE
|
||||
* @urb_context: pointer to struct HIF_URB_CONTEXT
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static void usb_hif_free_urb_to_pipe(HIF_USB_PIPE *pipe,
|
||||
HIF_URB_CONTEXT *urb_context)
|
||||
static void usb_hif_free_urb_to_pipe(struct HIF_USB_PIPE *pipe,
|
||||
struct HIF_URB_CONTEXT *urb_context)
|
||||
{
|
||||
qdf_spin_lock_irqsave(&pipe->device->cs_lock);
|
||||
pipe->urb_cnt++;
|
||||
|
|
@ -68,19 +68,20 @@ static void usb_hif_free_urb_to_pipe(HIF_USB_PIPE *pipe,
|
|||
|
||||
/**
|
||||
* usb_hif_alloc_urb_from_pipe() - remove urb back from urb list of a pipe
|
||||
* @pipe: pointer to HIF_USB_PIPE
|
||||
* @pipe: pointer to struct HIF_USB_PIPE
|
||||
*
|
||||
* Return: HIF_URB_CONTEXT urb context removed from the urb list
|
||||
* Return: struct HIF_URB_CONTEXT urb context removed from the urb list
|
||||
*/
|
||||
HIF_URB_CONTEXT *usb_hif_alloc_urb_from_pipe(HIF_USB_PIPE *pipe)
|
||||
struct HIF_URB_CONTEXT *usb_hif_alloc_urb_from_pipe(struct HIF_USB_PIPE *pipe)
|
||||
{
|
||||
HIF_URB_CONTEXT *urb_context = NULL;
|
||||
struct HIF_URB_CONTEXT *urb_context = NULL;
|
||||
DL_LIST *item;
|
||||
|
||||
qdf_spin_lock_irqsave(&pipe->device->cs_lock);
|
||||
item = dl_list_remove_item_from_head(&pipe->urb_list_head);
|
||||
if (item != NULL) {
|
||||
urb_context = A_CONTAINING_STRUCT(item, HIF_URB_CONTEXT, link);
|
||||
urb_context = A_CONTAINING_STRUCT(item, struct HIF_URB_CONTEXT,
|
||||
link);
|
||||
pipe->urb_cnt--;
|
||||
}
|
||||
qdf_spin_unlock_irqrestore(&pipe->device->cs_lock);
|
||||
|
|
@ -90,20 +91,21 @@ HIF_URB_CONTEXT *usb_hif_alloc_urb_from_pipe(HIF_USB_PIPE *pipe)
|
|||
|
||||
/**
|
||||
* usb_hif_dequeue_pending_transfer() - remove urb from pending xfer list
|
||||
* @pipe: pointer to HIF_USB_PIPE
|
||||
* @pipe: pointer to struct HIF_USB_PIPE
|
||||
*
|
||||
* Return: HIF_URB_CONTEXT urb context removed from the pending xfer list
|
||||
* Return: struct HIF_URB_CONTEXT urb context removed from the pending xfer list
|
||||
*/
|
||||
static HIF_URB_CONTEXT *usb_hif_dequeue_pending_transfer
|
||||
(HIF_USB_PIPE *pipe)
|
||||
static struct HIF_URB_CONTEXT *usb_hif_dequeue_pending_transfer
|
||||
(struct HIF_USB_PIPE *pipe)
|
||||
{
|
||||
HIF_URB_CONTEXT *urb_context = NULL;
|
||||
struct HIF_URB_CONTEXT *urb_context = NULL;
|
||||
DL_LIST *item;
|
||||
|
||||
qdf_spin_lock_irqsave(&pipe->device->cs_lock);
|
||||
item = dl_list_remove_item_from_head(&pipe->urb_pending_list);
|
||||
if (item != NULL)
|
||||
urb_context = A_CONTAINING_STRUCT(item, HIF_URB_CONTEXT, link);
|
||||
urb_context = A_CONTAINING_STRUCT(item, struct HIF_URB_CONTEXT,
|
||||
link);
|
||||
qdf_spin_unlock_irqrestore(&pipe->device->cs_lock);
|
||||
|
||||
return urb_context;
|
||||
|
|
@ -111,13 +113,13 @@ static HIF_URB_CONTEXT *usb_hif_dequeue_pending_transfer
|
|||
|
||||
/**
|
||||
* usb_hif_enqueue_pending_transfer() - add urb to pending xfer list
|
||||
* @pipe: pointer to HIF_USB_PIPE
|
||||
* @urb_context: pointer to HIF_URB_CONTEXT to be added to the xfer list
|
||||
* @pipe: pointer to struct HIF_USB_PIPE
|
||||
* @urb_context: pointer to struct HIF_URB_CONTEXT to be added to the xfer list
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void usb_hif_enqueue_pending_transfer(HIF_USB_PIPE *pipe,
|
||||
HIF_URB_CONTEXT *urb_context)
|
||||
void usb_hif_enqueue_pending_transfer(struct HIF_USB_PIPE *pipe,
|
||||
struct HIF_URB_CONTEXT *urb_context)
|
||||
{
|
||||
qdf_spin_lock_irqsave(&pipe->device->cs_lock);
|
||||
dl_list_insert_tail(&pipe->urb_pending_list, &urb_context->link);
|
||||
|
|
@ -127,12 +129,12 @@ void usb_hif_enqueue_pending_transfer(HIF_USB_PIPE *pipe,
|
|||
|
||||
/**
|
||||
* usb_hif_remove_pending_transfer() - remove urb from its own list
|
||||
* @urb_context: pointer to HIF_URB_CONTEXT to be removed
|
||||
* @urb_context: pointer to struct HIF_URB_CONTEXT to be removed
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void
|
||||
usb_hif_remove_pending_transfer(HIF_URB_CONTEXT *urb_context)
|
||||
usb_hif_remove_pending_transfer(struct HIF_URB_CONTEXT *urb_context)
|
||||
{
|
||||
qdf_spin_lock_irqsave(&urb_context->pipe->device->cs_lock);
|
||||
dl_list_remove(&urb_context->link);
|
||||
|
|
@ -141,17 +143,17 @@ usb_hif_remove_pending_transfer(HIF_URB_CONTEXT *urb_context)
|
|||
|
||||
/**
|
||||
* usb_hif_alloc_pipe_resources() - allocate urb_cnt urbs to a HIF pipe
|
||||
* @pipe: pointer to HIF_USB_PIPE to which resources will be allocated
|
||||
* @pipe: pointer to struct HIF_USB_PIPE to which resources will be allocated
|
||||
* @urb_cnt: number of urbs to be added to the HIF pipe
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS if success else an appropriate QDF_STATUS error
|
||||
*/
|
||||
static QDF_STATUS usb_hif_alloc_pipe_resources
|
||||
(HIF_USB_PIPE *pipe, int urb_cnt)
|
||||
(struct HIF_USB_PIPE *pipe, int urb_cnt)
|
||||
{
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
int i;
|
||||
HIF_URB_CONTEXT *urb_context;
|
||||
struct HIF_URB_CONTEXT *urb_context;
|
||||
|
||||
DL_LIST_INIT(&pipe->urb_list_head);
|
||||
DL_LIST_INIT(&pipe->urb_pending_list);
|
||||
|
|
@ -191,13 +193,13 @@ static QDF_STATUS usb_hif_alloc_pipe_resources
|
|||
|
||||
/**
|
||||
* usb_hif_free_pipe_resources() - free urb resources allocated to a HIF pipe
|
||||
* @pipe: pointer to HIF_USB_PIPE
|
||||
* @pipe: pointer to struct HIF_USB_PIPE
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static void usb_hif_free_pipe_resources(HIF_USB_PIPE *pipe)
|
||||
static void usb_hif_free_pipe_resources(struct HIF_USB_PIPE *pipe)
|
||||
{
|
||||
HIF_URB_CONTEXT *urb_context;
|
||||
struct HIF_URB_CONTEXT *urb_context;
|
||||
|
||||
if (NULL == pipe->device) {
|
||||
/* nothing allocated for this pipe */
|
||||
|
|
@ -304,7 +306,7 @@ QDF_STATUS usb_hif_setup_pipe_resources(HIF_DEVICE_USB *device)
|
|||
int i;
|
||||
int urbcount;
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
HIF_USB_PIPE *pipe;
|
||||
struct HIF_USB_PIPE *pipe;
|
||||
uint8_t pipe_num;
|
||||
|
||||
/* walk decriptors and setup pipes */
|
||||
|
|
@ -312,7 +314,7 @@ QDF_STATUS usb_hif_setup_pipe_resources(HIF_DEVICE_USB *device)
|
|||
endpoint = &iface_desc->endpoint[i].desc;
|
||||
|
||||
if (IS_BULK_EP(endpoint->bmAttributes)) {
|
||||
HIF_DBG("%s Bulk Ep:0x%2.2X " "maxpktsz:%d",
|
||||
HIF_DBG("%s Bulk Ep:0x%2.2X maxpktsz:%d",
|
||||
IS_DIR_IN(endpoint->bEndpointAddress) ?
|
||||
"RX" : "TX",
|
||||
endpoint->bEndpointAddress,
|
||||
|
|
@ -417,13 +419,13 @@ void usb_hif_cleanup_pipe_resources(HIF_DEVICE_USB *device)
|
|||
|
||||
/**
|
||||
* usb_hif_flush_pending_transfers() - kill pending urbs for a pipe
|
||||
* @pipe: pointer to HIF_USB_PIPE structure
|
||||
* @pipe: pointer to struct HIF_USB_PIPE structure
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static void usb_hif_flush_pending_transfers(HIF_USB_PIPE *pipe)
|
||||
static void usb_hif_flush_pending_transfers(struct HIF_USB_PIPE *pipe)
|
||||
{
|
||||
HIF_URB_CONTEXT *urb_context;
|
||||
struct HIF_URB_CONTEXT *urb_context;
|
||||
|
||||
HIF_TRACE("+%s pipe : %d", __func__, pipe->logical_pipe_num);
|
||||
|
||||
|
|
@ -454,7 +456,8 @@ static void usb_hif_flush_pending_transfers(HIF_USB_PIPE *pipe)
|
|||
void usb_hif_flush_all(HIF_DEVICE_USB *device)
|
||||
{
|
||||
int i;
|
||||
HIF_USB_PIPE *pipe;
|
||||
struct HIF_USB_PIPE *pipe;
|
||||
|
||||
HIF_TRACE("+%s", __func__);
|
||||
|
||||
for (i = 0; i < HIF_USB_PIPE_MAX; i++) {
|
||||
|
|
@ -471,11 +474,11 @@ void usb_hif_flush_all(HIF_DEVICE_USB *device)
|
|||
|
||||
/**
|
||||
* usb_hif_cleanup_recv_urb() - cleanup recv urb
|
||||
* @urb_context: pointer to HIF_URB_CONTEXT structure
|
||||
* @urb_context: pointer to struct HIF_URB_CONTEXT structure
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static void usb_hif_cleanup_recv_urb(HIF_URB_CONTEXT *urb_context)
|
||||
static void usb_hif_cleanup_recv_urb(struct HIF_URB_CONTEXT *urb_context)
|
||||
{
|
||||
HIF_TRACE("+%s", __func__);
|
||||
|
||||
|
|
@ -490,11 +493,11 @@ static void usb_hif_cleanup_recv_urb(HIF_URB_CONTEXT *urb_context)
|
|||
|
||||
/**
|
||||
* usb_hif_cleanup_transmit_urb() - cleanup transmit urb
|
||||
* @urb_context: pointer to HIF_URB_CONTEXT structure
|
||||
* @urb_context: pointer to struct HIF_URB_CONTEXT structure
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void usb_hif_cleanup_transmit_urb(HIF_URB_CONTEXT *urb_context)
|
||||
void usb_hif_cleanup_transmit_urb(struct HIF_URB_CONTEXT *urb_context)
|
||||
{
|
||||
usb_hif_free_urb_to_pipe(urb_context->pipe, urb_context);
|
||||
}
|
||||
|
|
@ -508,10 +511,11 @@ void usb_hif_cleanup_transmit_urb(HIF_URB_CONTEXT *urb_context)
|
|||
static void usb_hif_usb_recv_prestart_complete
|
||||
(struct urb *urb)
|
||||
{
|
||||
HIF_URB_CONTEXT *urb_context = (HIF_URB_CONTEXT *) urb->context;
|
||||
struct HIF_URB_CONTEXT *urb_context =
|
||||
(struct HIF_URB_CONTEXT *) urb->context;
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
qdf_nbuf_t buf = NULL;
|
||||
HIF_USB_PIPE *pipe = urb_context->pipe;
|
||||
struct HIF_USB_PIPE *pipe = urb_context->pipe;
|
||||
|
||||
HIF_DBG("+%s: recv pipe: %d, stat:%d,len:%d urb:0x%p",
|
||||
__func__,
|
||||
|
|
@ -521,7 +525,6 @@ static void usb_hif_usb_recv_prestart_complete
|
|||
|
||||
/* this urb is not pending anymore */
|
||||
usb_hif_remove_pending_transfer(urb_context);
|
||||
|
||||
do {
|
||||
if (urb->status != 0) {
|
||||
status = A_ECOMM;
|
||||
|
|
@ -545,10 +548,8 @@ static void usb_hif_usb_recv_prestart_complete
|
|||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (urb->actual_length == 0)
|
||||
break;
|
||||
|
||||
buf = urb_context->buf;
|
||||
/* we are going to pass it up */
|
||||
urb_context->buf = NULL;
|
||||
|
|
@ -557,6 +558,7 @@ static void usb_hif_usb_recv_prestart_complete
|
|||
if (AR_DEBUG_LVL_CHECK(USB_HIF_DEBUG_DUMP_DATA)) {
|
||||
uint8_t *data;
|
||||
uint32_t len;
|
||||
|
||||
qdf_nbuf_peek_header(buf, &data, &len);
|
||||
debug_dump_bytes(data, len, "hif recv data");
|
||||
}
|
||||
|
|
@ -583,10 +585,11 @@ static void usb_hif_usb_recv_prestart_complete
|
|||
*/
|
||||
static void usb_hif_usb_recv_complete(struct urb *urb)
|
||||
{
|
||||
HIF_URB_CONTEXT *urb_context = (HIF_URB_CONTEXT *) urb->context;
|
||||
struct HIF_URB_CONTEXT *urb_context =
|
||||
(struct HIF_URB_CONTEXT *) urb->context;
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
qdf_nbuf_t buf = NULL;
|
||||
HIF_USB_PIPE *pipe = urb_context->pipe;
|
||||
struct HIF_USB_PIPE *pipe = urb_context->pipe;
|
||||
struct hif_usb_softc *sc = HIF_GET_USB_SOFTC(pipe->device);
|
||||
|
||||
HIF_DBG("+%s: recv pipe: %d, stat:%d,len:%d urb:0x%p",
|
||||
|
|
@ -628,10 +631,8 @@ static void usb_hif_usb_recv_complete(struct urb *urb)
|
|||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (urb->actual_length == 0)
|
||||
break;
|
||||
|
||||
buf = urb_context->buf;
|
||||
/* we are going to pass it up */
|
||||
urb_context->buf = NULL;
|
||||
|
|
@ -639,10 +640,10 @@ static void usb_hif_usb_recv_complete(struct urb *urb)
|
|||
if (AR_DEBUG_LVL_CHECK(USB_HIF_DEBUG_DUMP_DATA)) {
|
||||
uint8_t *data;
|
||||
uint32_t len;
|
||||
|
||||
qdf_nbuf_peek_header(buf, &data, &len);
|
||||
debug_dump_bytes(data, len, "hif recv data");
|
||||
}
|
||||
|
||||
/* note: queue implements a lock */
|
||||
skb_queue_tail(&pipe->io_comp_queue, buf);
|
||||
HIF_USB_SCHEDULE_WORK(pipe);
|
||||
|
|
@ -651,7 +652,7 @@ static void usb_hif_usb_recv_complete(struct urb *urb)
|
|||
usb_hif_cleanup_recv_urb(urb_context);
|
||||
|
||||
/* Only re-submit URB when STATUS is success and HIF is not at the
|
||||
suspend state.
|
||||
* suspend state.
|
||||
*/
|
||||
if (QDF_IS_STATUS_SUCCESS(status) && !sc->suspend_state) {
|
||||
if (pipe->urb_cnt >= pipe->urb_cnt_thresh) {
|
||||
|
|
@ -678,10 +679,11 @@ static void usb_hif_usb_recv_complete(struct urb *urb)
|
|||
*/
|
||||
static void usb_hif_usb_recv_bundle_complete(struct urb *urb)
|
||||
{
|
||||
HIF_URB_CONTEXT *urb_context = (HIF_URB_CONTEXT *) urb->context;
|
||||
struct HIF_URB_CONTEXT *urb_context =
|
||||
(struct HIF_URB_CONTEXT *) urb->context;
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
qdf_nbuf_t buf = NULL;
|
||||
HIF_USB_PIPE *pipe = urb_context->pipe;
|
||||
struct HIF_USB_PIPE *pipe = urb_context->pipe;
|
||||
uint8_t *netdata, *netdata_new;
|
||||
uint32_t netlen, netlen_new;
|
||||
HTC_FRAME_HDR *HtcHdr;
|
||||
|
|
@ -721,15 +723,13 @@ static void usb_hif_usb_recv_bundle_complete(struct urb *urb)
|
|||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (urb->actual_length == 0)
|
||||
break;
|
||||
|
||||
buf = urb_context->buf;
|
||||
|
||||
if (AR_DEBUG_LVL_CHECK(USB_HIF_DEBUG_DUMP_DATA)) {
|
||||
uint8_t *data;
|
||||
uint32_t len;
|
||||
|
||||
qdf_nbuf_peek_header(buf, &data, &len);
|
||||
debug_dump_bytes(data, len, "hif recv data");
|
||||
}
|
||||
|
|
@ -813,11 +813,10 @@ static void usb_hif_usb_recv_bundle_complete(struct urb *urb)
|
|||
*
|
||||
* Return: none
|
||||
*/
|
||||
static void usb_hif_post_recv_prestart_transfers
|
||||
(HIF_USB_PIPE *recv_pipe,
|
||||
static void usb_hif_post_recv_prestart_transfers(struct HIF_USB_PIPE *recv_pipe,
|
||||
int prestart_urb)
|
||||
{
|
||||
HIF_URB_CONTEXT *urb_context;
|
||||
struct HIF_URB_CONTEXT *urb_context;
|
||||
uint8_t *data;
|
||||
uint32_t len;
|
||||
struct urb *urb;
|
||||
|
|
@ -865,9 +864,8 @@ static void usb_hif_post_recv_prestart_transfers
|
|||
usb_hif_remove_pending_transfer(urb_context);
|
||||
usb_hif_cleanup_recv_urb(urb_context);
|
||||
break;
|
||||
} else
|
||||
recv_pipe->urb_prestart_cnt++;
|
||||
|
||||
}
|
||||
recv_pipe->urb_prestart_cnt++;
|
||||
}
|
||||
|
||||
HIF_TRACE("-%s", __func__);
|
||||
|
|
@ -880,10 +878,10 @@ static void usb_hif_post_recv_prestart_transfers
|
|||
*
|
||||
* Return: none
|
||||
*/
|
||||
static void usb_hif_post_recv_transfers(HIF_USB_PIPE *recv_pipe,
|
||||
static void usb_hif_post_recv_transfers(struct HIF_USB_PIPE *recv_pipe,
|
||||
int buffer_length)
|
||||
{
|
||||
HIF_URB_CONTEXT *urb_context;
|
||||
struct HIF_URB_CONTEXT *urb_context;
|
||||
uint8_t *data;
|
||||
uint32_t len;
|
||||
struct urb *urb;
|
||||
|
|
@ -945,11 +943,10 @@ static void usb_hif_post_recv_transfers(HIF_USB_PIPE *recv_pipe,
|
|||
*
|
||||
* Return: none
|
||||
*/
|
||||
static void usb_hif_post_recv_bundle_transfers
|
||||
(HIF_USB_PIPE *recv_pipe,
|
||||
static void usb_hif_post_recv_bundle_transfers(struct HIF_USB_PIPE *recv_pipe,
|
||||
int buffer_length)
|
||||
{
|
||||
HIF_URB_CONTEXT *urb_context;
|
||||
struct HIF_URB_CONTEXT *urb_context;
|
||||
uint8_t *data;
|
||||
uint32_t len;
|
||||
struct urb *urb;
|
||||
|
|
@ -1016,7 +1013,7 @@ static void usb_hif_post_recv_bundle_transfers
|
|||
*/
|
||||
void usb_hif_prestart_recv_pipes(HIF_DEVICE_USB *device)
|
||||
{
|
||||
HIF_USB_PIPE *pipe = &device->pipes[HIF_RX_DATA_PIPE];
|
||||
struct HIF_USB_PIPE *pipe = &device->pipes[HIF_RX_DATA_PIPE];
|
||||
|
||||
/*
|
||||
* USB driver learn to support bundle or not until the firmware
|
||||
|
|
@ -1037,7 +1034,7 @@ void usb_hif_prestart_recv_pipes(HIF_DEVICE_USB *device)
|
|||
*/
|
||||
void usb_hif_start_recv_pipes(HIF_DEVICE_USB *device)
|
||||
{
|
||||
HIF_USB_PIPE *pipe;
|
||||
struct HIF_USB_PIPE *pipe;
|
||||
uint32_t buf_len;
|
||||
|
||||
HIF_ENTER();
|
||||
|
|
@ -1184,11 +1181,11 @@ QDF_STATUS usb_hif_submit_ctrl_in(HIF_DEVICE_USB *device,
|
|||
|
||||
/**
|
||||
* usb_hif_io_complete() - transmit call back for tx urb
|
||||
* @pipe: pointer to HIF_USB_PIPE
|
||||
* @pipe: pointer to struct HIF_USB_PIPE
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void usb_hif_io_complete(HIF_USB_PIPE *pipe)
|
||||
void usb_hif_io_complete(struct HIF_USB_PIPE *pipe)
|
||||
{
|
||||
qdf_nbuf_t buf;
|
||||
HIF_DEVICE_USB *device;
|
||||
|
|
@ -1196,13 +1193,12 @@ void usb_hif_io_complete(HIF_USB_PIPE *pipe)
|
|||
uint8_t *data;
|
||||
uint32_t len;
|
||||
struct hif_usb_softc *sc = HIF_GET_USB_SOFTC(pipe->device);
|
||||
|
||||
device = pipe->device;
|
||||
|
||||
HIF_ENTER();
|
||||
|
||||
while ((buf = skb_dequeue(&pipe->io_comp_queue))) {
|
||||
if (pipe->flags & HIF_USB_PIPE_FLAG_TX) {
|
||||
HIF_DBG("+athusb xmit callback " "buf:0x%p", buf);
|
||||
HIF_DBG("+athusb xmit callback buf:0x%p", buf);
|
||||
HtcHdr = (HTC_FRAME_HDR *)
|
||||
qdf_nbuf_get_frag_vaddr(buf, 0);
|
||||
|
||||
|
|
@ -1217,7 +1213,7 @@ void usb_hif_io_complete(HIF_USB_PIPE *pipe)
|
|||
#endif
|
||||
HIF_DBG("-athusb xmit callback");
|
||||
} else {
|
||||
HIF_DBG("+athusb recv callback buf:" "0x%p", buf);
|
||||
HIF_DBG("+athusb recv callback buf: 0x%p", buf);
|
||||
qdf_nbuf_peek_header(buf, &data, &len);
|
||||
|
||||
if (IS_FW_CRASH_DUMP(*((uint32_t *) data))) {
|
||||
|
|
@ -1246,9 +1242,10 @@ void usb_hif_io_complete(HIF_USB_PIPE *pipe)
|
|||
*
|
||||
* Return: none
|
||||
*/
|
||||
void usb_hif_io_comp_tasklet(long unsigned int context)
|
||||
void usb_hif_io_comp_tasklet(unsigned long context)
|
||||
{
|
||||
HIF_USB_PIPE *pipe = (HIF_USB_PIPE *) context;
|
||||
struct HIF_USB_PIPE *pipe = (struct HIF_USB_PIPE *) context;
|
||||
|
||||
usb_hif_io_complete(pipe);
|
||||
}
|
||||
|
||||
|
|
@ -1261,7 +1258,9 @@ void usb_hif_io_comp_tasklet(long unsigned int context)
|
|||
*/
|
||||
void usb_hif_io_comp_work(struct work_struct *work)
|
||||
{
|
||||
HIF_USB_PIPE *pipe = container_of(work, HIF_USB_PIPE, io_complete_work);
|
||||
struct HIF_USB_PIPE *pipe = container_of(work, struct HIF_USB_PIPE,
|
||||
io_complete_work);
|
||||
|
||||
usb_hif_io_complete(pipe);
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue