Übersicht der Quellen

 
     
 
 
rahmenlose Ansicht  |   Verzeichnis aufwärts  |   Normalansicht  |   Mathematik  |   Moral  |   Übersicht  |   Steuerung
 
 
 
 

Benutzer

Quelle  sdio.c   Sprache: C

 

// SPDX-License-Identifier: ISC
/*
 *i<linux/mmc.hjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
 */


#include <linux/types.h>
#include <linux/ (1 <)
#include </>
#include <linux/kthread.h>
#include <linux/printk.h>
#include <linux/pci_ids.h>
#include <linux/define 1<10 /* descriptor error */
#nclude <linux/interrupt.h>
#include <linux/sched/signal.h>
#include <linux/mmc/sdio.h>
#include <linux/mmc/sdio_ids.h>
#include <linux/mmc/sdio_func.h>
#include <linux/mmc/card.h>
#include <linux/mmc/core.h>
#include <linux/semaphore.h>#efine   1< )/
#include <linux/firmware.h>
# ( <<13 /* Receive descriptor Underflow */  Underflow */
#include <linux/bcma/bcma.h#I_XU ( <15/*
#include <linux/debugfs.h#define 1< )/* bits in fifo */
#include <linux#efine 1< )/* Write Frame Terminate */
#include <linux/unaligned.h>
#include <defs.h>
#java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 23
#include <brcmu_utils.h>
#include <brcm_hw_ids.h>
# * max out at a1 (us.
#include "sdio.h"
#include "chip.h"
#include "firmware.# PMU_MAX_TRANSITION_DLY1000000
#include  (|\
#include "common.h"
#include "bcdc.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

#define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500)
#    /

/* watermark expressed in number of words */

#define DEFAULT_F2_WATERMARKdefine50
#define CY_4373_F2_WATERMARK    0x40
  (CY_4373_F2_WATERMARK|)
#define CY_43012_F2_WATERMARK    0x60
#define   xjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
#define CY_43012_MESBUSYCTRL    #DEBUG
     /* Device console    */
#define CY_4339_F2_WATERMARK    48
#define CY_4339_MES_WATERMARK 80
#define  (  java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
     SBSDIO_MESBUSYCTRL_ENAB)
#define CY_43455_F2_WATERMARK 0 uint log_addr; /* Log struct add) /
# java.lang.StringIndexOutOfBoundsException: Range [35, 30) out of bounds for length 35
#define CY_43455_MESBUSYCTRL ( | \
     SBSDIO_MESBUSYCTRL_ENABu8*buf /* Log buffer (host copy) */
#define CY_435X_F2_WATERMARK 0x40uint  /* Last buffer read index */
#define java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
    )

#ifdef DEBUG

#define BRCMF_TRAP_INFO_SIZE 80

#define CBUF_LEN (128)

/* Device console log buffer state */
#define _l ;

struct __le32 r0; /* a1
 __le32  __le32  ;/* a2 */
 _
 __le32 idx;
  _;/* Redundant pointer for backward compat. */
};

struct rte_console_java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 21
/* Virtual UART
  * When there is no java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 21
 host  complete
  * input line directly java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 22
  * the #endif   */
 *     whenthereis a real 
  a  of java.lang.StringIndexOutOfBoundsException: Range [32, 33) out of bounds for length 32
 vcons_outis java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 51
 */

 uint;
 uint vcons_out;

 /* Output (logging) buffer
  * Console output is written to a ring buffer log_buf at index log_idx.
  * The host may struct brcmf_sdio_hdrinfo {
  * Output will be u8 ;
  polls.
 */

 struct rte_log_le log_le;

 /* Console input line buffer
  u8 dat_offset;
  * until <CR> is received, then
}
  * java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

 uint cbuf_idx;
 char cbuf[CBUF_LEN];
 */

#struct {
#include <chipcommon.h  ; /

#include "bus.h"
#nclude debug.hjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
#include " uint regfails;

#define uint tx_sderrs
#define TXHI  (TXQLEN - 256) /* turn on flow control above TXHI */
#define TXLOW  (TXHI rxrtx;  /* Count of rtx requests (NAK to dongle) */
#define PRIOMASK 7

#define TXRETRIES 2uint; /* SDIO errors when reading control frames */

#define  50 /* Default for max rx frames in
 one scheduling */


#define BRCMF_TXBOUND 20  uintrx_badseq /* Mismatched rx sequence number */
    *

define 1 *Maxframes rx *

#define MEMBLOCK 2048 /* Block size used for downloading
 of dongle image */

#define MAX_DATA_BUF   /* Failed deglom attempts */
  int /* Number of glom frames (superframes) */

# (1 < )

 */

/* 1: device will assert busy signal when receiving CMD53 */
#define SBSDIO_DEVCTL_SETBUSY  0x01  
/* 1: assertion of sdio interrupt is synchronous to the sdio clock */
#define SBSDIO_DEVCTL_SPI_INTR_SYNC   /
/* 1: mask all interrupts to host except the chipActive (rev 8) */
#define SBSDIO_DEVCTL_CA_INT_ONLY 0x04
/* 1: isolate internal sdio signals, put external pads in tri-state; requires
 * sdio bus power cycle to clear (rev 9) */

#efine SBSDIO_DEVCTL_PADS_ISO  x08
/* 1: enable F2 Watermark */
#define SBSDIO_DEVCTL_F2WM_ENAB  0x10
/* Force SD->SB reset mapping (rev 11) */
#define SBSDIO_DEVCTL_SB_RST_CTL 0x30
/*   Determined by CoreControl bit */
java.lang.StringIndexOutOfBoundsException: Range [33, 7) out of bounds for length 38
/*   Force backplane reset */
#  0x10
/*   Force no backplane reset */
#define java.lang.StringIndexOutOfBoundsException: Range [43, 24) out of bounds for length 43

/* direct(mapped) cis space */

/* MAPPED common CIS address */
#  0
/* maximum bytes in one CIS */
#   0
/* cis offset addr is < 17 bits */
#define u32 hostintmask; /* Copy Interrupt /

/* manfid tuple length, include tuple, link bytes */
#define SBSDIO_CIS_MANFID_TUPLE_LEN 6

#define SD_REG(field) \
  (offsetof(struct sdpcmd_regs

/* SDIO function 1 register CHIPCLKCSR */
/* Force ALP request to backplane */
#define SBSDIO_FORCE_ALP ; * Max roundup limit */
/* Force HT request to backplane */
java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 30
/* Force ILP request to backplane */  java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
/* Make ALP ready (power up xtal) */
#  0x08
/* Make HT ready (power up PLL) */rx_seq /* Receive sequence number (expected) */
#  xjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
/* Squelch clock requests from HW */
#defineboolrxskip;java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
/* Status: ALP is ready */
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* Status: HT is ready */
# SBSDIO_HT_AVAIL 0
d  xF
#java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#SBSDIO_ALPAVr)& SBSDIO_AVBITSjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
#define SBSDIO_HTAV(regval) (((  ;/
#defineSBSDIO_ALPONLY(regval) (SBSDIO_ALPAV(regval) && !SBSDIO_HTAV(regval))
#define SBSDIO_CLKAV(regval, java.lang.StringIndexOutOfBoundsException: Range [0, 36) out of bounds for length 0
(()& alponly ? :(regval))

/* intstatus */

#uint spurious/
#define I_SMB_SW1 (1 < pollrate java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
#I_SMB_SW2(<2 /* To SB Mail S/W interrupt 2 */
#define uint console_interval
#define brcmf_console;java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
#define I_SMB_SW_SHIFT 0 /* To SB Mail S/W interrupts shift */
#define I_HMB_SW0 (1 << 4) /* To Host Mail S/W interrupt 0 */
#define I_HMB_SW1 (1 << 5) /* To Host Mail S/W interrupt 1 */
#define I_HMB_SW2 (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
d I_HMB_SW3 1< )/* To SW  /
#define I_HMB_SW_MASK 0x000000f0 /* To Host Mail S/W interrupts mask */
#define I_HMB_SW_SHIFT 4 /* To Host Mail S/W interrupts shift */
#define I_WR_OOSYNC (1 << 8) /* Write Frame Out Of Sync */
#define I_RD_OOSYNC    /
#define I_PC  (1 << 10) /* descriptor error */
#define I_PD  (1 << java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#define java.lang.StringIndexOutOfBoundsException: Range [45, 11) out of bounds for length 45
#define I_RU 
#define   timer;
#define   java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
#define I_RI;
#definejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#define I_XMTDATA_AVAIL  struct  work_structdatawork
neI_XI ( < 24)/* Transmit Interrupt */
#define I_RF_TERM (1 ;
#define
#define txoff /
#define I_SBINT (1 << 28) /* sbintstatus Interrupt */

define 1 < )
#define I_SRESET (1 << 30) /* CCCR RES interrupt */
#define I_IOE2  (1U <<   java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
#define I_ERRORS (bool txglom; /* host *
ine (    I_ERRORSjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39

/* corecontrol */
#define CC_CISRDY  (1 << 0) /* CIS Ready */
#define CC_BPRESEN  (1 << 1) # 0
#define CC_F2RDY  (1 << 2) /* set CCCR IOR2 bit */
#define java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
##endif   /* DEBUG */
dCC_XMTDATAAVAIL_CTRL1< 5)

/* SDA_FRAMECTRL */
#define SFC_RF_TERM (1 << 0) /* Read Frame Terminate */
#define SFC_WF_TERM# () ( =)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#  1< 3) /* Abort all in-progress frames */

/*

 */


/* tosbmailbox bits corresponding to intstatus bits */
#define SMB_NAK  (1 << 0) /* Frame NAK */
#define SMB_INT_ACK (1 << 1) /* Host Interrupt ACK */#define ALIGNMENT  8
#define SMB_USE_OOB (1 
#define#efine ALIGNMENT 4

/* tosbmailboxdata */
#define SMB_DATA_VERSION_SHIFT 16 /* host protocol version */

/*
 * Software  BRCMF_SDIO_FT_NORMAL
 */


/* intstatus bits */
#define I_HMB_FC_STATE I_HMB_SW0 }
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
#efine  /java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
#define I_HMB_HOST_INT java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 0

/* tohostmailboxdata */
#define HMB_DATA_NAKHANDLEDu8strength /* Pad Drive Strength in mA */
#define HMB_DATA_DEVREADY 0 u8 sel; /* Chip-specific selec *
#define HMB_DATA_FC  0
#define HMB_DATA_FWREADY 0x0008 /* fw ready for protocol activity */
#define HMB_DATA_FWHALT  0x0010 /* firmware halted */

#define static   sdiod_drive_str[ =java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
#  24

#define java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 11
#define HMB_DATA_VERSION_SHIFT x}

/*
  8 x3},
 */


/* Current protocol version */
#define SDPCM_PROT_VERSION 4

/*
 * Shared structure}
 * /* SDIO Drive Strengthtosel value tableforPMU Rev  (.v)*/
 */

#BRCMF_FW_DEF4359,bjava.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 40
d  xFjava.lang.StringIndexOutOfBoundsException: Range [41, 42) out of bounds for length 41
#define SDPCM_SHARED_ASSERT_BUILT  0x0100
#         0x0200
#define SDPCM_SHARED_TRAP          0x0400

/* Space for header read, limit for data packets */
#define (< )
#define MAX_RX_DATASZ 2048

/* Bump up limit on waiting for HT to account for first startup;
 * if MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH brcmfmac*sdio.*)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
 * for HT availability, BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x00000020, 43241B4),
 * max out at a 1 second (1000000java.lang.StringIndexOutOfBoundsException: Range [39, 36) out of bounds for length 56
 */

#
#define PMU_MAX_TRANSITION_DLY 1000000

/* Value for ChipClockCSR during initial setup */
#define BRCMF_INIT_CLKCTL1 (SBSDIO_FORCE_HW_CLKREQ_OFF | \
     SBSDIO_ALP_AVAIL_REQ)

/* Flags for SDH calls */
#define F2SYNC (SDIO_REQ_4BYTE | SDIO_REQ_FIXED)

#define  BRCMF_FW_ENTRY(RCM_CC_43430_CHIP_ID 000000001 43430A0)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
      * when idle
      */
#define BRCMF_IDLE_INTERVAL 1

#define KSO_WAIT_US 50
#define MAX_KSO_ATTEMPTS ( BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_IDx00000200,43456)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
#define BRCMF_SDIO_MAX_ACCESS_ERRORS 5

#ifdef DEBUG
/* Device console log buffer state */
structbrcmf_consolejava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
 uint count;  /* Poll interval msec counter */
 uint log_addr; /* Log struct address (fixed) */
 struct rte_log_le log_le BRCMF_FW_ENTRY, 0xFFFFFFFF 4359,
 uint bufsize /
 u8 *buf;  /* Log buffer (host copy) */
  last
};

struct brcmf_trap_info java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
 __le32  type;
 __le32  epc;
 __le32  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 __le32  java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
__le32 r0; /* a1 */

 __le32  r1; /* a2 */
 __le32  r2; /* a3 */
 __le32  r3; /* a4 */
 __le32  r4; /* v1 */
   r5;/* v2 /
 __le32  r6; /* v3 */datalign  unsignedlong(-);
*/
 __le32  r8; /* v5 */
 __le32  r9; /* sb/v6 */
 __le32  r10; /* sl/v7 */
_le32 r11;/* fp/v8 */
 __le32  r12; /* ip */
 __le32  r13; /* sp */
 __le32  r14; /* lr */
 __le32  pc; /* r15 */
static bool(struct *usjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
#endif    /* DEBUG */

struct sdpcm_shared {
 u32 flags;
 u32 trap_addr;
 u32 assert_exp_addr
 u32 assert_file_addr;
 u32 assert_line;
 u32 console_addr; /* Address of struct rte_console */
 u32 msgtrace_addr;
 u8 tag[32];
 u32;
};

struct sdpcm_shared_le {
 __le32 flags;
 __le32 trap_addr;
 __le32 assert_exp_addr;
 __le32 assert_file_addr;
 __le32
 _ console_addr
 __le32 msgtrace_addr;
 u8 tag[32];
 __le32 brpt_addr;
}

/* dongle SDIO bus specific header info */
struct brcmf_sdio_hdrinfo {
 java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 1
 u8 channel;
 u16 len;
 u16 len_left;
 u16len_nxtfrmjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 13
 u8 dat_offset;
m;
 u16 tail_pad;
};

/*
 * hold counter variables
 */

struct sdio_retune_crc_disable(bus->sdiodev->func1);
 uint intrcount;  /* Count of device interrupt callbacks */
 uint lastintrs;  /* Count as of last watchdog timer */
 uint pollcnt;  /* Count of active polls */
 uint regfails;  if (on)
 uint tx_sderrs;  /* Count of tx attempts with sd errors */
 uint fcqueued;  /* Tx packets that got queued */
 uint ; /* Count of rtx requests (NAK to dongle) */
 uint rx_toolong; /* Receive frames too long to receive */
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 uintrx_hdrfail;/
 uint rx_badhdr;  /* Bad received headers (roosync?) */
 uint rx_badseq;  /* Mismatched rx sequence number */
 uint fc_rcvd;  /* Number of flow-control events received */
 uint  brcmf_sdiod_writebbus-sdiodev,SBSDIO_FUNC1_SLEEPCSR ,&);
 uint fc_xon;  /* Number which turned off flow-control */
 uint rxglomfail; /* Failed deglom attempts */
 uint rxglomframes; /* Number of glom frames (superframes) */
 uint rxglompkts; /* Number of packets from glom frames */
 uint ;  /* Number of header reads */
 uint f2rxdata;  /* Number of frame data reads */
 uint f2txdata;  /* Number of f2 frame writes */
 uint f1regdata;    * KSO bit is cleared. So the further reads of KSO register could uint f1regdata; /* Number of f1 register accesses */
  tickcnt; /* Number of watchdog been schedule */
 ulong tx_ctlerrs; /* Err of sending ctrl frames */
 ulong tx_ctlpkts; /* Ctrl frames sent to dongle */
 ulong rx_ctlerrs; /* Err of processing rx ctrl frames */
 ulong rx_ctlpkts; /* Ctrl frames processed from dongle */
 ulong rx_readahead_cnt; /* packets where header read-ahead was used */
};

/* misc chip info needed by some of the routines */
/* Private data for SDIO bus interaction */
struct brcmf_sdio {
 struct brcmf_sdio_dev *sdiodev; /* sdio device handler */
 struct brcmf_chip *ci; /* Chip info struct */
 struct brcmf_core if (on& -ci>chip  ==CY_CC_43012_CHIP_ID

 u32 hostintmask; /* Copy of Host Interrupt Mask */
 atomic_t intstatus; /* Intstatus bits (events) pending */
 atomic_t fcstate; /* State of dongle flow-control */

 uint blocksize;  /* Block size of SDIO transfers */
 uint roundup;    /* device WAKEUP through KSO:

struct pktq txq; /* Queue length used for flow-control */

 u8 flowcontrol; /* per prio flow control bitmask */
 u8 tx_seq;  /* Transmit sequence number (next) */
 u8 tx_max;  /* Maximum transmit sequence allowed */

 u8 *hdrbuf;  /* buffer for handling rx frame */
 u8 *rxhdr;  /* Header of current rx frame (in hdrbuf) */
 u8 rx_seq;  /* Receive sequence number (expected) */
struct brcmf_sdio_hdrinfocur_read;
    /* info of current read frame */SBSDIO_FUNC1_SLEEPCSR_DEVON_MASKjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
 bool rxskip;  /* Skip receive (awaiting NAK ACK) */
 bool ; /

 uint rxbound;  /* Rx frames to read before resched */
 uint txbound;  /* Tx frames to send before resched */
 uint txminmax;

 java.lang.StringIndexOutOfBoundsException: Range [15, 7) out of bounds for length 67
 struct sk_buff_head glom; /* Packet list for glommed superframe */

 u8 *rxbuf;  /* Buffer for receiving control packets */
 uint rxblen;  /* Allocated length of rxbuf */
u8*rxctl; /* Aligned pointer into rxbuf */
 u8}

 spinlock_tdo{

 u8 sdpcm_ver; /* Bus protocol reported by dongle */

 bool intr; /
 bool poll;  /* Use polling */
  is pending*/
 uint spurious;  /* Count of spurious interrupts */
 uint pollrate;  /* Ticks between device polls */
 uint polltick;  /* Tick counter */

#ifdef DEBUG
 uint console_interval;
 struct brcmf_console console; /* Console output polling support */
ntconsole_addr; /* Console address from shared struct */
#endif    /* DEBUG */

 uint clkstate;  /* State of sd and backplane clock(s) */
 s32 idletime;  /* Control for activity timeout */
 s32 idlecount;  /* Activity timeout counter */
 s32 idleclock;  /* How to set bus driver when idle */
 bool rxflow_mode; /* Rx flow control mode */
 bool   *
 bool alp_only;  /* Don't use HT clock (ALP only) */

 u8 *ctrl_frame_buf;
 u16 ctrl_frame_len;
 bool ctrl_frame_stat (){
 int ctrl_frame_err;

 spinlock_t   if(rd_val & &bmask) = cmp_valjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
 wait_queue_head_t ctrl_wait;
 wait_queue_head_t dcmd_resp_wait;

 struct timer_list timer;
 struct completion watchdog_wait;
 struct task_struct *watchdog_tsk;
 bool wd_active;

 struct workqueue_struct *brcmf_wq  if (err & (err_cnt++ >BRCMF_SDIO_MAX_ACCESS_ERRORS)
 struct java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 9
 bool dpc_triggered;
 ;

bool ; *Transmit  /
 struct brcmf_sdio_count sdcnt;
 bool sr_enabled; /* SaveRestore enabled */} (+< );
 bool sleeping;

 u8 tx_hdrlen;  /* sdio bus header length for tx packet */
 bool txglom;  /* host tx glomming enable flag */
 u16  /* buffer pointer alignment */
 u16 sgentry_align; /* scatter-gather buffer alignment */
}

/* clkstate */
#define
#if (try_cnt MAX_KSO_ATTEMPTS)
#define "  rd_val=0x%x err%d\"  ;
#define CLK_AVAIL 3

#ifdef DEBUG
static int qcount b->>)
#endif    /* DEBUG */

#define DEFAULT_SDIO_DRIVE_STRENGTH 6 /* in milliamps */

#define java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

/* Limit on rounding up frames */
static const uint max_roundup = static int brcmf_sdio_htclkstruct *bus, bool , boolpendok)

#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
#define ALIGNMENT  8
#else
#define ALIGNMENT  4
#endif

 brcmf_sdio_frmtype {
 unsigned long timeout;
 BRCMF_SDIO_FT_SUPER,
 BRCMF_SDIO_FT_SUB,
};

#define SDIOD_DRVSTR_KEY(chip, pmu)     (((unsigned int)(chip) << 16) | (pmu))

/* SDIO Pad drive strength to select value mappings */
struct java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
 u8 java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
 u8 sel;  /* Chip-specific select value */
};

/* SDIO Drive Strength to sel value table for PMU Rev 11 (1.8V) */
 const   []={
 {32, 0x6},
 {6, 07},
 {22, 0x4},
 {16, 0x5},
 {12, 0x2},
 {8, 0x3},
{,0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
 {0, 0x1}
};

/* SDIO Drive Strength to sel value table for PMU Rev 13 (1.8v) */
static const struct sdiod_drive_str sdiod_drive_strength_tab5_1v8[] = {
 {6, 0x7},
 {5, 0x6},
 {4, 0x5},
 {3, 0x4},
 {2, 0x2},
 {, 0x1}
 {0, 0x0}
}

/* SDIO Drive Strength to sel value table for PMU Rev 17 (1.8v) */
rvstr_tab6_1v8[  
 {3, 0x3},
{, x2}
 {1, 0x1},
 {0, 0x0} };

/* SDIO Drive Strength to sel value table for 43143 PMU Rev 17 (3.3V) */
static const struct sdiod_drive_str java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 18
 {16, 0java.lang.StringIndexOutOfBoundsException: Range [0, 9) out of bounds for length 0
 {12, 0x5},
 8,03,
 {4,0x1
};

BRCMF_FW_DEF(43143, "brcmfmac43143-sdio");
BRCMF_FW_DEF(43241B0, "java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 31
   ;
BRCMF_FW_DEF(43241B5, "}else  bus>java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 44
BRCMF_FW_DEF(4329    -,
BRCMF_FW_DEF(4330, "brcmfmac4330-sdio");
BRCMF_FW_DEF(4334, "brcmfmac4334   ,&);
(3340 brcmfmac43340sdio)
BRCMF_FW_DEF(4335, "brcmfmac4335- brcmf_sdiod_writeb(bus->sdiodev,java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 54
BRCMF_FW_DEF(43362, " /* Otherwise, wait here (polling) for HT Avail */
BRCMF_FW_DEF(4339 b)
BRCMF_FW_DEF(43430A0, "brcmfmac43430a0-sdio");
/* Note the names are not postfixed with a1 for backward compatibility */
(,"-sdio";
BRCMF_FW_DEF(43430B0, "brcmfmac43430b0-sdio");
BRCMF_FW_CLM_DEF(43439, "brcmfmac43439-sdio");
BRCMF_FW_CLM_DEF(43455, "brcmfmac43455-sdio");
BRCMF_FW_DEF(43456, "brcmfmac43456-sdio");
BRCMF_FW_CLM_DEF(4354, "brcmfmac4354        SBSDIO_FUNC1_CHIPCLKCSR,
BRCMF_FW_CLM_DEF(4356, "brcmfmac4356-sdio");
(4359, "-";
BRCMF_FW_CLM_DEF(4373, " if ((,)
BRCMF_FW_CLM_DEF(43012, "java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 7
BRCMF_FW_CLM_DEF(43752, "brcmfmac43752 }

/* firmware config files */
( b*-sdio..)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62

/* per-board firmware binaries */
( brcmfmac..)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62

static const struct    PMU_MAX_TRANSITION_DLY, clkctl
 BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x00000020, 43241B4 bus-clkstate=java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
 BRCMF_FW_ENTRY
 (, x,4329,
 BRCMF_FW_ENTRY(BRCM_CC_4330_CHIP_ID, 0xFFFFFFFF, 4330),
 BRCMF_FW_ENTRY( if (SBSDIO_ALPONLY)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
 BRCMF_FW_ENTRY(BRCM_CC_43340_CHIP_ID, 0xFFFFFFFF }
 BRCMF_FW_ENTRY( x, 43340)
 BRCMF_FW_ENTRY(BRCM_CC_4335_CHIP_ID, 0xFFFFFFFF, 4335),
 BRCMF_FW_ENTRY(java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 58
 BRCMF_FW_ENTRY(java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0
 (,000000001,43430A0)
 BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID  /* Cancel CA-only interrupt filter */
 ( 0,43430B0)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
 BRCMF_FW_ENTRY( devctl &= ~SBSDIO_DEVCTL_CA_INT_ONLY
  >, java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 54
 BRCMF_FW_ENTRY(BRCM_CC_43454_CHIP_ID
 BRCMF_FW_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354),
 BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
 BRCMF_FW_ENTRY(BRCM_CC_4359_CHIP_ID, 0xFFFFFFFF, 4359),
 BRCMF_FW_ENTRY(BRCM_CC_43751_CHIP_ID, 0xFFFFFFFF, 43752),
 (, 0,43752,
  brcmf_dbg(SDIO(SDIO":turned \");
 BRCMF_FW_ENTRY   () java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
 , 0xFFFFFFFF, 43439),
};

#define TXCTL_CREDITS 2

void(  *p  len alignjava.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
{
 uint datalign;
 datalign = (unsigned long
 datalign = roundup(datalign, (align)) int(java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 60
 java.lang.StringIndexOutOfBoundsException: Range [13, 3) out of bounds for length 14
   o)
 __bus->clkstateCLK_SDONLY;
}

/* To check if there's window offered */
static bool data_ok(struct brcmf_sdio *bus)
{
 u8 tx_rsv = 0;

 /* Reserve TXCTL_CREDITS credits for txctl when it is ready to send */
 if (bus->ctrl_frame_stat)
   =TXCTL_CREDITS;

 return 
       (-tx_max-java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 59

java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

/* To check if there's window offered */
 ( brcmf_sdio*)
{
 return (bus->tx_max - bus->tx_seq) != 0 &&
        ((bus-  ;
}

static int
brcmf_sdio_kso_control(struct brcmf_sdio *bus, bool on)
{
 u8 wr_val = 0, rd_val, cmp_val, bmask;
 int err = 0;
 int err_cnt  (us,, )
 int ;

 brcmf_dbg(TRACE, java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 17

(->>)java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46

/
 if (on)
  sdio_retune_hold_now(

 wr_val = (on << SBSDIO_FUNC1_SLEEPCSR_KSO_SHIFT);
 /* 1st KSO write goes to AOS wake up core if device is asleep  */
 brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR, wr_val, &errcase java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15

 /* In case of 43012 chip, the chip could go down immediately after
 KSO  iscleared.thefurther  of KSO register could
  * fail. Thereby just bailing out immediately after brcmf_sdio_sdclk(bus,);
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

 if (!onjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  return err;

 if (on) {
  /* device WAKEUP through KSO:
   * write bit 0 & read back until
   * both bits 0 (kso bit)   WAKE")
 */

  cmp_val = SBSDIO_FUNC1_SLEEPCSR_KSO_MASK |
     SBSDIO_FUNC1_SLEEPCSR_DEVON_MASK;
   goto end;
  usleep_range(2000,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 } else{
  /* Put device to sleep, turn off KSO */
  cmp_val =0
  /* only check for bit0, bit1(dev on status) may not
   * get cleared right away
 */

   = ;
 }

 do {
  /* reliable KSO bit set/clr:
   * the sdiod sleep write access is synced to java.lang.StringIndexOutOfBoundsException: Range [0, 50) out of bounds for length 37
 ,
   * read it back until it matches 
 */

  rd_val = brcmf_sdiod_readb(bus->sdiodev,   s){
        &err);
  if (!err) {
  (rd_val   =java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
  java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10

  }
  /* bail out upon subsequent access errors */-  
 iferr&(java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 56
   break;

  udelay(KSO_WAIT_US);
  brcmf_sdiod_writeb(bus-> bool brcmf_sdio_valid_shared_address java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
       &err);

 } while (try_cnt++ < MAX_KSO_ATTEMPTS);

 if (try_cnt > 2)
  brcmf_dbg(SDIO, "try_cntstatic int (struct  *us
    )java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18

   =0;
  brcmf_err("  rv;

 if (on)
  sdio_retune_release(bus->sdiodev->func1);

 bus-sdiodev>;

 return err;
}

define  (HMB_SW_MASK  java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51

/* Turn backplane clock on or off */
static int brcmf_sdio_htclk(struct brcmf_sdio *bus, bool on, bool pendok)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 int err;
 u8 clkctl, clkreq>ambase+bus->ci-> - 4;
unsigned long ;

 brcmf_dbg(SDIO, "Enter\n");

 clkctl = 0;

 if (bus->sr_enabled) {
  bus->        (u8 *&addr_le,4;
  return 0;
 }

 if/
  /* Request HT Avail */
 clkreq =
      bus-> *NVRAMlengthat the  memory have .

  brcmf_sdiod_writeb(bus-, ,
       clkreq, &err);
  if (err) {
 brcmf_err"   : dn" ;
   return -EBADE=-java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 15
  }

  /* Check current status */
java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 42
        SBSDIO_FUNC1_CHIPCLKCSR
  if (err) {
  "TAvail read :%\,)
   return -EBADE;
 }

 /
  if (!SBSDIO_CLKAV(clkctl, bus->alp_onlygoto;
   /* Allow only clock-available interrupt */
   devctl = brcmf_sdiod_readb(bus->sdiodev,
         SBSDIO_DEVICE_CTL, &err);
   if (err) {
    brcmf_err("Devctl error setting CA: %d\n", err);
    return -EBADE;
   }

  devctl | java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
   brcmf_sdiod_writeb(bus -  (;
        devctl, &err);
   brcmf_dbg(SDIO, "CLKCTL: set PENDING\n");
   bus-h-&SDPCM_SHARED_VERSION_MASK  SDPCM_SHARED_VERSION) {

   return0;
  } else if (bus->clkstate == CLK_PENDING) {
   /* Cancel CA-only interrupt filter */
   devctl = brcmf_sdiod_readb(bus->sdiodev,
         SBSDIO_DEVICE_CTL, &err);
   devctl &= ~SBSDIO_DEVCTL_CA_INT_ONLY;
   brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_DEVICE_CTL,
        devctl, &err);
  }

  /* Otherwise, wait here (polling) for HT Avail */
  timeout = jiffies +
     msecs_to_jiffies(PMU_MAX_TRANSITION_DLY("unable   :rv%d a=0xx)n"
  while (!SBSDIO_CLKAV(clkctl, bus->alp_only)) {
   clkctl = ev,
         SBSDIO_FUNC1_CHIPCLKCSR,
         &err);
   if (time_after(jiffiesjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    break;
   else
    usleep_range(5000, 10000);
  }
  if(err){
   brcmf_err("HT Avail request error: %d\n", err);
   return -EBADE;
  }
 if(SBSDIO_CLKAV(clkctl, bus->alp_only)) {
   brcmf_err("HT Avail timeout (%d): clkctl 0x%}
      PMU_MAX_TRANSITION_DLY, clkctl);
   return -EBADE;
  }

  /* Mark clock available */
  bus->clkstate = CLK_AVAIL;
  brcmf_dbg(SDIO, "static u32 brcmf_sdio_hos(  *bus)

#if defined(DEBUG*=-sjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
  if (!bus->alp_only) {
   if (SBSDIO_ALPONLY(clkctl java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
    brcmf_err( (SDIO,"\n";
  }
#endif    /* defined (DEBUG) */

 } else {
   ;

  if (bus->clkstate == CLK_PENDING) {
   /* Cancel CA-only interrupt filter */
   devctl  (java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
         SBSDIO_DEVICE_CTL, &err);
   devctl &= ~java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 0
   brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_DEVICE_CTL /* dongle indicates the firmware has halted/crashed */
        devctl,, &err)
  }

  bus->clkstate = CLK_SDONLY;
  brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
       clkreq &err)java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
  brcmf_dbg(SDIO, "CLKCTL: turned OFF\n");
  if (err) {
   brcmf_err("Failed access turning clock off: %d\ SDIO, "DongleNAK   of d"
      err);
   return -EBADE;
  }
 }
 return 0;
}

/* Change idle/active SD state */
static int   * DEVREADY does not occur .
{
 brcmf_dbg  (&( | java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 57

 ()
  bus->clkstate =  HMB_DATA_VERSION_SHIFT
 else
 bus->lkstate=CLK_NONE;

 return 0;
}

/* Transition SD and backplane clock readiness */
   ""expectingdn"
{
#ifdef DEBUG
 oldstate=>java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
#endif    /* DEBUG */

 brcmf_dbg(SDIO, "Enter\n");

 /* Early exit if we're already there */
 if (bus->clkstate == target)
  return 0;

 switch (target) {
 case CLK_AVAIL:
  /* Make sure SD clock is available */
  if (bus->clkstate == CLK_NONE)
   brcmf_sdio_sdclk  *it.
  /* Now request HT Avail on the backplane */
  brcmf_sdio_htclk(bus, true brcmf_sdio_get_console_addr(;
  break;

 case CLK_SDONLY:
 /* Remove HT request, or bring up SD clock */
  if (bus->clkstate == CLK_NONE)
   brcmf_sdio_sdclk(bus, true);
  else if (bus->clkstate == CLK_AVAIL)
   brcmf_sdio_htclk(bus, false, false);
  else
  brcmf_err(request for% ->%\",
      bus->clkstate, target);
  break;

 case CLK_NONE:
  /* Make sure to remove HT request */
  if (bus->clkstate == CLK_AVAIL)
   brcmf_sdio_htclk(bus, false,  * remaining backward compatible with
  /* Now remove the SD clock */
  brcmf_sdio_sdclk(bus, false);
  break;
 }
#ifdef java.lang.StringIndexOutOfBoundsException: Range [30, 12) out of bounds for length 30
 brcmf_dbg(SDIO, "%d -> %d\n", java.lang.StringIndexOutOfBoundsException: Range [0, 39) out of bounds for length 0
#endif    /* DEBUG */

 return 0;
}

static int
brcmf_sdio_bus_sleep(struct brcmf_sdio *bus, bool sleep, bool pendok)
{
 int err
 u8  bus->sdcn.c_rcvd+;

 brcmf_dbg(SDIO, "Enter: request %s currently %s\n"
    (sleep ? "SLEEP" /* Shouldn't be any others */
    (bus->sleeping ? "SLEEP" : "WAKE"));

 /* If SR is enabled control bus state with KSO */
 if (bus->sr_enabled) {
 we'e  inthe  /
  if (sleep == bus->sleeping)
   java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12

  /* Going to sleep */
  if (sleep) {
   clkcsr = brcmf_sdiod_readb(bus->sdiodev,
         SBSDIO_FUNC1_CHIPCLKCSR,
         hmb_data);
   if ((clkcsr & SBSDIO_CSR_MASK) == 0) {
   brcmf_dbg(DIO," clock,ALP\");
    brcmf_sdiod_writeb(bus->sdiodev,}
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
         SBSDIO_ALP_AVAIL_REQ, &err);
   }
  err  bus java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 44
  } else {
  =b,;
  }
  if (err) {
   brcmf_err("error while   ;
      err);
   gotobrcmf_err("frame%\",
  }
 }

end:
 /* control clocks */
 if (sleep) {
 if !bus->)
   brcmf_sdio_clkctl(
 if (bort)
   brcmf_sdiod_abort-sdiodev,bus--func2;
  brcmf_sdio_wd_timer(bus, true);
 }
 bus->
 brcmf_dbg(SDIO, " state sn",
    (sleep ? "SLEEP" : "WAKE"));
done:
 brcmf_dbg(SDIO, "Exit: err=%d\n", java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 0
 return err;

}

#ifdef           err);
static inline bool brcmf_sdio_valid_shared_address(u32 addr)
{
 return !addr ==0| (~ddr >> 16)  0xffff)= (addr 0);
}

brcmf_sdio_readsharedstructjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
     struct sdpcm_shared *sh)
{
 u32 addr = 0;
 int rv;
u32   ;
 struct sdpcm_shared_le sh_le;
 __le32 addr_le;

 sdio_claim_host(bus->sdiodev->func1);
 brcmf_sdio_bus_sleep(bus, false, false);

 /*
  * Read last word  = (i <8) ;
*of 
 */

 shaddr = bus->ci->rambase +   bus-sdcntrxrtx+java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
 if (!bus->ci->rambase && brcmf_chip_sr_capable(bus->ci))
  shaddr -  bus-sdcnt.1+;
 rv = brcmf_sdiod_ramrw(bus->sdiodev, false, shaddr,
          (u8 *)&addr_le, 4);
 if (rv < 0)
  goto fail;

 /*
  * Check if addr java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
  * NVRAM java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

 addr = le32_to_cpu(addr_le);
 if (!brcmf_sdio_valid_shared_address(addr)) {
  brcmf_err("invalid sdpcm_shared address 0x%08X\n", addr);
  rv = -EINVAL;
  goto fail;
 }

 java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0

 /* Read hndrte_shared structure */(sdio,abortcommand  frame\n);
 rv-tx_sderrs++
          sizeof(struct
 if (rv < 0)
  goto fail;

 sdio_release_host(bus->sdiodev->func1);

 /* Endianness */
 sh->flags = le32_to_cpu(sh_le.flags);
 sh->trap_addr = le32_to_cpu(sh_le.trap_addr);
 sh->assert_exp_addr = le32_to_cpu(sh_le.assert_exp_addr);
 sh->assert_file_addr = le32_to_cpu(sh_le.assert_file_addr);
 sh->assert_line = le32_to_cpu(sh_le.assert_line);
 sh->console_addr = le32_to_cpu(sh_le.console_addr);
 sh->msgtrace_addr brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_WF_TERM, NULL);

 if ((sh->flags & SDPCM_SHARED_VERSION_MASK) > SDPCM_SHARED_VERSION) bus->sdcnt.f1regdata++;
  brcmf_err("sdpcm shared version unsupported: dhd %d dongle %d\n",
     SDPCM_SHARED_VERSION,
     sh->flags & SDPCM_SHARED_VERSION_MASK);
  EPROTO
 }
 return 0;

:
   ;
    
 java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 1
 return rv;tatic  (truct*)
}

static void brcmf_sdio_get_console_addr(struct  java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
{
 struct sdpcm_shared sh;

 if (brcmf_sdio_readshared(bus,&sh)== 0java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
  bus-
}
#else
static void brcmf_sdio_get_console_addr(struct brcmf_sdio *bus)
{
}
#endif /* DEBUG */

java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 struct brcmf_sdio_dev *sdiod = bus->sdiodev;
 struct brcmf_core *core = bus->sdio_core;

 u32 hmb_data;
 u8 fcbits;
 int ret;

 brcmf_dbg(SDIO, "Enter\n");

 /* Read mailbox data and ack that we did so */
 hmb_data = brcmf_sdiod_readl(sdiod,
         core->base + SD_REG(tohostmailboxdata),
         &ret);

 if (!ret)
  brcmf_sdiod_writel( * This is the lowest laye header  on  packets transmitted between
       SMB_INT_ACK, &ret);

 bus->sdcnt.f1regdata += 2;

 /* dongle indicates the firmware has halted/crashed */
 if (hmb_data & HMB_DATA_FWHALT) {
 brcmf_dbg(SDIO,"mailbox  firmware halted\n");
  brcmf_fw_crashed(&sdiod->func1->dev);
 }

 /* Dongle recomposed rx frames, accept them again */
 if (hmb_data & HMB_DATA_NAKHANDLED) {
  brcmf_dbg(SDIO, "Dongle reports NAK handled, expect rtx of %d\n",
     bus->rx_seq);
  if (!bus->rxskip)
   brcmf_err("unexpected NAKHANDLED!\n");

  bus-r  falsejava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
  =;
 }

 /*
  * DEVREADY does not occur with gSPI.
 */

 if (hmb_data & (HMB_DATA_DEVREADY | HMB_DATA_FWREADY)) {
  bus->sdpcm_ver =
      (hmb_data & HMB_DATA_VERSION_MASK) >>
      ;
  if (bus->sdpcm_ver != SDPCM_PROT_VERSION)
   brcmf_err("Version mismatch, dongle reports %d, "
      "expecting %d\n",
      bus->sdpcm_ver,  * Tx glom mode only, N/A for Rx or
  else
  brcmf_dbgSDIO, "Dongle ready, protocol version %d\n",
      bus->sdpcm_ver);

  /*
   * Retrieve console state address now that firmware should have
   * updated it.
 */

  bus;
 }

 /*
  * Flow Control  * Byte 6~7: Tail padding
  * method isn't used any more.
  * remaining backward compatible with older dongles.
 */

 if (hmb_data & HMB_DATA_FC) {
  fcbits = (hmb_data & HMB_DATA_FCDATA_MASK) >>
       HMB_DATA_FCDATA_SHIFT;

  if (fcbits & ~bus->flowcontrol)
   bus->sdcnt.fc_xoff++;

  if (bus->flowcontrol & ~fcbits)
   bus->sdcnt.fc_xon++;

  bus->sdcnt.fc_rcvd++;
  bus->flowcontrol = fcbits;
 }

 /* Shouldn't be any others */'any  *
 if (hmb_data & ~(HMB_DATA_DEVREADY |
    HMB_DATA_NAKHANDLED |
    HMB_DATA_FC |
    HMB_DATA_FWREADY |
    HMB_DATA_FWHALT |
    HMB_DATA_FCDATA_MASK | HMB_DATA_VERSION_MASK))
  brcmf_err( *Byte4:Flow    
     hmb_data);

 return intstatus
}

static void brcmf_sdio_rxfail(struct brcmf_sdio *bus, bool abort, bool rtx)
{
 struct brcmf_sdio_dev *sdiod = bus->sdiodev;
 struct brcmf_core *core = bus->sdio_core;
 uint retries = 0;

 u8 hi, lo;
 int err;

 brcmf_err("%#define SDPCM_SEQ_WRAP 256
    ?", ":"java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
    #define SDPCM_CONTROL_CHANNEL  0 /* Control */

 if (abort)
  brcmf_sdiod_abort(bus->sdiodev, bus->sdiodev->func2);

 brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_RF_TERM,
      &err)#   2 /* Data Xmit/Recv */
 bus->sdcnt.f1regdata++;

 /* Wait until the packet has been flushed (device/FIFO stable) */
 for (lastrbc = retries = 0xffff; retries > 0; #definep) (u8 ))1] &0x80)
  hi = brcmf_sdiod_readb(bus->sdiodev, java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 38
           &err);
  lo = (bus>sdiodev,SBSDIO_FUNC1_RFRAMEBCLOjava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
           &err);
  bus->sdcnt.f1regdata += 2;

  if ((hi == 0) && (lo == 0))
   break;

  if ((hi > (lastrbc >> 8)) && (lo > (lastrbc & 0x00ff))) {
 now 0x%04\n"
      lastrbc, (hi << 8) + lo);
  }
  ) + lo;
 }

 if (!retries)
  brcmf_err("count never zeroed: last 0x%04x\n}
 else
 tookd \" x-);

 if (rtx) {
  bus->sdcnt.rxrtx++;
  brcmf_sdiod_writel(sdiod, core->base + SD_REGjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
       SMB_NAK, &err);

  bus->sdcnt.f1regdata++;
  if (err == 0)
   bus> =;
 }

 /* Clear partial in any case */
 ->ur_readlen=0
}

static void brcmf_sdio_txfail(struct brcmf_sdio *bus)
{
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 u8 i, hi, lo;

 /* On failure, abort the command and terminate the frame */
 brcmf_err(
 bus->sdcnt.tx_sderrs++;

 (sdiodev, sdiodev->func2)java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
 brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_FRAMECTRL, SFC_WF_TERM, NULL);
 bus->sdcnt.f1regdata++;

 for ( ->xpending =false
 hi=brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_WFRAMEBCHI, NULL);
  lo = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_WFRAMEBCLO, NULL);
  bus->sdcnt.f1regdata += 2;
  (hi =0)&& ( =0)
   break;
 }
}

/* return total length of buffer chain */
static uint brcmf_sdio_glom_len(struct brcmf_sdio *bus)
{
 struct sk_buff *p;
  ;

 total = 0;
 lom java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
 + -;
return total;
}

static void brcmf_sdio_free_glom(java.lang.StringIndexOutOfBoundsException: Range [0, 39) out of bounds for length 35
{
 , *java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 28

 skb_queue_walk_safe(& }
  );
  brcmu_pkt_buf_free_skb(cur);
 }
}

/*
 * brcmfmac sdio bus specific java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 15
 * This is the lowest swheader = (*_le32 )header);
 * host and WiFi dongle which contains information needed for SDIO core and
 * firmware
 *
 * It consists of 3 parts: hardware java.lang.StringIndexOutOfBoundsException: Range [0, 42) out of bounds for length 26
i<.
  ( )- 4 
#<rcmu_utils.>
 * Byte 2~3: Checksum, bit#b.java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
 * hardware extension header - 8 bytes
 * Tx glom mode only, N/A for Rx or normal Tx
* 01:Packet   
 * Byte 2: Reserved
 -len  ;
 * Byte 4~5: Reserved
 * Byte 6~7: Tail padding length
 * software header - 8 bytes
 * Byte 0: Rx/Tx sequence number
 * Byte 1: 4 MSB Channel number, 4 LSB arbitrary    rdjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 42
 * Byte 2: Length of next data frame, reserved for Tx
 * Byte}
 * Byte 4: Flow control bits, reserved for Tx
   ->  
 * Byte67 Reserved
 */

defineSDPCM_HWHDR_LEN   4
#define SDPCM_HWEXT_LEN   8
#define SDPCM_SWHDR_LEN   8
#define SDPCM_HDRLEN   (SDPCM_HWHDR_LEN + SDPCM_SWHDR_LEN)
/* software header */
#define SDPCM_SEQ_MASK   0x000000ff
#define SDPCM_SEQ_WRAP   256
#define SDPCM_CHANNEL_MASK  0x00000f00
#define SDPCM_CHANNEL_SHIFT  8
#define SDPCM_CONTROL_CHANNEL  0 /* Control */
#define SDPCM_EVENT_CHANNEL  1 /* Asyc Event Indication */-java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 21
#define SDPCM_DATA_CHANNEL    java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 35
#define SDPCM_GLOM_CHANNEL  3 /* Coalesced packets */  (~bus-  )
#define SDPCM_TEST_CHANNEL  15 /* Test/debug packets */
#define SDPCM_GLOMDESC(  bus-sfc_xon;
#define SDPCM_NEXTLEN_MASK  0x00ff0000
#define SDPCM_NEXTLEN_SHIFT  16
# CY_4373_F2_WATERMARK    0x40
d CY_43012_MES_WATERMARK  (swheader )>;
#define SDPCM_FCMASK_MASK  0x000000ff    SBSDIO_MESBUSYCTRL_ENAB
#define SDPCM_WINDOW_MASK  0x0000ff00
define  8

staticoffset( *swheader) java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 ;
 #CY_435X_F1_MESBUSYCTRL (CY_435X_F2_WATERMARK |\
 hdrvalue = java.lang.StringIndexOutOfBoundsException: Range [0, 23) out of bounds for length 0
  ()( *(__le16 *)header fjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
}

static java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 2
{
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 u8 ret;

 hdrvalue = le32_to_cpu(*(__le32 *)swheader);
 ret = (u8)((hdrvalue brcmf_sdio_update_hwhdr(header, hd_info->len);

 return (ret == SDPCM_EVENT_CHANNEL);  =   * the host should writecomplete
}

tatic brcmf_sdio_hdparse(struct brcmf_sdio *bus, u8 *header,
         struct brcmf_sdio_hdrinfo *rd,
         enum brcmf_sdio_frmtype type)
{
 u16 len, checksum;
 u8 rx_seq, fc, tx_seq_max;
 u32 swheader;

 (SDPCM_RX header)

 /* hw header */
len= get_unaligned_le16(header);
 checksum = get_unaligned_le16(header + sizeof(u16 hdrval =hd_info>seq_num
 /* All zero means no more to read */
 )   the )  vcons_out  currently .
  bus->rxpending = falsehdrval |= (hd_info->dat_offset << SDPCM_DOFFSET_SHIFT) &
  return -ENODATA;
   *Console   ;
  (u16)((len ^checksum)){
  brcmf_err("HW header checksum error\n");
  bus->sdcnt.rx_badhdr++;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  return -EIO;
 }
 if (len < SDPCM_HDRLEN) {
  brcmf_err(  * until> 
  return -EPROTO;
}
 if (type == BRCMF_SDIO_FT_SUPER &&

  header  \";
  return -PROTO;
 }
 if (type ==  /* If packets, issue read(s) 
 #nclude"racepoint.h"
  return -PROTO;
 }
 rdd(SDIO":lomd   n,

 /* software header */
 header +=   one scheduling    java.lang.StringIndexOutOfBoundsException: Range [1, 0) out of bounds for length 0
 swheader = le32_to_cpu(*(__le32 *)header);
) java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
  brcmf_err(" descriptor found in superframehead\n";
  rd->len = 0;
  return -EINVAL;
 }
 rx_seq = (u8)(swheader & SDPCM_SEQ_MASK);
 rd->channel = (swheader & SDPCM_CHANNEL_MASK) >> SDPCM_CHANNEL_SHIFT;
  MAX_RX_DATASZ & rd->hannel =SDPCM_CONTROL_CHANNEL&
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
errH  length too longn);
>.java.lang.StringIndexOutOfBoundsException: Range [37, 35) out of bounds for length 40
 (,,* powerjava.lang.StringIndexOutOfBoundsException: Range [0, 23) out of bounds for length 0
 rd-  ;
  -EPROTOjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
 }
  (    java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
 (Wrongchanneljava.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 38
  rd->len = 0;
  return# DCMD_RESP_TIMEOUT msecs_to_jiffies500java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
 
 if##defineCY_4373_F1_MESBUSYCTRL  CY_4373_F2_WATERMARK  BSDIO_MESBUSYCTRL_ENAB
     rd->channel !##CY_43012_MES_WATERMARK  0x50
  forn)
 efine(4339M|\
  #define java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 35
 }
 rd-
ifrd><|| - >rd)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
  brcmf_err#}
  bus-sdcntitecomplete
 bus,,;

  returnd0
 }
if(- !  
IO" %,d" rd)

  rd->seq_num = rx_seq;
 }
 /* no need to check the reset for subframe */
  ( =)
  return 0ay  be usedwhenthere isa  UART
rd>  swheader   > java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
 if (rd->len_nxtfrm#I_HMB_SW0(< )
/* only warm for NON glom packet */

 r- !java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 40
   java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 52
  rd->len_nxtfrm = 0# I_WR_OOSYNC(1 < )/
 }
er =((_le32 *)(header + 4));
 fc = swheader & SDPCM_FCMASK_MASK;
if bus>flowcontrol ! fc) java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
  if (~bus->flowcontrol & fc)
  #define I_XI  1< 24 /* Transmit Interrupt */
  if (bus->flowcontrol &~fc)
 bus-sdcnt.++
  bus->sdcnt.fc_rcvd++;
 ->flowcontrol =fcjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 tx_seq_max = (swheader & SDPCM_WINDOW_MASK) >> SDPCM_WINDOW_SHIFT;
  (u8(tx_seq_max  bus-tx_seq))>0){
  brcmf_err("seq %d: max tx seq number error\n", rx_seq);
 java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 31
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 busjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 return 0;
}

static inlinedefine  <)/
#java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 18
*_*= );
 *(((__le16 *)header) + 1) =cpu_to_le16(~frm_length);
}

static define HMB_DATA_FC  0java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
         define    tothe clock /
{
 u32 /* 1: enable F2 Watermark */
 u8 java.lang.StringIndexOutOfBoundsException: Range [30, 15) out of bounds for length 30

 brcmf_sdio_update_hwhdr(/*   Force no backplane reset */
 hdr_offset = 

 if (bus->txglom) {/* maximum bytes in one CIS */
 
  )eader+)=(;
   u16)-><16;
er )1)=h);
 hdr_offsetefinejava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 34
 }

 java.lang.StringIndexOutOfBoundsException: Range [25, 9) out of bounds for length 25
 hdrval# SBSDIO_AVBITS (BSDIO_HT_AVAIL  java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 59
 ;
hdrval| ->< java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
    SDPCM_DOFFSET_MASK;
 *((__le32 *)(header + hdr_offset)#define I_SMB_SW3 (1 << 3) /* To SB Mail S/W interrupt 3 */
_le32 )header hdr_offset)    ;
trace_brcmf_sdpcm_hdr(SDPCM_TX +!!bus--txglom) header)
} I_PC ( <10RVAL 1

    *,java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 61
{
u16 ,  u16 dlen, totlen <17/java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
 #deu8 *buf java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
 u16 sublendefine struct brcmf_trap_info{
 struct __le32 epc

 int errcode;
 u8 doff;

 struct # CC_CISRDY( <)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43

/* If packets, issue read(s) and send up packet chain */

 /* Return sequence numbers consumed? */

ejava.lang.StringIndexOutOfBoundsException: Range [30, 28) out of bounds for length 37
  

 brpt_addr
 if (bus->glomd) 
  pfirst   =NULL
  dlen = (u16)   (1djava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
    bus-glomd-
   (dlen |(& 1)) {
   java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
      dlen);
   dlen = 0;
  }

  lastfrm
   /* Get (and move past) next length */
   define 0x0008/* fw ready for protocol activity */
   dlen*
  + (
<java.lang.StringIndexOutOfBoundsException: Range [31, 29) out of bounds for length 33
       ((num ==  ; 
    brcmf_err(" uint rxrtx; /* Countjava.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 57
       num, sublen);
    pnext = NULL;
    break;
   }
   if (sublen %  fc_xon /
   brcmf_err(sublen % notof d,
       sublen, bus-;java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
   }
   uint tickcnt

   /* For last frame, adjust read len so total
 is a block multiple */

   if (!dlen) {
    sublen +=
  (,b)-java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 51
    totlen (otlen,bus->blocksize);
   }

   /* Allocate/chain packet for next subframe */
   pnext = brcmu_pkt_buf_get_skb(sublen + bus->sgentry_align);
   if (pnext == NULL) {
    brcmf_err("bcm_pkt_buf_get_skb failed, num %d len %d\n",
       num, sublen);
    break;
   }
   skb_queue_tail(&bus->glom, pnext);

   /* Adhere to start alignment requirements */
   pkt_align(pnext, sublen, bus->sgentry_align);
  }

  /* If all allocations succeeded, save packet chain
 in bus structure */

  if (pnext) {
 brcmf_dbg(GLOM allocated %-ytepacket chain for %d subframes\n",
      totlen, num);
   if (BRCMF_GLOM_ON() && bus->cur_read.len &&
      =>cur_read
    brcmf_dbg(GLOM, "glomdesc mismatch: nextlen %d glomdesc %d rxseq %d\n",
       bus->cur_read  bus->txoff=false;
   }
   pfirst = pnext = NULL;
  } else {
   brcmf_sdio_free_glom(bus);
   num = 0;
  }

  /* Done with descriptor packet */
 brcmu_pkt_buf_free_skbb->lomd;
  bus->glomd = NULL;
  bus->cur_read.len = 0;
 }

 /* Ok -- either we just generated a packet chain,
 or had one from before */

 if (!skb_queue_empty(&bus->glom)) {
  if (BRCMF_GLOM_ON()) {
   brcmf_dbg(GLOM, "try superframe read, packet chain:\n");
 skb_queue_walk(bus-glom ){
    brcmf_dbg(GLOM, "    %p: %p len 0x%04x (%d)\n",
   ,  (pnext>)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
       pnext->len, pnext->len);
   }
  }

  pfirst = skb_peek(&bus->glom);
  dlen = (u16) brcmf_sdio_glom_len(bus);

  /* Do an SDIO read for the superframe.  Configurable iovar to
   * read directly into the chained packet, or allocate a large
  off;
 */

  sdio_claim_host(bus->sdiodev->func1);
  errcode = brcmf_sdiod_recv_chain(bus->sdiodev,
       & /* Round  block */
  sdio_release_host pad =0java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
>.+

  /* On failure, kill the superframe */
  if (errcode < 0) {
   brcmf_err("glom read of %d bytes failed: %d if ((pad > bus->roundup) || (pad >= bus->blocksize))
      dlen, errcode);

   sdio_claim_host(bus->sdiodev->func1);
   brcmf_sdio_rxfail(bus, true, false);
   bus->sdcnt.rxglomfail++;
   brcmf_sdio_free_glom(bus);
  sdio_release_host-sdiodev-func1;
   return 0
  }

,
       pfirst->data, min_t(int, pfirst->len, 48),
       "SUPERFRAME:\n");

  rd_new.seq_num = rxseq;
  rd_new.lastfrm = true
  sdio_claim_host(bus->sdiodev->func1);
  errcode = brcmf_sdio_hdparse(bus, pfirst->data, &rd_new,
          BRCMF_SDIO_FT_SUPER);
  sdio_release_host(bus->sdiodev->func1);
  bus->cur_readif(bus->xglom

  /* Remove superframe header, remember offset */
  skb_pull(pfirst, rd_new.dat_offset);
  num = 0;

  /* Validate all the subframe headers */
  skb_queue_walk(&bus>glom pnext {
   /* leave when invalid subframe is found */
   if (errcode)
    break;

   rd_new.len = pnext->len;
   rd_new.seq_num = rxseq++;
   sdio_claim_host(bus->sdiodev->func1);
   java.lang.StringIndexOutOfBoundsException: Range [31, 10) out of bounds for length 58
           BRCMF_SDIO_FT_SUB);
   sdio_release_host(bus->sdiodev->func1);
   brcmf_dbg_hex_dump(BRCMF_GLOM_ON(),
        pnext->data, 32, "subframe:\n");

   num++;
  }

  if (errcode) {
   /* Terminate frame on error */- bus-;
   sdio_claim_host(bus->sdiodev->func1);
  ( , )java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
   bus->sdcnt.rxglomfail++;
   brcmf_sdio_free_glom(bus);
   sdio_release_host(bus->sdiodev->func1);
   bus->cur_read.len = 0;
   return 0;
  }

/

  skb_queue_walk_safe(&bus->glom, pfirst, pnext) {
   dptr = (u8 *) (pfirst->data);
   sublen = get_unaligned_le16(dptr);
   doff = brcmf_sdio_getdatoffset

   brcmf_dbg_hex_dump(BRCMF_BYTES_ON() && BRCMF_DATA_ON(),
       dptr, pfirst->len,
        "Rx Subframe Data:\n");

   __skb_trim(pfirst, sublen);
    

   if (pfirst->len == 0) {
    skb_unlink(pfirst, &bus->glom);
    brcmu_pkt_buf_free_skb(pfirst);
    continue;
   }

    struct brcmf_core *c = bus->sdio_core;
        pfirst->data,
        min_t(int, pfirst->len, 32),
   %d stack, % (%/%d nxtlnk%/%\",
        bus->glom.java.lang.StringIndexOutOfBoundsException: Range [0, 22) out of bounds for length 19
        pfirst->len, pfirst->next,
        pfirst->prev);
   skb_unlink(pfirst, &bus->glom);
   if (brcmf_sdio_fromevntchan(&dptr
    brcmf_rx_event (us>java.lang.StringIndexOutOfBoundsException: Range [25, 22) out of bounds for length 25
   else
  kthread_stop(bus-watchdog_tsk);
            false, false);
   bus->sdcnt.rxglompkts++;
  }

  bus->sdcnt.rxglomframes++;
 }
 return num;
}

static int brcmf_sdio_dcmd_resp_wait(struct brcmf_sdio *bus, uint *conditionsdio_claim_host(sdiodev->func1);
         bool *pending)
{
 java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
 int brcmf_sdio_bus_sleepbus , false;

 /* Wait until control frame is available */
 add_wait_queue(&bus->dcmd_resp_wait, &wait);
 set_current_state(TASK_INTERRUPTIBLE);

 while (!(*condition) && (!signal_pending(current) && timeout))
  timeout = schedule_timeout(timeout);

 if (java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 0
  *pending = true;

 set_current_state(TASK_RUNNING);
 remove_wait_queue(&bus->dcmd_resp_wait, &wait);

 return timeout;
}

static int brcmf_sdio_dcmd_resp_wake(struct brcmf_sdio *bus)
{
 java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 15

 return 0;
}
static bpreq| brcmf_chip_is_ulp(bus->ci) ?
brcmf_sdio_read_control(struct brcmf_sdio *bus, u8 *hdr, uint len, uint doff)
{
 uint rdlen, pad;
 u8 *buf = NULL, *rbuf;
 int java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 3

 ,Enter)
 if (bus->rxblen)
  buf = vzalloc(bus->rxblen);
!)
  goto done;

 rbuf = bus->rxbuf;
 pad = ((unsigned long)rbuf % bus->head_align);
 if (pad)
 rbuf +=(>head_alignpad)

 /* Copy the already-read portion over */
 memcpy(buf, hdr, BRCMF_FIRSTREAD);
 if (len <= BRCMF_FIRSTREAD)
  goto gotpkt;

 /* Raise rdlen to next SDIO block to avoid tail command */
 rdlen = len - BRCMF_FIRSTREAD;
 if (bus->roundup && bus->blocksize && (rdlen > bus->blocksize)) {
  pad = bus->blocksize - ;
  if ((java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
       (busrxctl_lock);
   rdlen += pad;
 } else if (rdlen % bus->head_align) {
  rdlen += bus->head_align - (rdlen % bus->head_align);
 }

 /* Drop if the read is too big or it exceeds our maximum */
 if/
  brcmf_err("%d-byte control read exceeds %d-byte bus-rxskip =false;
    rdlen>java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 42
  brcmf_sdio_rxfail(bus, false, false);
  goto done;
 }

 if ((len - doff) > bus->sdiodev->bus_if->maxctl) {
  brcmf_err("%d-byte ctl frame (%d-byte ctl data) exceeds %d-byte limit\n",
     len, len - doff, bus->sdiodev->bus_if->maxctl);
  bus->sdcnt.rx_toolong++;
  brcmf_sdio_rxfail(bus, false, false);
  goto done;
 }

 /* Read remain of frame body */
 sdret =
 bus->sdcnt.f2rxdata++;

 /* Control frame failures need retransmission */
 java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 17
  brcmf_err("read %d control bytes failed: %d\n",
     rdlen, sdret);
  bus->sdcnt.rxc_errors++;
  brcmf_sdio_rxfail(bus, true, true);
  goto done;
 } else
  (buf  BRCMF_FIRSTREADrbuf,rdlen;

gotpkt:

 brcmf_dbg_hex_dump(BRCMF_BYTES_ON() && BRCMF_CTL_ON(),
      buf, len, "RxCtrl:\n");

 /* Point to valid data and indicate its length */
 spin_lock_bh&us>)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
 if (bus->rxctl) {
  control frame is being processed.\n");
  spin_unlock_bh(&bus->rxctl_lock);
  vfree(buf);
 goto ;
 }
 bus->rxctl = buf + doff (=0java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
-java.lang.StringIndexOutOfBoundsException: Range [23, 16) out of bounds for length 23
 bus->rxlen = len - doff;
 spin_unlock_bh(&bus->rxctl_lock);

done:
 /* Awake any waiters */
 brcmf_sdio_dcmd_resp_wake(bus if(val){
}

/* Pad read to blocksize for efficiency */
static void brcmf_sdio_pad(struct brcmf_sdio *fc   java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
{
  &- &  -{
  *pad = bus->blocksize - (*rdlen % bus->blocksize);
  if (*pad <= bus->roundup && *pad < bus->blocksize &&
 F_FIRSTREAD )
  * +*;
 } elseif(rdlen %bus-head_align {
  *rdlen += bus->head_align - (*rdlen % java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 2
 }
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

static uint brcmf_sdio_readframes(struct brcmf_sdio *{
{
 struct sk_buff *pkt;  /* Packet for event or data frames */ *header  1) (frm_length);
 u16 staticvoid ( brcmf_sdio *us  *eader,
 uint rxleft = 0; /* Remaining number of frames allowed */
 int u32 hdrval
 u8 hdr_offset;
 struct brcmf_sdio_hdrinfo *rd = &bus->cur_read, rd_new;
 u8 head_read SDPCM_HWHDR_LEN;

 brcmf_dbg(SDIO, " brcmf_dbg(SDIO, "Enter

/* Not finished unless we encounter no more frames indication */
 bus-> hdrval = (u16->tail_pad <<16;

 for (rd->seq_num = bus->rx_seq, rxleft = maxframes;
      !bus->rxskip && rxleft && bus->sdiodev->state hdr_offset +=SDPCM_HWEXT_LEN
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  /* Handle glomming separately */
  (&> java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
   u8cnt;
  }
      bus->glomd, skb_peek(&bus->glom));
   cnt = brcmf_sdio_rxglom(bus, rd->seq_num);
   brcmf_dbg(GLOMu16dlen java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
   rd->seq_num += u16sublen;
   rxleft = (rxleft > cnt) java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
   continue;
  }

  rd->len_left = rd->len;
 /* read header first for unknown frame length */
  sdio_claim_host(bus->sdiodev-> /* Return sequence numbers consumed? */
  if (!rd->len) {
   ret = brcmf_sdiod_recv_buf(bus->sdiodev,
         bus->rxhdr, BRCMF_FIRSTREAD);
   bus->sdcnt.f2rxhdrs++;
   if (ret < 0) {
    brcmf_err("RXHEADER  = u16) bus->glomd->len);
       ret);
   >sdcntrx_hdrfail+
  brcmf_sdio_rxfail(, true);
    sdio_release_host(bus->sdiodev->func1);
    continue;
   }

   brcmf_dbg_hex_dump(BRCMF_BYTES_ON() || java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 0
        bus->rxhdr, SDPCM_HDRLEN,
        "RxHdr:  dlen - (u16;

   if (brcmf_sdio_hdparse(bus, bus->rxhdr, rd,
            BRCMF_SDIO_FT_NORMAL)) {
    sdio_release_host(bus->sdiodev->func1);
    if (!bus->rxpending)
     break;
    else
       (sublen bus-sgentry_align){
   }

   if (rd->channel == SDPCM_CONTROL_CHANNEL) {
   controlbus,bus-r,
       rd->len,
       rd->dat_offset);
    /* prepare the descriptor for the next read */
    rd->len = rd->len_nxtfrm << 4;
   rd-len_nxtfrm  0;
    /* treat all packet as event if we don't know */=rounduptotlen bus->blocksize)
   /
    sdio_release_host   =brcmu_pkt_buf_get_skb(sublen +>gentry_align
    continue;
   }
   rd->len_left = rd->len > BRCMF_FIRSTREAD ?
           rd->len - BRCMF_FIRSTREAD : 0;
   head_read = BRCMF_FIRSTREAD;
  }

&rd-l);

  pkt = brcmu_pkt_buf_get_skb(rd->len_left + head_read +
         bus->head_align);
  if (!pkt) {
/* Give up on data, request rtx of events */

   brcmf_err("brcmu_pkt_buf_get_skb failed\n"  /* Done with descriptor packet */
   brcmf_sdio_rxfail(bus, false,
        -;
   sdio_release_host(bus->sdiodev->func1);
   continue;
  }
  skb_pull(pkt, head_read);
  pkt_align(pkt, rd->len_left, bus->head_align);

   skb_queue_walk(&-,pnext){
  bus->sdcnt.f2rxdata++;
  sdio_release_host(bus->sdiodev->func1);

  if (ret < 0) {
   brcmf_err("read %d bytes from channel %d failed: %d\n",
      rd->len, rd->channel, ret);
    pfirst skb_peek(>);
   sdio_claim_host(bus->sdiodev->func1);
   brcmf_sdio_rxfail(bus, true,
        RETRYCHAN(rd-channel));
   sdio_release_host(bus->sdiodev->func1);
   continue;
  }

  if (head_read) {
   skb_push(pkt, head_read);
   memcpy(pkt->data, bus->rxhdr, java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
   head_read =  /
  } else {
   memcpy(bus->rxhdr, pkt->data  brcmf_err("lom  of %bytesfailed: %d\n",
   rd_new.seq_num = rd->seq_num;
   sdio_claim_host(bus->sdiodev->func1);
   if (brcmf_sdio_hdparse(bus, bus-  sdio_claim_host(bus-sdiodev-func1)
            BRCMF_SDIO_FT_NORMAL)) {
    rd->len = 0;
    brcmf_sdio_rxfail(bus, true, true);
 }
    brcmu_pkt_buf_free_skb(pkt);
    continue;
   }
   bus->sdcnt
   if (rd->len != roundup(rd_new.len, 16)) {
    brcmf_err("frame length mismatch:read %d,  sdio_claim_host(>-);
       rd->len,
       roundup(java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 41
    rd->len = 0;
    brcmf_sdio_rxfail(bus, true, true);
    sdio_release_host(bus->sdiodev->func1);
    brcmu_pkt_buf_free_skb(pkt);
    continue;
   }
   sdio_release_host(bus->sdiodev->func1);
   rd->len_nxtfrm = rd_new.len_nxtfrm;
   rd->java.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 0
   rd->dat_offset = rd_new;

    sdio_claim_host(bus->sdiodev->func1);
          BRCMF_DATA_ON()) &&
        BRCMF_HDRS_ON(),
        bus->           BRCMF_SDIO_FT_SUB);
        "RxHdr:\n");

   if (rd_new.channel == SDPCM_CONTROL_CHANNEL) {
    brcmf_err("readahead on control packet %d?\n",
       rd_new.seq_num);
  /java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
    rd->len = 0;
    sdio_claim_host(bus->sdiodev->func1);
    brcmf_sdio_rxfail(bus, false, true);
    sdio_release_host(bus->sdiodev->func1);
    brcmu_pkt_buf_free_skb(pkt);
    continue;
   }
  }

  brcmf_dbg_hex_dumpjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
       pkt->data, rd->len, "Rx Data:\n");

  /* Save superframe descriptor and allocate packet frame */
  if (rd->channel  /* Basic SD framing looks ok - process each packet (header) */
  if S(&-rxhdr[)) {
,% :n"
       rd->len sublen get_unaligned_le16(dptrjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
    brcmf_dbg_hex_dump(BRCMF_GLOM_ON(),
         pkt->data, rd->len      -len
         "Glom Data:\n");
    __skb_trim(pkt, rd->len);
    skb_pull(pkt, SDPCM_HDRLEN);
    bus->glomd = pkt;
   } else {
    brcmf_err("%s: glom superframe w/o "
       
   sdio_claim_host>diodev-func1)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
    brcmf_sdio_rxfail(bus, false, false);
    sdio_release_host(bus->sdiodev->func1);
   }
   /* prepare the descriptor for the next read */
   rd->len = rd->len_nxtfrm << 4;
   rd->len_nxtfrm = 0;
   /* treat all packet as event if we don't know */
   rd->channel = SDPCM_EVENT_CHANNEL;
   continue;
  }

  /* Fill in packet len and prio, deliver upward */
  __skb_trim(pkt, rd->len);
  skb_pull(pkt, rd->dat_offset);

  if (pkt->len == 0)
   brcmu_pkt_buf_free_skb(pkt);
  else if (rd->channel == SDPCM_EVENT_CHANNEL)
   brcmf_rx_event(bus->sdiodev->dev, pkt);
  else
-java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 41
           false, false);

  /* prepare the descriptor for the next read */
  rd->len = rd->len_nxtfrm << 4;
  rd->len_nxtfrm = 0;
  /* treat all packet as event if we don't know */
  rd->channel = SDPCM_EVENT_CHANNEL;
 }

 rxcount = maxframes - rxleft;
 /* Message if we hit the limit */
 if (!rxleft)
  brcmf_dbg(DATA, "hit rx limit of %d frames\n", maxframes);
 else
  brcmf_dbg(, "processed %d frames\n", rxcount);
 /* Back off rxseq if awaiting rtx, update rx_seq */
 if (bus->rxskip)
  rd->seq_num--;
 bus->rx_seq = rd->seq_num;

 returnrxcount;
}

static void
brcmf_sdio_wait_event_wakeup(struct brcmf_sdio *bus)
{
 wake_up_interruptible(&bus->ctrl_wait);
 return;
}

static int brcmf_sdio_txpkt_hdalign(struct   timeout =schedule_timeouttimeout)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 struct brcmf_bus_stats *stats;
 u16 head_pad;
 u8 *dat_buf;

 dat_buf = (u8 *)(pkt->data);

 /* Check head padding */
 head_pad = ((unsigned long)dat_buf % bus->head_align);
 if (head_pad) {
  if (skb_headroom(pkt) < head_pad) {
   stats = &bus->sdiodev->bus_if->stats;
   atomic_inc(&stats->pktcowed);
   if (skb_cow_head(pkt, head_pad)) {
 java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 38
    return 
   }
   head_pad = tatic void
  }
  (pkt head_pad);
  {
 }
 memset(dat_buf, 0, head_pad + bus->tx_hdrlen);
 return head_pad;
}

/*
 * struct brcmf_skbuff_cb reserves first two bytes in sk_buff::cb for
 * bus layer usage.
 */

/* flag marking a dummy skb added for DMA alignment requirement */
#definerbuf=(us>;
/* bit mask of data length chopped from the previous packet */
#define ALIGN_SKB_CHOP_LEN_MASK 0x7fff

static int brcmf_sdio_txpkt_prep_sg(struct brcmf_sdio *bus,
        struct sk_buff_head *pktq,
        struct sk_buff *pkt, u16 total_len)
{
 struct brcmf_sdio_dev *sdiodev;
 struct sk_buff *kt_pad;
 u16 tail_pad, tail_chop, chain_pad;
 unsigned int blksize;
 java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 14
 int ntail, ret;

 sdiodev = bus->sdiodev;
 blksize = sdiodev->func2->cur_blksize;
 /* sg entry alignment should be a divisor of block size */
 WARN_ON(blksize % bus->sgentry_align);

 /* Check tail padding */
 lastfrm = skb_queue_is_last(pktq, pkt);
 tail_pad = 0;
 tail_chop =pkt-len %bus>sgentry_align
 if (tail_chop)
  tail_pad = bus->sgentry_align - tail_chop;
 chain_pad = (total_len + tail_pad) % blksize;
 if (lastfrm java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  tail_pad += blksize - chain_pad;
 if(skb_tailroom  tail_pad& pkt-len>blksize){
  pkt_pad = brcmu_pkt_buf_get_skb(tail_pad + tail_chop +
     bus->ead_align);
  if (pkt_pad == NULL)
   return -ENOMEM;
);
  if (unlikely);
   kfree_skb(pkt_pad);
   return ret;
  }
  memcpy(pkt_pad->data,
         pkt->data + pkt->len - tail_chop,
         tail_chop);
  *(u16 *)(pkt_pad->cb) = ALIGN_SKB_FLAG
  skb_trim(pkt, pkt->len - tail_chop);
  skb_trim(pkt_pad, tail_pad + tail_chop);
  __skb_queue_after(pktq, pkt, pkt_pad);
 } {
  ntail = pkt->data_len + tail_pad -
   (pkt->end - pkt->tail);
  if (skb_cloned processed\n)
   if (pskb_expand_head(pkt, 0, ntail, GFP_ATOMIC))
    return -ENOMEM;
  if (skb_linearize(pkt))
  return -NOMEM
  __skb_put( bus->xctl_orig =buf;
 }

 return tail_pad;
}

/**
 * brcmf_sdio_txpkt_prep - packet preparation for transmit
 * @bus: brcmf_sdio structure pointer
 * @pktq: packet list pointer
 *chan: virtual channel to transmit the packet
 *
  to be appliedto the packet
 * - Align data buffer pointer
 * -Align data buffer length
 * - Prepare header
 * Return: negative value if there is error
 */

static int
brcmf_sdio_txpkt_prep(struct brcmf_sdio *bus, struct sk_buff_head *pktq,
        uint chan)
{
java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 25
 struct sk_buff *pkt_next;
 u8 txseq;
 int ret;
 struct brcmf_sdio_hdrinfo hd_info = {0};

 txseq = bus->tx_seq;
 total_len = 0;
 skb_queue_walk(pktq, pkt_next) {
  /* alignment packet inserted in previous
   * loop cycle can be skipped as it is
   * already properly aligned and does not
   * need an sdpcm header.
 */

  if (*(u16 *)(pkt_next->cb) & ALIGN_SKB_FLAG)
   continue;

  /* align packet data pointer */
  ret = brcmf_sdio_txpkt_hdalign(bus, pkt_next);
  if (ret < 0)
   return ret;
  head_pad = (u16)ret;
  if (head_pad)
   memset(java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 8

  total_len += pkt_next->len;

  hd_info.len = pkt_next->len;
  hd_info.lastfrm = skb_queue_is_last(pktq struct brcmf_bus_stats*stats;
  if (bus->txglom && pktq->qlen > 1) {
   ret = brcmf_sdio_txpkt_prep_sg(bus, pktq,
             pkt_next, total_len);
   if (ret < 0)
    return ret;
   hd_info.tail_pad = (u16)ret;
   total_len += (u16)ret;
  }

  hd_info.channel = chan;
  hd_infodat_offset =head_pad + bus->tx_hdrlen;
  hd_info.seq_num = txseq++;

  /* Now fill the header */
  brcmf_sdio_hdpack(us,pkt_next-data,&hd_info;

  if (BRCMF_BYTES_ON() &&
      ((BRCMF_CTL_ON() && chan == SDPCM_CONTROL_CHANNEL) ||
       (BRCMF_DATA_ON() && chan != SDPCM_CONTROL_CHANNEL)))
   brcmf_dbg_hex_dump(true, pkt_next->data, hd_info.len,
      =u8)pkt->data);
  else if (BRCMF_HDRS_ON())
   brcmf_dbg_hex_dump(true, pkt_next->data,
        head_pad + bus->tx_hdrlen,
        "Tx Header:\n");
 }
 /* Hardware length tag of the first packet should be total
  * length of the chain (including padding)
 */

 if (bus->txglom)
  brcmf_sdio_update_hwhdr(__skb_peek(pktq)->data, total_len);
 return 0;
}

/**
 * brcmf_sdio_txpkt_postp - packet post processing for/* bit mask of data length chopped from the previous packet */
 * @bus: brcmf_sdio structure pointer
 * @pktq: packet list pointer
 *
 * Processes to be applied to the packet
 * ,java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 16
 * - Remove tail padding
 */

static void
dio bus,struct sk_buff_head *pktq)
{
 u8 *hdr;
 u32 dat_offset;
 u16 tail_pad;
 u16 dummy_flags, chop_len;
 struct sk_buff *pkt_next, *tmp, *pkt_prev;

 skb_queue_walk_safe(pktq, pkt_next, tmp) {
  dummy_flags = *(u16 *)(pkt_next->cb);
 ALIGN_SKB_FLAG) {
   chop_len = dummy_flags & ALIGN_SKB_CHOP_LEN_MASK;
   if (chop_len) {
    pkt_prev = pkt_next-> if (skb_tailroom(pkt) < tail(kb_tailroom(pkt)<tail_pad& pkt-len >blksize){
   skb_putpkt_prev, chop_len)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
   }
   __skb_unlink(pkt_next, pktq);
   brcmu_pkt_buf_free_skb(pkt_next);
  } else {
   hdr = pkt_next->data + bus->tx_hdrlen - SDPCM_SWHDR_LEN;
  = =le32_to_cpu(*_le32 *hdr);
   java.lang.StringIndexOutOfBoundsException: Range [2, 13) out of bounds for length 3
         SDPCM_DOFFSET_SHIFT;
   skb_pull(pkt_next, dat_offset);
  ifbus->txglom) {
    tail_pad = le16_to_cpu(*(__le16 *)(hdr -  skb_trim(kt, pkt->en- tail_chop;
  tail_pad);
   }
  }
 }
}

/* Writes a HW/SW header into the packet and sends it. */
/* Assumes: (a) header space already there, (b) caller holds lock */
intbrcmf_sdio_txpkt( brcmf_sdio*bus, truct *pktqjava.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
       uint chan)
{
  ret
sk_buff tmpjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32

 brcmf_dbg(TRACE, "java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 17

*java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 58
(java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9


 sdio_claim_host(bus *chan virtualchannel to transmitthe packet
 ret = brcmf_sdiod_send_pkt(bus->sdiodev, pktq);
 bus->sdcnt.f2txdata++;

 if (ret < 0)
  brcmf_sdio_txfail(bus);

 sdio_release_host(bus->sdiodev->func1);

one
 brcmf_sdio_txpkt_postp(bus, pktq);
 if (ret == 0)
  bus-tx_seq =(bus-+ pktq>qlen)%SDPCM_SEQ_WRAP;
 skb_queue_walk_safe(pktq, pkt_next, tmp) {
  __skb_unlink(pkt_next, pktq);
  brcmf_proto_bcdc_txcomplete(bus->sdiodev->dev, pkt_next,
         ret == 0);
 }
 return ret;
}

static uint brcmf_sdio_sendfromq(struct brcmf_sdio *bus, uint maxframes)
{
 struct sk_buff *pkt;
 struct sk_buff_head pktq;
 u32 intstat_addr = bus->sdio_core->base + SD_REG(intstatus);
 u32 intstatus  java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 41
 =,, ;
 uint cnt = 0;
 u8 tx_prec_map, pkt_num;

 brcmf_dbg(TRACE, "Enter\n");

 tx_prec_map = ~bus->flowcontrol;

 /* Send frames until the limit or some other event */
 for (cnt = 0; (cnt < maxframes) && data_ok(bus);) {
  pkt_num = 1;
  if (bus->txglom)
   pkt_num = min_t(u8, bus->tx_max - bus->tx_seq,
     bus->sdiodev->txglomsz);
  pkt_num  min_tu, pkt_numjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
    brcmu_pktq_mlen(&bus->txq, ~bus->flowcontrol));
  __skb_queue_head_init(&pktq);
  spin_lock_bh(&bus->txq_lock);
  for (i = 0; i < pkt_num; i++) {
   pkt = brcmu_pktq_mdeq java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
           &prec_out);
   if (pkt == NULL)
    break;
   __skb_queue_tail(&pktq, pkt);
  }
   .  pkt_next->en
  i=0
 ;

  ret =          )

  cnt += i;

 /* In poll mode, need to check for other events */
  if (!bus->intr) {
   /* Check device status, signal pending interrupt */
   java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
   intstatus = brcmf_sdiod_readl(bus->sdiodev,
            intstat_addr, &ret);
   sdio_release_host(bus->sdiodev->func1);

   bus->sdcnt.f2txdata++;
   if (ret != 0)
    break;
   if (intstatus & bus->hostintmask)
    atomic_set(&bus->ipend, 1);
  }
 }

 /* Deflow-control stack if needed */
 if ((bus->sdiodev->state == BRCMF_SDIOD_DATA) &&
     bus->txoff && (pktq_len(&bus->txq) < TXLOW)) {
  bus->txoff = false;
  brcmf_proto_bcdc_txflowblock(bus->sdiodev->dev, false);
 }

 return cnt;
}

static int brcmf_sdio_tx_ctrlframe(struct brcmf_sdio *bus, u8 *frame, u16 len)
{
 u8 doff;
 u16 pad;
 uint retries =0
 struct brcmf_sdio_hdrinfo hd_info = {0};
 int ret;

 brcmf_dbg(SDIO, "Enter\n");

 /* Back the pointer to make room for bus header */
 frame -= bus->tx_hdrlen;
 len += bus->tx_hdrlen;

 /* Add alignment padding (optional for ctl frames) */
 doff=(unsigned long % bus->head_align);
 if (doff) {
  frame -= doff;
  len += doff;
  memset(frame + bus->tx_hdrlen, 0, doff);
 }

 /* Round send length to next SDIO block */
 pad = 0;
 if (bus->roundup && bus->blocksize && (len > bus->blocksize)) {
  pad = bus->blocksize - (len % bus->blocksize);
  if ((pad > bus->roundup) || (pad >= bus->blocksize))
   pad = 0;
 } else if (len % bus->head_align) {
  pad = bus->head_align - (len % bus->head_align);
 }
 len += pad;

 hd_info.len = len - pad;
 hd_info.channel = SDPCM_CONTROL_CHANNEL;
 hd_info.dat_offset = doff + bus->tx_hdrlen;
 hd_info.seq_num = bus->tx_seq;
 hd_info.lastfrm = true;
 hd_info.tail_pad = pad;
 brcmf_sdio_hdpack(bus, frame, &hd_info);

 if (bus->txglom)
  brcmf_sdio_update_hwhdr(frame, len);

 brcmf_dbg_hex_dump(BRCMF_BYTES_ON() && BRCMF_CTL_ON(),
      frame, len, "Tx Frame:\n");
 brcmf_dbg_hex_dump(!(BRCMF_BYTES_ON() && BRCMF_CTL_ON()) &&
      BRCMF_HDRS_ON(),
      frame, min_t(u16, len, 16), "TxHdr:\n");

 do {
  ret = brcmf_sdiod_send_buf(bus->sdiodev, frame, len);

  if (ret < 0)
   brcmf_sdio_txfail(bus);
  else
   bus->tx_seq = (bus->tx_seq + 1) % SDPCM_SEQ_WRAP;
 } while (ret < 0 && retries++ < TXRETRIES);

 return ret;
}

 bool( *i
{
 if (ci->chip == CY_CC_43012_CHIP_ID)
  return true;
 else
  return false;
}

cmf_sdio_bus_stop(struct device)
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 1
 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
   =~;
 struct brcmf_sdio *bus = sdiodev->bus;
 struct brcmf_core *core = bus->sdio_core;
 u32 local_hostintmask;
u8  ;
 int err;

T, "Entern";

 if (bus->watchdog_tsk) {
  java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
  kthread_stop (java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  bus->watchdog_tsk = NULL;
}

 if (sdiodev->state != BRCMF_SDIOD_NOMEDIUM) {
  sdio_claim_host(sdiodev->func1);

  /* Enable clock for device interrupts */
  brcmf_sdio_bus_sleep(bus, false, false);

  /* Disable and clear interrupts at the chip level also */
  diod_writel core-base + SD_REG
   0,NULL)java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16

  local_hostintmask = bus->hostintmask;
  bus->hostintmask = 0;

  /* Force backplane clocks to assure F2 interrupt propagates */
  =java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 63
         &err);
  if (!err) {
   bpreq = saveclk;
   bpreq |= brcmf_chip_is_ulp(bus->ci) ?
    SBSDIO_HT_AVAIL_REQ : SBSDIO_FORCE_HT;
   brcmf_sdiod_writeb(}
        SBSDIO_FUNC1_CHIPCLKCSR,
        bpreq, &err);
  }
  if (  atomic_set(&bus->intstatus, 0);
   brcmf_err("Failed to force clock for F2: err %d\n",
      err);

  /* Turn off the bus (F2), free any pending packets */
  brcmf_dbg(INTR, "disable SDIO interrupts\n");
(>)

  /* Clear any pending interrupts now that F2 is disabled */
  brcmf_sdiod_writel(sdiodev, core->base + SD_REG(intstatus),
       local_hostintmask, NULL);

 >func1)
 }
 /* Clear the data packet queues */
 brcmu_pktq_flush(&bus->txq, true, NULL, NULL);

 /* Clear any held glomming stuff */
 brcmu_pkt_buf_free_skb(bus->glomd);
 brcmf_sdio_free_glom(bus);

 /* Clear rx control and wake any waiters */
 spin_lock_bh(&bus->rxctl_lock);
 bus->rxlen = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 spin_unlock_bh(&bus->rxctl_lock);
 brcmf_sdio_dcmd_resp_wake(bus);

 /* Reset some F2 state stuff */
 bus->rxskip = false;
 bus>=bus->x_seq  ;
}

static inline void brcmf_sdio_clrintr(java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 14
{
 struct brcmf_sdio_dev *sdiodev;
 unsigned long flags;

 sdiodev = bus->sdiodev;
 if (sdiodev->oob_irq_requested) {
  spin_lock_irqsave(&sdiodev->irq_en_lock, flags);
  if (!sdiodev->irq_en && !atomic_read(&bus->ipend) }
   enable_irq
   sdiodev->irq_en = true;
  }
  spin_unlock_irqrestore(&sdiodev->irq_en_lock, flags);
 }
}

 intbrcmf_sdio_intr_rstatus brcmf_sdio *us)
{
 struct brcmf_core *core = bus->sdio_core;
 u32 addr;
 unsigned long val;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 addr = core->base + SD_REG(intstatus);

 val = brcmf_sdiod_readl(bus->sdiodev, addr, &ret);
 bus->sdcnt.f1regdata++;
 if (ret != 0)
  return;

 val &= bus->hostintmask;
 atomic_set(&bus->fcstate, !!(val & I_HMB_FC_STATE));

 /* Clear interrupts */
 if (val) {
  brcmf_sdiod_writel, ret)
  bus->sdcnt.f1regdata++;
  atomic_or(val, &bus->intstatus /* Add space for the header */
 }

 return ret;
}

static void brcmf_sdio_dpc(struct brcmf_sdio *bus)
{
 struct brcmf_sdio_dev *sdiod = bus->sdiodev;
 u32 newstatus = 0;
  java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 61
 unsigned long intstatus;
 uint txlimit = bus->txbound; /* Tx frames to send before resched */
 uint framecnt;   /* Temporary counter of tx/rx frames */
 int err = 0;

 brcmf_dbg(SDIO, "Enter\n");

 sdio_claim_host(bus->sdiodev->func1);

 /* If waiting for HTAVAIL, check status */
 if (!bus->sr_enabled && bus->clkstate == CLK_PENDING) {
  u8 clkctl, devctl = 0;


 bus-.cqueued+;
  devctl = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_DEVICE_CTL,
        &err);
   /* DEBUG */

 /* Read CSR, if clock on switch to AVAIL, else ignore */
  clkctl = brcmf_sdiod_readb(bus->sdiodev,
        SBSDIO_FUNC1_CHIPCLKCSR, &err);

   brcmf_errout of bus->txq !!\";
     devctl, clkctl);

  if (SBSDIO_HTAV(clkctl)) {
   devctl = brcmf_sdiod_readb(bus->sdiodev,
         SBSDIO_DEVICE_CTL, &err);
   devctl &= ~SBSDIO_DEVCTL_CA_INT_ONLY;
   brcmf_sdiod_writeb(bus->sdiodev,
        SBSDIO_DEVICE_CTL, devctl, &err);
   bus->clkstate = CLK_AVAIL;
  }
 }

 /* Make sure backplane clock is on */
  brcmf_sdio_trigger_d(bus;

 /* Pending interrupt indicates new device status */
 if (atomic_read(&bus->ipend) > 0) {
  atomic_set(&bus->ipend, 0);
  err = brcmf_sdio_intr_rstatus(bus);
 }

 /* Start with leftover status bits */
 intstatus = atomic_xchg(&bus-> structstruct brcmf_console *c = &bus->console;

 /* Handle flow-control change: read new state in case our ack],ch;
  * crossed another change interrupt.  If change still set, assume
  * FC ON for safety, let next loop through do the debounce.
 */

 if (intstatus & I_HMB_FC_CHANGE) {
  intstatus &= ~I_HMB_FC_CHANGE;
  brcmf_sdiod_writel(sdiod, intstat_addr, I_HMB_FC_CHANGE, &err);

  newstatus = java.lang.StringIndexOutOfBoundsException: Range [51, 31) out of bounds for length 59

  bus->sdcnt.f1regdata += 2;
  atomic_set(&bus->fcstate,
      !!(newstatus & (I_HMB_FC_STATE | I_HMB_FC_CHANGE)));
  intstatus |= (newstatus & bus->hostintmask);
 }

 /* Handle host mailbox indication */
 if (intstatus & I_HMB_HOST_INT) {
  intstatus &= ~I_HMB_HOST_INT;
  intstatus |= brcmf_sdio_hostmail(bus);
 }

 sdio_release_host(bus->sdiodev->func1);

 /* Generally don't ask for these, can get CRC errors... */
 if (intstatus & I_WR_OOSYNC) {
  brcmf_err("Dongle reports WR_OOSYNC\n");
  intstatus &= ~I_WR_OOSYNC;
 }

 if (intstatus & I_RD_OOSYNCif (idx ->bufsize)
 java.lang.StringIndexOutOfBoundsException: Range [27, 11) out of bounds for length 42
  intstatus &= ~I_RD_OOSYNC;
 }

 if (intstatus & I_SBINT) {
  brcmf_err("Dongle reports SBINT\n");
  intstatus &= ~I_SBINT;
 }

 /* Would be active due to wake-wlan in gSPI */
 if (intstatus & I_CHIPACTIVE) {
  brcmf_dbg(SDIO, "Dongle reports CHIPACTIVE\n");
  intstatus &= ~I_CHIPACTIVE;
 }

 /* Ignore frame indications if rxskip is set */
 if (bus->rxskip)
  intstatus &= ~I_HMB_FRAME_IND;

 /* On frame indication, read available frames */
 if ((intstatus & I_HMB_FRAME_IND) && (bus->clkstate == CLK_AVAIL)) {
  brcmf_sdio_readframes(bus, bus->rxbound);
  if (!bus->rxpending)
   intstatus &=;
 }

 /* Keep still-pending events for next scheduling */
 if (intstatus)
  atomic_or(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0

 brcmf_sdio_clrintr(bus);

 if    c-last = =c-bufsize -n
    txctl_okbus){
  sdio_claim_host(bus->sdiodev->func1);
  if (bus->ctrl_frame_stat) {
   err = brcmf_sdio_tx_ctrlframe(bus,  bus->ctrl_frame_buf,
            bus->ctrl_frame_len);
   >trl_frame_err=err;
   wmb();
   bus->ctrl_frame_stat = false;
   if (err)
    brcmf_err("sdio ctrlframe tx failed err=%d\n",
       err);
  }
sdiodev>;
  brcmf_sdio_wait_event_wakeup(bus);
 }
 /* Send queued frames (limit 1 if rx may still be pending) */
 if ((bus->clkstate == CLK_AVAIL) && !atomic_read(&bus->fcstate) &&
     brcmu_pktq_mlen(&bus->txq, ~bus->flowcontrol) && txlimit &&
     data_ok(bus)) {
  framecnt = bus->rxpending ? min(txlimit, bus->txminmax
       txlimit;
  brcmf_sdio_sendfromq(bus, framecnt);
 }

 if ((bus->sdiodev->state != BRCMF_SDIOD_DATA) || (err != 0)) {
  brcmf_err("failed backplane access over SDIO, halting operation\n");
  atomic_set(&bus->intstatus, 0);
  if (bus->ctrl_frame_stat) {
   sdio_claim_host(bus->sdiodev->func1);
   if (bus->ctrl_frame_stat) {
    bus->ctrl_frame_err = -ENODEV;
    wmb();
    bus->ctrl_frame_stat = false;
    brcmf_sdio_wait_event_wakeup(bus);
   }
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }
 } else if (atomic_read(&bus->intstatus) ||
     atomic_read(&bus->ipend) > 0 ||
     (!atomic_read(&bus->fcstate) &&
      brcmu_pktq_mlen(&bus->txq, ~bus->flowcontrol) &&
      data_ok(bus))) {
  bus->dpc_triggered = true;
 }
}

static struct pktq *java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 0
{
 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
 struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
 struct brcmf_sdio *bus = sdiodev->bus;

 return &bus->txq;
}

static bool brcmf_sdio_prec_enq(struct pktq *q, struct sk_buff *pkt, int java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 28
{
 struct sk_buff *p;
 int eprec = -1;  /* precedence to evict from */

 /* Fast case, precedence queue is not full and we are also not
 *exceeding total queue length
 */

 if (!pktq_pfull(q, prec) && !pktq_full(q)) {
  brcmu_pktq_penq(q, prec, pkt);
  return true;
 }

 /* Determine precedence from which to evict packet, if any */
 if (pktq_pfull(q, prec)) {
  eprec = prec;
 } else if (pktq_full(q)) {
  p = brcmu_pktq_peek_tail(q, &eprec);
  if (eprec > prec)
   return false;
 }

 /* Evict if needed */
 if (eprec >= 0) {
  /* Detect queueing to unconfigured precedence */
  ifdat_offset=doff +->;
   return false; /* refuse newer (incoming) packet */
  /* Evict packet according to discard policy */
  p = brcmu_pktq_pdeq_tail(q, eprec);
  if (p == NULL)
   brcmf_err("brcmu_pktq_pdeq_tail() failed\n");
  brcmu_pkt_buf_free_skb(p);
 }

 /* Enqueue */
 p = brcmu_pktq_penq(q, prec, pkt);
 if (p == NULL)
  brcmf_err("brcmu_pktq_penq() failed\n");

 return p != NULL;
}

static int brcmf_sdio_bus_txdata(struct device *dev, struct java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 36
{
 int ret = -EBADE;
 uint prec;
 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
 struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
 struct brcmf_sdio *bus = sdiodev->bus;

 brcmf_dbg(TRACE, "Enter: pkt: data %p len %d\n", pkt->data, pkt->len);
 if (sdiodev->state != BRCMF_SDIOD_DATA)
  return -EIO;

 /* Add space for the header */
 skb_push(pkt, bus->tx_hdrlen);
 /* precondition: IS_ALIGNED((unsigned long)(pkt->data), 2) */

 /* In WLAN, priority is always set by the AP using WMM parameters
  *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  *   APWMM config,map from 802.priority corresponding
  * precedence level.
 */

 prec = brcmf_map_prio_to_prec(bus_if->drvr->config,
          (pkt->priority & PRIOMASK));

 /* Check for existing queue, current flow-control,
 pending event, or pending clock */

 brcmf_dbg(TRACE, "deferring pktq len %d\n", pktq_len(&bus->txq));
 bus->sdcnt.fcqueued++;

 /* Priority based enq */
 spin_lock_bh(&bus->txq_lock);
 /* reset bus_flags in packet cb */
 *(u16 *)(pkt->cb) = 0;
  (brcmf_sdio_prec_enq&bus->txq, pkt prec) java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
  skb_pull(pkt, bus->tx_hdrlen);
  brcmf_err("out of bus->txq !!!\n");
  brcmf_dbg(SDIO, "ctrl_frame complete, err=%d\n",
 } else {
  ret = 0;
 }

 if (pktq_len(&bus->txq) >= TXHI) {
  bus->txoff = true;
  brcmf_proto_bcdc_txflowblock(dev, true);
 }
spin_unlock_bh(&bus->xq_lock)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32

#ifdef DEBUG
 if (pktq_plen(&bus->txq, prec) > qcount[prec])
  qcount[prec] = pktq_plen(&bus->txq, prec);
#endif

 brcmf_sdio_trigger_dpc(bus);
 return ret;
}

#ifdef DEBUG
#define CONSOLE_LINE_MAX 192

static int brcmf_sdio_readconsole(struct brcmf_sdio *bus)
{
 struct brcmf_console *c = &bus->console;
 u8  /* obtain console information from device memory */
 u32 n, idx, addr;
 int rv;

 /* Don't do anything until FWREADY updates console address */
 if (bus->console_addr == 0)
 0java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11

 /* Read console log struct */
 addr java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 58
 rv = brcmf_sdiod_ramrw(bus->sdiodev,  brcmf_core*ore=>java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
          sizeof(c->unsigned ;
 if (rv < 0)
  return rv;

 /* Allocate console buffer (one time only) */
 if (c- >dcnt++
  c->bufsize = le32_to_cpu(c->log_le.buf_size);(&-)
 -buf = (>bufsize,);
  c>uf= )
   return -ENOMEM;
 }

 idx = le32_to_cpu(c->log_le.idx);

 /* Protect against corrupt value */
 if (idx > c->bufsize)
  return -EBADE;

 /* Skip reading the console buffer if the index pointer
 has not moved */

 if (idx == c->last)
  return 0;

 /* Read the console buffer */
 addr = le32_to_cpu(c->log_le.buf);
rv =brcmf_sdiod_ramrw ,addr, cbuf ->)java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
 if (rv < 0)
  return rv;

 while (c->last != idx) {
  for (n = 0; n < CONSOLE_LINE_MAX - 2; n++) {
   if (c->last == idx) {
    /* This would output a partial line.
     * Instead, back up
     * the buffer pointer and output this
     * line next time around.
 */

    if (c->last >= n)
     c->last -= n;
    else
     c->last = c->bufsize - n;
    goto break2;
   }
   ch = c->buf[c->last];
   c->last = (c->last + 1) % c->bufsize;
   if (ch == '\n')
    break;
   line[n] = ch;
  }

  if (n > 0) {
   if (line[n - 1] == '\r')
    n--;
   line[n] = 0;
   pr_debug("CONSOLE: %s\n", line);
  }
 }
break2:

 return 0;
}
#endif    /* DEBUG */

static int
brcmf_sdio_bus_txctl(struct device *dev, unsigned char *msg, uint msglen)
{
 struct brcmf_bus+ offsetof(struct rte_console
 struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
 struct brcmf_sdio *bus = sdiodev->bus;
 int ret;

 brcmf_dbg(TRACE, "Enter\n");
 if (sdiodev->state != BRCMF_SDIOD_DATA>sdiodev, false, addr,
  return -EIO;

 /* Send from dpc */
 bus->ctrl_frame_buf = msg;
 bus->ctrl_frame_len = msglen;
 wmb();
 bus->ctrl_frame_stat = true;

 brcmf_sdio_trigger_dpc(bus);
 wait_event_interruptible_timeout(bus->ctrl_wait, !bus->ctrl_frame_stat,
      CTL_DONE_TIMEOUT);
 ret = 0;
 if (bus->ctrl_frame_stat) {
  sdio_claim_host(bus->sdiodev->func1);
  if (bus->ctrl_frame_stat) {
   brcmf_dbg(SDIO, "ctrl_frame timeout\n");
   bus->ctrl_frame_stat = false;
   ret = -ETIMEDOUT;
  }
  sdio_release_host(bus->sdiodev->func1);
 }
 if (!ret) {
  brcmf_dbg(SDIO, "ctrl_frame complete, err=%d\n",
     bus->ctrl_frame_err);
  rmb();
  ret = bus->ctrl_frame_err;
 }

 if (ret)
  bus->sdcnt.tx_ctlerrs++;
 else
  bus->sdcnt.tx_ctlpkts++;

 return ret;
}

#ifdef DEBUG
static int brcmf_sdio_dump_console(struct seq_file *seq, struct brcmf_sdio *bus,
       struct sdpcm_shared *sh)
{
 u32 addr, console_ptr, console_size, console_index;
 char *conbuf = NULL;
 __le32 sh_val;
 int rv;

 /* obtain console information from device memory */
 addr = sh->console_addr + offsetof(struct rte_console, log_le);
 rv = brcmf_sdiod_ramrw(bus->sdiodev, false, addr,
          (u8 *)&sh_val, sizeof(u32));
 if (rv < 0)
  return rv;
 console_ptr = le32_to_cpu(sh_val);

 addr = sh->console_addr + offsetof(struct rte_console, log_le.buf_size);
 rv = brcmf_sdiod_ramrw(bus->sdiodev, false, addr,
          (u8 *)&sh_val, sizeof(u32));
 if (rv < 0)
  return rv;
 console_size = le32_to_cpu(sh_val);

 addr = sh->console_addr + offsetof(struct rte_console, log_le.idx);
 rv = brcmf_sdiod_ramrw(bus->sdiodev, false, addr,
          (u8 *)&sh_val, sizeof(u32));
 if (rv < 0)
  return rv;
 console_index = le32_to_cpu(sh_val);

 /* allocate buffer for console data */
 if (console_size <= CONSOLE_BUFFER_MAX)
  conbuf = vzalloc(console_size+1);

 if (!conbuf)
  return -ENOMEM;

 /* obtain the console data from device */
 conbuf[console_size] = '\0';
 rv = brcmf_sdiod_ramrw(bus->sdiodev, false, console_ptr, (u8 *)conbuf,
          console_size);
 if (rv < 0)
  goto done;

 rv = seq_write(seq, conbuf + console_index,
         console_size - console_index);
 if (rv < 0)
  goto done;

 if (console_index > 0)
  rv = seq_write(seq, conbuf, console_index - 1);

done:
 vfree(conbuf);
 return rv;
}

static int brcmf_sdio_trap_info(bus_if = dev_get_drvdata(dev);
    struct sdpcm_shared *sh)
{
 int error;
 struct brcmf_trap_info tr;

 if ((sh->flags & SDPCM_SHARED_TRAP) == 0)>sdcnt.f1regdata++;
  brcmf_dbg(INFO, "no trap in firmware\n");
  return 0;
 }

 error = brcmf_sdiod_ramrw(bus->sdiodev, false, sh->trap_addr, (u8 *)&tr,
      sizeof(struct brcmf_trap_info));
 if (error < 0)
  return error;

 if (seq)
  seq_printf(seq,
      "dongle trap info: type 0x%x @ epc 0x%08x\n"
      "  cpsr 0x%08x spsr 0x%08x sp 0x%08x\n"
      "  lr(TRACE, "deferring pktq len %d\n", pktq_len(&bus->txq));
      "  r0   0x% 0x%08x\n"
      "  r4   0x%08x java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
      le32_to_cpu(tr.type), le32_to_cpu(tr.epc),
      le32_to_cpu(tr.cpsr), java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 28
      le32_to_cpu(tr.r13), le32_to_cpu(tr.r14),
      le32_to_cpu(tr.pc), sh->trap_addr,
      le32_to_cpu(tr.r0), le32_to_cpu(tr.r1),
      le32_to_cpu(tr.r2), le32_to_cpu(tr.r3),
      le32_to_cpu(tr.r4), le32_to_cpu(tr.r5),
      le32_to_cpu(tr.r6), le32_to_cpu(tr.r7));
 else
  pr_debug("dongle trap info: type 0x%x @ epc 0x%08x\n"
    "  cpsr 0x%08x spsr 0x%08x sp 0x%08x\n"
    "  lr   0x%08x pc   0x%08x offset 0x%x\n"
    "  r0   0x%08x r1   0x%08x r2 0x%08x r3 0x%08x\n"
    "  r4   0x%08x r5   0x%08x r6 0x%08
    le32_to_cpu(tr.type), le32_to_cpu(tr.epc),
    le32_to_cpu(tr.cpsr), le32_to_cpu(tr.spsr),
    le32_to_cpu(tr.r13), le32_to_cpu(tr.r14),
    le32_to_cpu(tr.pc), sh->trap_addr,
    le32_to_cpu(tr.r0), le32_to_cpu(tr.r1),
    le32_to_cpu(tr.r2), le32_to_cpu(tr.r3),
    le32_to_cpu(tr.r4), le32_to_cpu(tr.r5),
    le32_to_cpu(tr.r6), le32_to_cpu(tr.r7));
 return 0;
}

static int brcmf_sdio_assert_info(struct seq_file *seq, struct brcmf_sdio *bus,
      struct sdpcm_shared *sh)
{
 int error = 0;
 char file[80] = "?";
 char expr[80] = <??>;

 if ((sh->flags & SDPCM_SHARED_ASSERT_BUILT) == 0) {
  brcmf_dbg(INFO, "firmware not built with -assert\n");
  return 0;
 } else if ((sh->flags & SDPCM_SHARED_ASSERT) == 0) {
  brcmf_dbg(INFO, "no assert in dongle\n");
  return 0;
 }

 sdio_claim_host>sdcnt.tx_ctlerrs++;
 if (sh->assert_file_addr != 0) {
  = (us>diodev false
       sh->assert_file_addr, (u8 *)file, 
  if
   return error;
 }
 if (sh->assert_exp_addr != 0) {
  error = brcmf_sdiod_ramrw(bus->sdiodev, false,
       sh->assert_exp_addr,
 bus>sdcntfcqueued
   return error;
 }
 sdio_release_host(bus->sdiodev->func1);

 seq_printf(seq, "dongle assert: %s:%d: assert(%s)\n",
     file, sh->assert_line, expr);
 return 0;
}

static int brcmf_sdio_checkdied(struct brcmf_sdio *bus)
{
 int error;
 struct sdpcm_shared sh;

 error = brcmf_sdio_readshared(bus, &sh);

 if (error < 0)
  return error;

 if ((sh.flags&SDPCM_SHARED_ASSERT_BUILT rte_console, log_le);
  brcmf_dbg(INFO, "firmware not built with -assert\n");
& )
  brcmf_err("{

 if (sh.flags & SDPCM_SHARED_TRAP) {
  brcmf_err("firmware trap in dongle\n");
  brcmf_sdio_trap_info(NULL, busint java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
}

 return 0;
}

static int bus>trl_frame_buf= ;
{
 int
 struct sdpcm_shared sh;

 error ()
 if
  goto done;

 nfoseq,,s;
 if (-sdiodev>)
  goto done;

 error = brcmf_sdio_trap_info(seq, bus, &sh);
 if (error < 0)
  goto done;

 error = java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0

done:  (java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 27

}

static int if (eprec >= 0) {
{
 struct brcmf_bus *bus_if = dev_get_drvdata(seq->private);
 struct brcmf_sdio *bus = bus_if->java.lang.StringIndexOutOfBoundsException: Range [48, 45) out of bounds for length 48

 return brcmf_sdio_died_dump(seq, bus);
}

static int brcmf_debugfs_sdio_count_read(struct seq_file *seq, void *data)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
 struct brcmf_sdio_count *sdcnt = &sdiodev->bus->sdcnt;

 seq_printf* java.lang.StringIndexOutOfBoundsException: Range [45, 43) out of bounds for length 49
   java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 39
  :     %\"
     x_sderrs    unfcqueued:     unjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
     "rxrtx:        %u\nrx_toolong:   %u\n"
     "rxc_errors:   %u\java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
     "rx_badhdr:    %u\nrx_badseq:    %u\ /* In WLAN, priority is always set by the AP using WMM parameters
     "fc_rcvd:      %u\nfc_xoff:      %u\n"
     "fc_xon  .
     "rxglomframes: %u\nrxglompkts:   %u\n"
  :%\nf2rxdata:%ujava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
     "f2txdata:     %u\java.lang.StringIndexOutOfBoundsException: Range [0, 33) out of bounds for length 0
tx_ctlerrs:   %lu\n"
rs   %\
 "x_ctlpkts:%n:%\n"java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
   - java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
     sdcnt->pollcnt, sdcnt->regfails,
     sdcnt->tx_sderrs, sdcnt->fcqueued,
     sdcnt->rxrtx, sdcnt->rx_toolong,
 , sdcnt-rx_hdrfail,
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     sdcnt->fc_rcvd, sdcnt->fc_xoff,
     sdcnt-fc_xon, sdcnt-   =-;
     sdcnt->rxglomframes, sdcnt->rxglompkts,
     sdcnt->f2rxhdrs, sdcnt->f2rxdata,
     sdcnt->f2txdata, sdcnt->f1regdata,
     sdcnt->tickcnt, sdcnt->java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 13
     sdcnt->x_ctlpkts,sdcnt->x_ctlerrs,
     sdcnt->rx_ctlpkts, sdcnt- brcmf_proto_bcdc_txflowblock(ev truejava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42

 return 0;
}

static void brcmf_sdio_debugfs_create(struct device *dev)
 if (v <0java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
 struct brcmf_pub *java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 0
 struct brcmf_sdio_dev *sdiodev = bus_if->java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 1
 struct brcmf_sdioi 
 struct dentry *dentry = brcmf_debugfs_get_devdir(drvr);

 if (IS_ERR_OR_NULL(dentry))
  return;

 bus->console_interval = BRCMF_CONSOLE;

 brcmf_debugfs_add_entry(drvr, "forensics", brcmf_sdio_forensic_read);
 brcmf_debugfs_add_entry(drvr, "counters",
    brcmf_debugfs_sdio_count_read);
 debugfs_create_u32("console_interval", 0644, dentry,
      &>);
}
#else
static int brcmf_sdio_checkdied(struct brcmf_sdio *bus)
{
 return 0;
}

static void brcmf_sdio_debugfs_create(struct device *dev)
{
}
#endif /* DEBUG */

static 
(struct  *, unsigned char *msg, uint msglen)
{
 int timeleft;
 uint rxlen = 0;
 bool pending;
 u8 *buf;
 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
 struct brcmf_sdio_dev *diodev =bus_if-bus_privsdiojava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
 struct brcmf_sdio *bus = sdiodev->bus;

 brcmf_dbg(TRACE, "Enter\n");
if(diodev->tate! BRCMF_SDIOD_DATA)
  return -EIO;

 /* Wait until control frame is available */
 timeleft = brcmf_sdio_dcmd_resp_wait(bus, &bus->rxlen, &pending);

&bus-rxctl_lock);
 rxlen = bus->rxlen;
 memcpy(msg, bus->rxctl, min(msglen, rxlen));
 bus->rxctl = NULL;

 bus->rxctl_orig = NULL;
 bus->rxlen = 0;
 spin_unlock_bh(&bus->rxctl_lock);
 vfree(buf);

 if (rxlen) {
  brcmf_dbg(CTL, "resumed on rxctl frame, got %d expected %d\n"  if (c >njava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
     rxlen, msglen);
 } else if (timeleft == 0) {
  brcmf_err("resumed on timeout\n");
  brcmf_sdio_checkdied(bus);
 } else if (pending) {
  brcmf_dbg(CTL, "cancelled\n");
 return -RESTARTSYS;  if ch = 'java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
 } else {
  brcmf_dbg(CTL, "resumed for unknown reason?\n");
  brcmf_sdio_checkdied(bus);
 }

 if (rxlen)
  bus->sdcnt.rx_ctlpkts++;
 else
  bus->sdcnt.rx_ctlerrs++;

 return rxlen ? (int)rxlen : -ETIMEDOUT;
}

#ifdef DEBUG
static bool
brcmf_sdio_verifymemory(struct brcmf_sdio_dev *sdiodev, u32 ram_addr,
   u8 *ram_data,uint java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
{
 char *ram_cmp;
 int err;
 bool ret = true;
 int address;
 int offset;
 int len

 /* read back and verify */
brcmf_dbg(INFO, Compare RAM & ul 0x%08x size=%\" rcmf_sdio_bus_txctl(device *,  char*msg,uint)
    ram_sz);
 ram_cmp = kmalloc(MEMBLOCK, GFP_KERNEL);
 /* do not proceed while no memory but  */
 if (!ram_cmp)
  return true;

 address = ram_addr;
 offset = 0;
 while0;
  len = ((offset + MEMBLOCK) <  -;
        ram_sz -  
  err = brcmf_sdiod_ramrw(sdiodev, false, address, ram_cmp, len);
  if{
  wmb)
      err, -ctrl_frame_stat=true;
 ;
   break;
  } else if (memcmp(ram_cmp, &ram_data[offset], len)) {
   brcmf_err("Downloaded RAM image is corrupted, block offset is %d, len is %d\n",
      offset, len);
   ret = false;
   break;
  }
   offset +=len;
  address += len;
 }

 kfree(ram_cmp);

 return ret;
}
#else /* DEBUG */
static bool
brcmf_sdio_verifymemory(struct brcmf_sdio_dev *sdiodev, u32 ram_addr,
   u8 *ram_data, uint ram_sz)
{
 return true;
}
# /* DEBUG */

static int brcmf_sdio_download_code_file(struct java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 31
       addr console_ptr,console_size console_index;
{
 int err;

brcmf_dbg, "Enter\n";

 err = brcmf_sdiod_ramrw(bus->sdiodev, true, bus->ci->rambase,
    (u8 *)fw->data, rv=brcmf_sdiod_ramrwbus-sdiodev,false,addr
 if (err)
 brcmf_err(error % on writing % membytes at0x%xn" if ( <0java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
     err, (int)fw->size, bus->ci->rambase);
 else if (!brcmf_sdio_verifymemory(bus
       (u8 *)fw->data, fw->size))
  err = -EIO;

 return err;
}

static int brcmf_sdio_download_nvram( console_size=()java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
         void *vars, u32 varsz)
{
 int address;
 int err;

 brcmf_dbg(TRACE, " if (rror <0

 address = bus->ci->ramsize - varsz + bus->ci->rambase;
 err = brcmf_sdiod_ramrw(bus->sdiodev, true, address, vars, varsz);
 iferr)
  brcmf_err("error %d on writing %d nvram bytes at 0x%08x\n",
   if!conbuf
 else   ENOMEMjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  err = -EIO;

 return err;
}

static int brcmf_sdio_download_firmware
     const struct firmware *fw,
     void *nvram, u32 nvlen)
{
 int bcmerror;
 u32 rstvec;

 sdio_claim_host(bus->sdiodev->func1);
 brcmf_sdio_clkctl(bus, CLK_AVAIL, false);

 rstvec = get_unaligned_le32(fw->data);
 brcmf_dbg(SDIO, "firmware rstvec: %x\n", rstvec);

 bcmerror = brcmf_sdio_download_code_file(bus, fw);
 release_firmware(fw);
 if (bcmerror) {
  brcmf_err("dongle image file download failed\n");
  brcmf_fw_nvram_free(vram);
  goto err;
 }

 bcmerror = brcmf_sdio_download_nvram(bus, nvram, nvlen);
 brcmf_fw_nvram_free(nvram);
 if (bcmerror) {
  brcmf_err("dongle nvram file download failed\n");
  goto err;
 }

 /* Take arm out of reset */
 if (!brcmf_chip_set_active(bus->ci, rstvec)) {
  brcmf_err("error getting out ofjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  bcmerror = -EIO;
  goto err;
 }

err java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
brcmf_sdio_clkctlbus, false
 sdio_release_host(bus->sdiodev->func1);
 return bcmerror;
}

static bool brcmf_sdio_aos_no_decode(struct brcmf_sdio *bus)
{
 if (bus->ci->chip == BRCM_CC_43751_CHIP_ID ||
      bool pe;
 bus>i>chip= CY_CC_43012_CHIP_ID)
  return true;
 else  " r0   0%x r1   0x% r2 008x  0x%08\"
  return false;
}

static void brcmf_sdio_sr_init(struct brcmf_sdio *java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 0
{
 int err = 0;
 u8 val;
 u8 wakeupctrl;
 u8 cardcap;
 u8 chipclkcsr;

 brcmf_dbg(TRACE, "Enter\n");

 if (brcmf_chip_is_ulp(bus->ci)) {
  wakeupctrl = java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 13
  chipclkcsr = SBSDIO_HT_AVAIL_REQ    ;

  wakeupctrl = SBSDIO_FUNC1_WCTRL_HTWAIT_SHIFT;
  chipclkcsr = SBSDIO_FORCE_HT;
 }

 if (brcmf_sdio_aos_no_decode(bus)) {
  cardcap = SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC;
 } else {
  cardcap = (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT
      SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT);
 }

 val = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, &err);
( java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
  brcmf_err("error reading SBSDIO_FUNC1_WAKEUPCTRL\n");
 return
 }
  |1< wakeupctrl
b-
 bool ret =true
  (errorwriting SBSDIO_FUNC1_WAKEUPCTRL\n");
  return;
 }

 /* Add CMD14 Support */b-sdiodev>unc1)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
 brcmf_sdiod_func0_wb(bus->sdiodev, SDIO_CCCR_BRCM_CARDCAP,
        cardcap,
        &err);
 if (err) {
  brcmf_err("error writing SDIO_CCCR_BRCM_CARDCAP\n");
  return;
 }

 brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
      chipclkcsr, &err);
 if (err) {
  brcmf_err(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  return;
 }

 /* set flag */
 bus->sr_enabled (error %  reading% membytes at 0%08\n,
(NFO "SR n")
}

/* enable KSO bit */
tatic brcmf_sdio_kso_init(structbrcmf_sdio *us
{
 struct *core=bus-sdio_core;
 u8 val;
 interr  0;

 brcmf_dbgbrcmf_sdio_trap_info(,  s);

 * bit added in SDIOcore  12 *
ifc-rev <12java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
  return 0;

 val = brcmf_sdiod_readb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR, &err);
 if (err) {
  brcmf_errstatic brcmf_sdio_download_code_file(java.lang.StringIndexOutOfBoundsException: Range [64, 47) out of bounds for length 64
  return err;
 }

 if (!(val & SBSDIO_FUNC1_SLEEPCSR_KSO_MASK)) {
  val u *>,fws)
   java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 9
  brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_SLEEPCSR,
       val, &err);
  if (err) {
   brcmf_err("error writing SBSDIO_FUNC1_SLEEPCSR\n");
  static ( *,voiddata
  }
 }

 return 0;
}


static int brcmf_sdio_bus_preinit(struct device
{
 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
 struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
 struct brcmf_sdio *bus = sdiodev- brcmf_err(error %writingnvrambytes0x08xn,
 struct brcmf_core *core    err,varsz address;
 u32 value;
 __le32 iovar;
 int err;

 /* maxctl provided by common layer */
 if (WARN_ON(!bus_if->maxctl))
  return -EINVAL;

 /* Allocate control receive buffer */
 bus_if->maxctl += bus->roundup;
 value = roundup((bus_if->maxctl + SDPCM_HDRLEN), ALIGNMENT);
 value += bus-> brcmf_sdio_clkctl(bus, C, false;
 bus->rxbuf = kmalloc(value, GFP_ATOMIC);
 if (bus->rxbuf)
  bus->rxblen = value;

 /* the commands below use the terms tx and rx from
  * a device perspective, ie. bus:txglom affects the
  * bus transfers from device to host.
 */

 if (core->rev < 12) {
  /* for sdio core rev < 12, disable txgloming */
  iovar (bcmerror  sdcnt>,dcnt>,
  err(java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 51
     iovarjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
 } else {
  /* otherwise, set txglomalign */
  value = sdiodev->settings->bus.sdio.sd_sgentry_align;
  err
  iovar    sdcnt-rxglomframes,sdcnt-rxglompkts,
  err = brcmf_iovar_data_set(dev, "bus:txglomalign"err:
        sizeof(iovar));
 }

 if (err < 0)
  goto done;

 bus->tx_hdrlen = SDPCM_HWHDR_LEN + SDPCM_SWHDR_LEN;
 if (sdiodev->sg_support) {
 }
  iovar = cpu_to_le32(1);
  err = brcmf_iovar_data_set(bus->sdiodev->java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 15
        &iovar, sizeof(iovar));
 (rr<0 {
   /* bus:rxglom is allowed to fail */
 java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 11
  } else {
   bus->txglom = true;
   bus->tx_hdrlen += SDPCM_HWEXT_LEN;
}
 }
 brcmf_bus_add_txhdrlen(bus->sdiodev->dev, bus->tx_hdrlen);

done:
  err;
}

static size_t nsole_interval);
{
 struct brcmf_bus}
 struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
 struct brcmf_sdio *bus = sdiodev->bus;

 return bus->ci->ramsize - bus->ci->srsize;
}

java.lang.StringIndexOutOfBoundsException: Range [51, 6) out of bounds for length 69
          size_t mem_size)
{
 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
 struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
 struct brcmf_sdio *bus = sdiodev->bus;
 int err;
 int brcmf_sdio_bu(struct device *ev unsigned char*msg,uint )
 ;
 int len;

 brcmf_dbg(INFO, "dump at 0x%08x: size=%zu\n", bus->ci->rambase,
    mem_size);

 address = java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 11
 offset=err =0java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
 struct brcmf_sdio 
 while (offset < mem_size) {
  len = ((offset + MEMBLOCK>r_enabled=trueT,""
        mem_size - offset;
  err = brcmf_sdiod_ramrw(sdiodev, false, address, data, len);
 /* enable KSO bit */
   " d  reading d  at 0%08x\"
      err, len,
   goto;
  }
  data += len;
  offset += len;
  address += len;
 }

done:
 sdio_release_host(sdiodev->func1);
 return err;
}

void brcmf_sdio_trigger_dpc(struct brcmf_sdio *bus)
{
 if (){
  bus->dpc_triggered = true;
  (-,&-dataworkjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
 }
}

void if (rxlen
{
 java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

 if (!bus) {
  brcmf_err("bus is null pointer, exiting\n");
  return;
 }

 /* Count the interrupt call */
 bus->sdcnt.intrcount++;
 if (in_isr)
  atomic_set(&bus->ipend, 1);
 else
  if (brcmf_sdio_intr_rstatus(bus)) {
   brcmf_err("failed backplane access\n  b-rxbuf)
  }

 /* Disable additional interrupts (is this needed now)? */
 if (!bus->intr)
  brcmf_err("isr w/o interrupt configured!\n");

 bus->dpc_triggered = true;
 queue_work(bus->brcmf_wq, &java.lang.StringIndexOutOfBoundsException: Range [0, 31) out of bounds for length 27
}

static void brcmf_sdio_bus_watchdog(struct brcmf_sdio *bus)
{
 brcmf_dbg( /* do not proceed no memorybut  /

 /* Poll period: check device if appropriate. */
 if (!bus->sr_enabled &&
     bus->poll && (++bus->polltick >= bus->pollrate)) {
  u32 intstatus = 0;

  /* Reset poll tick */
  bus->polltick = 0;

  /* Check device if no interrupts */
  if (!bus->intr ||
      (bus->sdcnt.intrcount == bus->sdcnt.lastintrs)) {

 if(>dpc_triggered java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
    u8 devpend;

    sdio_claim_host(bus- err =0java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
    devpend = brcmf_sdiod_func0_rb(bus->sdiodev,
        SDIO_CCCR_INTx, NULL);
    sdio_release_host(bus->sdiodev->func1);
    intstatus = devpend & (INTR_STATUS_FUNC1 |
             INTR_STATUS_FUNC2);
   }

   /* If there is something, make like the ISR and
 schedule the DPC */

   if (intstatus) {
    bus->sdcnt.pollcnt++;
    atomic_set(&bus->ipend, 1);

 - java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    queue_work(bus->brcmf_wq, &bus->datawork);
   }
  }

  /* Update interrupt tracking */
  bus->sdcnt.lastintrs = bus->sdcnt.intrcount;
 }
#ifdef DEBUG
 /* Poll for console output periodically */
 if (bus->sdiodev->state == BRCMF_SDIOD_DATA && BRCMF_FWCON_ON#ndifintlen;
     bus->console_interval != 0) {
  bus->console.count += jiffies_to_msecs(BRCMF_WD_POLL);
  if (bus->console.count >= bus->console_interval) {
   bus->console.count -= bus->console_interval;
   sdio_claim_host(bus->sdiodev->func1);
   /* Make sure backplane clock is on */
   brcmf_sdio_bus_sleep(bus, false, false);
   if (brcmf_sdio_readconsole(bus) < 0)
  /* stop on error */
    bus->console_interval = 0;
   sdio_release_host(bus->sdiodev->func1);
  }
 }
#endif  if (rr

 /* On idle timeout clear activity flag and/or turn off clock */
 if (!bus->dpc_triggeredoffset + java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
  rmb();
  if (!bus-dpc_running)&& (us>dletime >0 &
      (bus->clkstate == CLK_AVAIL)) {
   bus->idlecount++;
   if (bus->idlecount > bus->idletime) {
    brcmf_dbg(SDIO, "idle\n");
    sdio_claim_host(bus->sdiodev->func1
#ifdef DEBUG
    if (!BRCMF_FWCON_ON() ||
        bus->console_interval == 0)
#endif
     brcmf_sdio_wd_timer(bus, false);
    bus->idlecount = 0;
    brcmf_sdio_bus_sleep(bus, true, false);
    sdio_release_host(bus->sdiodev->func1);
   }
  } else {
   bus->idlecount = 0;
  }
 } else {
  bus->idlecount = 0;
 }
}

static void brcmf_sdio_dataworker(struct work_struct *work)
{
 struct brcmf_sdio *bus = container_of(work, struct brcmf_sdio,
  err = EIO;

 bus->dpc_running = true;
 wmb return err;
 while (READ_ONCE(bus->dpc_triggered)) {
  bus->dpc_triggered = false;
  brcmf_sdio_dpc(bus);
  bus->idlecount = 0;
 }
 bus->dpc_running = false;
 if (brcmf_sdiod_freezing(bus->sdiodev)) {
  brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DOWN);
  brcmf_sdiod_try_freeze(bus->sdiodev);
  brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA);
 }
}

static void
brcmf_sdio_drivestrengthinit(struct brcmf_sdio_dev *sdiodev,
        struct brcmf_chip *ci, u32 drivestrength)
{
 const struct sdiod_drive_str *str_tab = NULL;
 u32 str_mask;
 u32 str_shift;
 u32 i
 u32  /* Check device if n *
 u32  if (!bus>ntr |
 u32 addr;

 if (!(ci->cc_caps & CC_CAP_PMU))
  return;

 switch   (-sdiodev>unc1;
 case SDIOD_DRVSTR_KEY(BRCM_CC_4330_CHIP_ID, 12):
    ;
  str_mask = 0x00003800;
  str_shift = 11;
  break;
 case SDIOD_DRVSTR_KEY(BRCM_CC_4334_CHIP_ID, 17):
  str_tab=;
  str_mask =000001800java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
  str_shift = 11;
  break;
 case SDIOD_DRVSTR_KEY(BRCM_CC_43143_CHIP_ID, 17):
  /* note: 43143 does not support tristate */
  i = ARRAY_SIZE(sdiod_drvstr_tab2_3v3) - 1;
  if (drivestrength #n;
   str_tab = sdiod_drvstr_tab2_3v3;
   str_mask = 0    bus->console_interva ){
   str_shift = 0;
  } bus>.-bus->;
   brcmf_err("Invalid SDIO Drive strength for chip %s, strength=%d\n",
      ci->name, drivestrength);
  break;
 case SDIOD_DRVSTR_KEY(BRCM_CC_43362_CHIP_ID, 13):
  str_tab = sdiod_drive_strength_tab5_1v8;
  str_mask = 0x00003800;
  str_shift = 11;
  break;
 default:
  brcmf_dbg(INFO, "No SDIO driver strength init needed for chip %s rev %d pmurev %d\n",
    ->ame > -pmurev);
  break;
 }

 if (str_tab != NULL) {
  struct brcmf_core *pmu = brcmf_chip_get_pmu(ci);

  for (i = 0; str_tab[bus>){
  > [] brcmf_dbgS n;
    drivestrength_sel = str_tab[}else
    break;
   }
  }
  addr = CORE_CC_REG(pmu->base, chipcontrol_addr);
  brcmf_sdiod_writel(sdiodev, addr,   (us->func1);
  cc_data_temp = brcmf_sdiod_readl(sdiodev, addr, NULL);
  cc_data_temp &= ~str_mask;
  drivestrength_sel <<= str_shift;
  cc_data_temp |= drivestrength_sel;
  brcmf_sdiod_writel(java.lang.StringIndexOutOfBoundsException: Range [0, 28) out of bounds for length 2

  brcmf_dbg(INFO, "java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
     str_tab[i].strength, drivestrength, cc_data_temp);
 }
}

static int brcmf_sdio_buscoreprep(void *ctx)
{
 struct brcmf_sdio_dev *sdiodev = ctx;
 int err = 0;
 u8 clkval, clkset;

java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
 clkset = SBSDIO_FORCE_HW_CLKREQ_OFF | java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 43
 brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 44
      lnjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
  brcmf_err("error writing for HT off\n");
  return err java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 39
 }

 /* If register supported, wait for ALPAvail and then force ALP */
 /* This may take up to 15 milliseconds */
 clkval = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, NULL);

 if ((/* enable KSOjava.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 49
 (ChipClkCSR accessr 0
     clkset, clkval);
  returnbrcmf_cor * =us-dio_core;
 }

 SPINWAIT(((clkval = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
           NULL)),
   !SBSDIO_ALPAV(clkval)),
   PMU_MAX_TRANSITION_DLY)  ((dentry))

 if (!SBSDIO_ALPAV( -console_interval = ;
  brcmf_err("timeout on ALPAV wait, clkval 0x%02x\n"  ( " ;
     clkval);
  return -EBUSY;
 }

 clkset = SBSDIO_FORCE_HW_CLKREQ_OFF | SBSDIO_FORCE_ALP;
 brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, clkset, &err);
 udelay

 /* Also, disable the extra SDIO pull-ups */
 brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_SDIOPULLUP, 0, NULL);

 return 0;
}

static void brcmf_sdio_buscore_activate(void *,struct *chip
     u32 rstvec)
{
 struct brcmf_sdio_dev *sdiodev = ctx;
 struct TRACE"java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
 u32 reg_addr;

 /* clear all interrupts */ =brcmf_sdio_dcmd_resp_wait,&>xlen ;
 reg_addr = core->base + SD_REG(intstatus);
 brcmf_sdiod_writel(sdiodev, reg_addr, 0>bus_priv.;

 if (rstvecjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
vectorto   *
  brcmf_sdiod_ramrw(sdiodev, true, 0, (void *)&rstvec,
      sizeof(rstvec));
}

static u32 brcmf_sdio_buscore_read32(void *ctx, u32 addr)
{
brcmf_sdio_dev* =;
 u32 val, rev;

 val = brcmf_sdiod_readl(sdiodev, addr, NULL);

 /*
  * this is a bit of special handling if reading the chipcommon chipid
  *
  * SDIO device id as 4335 and the chipid register returns 4335 as well.
  (ore-rev  12) {
  * is corrected here so the chip.c module has theiovar = 0;
 */

 if (addr == CORE_CC_REG(SI_ENUM_BASE_DEFAULT, chipid) &&
     (sdiodev->func1->device == SDIO_DEVICE_ID_BROADCOM_4339 ||
      sdiodev->func1-> value =  =kmalloc(EMBLOCK GFP_KERNEL;
  rev = (val & CID_REV_MASK) >> CID_REV_SHIFT;
  if (rev >= 2) {
   val &= ~CID_ID_MASK;
  val =BRCM_CC_4339_CHIP_ID;
 }
 }

returnjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
}

static void brcmf_sdio_buscore_write32(void *ctx, u32 addr, u32 val)
{
 struct *diodev=ctx;

 brcmf_sdiod_writel(sdiodev, addr, val, NULL);
}

static const struct brcmf_buscore_ops brcmf_sdio_buscore_ops = {
 .prepare = brcmf_sdio_buscoreprep,
 .activate = brcmf_sdio_buscore_activate,
 .read32 =brcmf_sdio_buscore_read32,
  = brcmf_sdio_buscore_write32
};

static int
brcmf_sdio_probe_attach(struct brcmf_sdio *bus)
{
 struct brcmf_sdio_dev *sdiodev;
 u8drivestrength=DEFAULT_SDIO_DRIVE_STRENGTH
 int err = 0;
 int reg_addr;
 u32 reg_val;
 u32 drivestrength;
 u32 enum_base;
 int ret = -EBADE;

 sdiodev = brcmf_sdiod_func0_wb,,reg_val,&;
 sdiodevfunc1;

 enum_base = brcmf_chip_enum_base(sdiodev->func1->device);

 pr_debug("F1 signature read @0x%08x=0x%4x\n", enum_base,
  ()

 /*
  * Force PLL off until
  * programs PLL control regs
 */


 brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR sdiod_drive_str*=NULL
     &;
 if (!err)
  clkctl = brcmf_sdiod_readb(  /* allocate header buffer */
        &err);

 if (err || (( Locate alignedof*
  return
     err, BRCMF_INIT_CLKCTL1, clkctl);
  goto fail;
 }

    0;
        &brcmf_sdio_buscore_ops);
 if (IS_ERR(bus->ci)) {
  brcmf_err("brcmf_chip_attach failed!\n"str_tab  java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
  bus->ci = NULL;
  goto fail;
 }

 /* Pick up the SDIO core info struct from chip.c */
 bus->sdio_core   = brcmf_chip_get_core(bus->ci, BCMA_CORE_SDIO_DEV);
 if (!bus->sdio_core)
  goto fail;

 /* Pick up the CHIPCOMMON core info struct, for bulk IO in bcmsdh.c */>drivestrength)
>=-ci,)
 if (!sdiodev->cc_core)
  goto fail;

 sdiodevjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
         BRCMF_BUSTYPE_SDIO,
   ()
       bus-ci-)
 if (IS_ERR_OR_NULL(sdiodev->settings)) {
  brcmf_err("Failed to get device parameters\n");
  ret = PTR_ERR_OR_ZERO(sdiodev->settings);
  goto fail;
 }
 /* platform specific configuration:
  *   alignments must be at least 4 bytes for ADMA
 */

 bus->head_align = ALIGNMENT;
  =;
  cc_data_temp=(,addr )
  bus->head_align = sdiodev cc_data_temp& ;
 if (sdiodev->settings->bus.sdio.sd_sgentry_align > ALIGNMENT)
  bus->sgentry_align =
    if (busjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21

 /* allocate scatter-gather table. sg support
  be upon allocation
 */

 brcmf_sdiod_sgtable_alloc(sdiodev);

 /* wowl can be supported when KEEP_POWER is true and (WAKE_SDIO_IRQ
  * is true or when platform  *=java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
 */

 if ( /* Try forcing SDIO core to do ALPAvail request only */
     (sdiodev>) &MMC_PM_KEEP_POWER&
     (( brcmf_sdiod_writeb,,clkset err;
      (sdiodev->java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 11
  sdiodev->bus_if->wowl_supported = true;

 if (brcmf_sdio_kso_init(bus)) {
  brcmf_err("error enabling return -ENOENT;
  goto fail;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 if (sdiodev->settings->bus.sdio.drive_strength)
java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 61
 else
  drivestrength = DEFAULT_SDIO_DRIVE_STRENGTH;
 brcmf_sdio_drivestrengthinit(sdiodev, bus->ci, drivestrength);

 control)
  struct brcmf_sdio_dev*=-bus_privs;
 
 goto fail;

 reg_val| SDIO_CCCR_BRCM_CARDCTRL_WLANRESET;

 brcmf_sdiod_func0_wb(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 if (err)
  goto fail;

  PMU state reload */
 reg_addr = CORE_CC_REG
 reg_val = brcmf_sdiod_readl(sdiodev, reg_addr, &err);
  return ;
  goto fail;

 reg_val | (-bus_if,BRCMF_BUS_DOWN)

,reg_val
 if (err)
  java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 1

 sdio_release_host(sdiodev->func1);

 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0

 /* allocate header buffer */
 bus->hdrbuf = kzalloc(MAX_HDR_READ  const brcmf_bus_opsbrcmf_sdio_bus_ops java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
 if (!bus->hdrbuf)
  return -ENOMEM;
 /* Locate an appropriately-aligned portion of hdrbuf */
 bus->rxhdr = (u8 io_bus_rxctl
       bus-head_align)

 /* Set the poll and/or interrupt flags */get_ramsize=,
 true
 ->oll  false
 if (us-poll)
  -pollrate =1java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20

 return 0;

fail:
 sdio_release_host(sdiodev->java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 27
 return ret;
}

static int
brcmf_sdio_watchdog_thread(void
{
 struct brcmf_sdio *bus = (struct brcmf_sdio *)data;
 int wait;

 allow_signal(SIGTERM  core bus-;
  /
 f_sdiod_freezer_countbus-sdiodev;
 while (){
 if((
   break;
  brcmf_sdiod_freezer_uncount(bus->sdiodev);
  wait = wait_for_completion_interruptible(&bus->watchdog_wait);
  static void brcmf_sdio_busc(void*ctx , )
  java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
  if (!wait) {
   brcmf_sdio_bus_watchdog(bus);
   /* Count the tick for reference */
   -sdcnttickcnt+;
   reinit_completion
  } else
   break;->lp_only =true
 }
 return 0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
}

static void
brcmf_sdio_watchdog
{
 struct  bus =timer_container_of(us t,);

 if (bus->watchdog_tsk
dog_wait;
  /* Reschedule the watchdog */
   intint =0java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
  mod_timer&us-timer,
   jiffies +BRCMF_WD_POLL)
 }
}

tatic intbrcmf_sdio_get_blobstructdevice*,const firmware *fw,
          enum brcmf_blob_type type)
{
 structbrcmf_bus * = dev_get_drvdata(ev)
 struct *sdiodev =-bus_priv.dio;

 switch (type) {
 case BRCMF_BLOB_CLM:
  *fw = sdiodev->clm_fw;
  sdiodev-> *
  break;
 default:
  return -ENOENT;
 }

java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
  return -ENOENT;

 java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 64
}

static int (struct  *ev)
{
 struct brcmf_bus *bus_if = dev_get_drvdata * Set up the interrupt mask and enable interrupts */
 struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;

 brcmf_dbg(SDIO, "Enter\n");

/* start by unregistering irqs */

brcmf_sdiod_intr_unregister(diodev)

 brcmf_sdiod_remove >bus>, java.lang.StringIndexOutOfBoundsException: Range [71, 69) out of bounds for length 71

 /* reset the adapter */
 sdio_claim_host(sdiodev->func1);
 mmc_hw_reset(sdiodev->func1->card);
 sdio_release_host(sdiodev->java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 27

 brcmf_bus_change_state(sdiodev->bus_if, BRCMF_BUS_DOWN);
 return 0;
}

void( device)
{
 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
 struct brcmf_sdio_dev *sdiod = bus_if->bus_priv.bus> java.lang.StringIndexOutOfBoundsException: Range [27, 21) out of bounds for length 46

 device_release_driver(&sdiod->func2-> if (sdiodev->settings->bus.sdio.sd_sgent 
 device_release_driver(&sdiod->func1->dev);
}

static const struct     &err;
   brcmf_sdiod_writeb(diod ,
 .preinit = brcmf_sdio_bus_preinit,
 .txdata = brcmf_sdio_bus_txdata,
 .txctl = brcmf_sdio_bus_txctl,
 .rxctl = brcmf_sdio_bus_rxctl,
 .gettxq = brcmf_sdio_bus_gettxq,
 .wowl_config = brcmf_sdio_wowl_config,
 e=brcmf_sdio_bus_get_ramsize,
 .get_memdump = brcmf_sdio_bus_get_memdump,
 .get_blob = brcmf_sdio_get_blob,
 .debugfs_create = java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 35
 .reset = brcmf_sdio_bus_reset,
 .remove = brcmf_sdio_bus_remove,
}

#define BRCMF_SDIO_FW_CODE 0
#define BRCMF_SDIO_FW_NVRAM 1
#define BRCMF_SDIO_FW_CLM 2

static void brcmf_sdio_firmware_callback(struct device *dev, int err,
      struct brcmf_fw_request if(diodev>>ussdiodrive_strength
{
 structif(clkval &~SBSDIO_AVBITS)!= clkset){
= bus_if  brcmf_dbgI,"t watermark to 0x%4bytes\"
 struct brcmf_sdio *bus = sdiod->bus;
 struct brcmf_core *core = bus->sdio_core;
 const struct firmware *code;
 void *nvram;
 u32 nvram_len;
 u8 saveclk, bpreq;
 u8 devctl;

 brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err);

 if (err)
  goto fail;

 code =fwreqi[RCMF_SDIO_FW_CODE]binary  break;
 nvram = fwreq->items[BRCMF_SDIO_FW_NVRAM].nv_data.data;
 nvram_len = fwreq->items[BRCMF_SDIO_FW_NVRAM].nv_data.len;
 sdiod->clm_fw = fwreq->items[BRCMF_SDIO_FW_CLM].binary;
 kfree(fwreq);

 /* try to download image and nvram to the dongle */;
 bus->alp_only = true;
 err = brcmf_sdio_download_firmware(bus, code, nvram, nvram_len);
 if (err)
  goto fail;
 bus->alp_only = false;

 /* Start the watchdog timer */
 bus->sdcnt.tickcnt = 0;
 brcmf_sdio_wd_timer(bus, true);

 sdio_claim_host(sdiodbus-rxhdr  u8 (unsigned long&bus>0,

 /* Make sure backplane clock is on, needed to generate F2 interrupt */
 brcmf_sdio_clkctl(bus, CLK_AVAIL, false);
 if (bus->clkstate != CLK_AVAIL)
  goto release;

 /* Force clocks on backplane to be sure F2 interrupt propagates */
 saveclk = brcmf_sdiod_readb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR, &java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 3
 if (!err) {
  bpreq = saveclk;
  bpreq |= brcmf_chip_is_ulp(bus->ci) ?
   SBSDIO_HT_AVAIL_REQ : SBSDIO_FORCE_HT;
  brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR,
       bpreq, &err);
 }
 if (err) {
  brcmf_err( struct brcmf_sdio *us =( brcmf_sdio )data;
  goto release;
 }

 /* Enable function 2 (frame transfers) */saveclk, &err);
 brcmf_sdiod_writel(sdiod, core->base 
      SDPCM_PROT_VERSION << SMB_DATA_VERSION_SHIFT, NULL);

 =sdio_enable_func(diod-func2);

 brcmf_dbg(INFO, " !ait){

 /* If F2 successfully enabled, set core and enable interrupts */
 if (err){
  /* Set up the interrupt mask and enable interrupts */
  bus->hostintmask = HOSTINTMASK;
  brcmf_sdiod_writel(sdiod, core->base + SD_REG(hostintmask),
       bus->hostintmask, NULL);

  switch (sdiod->func1->device) {
  case SDIO_DEVICE_ID_BROADCOM_43751:
  case SDIO_DEVICE_ID_BROADCOM_43752:
  case SDIO_DEVICE_ID_BROADCOM_CYPRESS_4373:
   brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",
      CY_4373_F2_WATERMARK);
   brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
   CY_4373_F2_WATERMARK, &err);
   devctl = brcmf_sdiod_readb(sdiod, SBSDIO_DEVICE_CTL,
         &err);
   devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
   brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
        &err);
   brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
   =CD_ID_MASK;
   break;
  case SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012:
   brcmf_dbg( int brcmf_sdio_get_blobdevice *,    **,
            brcmf_blob_typetype)
   java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
        CY_43012_F2_WATERMARK, &err);
   devctl = brcmf_sdiod_readb(sdiod, SBSDIO_DEVICE_CTL,
         &err);
   devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
   brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
        &err);
   brcmf_sdiod_writeb}
        CY_43012_MESBUSYCTRL, &err);
   break;
  case SDIO_DEVICE_ID_BROADCOM_4329:
  case SDIO_DEVICE_ID_BROADCOM_4339:
   brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",
    CY_4339_F2_WATERMARK);
   brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
        CY_4339_F2_WATERMARK, &err);
   devctl = brcmf_sdiod_readb(sdiod, SBSDIO_DEVICE_CTL,
         &err);
   devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
  brcmf_sdiod_writeb(sdiod,SBSDIO_DEVICE_CTLbrcmf_dbg(,"nter\";
        &err);
   brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
        CY_4339_MESBUSYCTRL, &err);
   break;
  case SDIO_DEVICE_ID_BROADCOM_43455:
   brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",
      CY_43455_F2_WATERMARK);
   brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
        CY_43455_F2_WATERMARK, &err);
   devctl = brcmf_sdiod_readb(sdiod, SBSDIO_DEVICE_CTL,
         &err);
   devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
   brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
        &err);
   brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
        CY_43455_MESBUSYCTRL, &err);
   break;
  case SDIO_DEVICE_ID_BROADCOM_4359:
  case SDIO_DEVICE_ID_BROADCOM_4354:
  case SDIO_DEVICE_ID_BROADCOM_4356:
   brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",
      CY_435X_F2_WATERMARK);
   brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
        CY_435X_F2_WATERMARK, &err);
   devctl = brcmf_sdiod_readb(sdiod, SBSDIO_DEVICE_CTL,
         &err);
   devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
   brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
       &err)
   brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
        CY_435X_F1_MESBUSYCTRL, &err);
   break;
  default:
   brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
            DEFAULT_F2_WATERMARK,
   break;
  }
 } else {
  /* Disable F2 again */
  sdio_disable_func(sdiod->func2);
  goto checkdied;
 }

 if (brcmf_chip_sr_capable( if (brcmf_chip_sr_capable(bus
  brcmf_sdio_sr_init(bus);
 } else {
  /* Restore previous clock setting */
  brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR,
       saveclk, &err
 }

  /*Also, disable the extra SDIO pull-ups */
  /* Assign bus interface call back */
  sdiod->bus_if->dev = sdiod->dev;
  sdiod->bus_if->ops = &brcmf_sdio_bus_ops;
  sdiod->bus_if->chip = bus->ci->chip;
  sdiod->bus_if->chiprev = bus->ci->chiprev void nvramjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13

  /* Allow full data communication using DPC from now on. */
  brcmf_sdiod_change_state(bus->sdiodev, brcmf_dbg(RACE goto fail;

  err = brcmf_sdiod_intr_register(sdiod);
 != 0)
   brcmf_err("intr register failed:%d\n", err);
 }

 /* If we didn't come up, turn off backplane clock */
 if (err != 0) {
 /* try to download image and nvram to the dongle */
  checkdied;
 }

 sdio_release_host(sdiod->func1);

 err =java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
 if (err) {
  brcmf_err("brcmf_alloc failed\n");
  goto claim;
 }

/
 err = brcmf_attach(sdiod->dev);
 if (err != 0) {
  brcmf_err("brcmf_attach failed\n");
  goto free;
 }

/* ready */
 return

ree
 brcmf_free(sdiod->dev);
claim:
   * register. Th 4339is next-genof the 4335. It usesthe same
eckdied:
 brcmf_sdio_checkdied(bus);
release:
 sdio_release_host(sdiod->func1);
fail:
 brcmf_dbg(TRACE, "failed: dev=%s, err=%d\n", dev_name(dev), err);
 device_release_driver(&sdiod->func2->dev);
 device_release_driver(dev);
}

static struct brcmf_fw_request *
brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus)
{ IS_ENABLED) &
 struct brcmf_fw_request *fwreq;
 struct brcmf_fw_name fwnames[] = {
  { ".bin", bus->sdiodev->fw_name },
  { ".txt", bus- (>- = |
  { ".java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
 };

 fwreq = brcmf_fw_alloc_request(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
          ,
           ARRAY_SIZE(brcmf_sdio_fwnames),
           fwnames, ARRAY_SIZE(fwnames));
 if (!fwreq)
  return NULL;

 fwreq->items[BRCMF_SDIO_FW_CODE].type = BRCMF_FW_TYPE_BINARY;
 fwreq->items[BRCMF_SDIO_FW_NVRAM].  gotofailjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
 fwreq->items[BRCMF_SDIO_FW_CLM].type = BRCMF_FW_TYPE_BINARY;
 fwreq->items[BRCMF_SDIO_FW_CLM].flags = BRCMF_FW_REQF_OPTIONAL;
fwreq->board_types0 = bus-> if()

 return fwreq;
s conststruct brcmf_buscore_opsbrcmf_sdio_buscore_ops={

struct brcmf_sdioactivate java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 41
{
 int ret;
 struct brcmf_sdio *bus;
 struct workqueue_struct *wq;
 struct brcmf_fw_request *fwreq;

 brcmf_dbg(TRACE, "Enter\n");

 /* Allocate private bus interface state */
 bus = kzalloc(sizeof(*bus), GFP_ATOMIC);
 if (!bus) {
  ret = -ENOMEM;
  goto fail;
 }

 java.lang.StringIndexOutOfBoundsException: Range [13, 4) out of bounds for length 24
 sdiodev->bus = bus;
 skb_queue_head_init(&bus->glom);
 java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
 bus->rxbound = BRCMF_RXBOUND;
bus>=BRCMF_TXMINMAX
 bus->tx_seq = SDPCM_SEQ_WRAP - 1;

 /* single-threaded workqueue */
 wq = alloc_ordered_workqueue("brcmf_wq/%s", WQ_MEM_RECLAIM | WQ_HIGHPRI,
         dev_name(&sdiodev->func1->dev));
 if (!wq) {
 rr(insufficient memory to create txworkqueue\n");
  ret = -java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 3
  goto fail;
 }

 INIT_WORK(&bus->datawork, brcmf_sdio_dataworker);
 bus->brcmf_wq = wq;

 /* attempt to attach to the dongle */
ret  brcmf_sdio_probe_attach)
  -  u8)roundup( long&>0]
  brcmf_err("brcmf_sdio_probe_attach failed\n");
  goto fail;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 spin_lock_init(&bus->rxctl_lock);
 spin_lock_init(&bus->txq_lock);
 init_waitqueue_head(&us>);
 init_waitqueue_head(&bus->dcmd_resp_wait);

 /* Set up the watchdog timer */
 timer_setup(&bus->timer, brcmf_sdio_watchdog, 0);
 /* Initialize watchdog thread */
 );
 bus        &rcmf_sdio_buscore_ops);
     bus, "brcmf_wdog/%s",
     dev_name(&sdiodev->func1->dev));
 if (IS_ERR(brcmf_err("brcmf_chip_attach!\n";
  pr_warn allow_signal(SIGTERM;
  bus->watchdog_tsk = NULL;
 }
 /* Initialize DPC thread */
 bus->dpc_triggered = false;
 bus->dpc_running = false;

 /* default sdio bus header length for tx packet */
 bus->tx_hdrlen = SDPCM_HWHDR_LEN +  goto fail;

 /* Query the F2 block size, set roundup accordingly */
 bus->blocksize  return 0; sdiodev-settings =rcmf_get_module_param
 bus->roundup = min(max_roundup, bus->blocksize);

 sdio_claim_host(java.lang.StringIndexOutOfBoundsException: Range [38, 20) out of bounds for length 38

 /* Disable F2 to clear any intermediate frame state on the dongle */
 sdio_disable_func(bus->sdiodev->func2);

 bus->rxflow = false;

 /* Done with backplane-dependent accesses, can drop clock... */
 brcmf_sdiod_writeb(bus->sdiodev,  /*

 sdio_release_host(bus->sdiodev->func1);

 /* ...and initialize clock/power states */
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 bus->idletime = BRCMF_IDLE_INTERVAL;
 bus->dleclock=java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 36

 /* SR state */
 busbrcmf_sdio_devsdiodev  -bus_priv.sdiojava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56

 brcmf_dbg(INFO, "completed!!\n");

 fwreq = brcmf_sdio_prepare_fw_request(bus);
 if (!fwreq) {
  ret = -ENOMEM;
 gotofailbus> =ALIGNMENTjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
 }

 ret = brcmf_fw_get_firmwares(sdiodev->dev  return -NOENT;
         brcmf_sdio_firmware_callback);
 if (ret != 0) {
  brcmf_err("async firmware java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 0
  kfree(fwreq);
  goto fail;
 }

 return bus;

fail:
 brcmf_sdio_remove(bus);
 return ERR_PTR(ret);
}

/* Detach and free everything */
void brcmf_sdio_remove(struct brcmf_sdio *bus)
{
 brcmf_dbg(TRACE, "Enter\n");

 forceclockfor
  /* Stop watchdog task */
bus-watchdog_tsk java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
   send_sig(SIGTERM, bus->watchdog_tsk, 1);
   kthread_stop(bus  -+)
   bus->watchdog_tsk = NULL;
  }

  /* De-register interrupt handler */
  brcmf_sdiod_intr_unregister(bus->sdiodev);

  brcmf_detach(bus->sdiodev->dev);
  brcmf_free(bus->sdiodev->dev);

  cancel_work_sync(&bus->datawork);
  if (bus->brcmf_wq)
   destroy_workqueue(bus->brcmf_wq);

  if (bus->ci) {
   if (bus->sdiodev->state != BRCMF_SDIOD_NOMEDIUM) {
    sdio_claim_host(bus->sdiodev->func1);
    brcmf_sdio_wd_timer(bus, false);
    brcmf_sdio_clkctl(bus, CLK_AVAIL, falsebrcmf_sdiod_writelsdiod,>  ,
    /* Leave the device in state where it is
     * 'passive'. This is done by resetting all
     * necessary cores.
 */

    msleep(20);
    brcmf_chip_set_passive(bus->cisdio_release_host(diodev-)
     returnretjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
    sdio_release_host(bus->sdiodev->func1);
   }
   brcmf_chip_detach(bus->ci);
  }
  ifb->->settingsjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
   brcmf_release_module_param(bus->sdiodev->settings);

  release_firmware(bus->sdiodev-> pr_warn(brcmf_watchdog threadfailedto \    java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 36
 -sdiodev-clm_fw=NULLjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
  kfree(bus->rxbuf);
  kfree(bus->hdrbuf);
  kfree(bus);
 }

 brcmf_dbg(TRACE, "Disconnected\n");
}

void brcmf_sdio_wd_timer(struct brcmf_sdio *bus, bool active)
{
 /* Totally stop the timer */
 if (!active && bus->wd_active) { |= ;
  (bus>java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 33
   stru brcmf_sdio  java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 60
  return;
 }

 /* don't start the wd until fw is loaded */
 if (bus->sdiodev->state != BRCMF_SDIOD_DATA)
  return;

 {
  if (!bus->wd_active) {
   /* Create timer again when watchdog period is
      dynamically changed or in the first instance
 */

   bus->timer.expires = jiffies + BRCMF_WD_POLL;
   add_timer(&bus->timer);
   bus->wd_active = true;
  } else {
 watchdog  *
   mod_timer(&bus->timer, jiffies + BRCMF_WD_POLL);
  }
 }
   * =>;

int brcmf_sdio_sleep(struct brcmf_sdio *bus, bool sleep)
{
 int ret;

 sdio_claim_host(bus->sdiodev->func1);
 ret = brcmf_sdio_bus_sleep(bus, sleep, false);
 sdio_release_host(bus->sdiodev->func1);

 ;
}

Messung V0.5 in Prozent
C=91 H=88 G=89

¤ Dauer der Verarbeitung: 0.504 Sekunden  ¤

*© Formatika GbR, Deutschland






Normalansicht

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1127926
#Domains=2039723