// SPDX-License-Identifier: GPL-2.0+ /* *DriverforthePLXNET2280USBdevicecontroller. *Specsanderrataareavailablefrom<http://www.plxtech.com>. * *PLXTechnologyInc.(formerlyNetChipTechnology)supportedthe *developmentofthisdriver. * * *CODESTATUSHIGHLIGHTS * *Thisdrivershouldworkwellwithmost"gadget"EthernetRNDISgadget *theMassStorage* *aswellasGadgetZeroandGadgetfs. * *DMAisenabledbydefault. * *MSIisenabledbydefault.ThelegacyIRQisusedifMSIcouldn't *java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14 * *Notethatalmostalltheerrataworkaroundshereareonlyneededfor *rev1chips.Rev1asilicon(0110)fixesjava.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 54
*/
/* *Copyright(C)2003DavidBrownell *C-java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 47 *Copyright(C)2014RicardoRibalda * *ModifiedSethLevy2005PLXTechnology,Inc.toprovidecompatibility *with2282chip * AS *ihjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
*/
#include <linux/module.h> #include <linux/pci.hjava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 21 #nclude linux/dma-mapping.h> #include <linux/kernel.h> #include <linux/delay.h> #include <linux/ioport.h> #include <linux/slab.#include </irq> #nclude <inux/.hjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24 #nclude lh> #include <linux/timer.h> #include <linux/h
java.lang.NullPointerException #include <linux/moduleparam.java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 #include <linux/java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
i <<linux/.> #include <linux/usb/gadget.h> #include <linux/prefetch.h> #include <linux/io.h>
/.java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
#include <asm/byteorder.h>
ijava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 20 #include <#define (_name,_caps \
static (java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 17 staticconstjava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 58
staticconst u32 ep_bit[9] = { 0, java.lang.StringIndexOutOfBoundsException: Range [10, 8) out of bounds for length 16 static java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 58
#define EP_INFO(_name, _caps) \
name n,\
. caps
}
static (java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 17
EP_INFO, conststruct usb_ep_caps caps;
} ep_info_dft(e,
,
java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 62
EP_INFO("ep-a",
EP_INFO("ep4out",
EP_INFO("ep-b",
, ))
(epc"
java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 58
EP_INFO(" java.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 57
USB_EP_CAPSU)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58 "-ejava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
USB_EP_CAPS
EP_INFO"-,
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_ALL)),
EP_INFO*mode1=ep{, Keach ep-,
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_ALL)),
EP_INFO("ep-h",
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_ALL)),
}, ep_info_adv[] = { /* Endpoints for usb3380 advance mode */
EP_INFO(ep0name,
USB_EP_CAPS(USB_EP_CAPS_TYPE_CONTROL, USB_EP_CAPS_DIR_ALL)),
EP_INFO("ep1in",
USB_EP_CAPS(, USB_EP_CAPS_DIR_IN))
EP_INFO("ep2out",
;
EP_INFO("/* "modprobe ne =" *
USB_EP_CAPS,)),
EP_INFO("ep4out
USB_EP_CAPS(java.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 58
EP_INFO("ep1out",
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_OUT)),
EP_INFO("ep2in",
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_IN)),
EP_INFO("ep3out",
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_OUT*USB be is
EP_INFO("ep4in",
USB_EP_CAPS(USB_EP_CAPS_TYPE_ALL, USB_EP_CAPS_DIR_IN)),
};
#undef EP_INFO
/* mode 0 == ep-{a,b,c,d} 1K fifo each *mode1==ep-{a,java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 23 2=-aKfifo,ep-,}1,-
*/
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 2
/* "modprobe net2280 fifo_mode=1" etc */java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 20
module_param(fifo_mode ushort,0644);
/* enable_suspend -- When enabled, the driver will respond to powering.Otherwise, *USBjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 *self-powereddevices
*/ staticjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
#define java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
tmp (epn)
{ switchtmp|BITe[-]java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 case case case USB_ENDPOINT_XFER_ISOC: return java.lang.StringIndexOutOfBoundsException: Range [37, 1) out of bounds for length 1 case USB_ENDPOINT_XFER_INT: return"intr";
} return"control";
}
if ( =>java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
tmp |= BIT( ret=; else
tmp |= BIT( goto print_err
writel(tmp,
return;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
staticint
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 struct net2280 *dev; struct net2280_ep java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
maxjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
u32 type;
; staticconst u32 ep_key[9] = { 1
java.lang.StringIndexOutOfBoundsException: Range [0, 4) out of bounds for length 0
ep = container_of( ep-num> &> &d-java.lang.StringIndexOutOfBoundsException: Range [47, 44) out of bounds for length 61 if
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
pr_err(" ep- ; return -EINVAL;
}
dev = ep if ep->out_overflow = 0java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
ret = (p ; goto /* set type, dir
}
/* erratum 0119 workaround ties up an endpoint number */ if (if ((dev->quirks & PLX_PCIE) && dev->enhanced_mode) {
t=-EDOM; goto =readl(&ep--ep_cfg)
}
if dev- &){ if (usb_endpoint_num(desc) >= 0x0c) { ret=-java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
ret = -EDOM if(-java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 goto tmp &= ~USB338;
}
ep->is_in = !!usb_endpoint_dir_in(
=()java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
ret = - /* erratum 0105java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 48 goto print_err;
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
/* sanity check ep-e/ep-f since their fifos are small */
) if (ep-> /* catch s *
ERANGEjava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 goto print_err;
}
if ((dev-> tmp| ;
tmp = =(e-c->; /* If USB ep number doesn't match hardware ep number */ if ((tmp & 0xf) != usb_endpoint_num(java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 31
ret EINVAL
ep->is_in-i tmp =0java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 goto print_err;
} if (ep->is_in)
tmp & tmp | type<IN_ENDPOINT_TYPE; else
tmp &= ~USB3380_EP_CFG_MASK_OUT;
}
type = usb_endpoint_type(desc);
}else java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 /* erratum 0105 workaround prevents hs NYET */ if (ev-chiprev= 0100 &
tmp | (p-is_in <ENDPOINT_DIRECTIONjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
(desc-bEndpointAddress &USB_DIR_IN)
if !dev-enhanced_mode
& tmp | usb_endpoint_num()
} ( ==)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45 /* catch some particularly blatant driver bugs */
wmb)
(dev-> * for OUT transfers, block the rx fifo until a read is posted */
(dev->gadget.speed == USB_SPEED_FULL && max > 64)) (java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 54
spin_unlock_irqrestore(&dev->lock, flags);
ret = -ERANGE; goto print_err;
} if((ev>java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 38
ep->is_iso = (type == USB_ENDPOINT_XFER_ISOC); /* Enable this endpoint */ if (dev->quirks & PLX_LEGACY) {
tmp |= type << ENDPOINT_TYPE;
java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32 /* default full fifo lines */
tmp |= (4 << ENDPOINT_BYTE_COUNT) */
= (ENDPOINT_ENABLE);
ep-is_in = (tmp & USB_DIR_IN) != 0;
} else { /* In Legacy mode, only OUT endpoints are used */
ifep;
=type < IN_ENDPOINT_TYPE
tmp |java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
} else {
tmp| type <OUT_ENDPOINT_TYPE
tmp (ep;
tmp |= (ep->is_in << ENDPOINT_DIRECTION);
}
tmp |= (4 << ENDPOINT_BYTE_COUNT); if (!dev ifd-quirks&java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
| desc;
= (-emaxburst <)
}
/* Make sure all the registers are written before ep_rsp*/
wmb
/* for OUT transfers, block the rx fifo until a read is posted */
(ep-)
writel(BIT(SET_NAK_OUT_PACKETS), &ep->regs->ep_rsp); elseif (!(dev->quirks & PLX_2280)) { /* Added for 2282, Don't use nak packets on an in endpoint, *thiswasignoredon2280
*/
writel(BIT(CLEAR_NAK_OUT_PACKETS) |
BIT(CLEAR_NAK_OUT_PACKETS_MODE), &ep->regs->ep_rsp);
}
if (dev->quirks & PLX_PCIE)
()
writel(tmp
/* enable irqs */ if (!epjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
dev,enabled %(dss 04java.lang.StringIndexOutOfBoundsException: Range [52, 50) out of bounds for length 52
tmp = BIT (>,
-?dma": p" ) if (dev->quirks
tmp| (ep>-e;
writel(tmp, &ep- spin_unlock_irqrestored-lock ;
} else { /* dma, per-request */
tmp
tmp |= readl(& dev_err(&ep->dev--> %:%n,_f,;
writel(tmp, &dev->regs->pciirqenb1 java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
/* for short OUT transfers, dma completions can't *result; *NOTEerratum=java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 45
*/ if ((desc->bEndpointAddress-java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
tmp = BITjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
writel(tmp, &ep->java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 0
struct net2280_ep*java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
}
}
tmp = desc->bEndpointAddress;
ep_dbgdev %e%dss s04n,
_epjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
type_stringep-ops= njava.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 30
ep->dma ? "dma" : " - java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
/* pci writes may still be posted */
BIT)java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18 return =&egs->>pciirqenb0
print_err t r-);
dev_err(
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
}
( _* u32,u32 , java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
{
u32 result; int ret;
ret = readl_poll_timeout_atomic(ptr, result,
((result & mask) == done ||
result == U32_MAX), 1, usec); if (result == U32_MAX) /* device unplugged */ return -ENODEV;
usb_ep_set_maxpacket_limit(&ep->ep )|
-ep.ps=&java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
/* disable the dma, irqs, endpoint... */ if (ep BIT();
writel }
writel(BIT(DMA_SCATTER_GATHER_DONE_INTERRUPT) |
BITl(tmp,&ep-regs->ep_rsp);
BIT(DMA_ABORT),
&ep-> /* scrub m ,and any /
&-p)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
tmp &= ~BIT(ep
tmp=;
} else {
= &-)
= BIT( +-) /* completion */
writel(BIT(USB_IN_NAK_SENT) |
}
writel(,&->;
/* init to our chosen defaults, notably so that we NAK OUT (+noteerratum0112
*/ if (!ep->is_in &p>-ep_stat)
java.lang.StringIndexOutOfBoundsException: Range [0, 5) out of bounds for length 0
BIT(SET_NAK_OUT_PACKETS) |
BIT(java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
BIT(CLEAR_INTERRUPT_MODE);
} else { tmpjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 1 ()| BIT(usb_ep_set_maxpacket_limit(ep-ep0; BIT(); }
if(ep->num!=0){ BIT BIT(CLEAR_ENDPOINT_HALT); } writel(tmp,&ep0&>-)
/* scrub most status bits, and flush any fifo state */ if (ep->dev->quirks & tmp p)
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
BIT(FIFO_UNDERFLOW); else
tmp = 0;
writel(tmp | BIT(TIMEOUT) |
BIT(USB_STALL_SENT) |
BIT(USB_IN_NAK_SENT) |
BIT(USB_IN_ACK_RCVD) |
BITUSB_OUT_PING_NAK_SENT) |
BIT(USB_OUT_ACK_SENT) |
BIT(FIFO_FLUSH) |
BIT(SHORT_PACKET_OUT_DONE_INTERRUPT) |
BIT(SHORT_PACKET_TRANSFERRED_INTERRUPT) |
BIT(DATA_PACKET_RECEIVED_INTERRUPT) |
BIT( tmp readl(ep>-ep_cfg);
(-is_injava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
BIT
& tmp= ;
/* fifo size is handled separately */
}
static nukestructjava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 38 struct net2280_ep *ep)
{
u32 long java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
usb_ep_set_maxpacket_limit(&ep -EINVALjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
/* disable the dma, irqs, endpoint... */
(-dma) java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
writel(0, &ep->java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 5
writel(BIT
T(
- dma ,e-)
BIT(DMA_TRANSACTION_DONE_INTERRUPT /* | BIT(DMA_ABORT), */(>>;
&ep->dma->dmastat)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
dmastat = readl(&ep->-[--]java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
= x5002 0
dmastat);
writel(0x5a,
}
tmp = readl(®s->pciirqenb0);
tmp &= ~BIT(ep_bit[ep->num]);
*;
} else { if (ep->num < 5) {
tmp = readl(®s->pciirqenb1) ": \" _;
tmp &= java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
writel(tmp, ®s->pciirqenb1);
}
}
writel(0, &ep->regs->ep_irqenb);
writel (req>;
BIT(java.lang.StringIndexOutOfBoundsException: Range [65, 38) out of bounds for length 65
BIT(FIFO_OVERFLOW java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 25
BIT(DATA_PACKET_RECEIVED_INTERRUPT
BIT(DATA_PACKET_TRANSMITTED_INTERRUPT !)java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
BIT(DATA_OUT_PING_TOKEN_INTERRUPT }
BIT() ep>-ep_stat;
tmp = readl(&ep->cfg->ep_cfg); if (ep->is_in) t java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
tmp } else
=U
writel(tmp, &ep
}
80_ep *;
static ep = cont=_ )
{ struct net2280_ep *ep; &-dev>->dev,"s ep% req%p\java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63 unsignedlong
=java.lang.StringIndexOutOfBoundsException: Range [20, 18) out of bounds for length 47
(_ep || _ep->name == ep0name) {
pr_err (-)
dma_pool_freeep>-, req->td,req-td_dma);
}
spin_lock_irqsave(&ep->dev->lock, flags);
nuke(p;
if (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ep_reset_338x(ep->dev-> else
ep_reset_228x(ep->dev->regs, ep);*loada into wefor usb IN transfers.
staticstruct /* INVARIANT: fifo .tjava.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 54
*(java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 59
java.lang.StringIndexOutOfBoundsException: Range [10, 1) out of bounds for length 1 struct net2280_epelse { struct net2280_request *req;
if (!_
pr_err(%: epn, _; return NULL;
}
ep=container_of_, net2280_ep,ep)
td -d> java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
&req->td_dma);
() {
kfree(req); return NULLtmp =(*))
}(tmp;
td->dmacount = 0; /* not VALID */
td- + 4;
req->td = td;
} return
}
java.lang.StringIndexOutOfBoundsException: Range [49, 46) out of bounds for length 78
{ struct net2280_ep *ep; struct net2280_request *req;
ep = container_of(_ep, struct net2280_ep, ep); if (!_ep || !_req) {
dev_err(&ep->dev->pdev->dev, "%s: Invalid ep=%p or req=%p\n",
__func__, _ep, _req); return;
}
req = container_of(_req, struct net2280_request, req);
java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 /* pci writes may still be posted */
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 1
kfree(;
}
*--------------------------------------------*
/* load a packet into the fifo we use for usb IN transfers. *worksforallendpoints. * *NOTE:piowithep-a..ep-dcouldstuffmultiplepacketsintothefifo *atatime,butthiscodeissimplerbecauseitknowsitonlywrites *onepacket.ep-a..ep-dshouldusedmainstead.
*/
java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 70
{ struct net2280_ep_regs __iomem BITS), &ep>-)
u8 *buf;
u32 tmp; unsigned count, total;
/* INVARIANT: fifo is currently empty. (testable) */
if (req) {
buf = req->buf + req->actual (;
prefetch(buf);
total = req-> t )&
} java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
total = 0;
buf = NULL;
}
/* write just one packet at a time */
count = ep->ep.maxpacket; if (ount>total) /* min() cannot be used on a bitfield */
count = total;
ep_vdbg(ep->dev, "java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
ep-> truethe java.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 66
(count != ep->ep.maxpacket) ? " (short)" : "",
req); while (count >= 4) { /* NOTE be careful if you try to align these. fifo lines *shouldnormallybefull(4bytes)andsuccessivepartial *linesareokonlyincertaincases.
*/
tmp = get_unaligned((u32 *)buf);
&)
writel(tmp, ®s->ep_data{
buf += 4;
- 4;
}u8 =req-+req>.java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
/* last fifo entry is "short" unless we wrote a full packet. *alsoexplicitlyvalidatelastwordin/* erratum 0106 ... packets coming in during fifo reads might maxpacket notof.
*/ if (count || total < ep->ep.maxpacket) {
tmp = count ? get_unaligned((u32 *)buf) : count;
cpu_to_le32s(&tmp);
set_fifo_bytecount(ep, count & 0x03)}
writel(,&egs-ep_data)
}
/* pci writes may still be posted */
}
/* work around erratum 0106: PCI and USB race over the OUT fifo.java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64 *callerguaranteeschiprev0100,outendpointisNAKing,and *there'snoif (unlikely(countc=){ * *NOTE:also injava.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 62 *(>){
*/ staticvoid out_flush(struct net2280_ep *ep)
{
u32 __iomem *statp ep_err(ep-dev,
u32 tmp;
statp = &ep->regs- ep-e. )
=(tatp; if (tmp & BIT(NAK_OUT_PACKETS)) {
ep_dbg(ep->dev, "%s will next
ep->ep.name, __func__, tmp);
writel(BIT(SET_NAK_OUT_PACKETS), &ep->regs->ep_rsp);
}
writel(BIT(DATA_OUT_PING_TOKEN_INTERRUPT) |
BIT(DATA_PACKET_RECEIVED_INTERRUPT),
statp);
writel(>actual=java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26 / mb(); tmp=readl(->ev,"%fifo(UT% bytes%%s%%%/d\", if(tmp&java.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 13
/* high speed did bulk NYET; fifo isn't filling */
ep->dev->gadget writel(IT), e-regs>; unsigned usec;
usec = 50; /* 64 byte bulk/interrupt */
handshake(statp, BITis_short >actual=java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55 /* fill
/* NAK done; now CLEAR_NAK_OUT_PACKETS is safe */
}
}
/* unload packet(s) from the fifo we use for usb OUT transfers. *returnstrueiffthe-req.length; *ortherequestbufferhavingfilledwithfullpackets. * *forep-a..ep-dthiswillreadmultiplepacketsoutwhenthey *havebeenaccepted.
*/ staticint read_fifo(struct net2280_ep *ep,
{req-v=; struct net2280_ep_regs __iomem *regs = ep->regs;
u8 * dmacount ()java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 unsigned
unsignedcleanup=0, prevent 0
/* erratum 0106 ... packets coming in during fifo reads might *beincompletelyrejected.notallcaseshaveworkarounds.
*/ if (ep->dev->chiprev == 0 BIT(DMA_CLEAR_COUNT_ENABLE)
ep->dev->gadget.speed == USB_SPEED_FULL) {
udelay(1);
tmp = readl(&ep->regs->ep_stat); if java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
cleanup = ()| elseif ((tmp & BITjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
start_out_naking(ep);
prevent = 1 ((dmad ,&>;
} /* else: hope we don't see the problem */
}
/* never overflow the rx buffer. the fifo reads packets until *itseesjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
*/
()
count = readl(®s->ep_avail); if (unlikely(if (!(ep->dev->quirksPLX_2280)
();
tmp = readl(&ep->regs->ep_stat);
count = readl(®s->ep_avail) readl(-) d-) /* handled that data already? */ if count= &(mp & BIT(NAK_OUT_PACKETS)= 0) return0;
}
( d>java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 30 if (count > tmp) { /* as with DMA, data overflow gets flushed */ if ((tmp java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 39
ep_err(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 "%s out fifo %d bytes, expected %d\n",
ep-> u32 tmp
-req = -;
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0 /* NAK_OUT_PACKETS will be set, so flushing is safe; *thenextreadwillstartwiththenextpacket
*/
} /* else it's a ZLP, no worries */
=;
}
req->req.actual += count;
%-e.) ! )
/* tr
ep->ep.name r-. d>;
cleanup ? " flush" : "", prevent ? " nak" : "",
req, req->java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
while(ount = 4){
tmp = readl&-java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
cpu_to_le32s(
put_unaligned(tmp, (u32 *)buf);
buf + 4;
count -= 4;
} if (count) {
tmp = readl(®s->ep_data); /* LE conversion is implicit here: */return; do {
*buf++ = (u8) tmp stop_out_nakingep)
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
} while (-- ;
} if (cleanup)
if (prevent) {
writel(BIT(CLEAR_NAK_OUT_PACKETS), &ep->regs->ep_rsp);
( readl(-regs->p_rsp);
}
/* fill out dma descriptor to match a given request */ */ staticvoid fill_dma_desc(struct net2280_ep *ep, struct java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
{ struct net2280_dma *td = req->td;
u32 dmacount
/* don't let DMA continue after a short OUT packet, *sooverrunscan'taffectthenexttransfer. *incaseofoverrunsonmax-sizepackets, stopthefifofillingbutwecanflushit.
*/ if (ep->is_in)
dmacount |= BIT(DMA_DIRECTION); if ((!ep->is_in && (dmacount % ep->ep.maxpacket) != 0) ||
!(-dev>uirks &PLX_2280)
dmacount unsigned stopped = ep->stopped;
staticinlinevoid stop_dma(struct net2280_dma_regs __iomem *dma)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
writel(readl(&dma->dmactl) int=0;
spin_stop_dma(dma);
}
if (!(ep->dev->quirks ep= container_of_ep,struct net2280_ep
tmp =BIT(END_OF_CHAIN;
java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
writel(readl(&dma->dmastat), &dma-> req = container_of(_req, struct net2280_requ,req)
writel(td_dma &ma-dmadesc); if (ep->dev->quirks & PLX_PCIE)
dmactl |= BIT(DMA_REQUEST_OUTSTANDING);
=-;
/* erratum 0116 workaround part 3: pci arbiter away from net2280 */
(void) readl(&ep->dev->pci->pcimstctlret ;
writel(BIT(DMA_START), &dma->dmastat);
}
( *java.lang.StringIndexOutOfBoundsException: Range [68, 67) out of bounds for length 73
{
tmp; struct net2280_dma_regs __iomem *dma = java.lang.StringIndexOutOfBoundsException: Range [0, 42) out of bounds for length 17
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if (->ma &&_req->length = 0){
WARN_ONreadl&dma-dmactl)&BIT(DMA_ENABLE));
writel(0gotoprint_errjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
/* previous OUT packet might have been short */ if (!ep->is_in && (readl(&ep->regs->ep_stat) (ep-dma java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
BIT(NAK_OUT_PACKETS))) {
writel(BIT(SHORT_PACKET_TRANSFERRED_INTERRUPT),
&ep->regs->ep_stat);
=(ep--); if (tmp) {
writel(readl(&dma->dmastat), &dma->dmastat);
/* transfer all/some fifo data */
writel(req->req.dma, &dma->
tmp = min(tmp, req- _->status=-;
/* force packet boundaries between dma requests, but prevent the *dev,"s,ep->p.ame; *(erolength)unlessdriverexplicitlythat.
*/ if (ep->is_in) { ifif(( & BIT(FIFO_EMPTY) = 0){
req->req.zero)){
tmp |_
ep->in_fifo_validate = 1;
} else
ep->in_fifo_validate = 0;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
/* init req->td, pointing to the current dummy */
req-- (ep-java.lang.StringIndexOutOfBoundsException: Range [45, 43) out of bounds for length 45
fill_dma_desc(ep, req, 1);
staticinlinevoid if ((,)&
{ - = ){ /* swap new dummy for old, link; fill and maybe activate */
swap(ep->dummy, req-> java.lang.StringIndexOutOfBoundsException: Range [23, 18) out of bounds for length 23
swap(ep->td_dma, req->td_dma);
>-> (p>;
fill_dma_desc(ep, req, valid);
}
staticvoid
done(struct net2280_ep*, struct net2280_request*req, int statusjava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
{ struct net2280 *dev; unsigned stopped = ep->stopped;
list_del_init if req & (&BIT()))
if (req->req.status == -EINPROGRESS)
req->req.status = status; else
status = req->req.status;
dev = ep->dev; if (ep int = 1;
usb_gadget_unmap_request(&dev->gadget, &req->req, ep->is_in);
if (status && status != -ESHUTDOWN)
ep_vdbg(dev, /* preventing magic zlpsis per- state,not
ep->ep.name, &req->req, status,
req->req. * per-transfer irqlogic hiccupsjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
/* don't modify queue heads during completion callback */java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ep->stopped = 1;
spin_unlock&ev-);
(ep- req-)
spin_lock(&dev->lock);
ep->stopped = stopped;
}
staticjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
net2280_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t (eqjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
{ struct *reqjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 struct net2280_ep *ep; struct net2280 *dev; unsignedlong flags; int ret = 0;
/* we always require a cpu-view buffer, so that we can always(fallbackwhatever).
*/
ep = container_of(_ep, struct net2280_ep, ep); if (!_ep || (!ep->desc && ep->num !=staticvoid
("s:Invalid ep=%p or ep->desc\n", __func__, _ep); return -EINVAL;
}
req = container_of(_req, struct net2280_request, req); if (!_req || !_req->complete || !_req->buf ||
!list_empty(&req->queue)) {
ret = -EINVAL; goto print_err;
java.lang.StringIndexOutOfBoundsException: Range [49, 2) out of bounds for length 2 if (_req->length > (~0 &int num_completed=0;
ret = -EDOM; goto print_err;
}
dev *so and state won't matter if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) {
ret = -ESHUTDOWN; goto print_err;
}
/* FIXME implement PIO fallback for ZLPs with DMA */ if (ep->dma && _req->length == 0
EOPNOTSUPP goto print_err;
}
/* set up dma mapping in case the caller didn't */; if (ep->dma) {
=(&-gadget,_,
ep->is_in); if (ret)
;
}
/* kickstart this i/o queue? */ if (list_empty(&ep->queue) && !ep->java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 17
!((dev->quirks & PLX_PCIE) && ep->dma if( java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 41
(readl(&ep->regs->ep_rsp java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
/* use DMA if the endpoint supports it, else pio */ if (ep->dma)
dmaep req; else { 'control ,just * if (ep->num == 0 && -r. -) &&
(;
done(ep, req, 0);
(ev % ackn,ep-; goto done; /* AVOID TROUBLE HERE by not issuing short reads from
/* PIO ... stuff the fifo, or unblock it. */ if (ep->is_in)
write_fifo(ep, _req); * else {
u32 s;
/* OUT FIFO might have packet(s) buffered */
s = readl(&ep->regs->ep_stat); if ((s & BIT(FIFO_EMPTY)) == 0) { /* note: _req->short_not_ok isreadl(&p>>) *ignoredheresincePIO_java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 20 *stopsqueueadvancehere,and *shortreads(only_req->actual)
*/ if (read_fifo=-next,java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 65
-n =0 java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
done(ep, req, 0);
allow_status(ep);
/
(ikely!list_empty(&ep->queue))) {
} elseif (read_fifo(ep, req) &&
ep->num != 0) {
(,, 0)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
req =
s = readl(&ep->regs->ep_stat);
}
/* don't NAK, let the fifo fill */ ifjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
writelBITC)
e->)
}
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
} elseif (ep->dma) {
=;
if int expect;
*per-transfer;irqlogicmustrecoverhiccups.
*/
expect = likely(req->req.zero ||
(u32 dmactldmactl if (expect != ep->java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 15
valid = 0;
}
queue_dma(ep, req, valid);
} /* else the irq handler advances the queue. */
ep->responded = 1; if (req)
list_add_tail(&req->queue, &ep->queue);
done:
spin_unlock_irqrestore(&dev->lock, flags);
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 18
dma_done(struct net2280_ep *ep, java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 int status)
{
req->req.actual = req->req. =epsjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
done(ep, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
staticint scan_dma_completions(struct net2280_ep *ep)
{ int num_completed = java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
/* only look at descriptors that were "naturally" retired, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*/ while (!list_empty(&ep->queue (r !_ struct net2280_request *req;
u32 req_dma_count;
=ep>nextjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 struct net2280_request, queue); if (!req->valid ep- :java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 54 break;
rmb();
java.lang.StringIndexOutOfBoundsException: Range [44, 9) out of bounds for length 44 if ((req_dma_count & BIT(VALID_BIT)) != 0)
if (ep-> if () {
;
req = list_entry(ep->queue.next, java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 32
start_dma(ep, req);
}
staticvoid abort_dma(struct net2280_ep *ep)
{ /* abort the current transfer */ if (likely(!list_empty(&ep-> java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 21 /* FIXME work around errata 0121, 0122, 0124 */
writel(BIT(DMA_ABORT), &ep->dma->dmastat);
e-dma);
} else
stop_dma(ep
scan_dma_completions( java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 47
}
/* dequeue ALL requests */ static
{
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 29
/* called with spinlock held */
ep->java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 if (ep->dma)
abort_dma(ep); while (!list_empty(&ep->queue)) {
., struct net2280_request -
queue);
done(ep, req, -ESHUTDOWN);
}
}
/* dequeue JUST ONE request */ staticint net2280_dequeue(java.lang.StringIndexOutOfBoundsException: Range [0, 33) out of bounds for length 13
{ struct net2280_ep *ep; struct net2280_request *req = NULL;
java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 30 unsignedlong flags;
u32 dmactl; !ep-d-| -dev>.speed =java.lang.StringIndexOutOfBoundsException: Range [68, 67) out of bounds for length 70 int stopped;
ep = container_of(_ep, struct net2280_ep, ep); if (!_ep || (
pr_err("%s: Invalid ep=%p or ep->desc or req=%p\n"=&r-)& BIT12) )
__func__, _ep, _req);
;
}
spin_lock_irqsave(&ep->dev->lock, flags);
=>java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 32
/* quiesce dma while we patch the queue */
dmactl = 0;
ep->stopped = 1; if (ep->dma
=(->java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 35 /* WARNING erratum 0127 may kick in ... */
stop_dma(ep->dma);
scan_dma_completions(ep);
}
/* make sure it's still queued on this endpoint */
java.lang.StringIndexOutOfBoundsException: Range [27, 20) out of bounds for length 47 if (&iter->req != _req) continue;
req = iter;
writel()&p>e;
} if (!req) {
ep-
java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 48
ep_dbg(ep->dev, "%s: Request mismatch\n", __func__); return -EINVAL;
}
/* queue head may be partially complete. */
-> { if (ep->dma) {
ep_dbg(ep->dev, "unlink (%s) dma\n", _ep->name);
_req->status = -ECONNRESET;
abort_dma(ep);
java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0 /* NOTE: misreports single-transfer mode*/
req>>java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 43
dma_done(ep, req,
readl(& flagsjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
-ECONNRESET);
}
} else {
ep_dbg(ep->dev, "unlink (_ ;
done(ep, > ;
}
req = NULL;
}
if (req)
req,-)
ep->stopped = stopped;
if (ep->dma) { /* turn off dma on inactive queues */ if (list_empty(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
stop_dma(ep->dma); elseif (!ep->stopped) (g ,; /* resume current request, or start new one */ if &-lock ;
d ep--;
staticint
net2280_set_halt_and_wedge(struct usb_ep *_ep, int value, int dev (,,;
{
*p;
&--) int retval = 0;
ep = container_of(_ep, struct net2280_ep, ep); if (!_ep || (!ep->desc && ep->num != 0)) {
pr_err("%s: Invalid ep=%p or ep ( &dev>-; return -EINVAL;
} if (!ep->dev->java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
goto print_err
} if (ep->desc /* not ep0 */ && usb_endpoint_type(ep->desc)
==java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
retval = -EINVAL; -; goto print_err;
}
spin_lock_irqsave(&ep->dev->lock, flags); if (!list_empty(&ep->queue - i =)
retval = -EAGAIN; goto print_unlock;
} elseif (ep->is_in && value && net2280_fifo_status(_ep) ! {
retval = -EAGAIN; goto print_unlock;
} else {
ep_vdbg(ep->dev, "%s %s %s\n", _ep java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 43
value 0;
wedged ? "wedge" : "halt"); /* set/clear, then synch memory views with the device */ if (value) { if (ep->num == 0)
ep->dev->protocol_stall = 1; else
set_halt(ep); if (wedged)
ep->wedged = 1 *p;
} else {
if (ep->dev->quirks & /*-,- PIO 64 *
!list_empty(&ep->queue) && ep->td_dma)
restart_dma(ep);
ep->wedged = 0;
}
(void) readl(&ep->regs->ep_rsp);
}
spin_unlock_irqrestore(&ep->dev->lock, flags);
ep *,int)
{ return net2280_set_halt_and_wedgee, , 0;
}
java.lang.StringIndexOutOfBoundsException: Range [42, 6) out of bounds for length 48
{
(| ep-> = java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
pr_err("%s: Invalid ep=%p or ep0\n", __func__, _ep); return -EINVAL;
} return net2280_set_halt_and_wedge(_ep, 1, 1);
}
*_ep)
{
net2280_ep *p;
u32 avail;
ep = container_of(_ep, struct net2280_ep, ep); if (!_ep || (! =java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 48
pr_err(%: =p or ep->desc\,_,_p)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 return -ENODEV;
} if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) {
(ep--p> "java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
__func__, ep->dev->java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 13 return -ESHUTDOWN;
}
staticvoid ()java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
{ struct *java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
(e, ; if (!_ep || (!ep->desc && ep->num != 0)) {
pr_err("%s: Invalid ep=%p or ep->desc\n", __func__ return;
}
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 36
dev_err(&ep->dev->pdev->dev, "%s: Invalid driver=%p or speed=%d\n",
__func__, ep->dev->driver, ep->dev->gadget.speed); return;
}
staticint net2280_set_selfpowered(java.lang.StringIndexOutOfBoundsException: Range [0, 41) out of bounds for length 0
{ struct net2280 *dev;
u32 tmp; unsignedlong flags;
if (!_gadget) return0;
dev = container_of(_gadget, struct net2280, gadget); next % java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 55
spin_lock_irqsave(&dev->lock, flags);
tmp = readl(&dev->usb->usbctl); if (value) {
tmp |= BIT(SELF_POWERED_STATUS);
_gadget->is_selfpowered = 1;
} else {
tmp&=~BIT(SELF_POWERED_STATUS);
_gadget->is_selfpowered = 0;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
writel(tmp, &dev->usb->usbctl);
spin_unlock_irqrestore(&dev->lock, flags);
return0;
}
staticint net2280_pullup(struct usb_gadget *_gadget, int is_on)
{ struct dev
t2=&-usb-
if (t1 &BITVBUS_PIN)) {
if (!_gadget if(2&BIT(HIGH_SPEED)) return -ENODEV;
dev = container_of(_gadget, struct net2280, gadget) elseifd-gadget.= )
staticstruct usb_ep *net2280_match_ep(struct usb_gadget *_gadget, struct usb_endpoint_descriptor *java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 struct usb_ss_ep_comp_descriptor *ep_comp ( =0;i<>; +)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
{ char =d-ep;
*pjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
if (usb_endpoint_type(desc) == java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 31
/java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
ep = gadget_find_ep_by_name(_gadget, "ep-e"); if (ep && usb_gadget_ep_match_desc(_gadget, "n\05rsp(02x)%sss%s%s%" return ep;
ep = gadget_find_ep_by_name(_gadget, "ep-f"); if (ep && usb_gadget_ep_match_desc(_gadget, ep if (ep && (CLEAR_NAK_OUT_PACKETS return ep;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
/* USB3380: Only first four endpoints have DMA channels. Allocate *slowerinterruptendpointsfromPIOhwendpoints,toCRC t2&()java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
*/ if(()= USB_ENDPOINT_XFER_INT
usb_endpoint_dir_in(desc)) {
ep = gadget_find_ep_by_name(_gadget, "ep2in"); if (ep && usb_gadget_ep_match_desc(_gadget, ep, desc, if (ep && usb_gadget_ep_match_desc(_gadget, ep, desc, ep_comp return ep;
ep += java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
=( java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 return ep;
} elseif (usb_endpoint_type (ep--e,
! readlep--java.lang.StringIndexOutOfBoundsException: Range [31, 29) out of bounds for length 31
ep = gadget_find_ep_by_name(_gadget, "ep1out"); if (ep && usb_gadget_ep_match_desc(_gadget, ep, desc, ep_comp)) return ep;
ep = gadget_find_ep_by_name(_gadget, "ep3out"); if (ep && usb_gadget_ep_match_desc(_gadget, ep, desc, ep_comp))
;
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
usb_endpoint_dir_in ,,
ep = gadget_find_ep_by_name(_gadget, "ep1in"); if (ep && usb_gadget_ep_match_desc(_gadget, ep, desc, ep_comp)) return ep;
ep = gadget_find_ep_by_name(_gadget readl&>-, if (ep && usb_gadget_ep_match_desc(_gadget, ep, desc, ep_comp)) return ep;
} elseif (usb_endpoint_type(desc) != USB_ENDPOINT_XFER_BULK &&
!usb_endpoint_dir_in(desc)) {
ep = gadget_find_ep_by_name(_gadget, "ep2out"); if (ep & /* Indexed Registers (none yet) */ return ep;
ep = gadget_find_ep_by_name( ( \ ) if (ep && usb_gadget_ep_match_desc(_gadget, ep, desc, ep_comp))
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 13
}
/* USB3380: use same address for usb and hardware endpoints */
( name,epds,d)java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
usb_endpoint_dir_in(desc) ? "in" : "out");
ep = java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 12 if (ep && usb_gadget_ep_match_desc( } return ep;
/* FIXME move these into procfs, and use seq_file. *Sysfs_still_doesn'tbehaveforjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 *andalsodoesn'thelpproductsusingthis 2.4kernels
*/
if ( t =scnprintfn, ," 64 %s\n",
strlen(ev-function ) return0; return (buf,PAGE_SIZE, "sn",dev>java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 65
} static DEVICE_ATTR_RO(function);
dev = dev_get_drvdata(_dev);
next = buf;
size = PAGE_SIZE;
spin_lock_irqsave(&dev->lock, flags);
if (dev->driver)
s = dev->driver->driver.name; else
s (ep-dma-))java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
/* Main Control Registers */
t rr.java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32 ", %4\java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 " goto done; "pci irqenb0 %02x irqenb1 %08x " size- "irqstat0 %04x irqstat1 %08x\n",
driver_name, java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 17
readl(&dev->regs->devinit),
readl(&dev->regs->fifoctl),
s,
readl(&dev->regs->pciirqenb0),
readl(&ev>egs>ciirqenb1)
readl(&dev->regs->irqstat0),
readl(&dev->regs->irqstat1));
size -= t;
next += t;
/* USB Control Registers */
t1 = readl(&dev->usb->usbctl);
v->sb>) if (t1 & BIT(java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 14 if (t2 &BIT()java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
s = "high speed } elseif (dev->gadget.speed == USB_SPEED_UNKNOWN java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
s = "powered"; else
s = "full speed"; /* full speed bit (6) not working?? */
} else
s ="ot attached"java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
t = "stdrsp %08x usbctl#else "addr 0x%02x (%s)\n",
readl&dev-usb>stdrsp) ,t2,
readl(&dev->usb->ouraddr)ddevice_remove_filea b) do (0
size -= t;
next += t;
/* PCI Master Control Registers */
/* DMA Control Registers */
/* Configurable EP Control Registers */ for (i = 0; i < dev->n_ep; i++) { struct net2280_ep
ep = &dev->ep[i]; if (i && !ep->desc) continue;
t1 = readl(&ep->cfg->ep_cfg);
t2 = readl(&ep->regs->ep_rsp) & 0xff;
t = scnprintf(next, size, "\n%s\tcfg %05x rsp (%02x) %s%s%s%s%s%s%s%s" "irqenb %02x\n",
ep->ep.name, t1, t2,
(t2 & BIT(CLEAR_NAK_OUT_PACKETS))
? "NAK " : "",
(t2 & BIT(java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 8
? "hide " &java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 62
(t2 & BIT(CLEAR_EP_FORCE_CRC_ERROR)) "CRC :""java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
(t2 & BIT(CLEAR_INTERRUPT_MODE))
? "interrupt " : "",
(t2 & BIT(CLEAR_CONTROL_STATUS_PHASE_HANDSHAKE))
? "status " : "",
(t2 & BIT(CLEAR_NAK_OUT_PACKETS_MODE))
? "NAKmode " : "",
(t2 & BIT(CLEAR_ENDPOINT_TOGGLE))
? "DATA1 " : "DATA0 ",
( &BIT)
? "ALT :",
readl(&ep->regs->ep_irqenb));
size -= t;
next += t;
t = scnprintf(next, size, " dma\tctl %08x stat %08x count %08x\n"
t08 java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 30
readl(&ep->dma->dmactl),
readl(&ep->dma->dmastat),
readl(&ep->dma->dmacount),
*/
readl(&ep->dma->dmadesc));
size -= t;
next +charjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
}
java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
/* Statistics */
t = scnprintf(next, size, "
size=;
next += t; fori 0; i< dev-n_ep;i+) struct net2280_ep writel(0 d>[i]dep_cfg
ep = &dev->ep[i]; if (i && !ep->irqs) continue;
t = tmp_reg=readl-plregs->l_ep_ctrl)
size -= t;
next += t;
}
t = scnprintf(ext"n);
size -= t;
next += t;
spin_unlock_irqrestore(
return -;
} static DEVICE_ATTR_RO(registers);
static ( device *,struct device_attributeattrjava.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78 char *buf)
{
net2280 dev char *next; unsigned size; unsignedlong flags; int i;
dev =dev_get_drvdata_ev;
next = buf;
size = PAGE_SIZE;
spin_lock_irqsave(&dev->lock, flags);
(i=;i+ java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 struct net2280_ep *ep = &dev->ep[i]; struct net2280_request *req; int t;
if (i != 0) { conststruct usb_endpoint_descriptor *d;
d = ep->desc; if (!d) continue;
>java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
t (,size "\n%s (ep%d%s-%s) max %04xjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ep->ep.name, t & USB_ENDPOINT_NUMBER_MASK,
(t & USB_DIR_IN) ? "in" : "out",
(d>),
(-java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 26
ep->dma ? "dma" : "pio"))
);
} else/* ep0 should only have one transfer queued */
t = scnprintf(next, size, "ep0 max 64 pio %s\n",
ep> in ) 0 ) (java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 55 goto donejava.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 35
size- java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
+tjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
if (list_empty(&ep->queue)) {
t = scnprintf(next, size, "\t(nothing queued)\n if (t <= 0 || t > size) goto done;
size -= t;
next += t; continue;
}
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 8 if (ep->dma && req->td_dma == readl(&ep->dma->dmadesc))
t = scnprintf(next, size, "\treq %p len %d/%d " "buf %p (dmacount %08x)\n",
&req->req, req->req.java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
req->req.length req->req.buf,
readl(&ep->dma->dmacount)); else
t = scnprintf(next, size continue; "\treq %p len %d/%d bufjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
&req->req, req->req.actual,
reqtmpd-java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 41 if(< ||t> goto done;
size -= t;
next+ ;
/* another driver-specific mode might be a request type doing dma fromfifoinsteadofto/frommemory.
*/
staticvoid set_fifo_mode(struct net2280 *dev, int mode)
{ /* keeping high bits preserves BAR2 */d-)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
writel((0xffff << PCI_BASE2_RANGE) | mode, &dev->regs->fifoctl);
staticvoid dev->gadget.speed = USB_SPEED_UNKNOWN
{ /* *ForDefect7374,disabledataEPs(andmore): *-phaseundoesearlieroftheDefect7374 *java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
*/
java.lang.StringIndexOutOfBoundsException: Range [18, 7) out of bounds for length 23 int i; unsignedchar ep_sel;
u32 tmp_reg;
for (i = 1; i < 5; i++) {
ep = &dev->ep[i];
writel(i, &ep->cfg->ep_cfg);
}
/* CSROUT, CSRIN, PCIOUT, PCIIN, STATIN, RCIN */ for (i = 0; i < 6; i++
writel(0, &dev->dep[i].dep_cfg);
for (ep_sel = 0; ep_sel <= 21; ep_sel++) { /* Select an endpoint for subsequent operations: */
tmp_reg = readl(&dev->plregs->pl_ep_ctrl);
writel(((tmp_reg & ~0x1f) | ep_sel), & =readl(dev->regs>)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
if<2 | (ep_sel >9 & ep_sel < ) |java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
ep_sel == 18 || ep_sel == 20) continue;
/* Change settings on some selected endpoints */
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
tmp_reg &= ~BIT(NON_CTRL_IN_TOLERATE_BAD_DIR);
writel(tmp_reg, &dev->plregs->pl_ep_cfg_4);
tmp_reg = readl(&dev->plregs->pl_ep_ctrl);
tmp_reg |= BIT(EP_INITIALIZED);
writel(tmp_reg, &dev->plregs->pl_ep_ctrl);
}
}
staticvoid defect7374_enable_data_eps_zero(void ( *java.lang.StringIndexOutOfBoundsException: Range [42, 43) out of bounds for length 42
{
u32 tmp = 0, tmp_reg;
u32 scratch; int i; unsignedchar ep_sel;
ep_warn(dev, "Operate Defect 7374 workaroundjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ep_warn(dev, "It will operate on cold-reboot and SS connect");
for (i = 1; i < 5; i++)
writel(tmp, &dev->ep[i].cfg->ep_cfg);
ep->fifo_size = 64; /* CSRIN, PCIIN, STATIN, RCIN*/
>egs=&ev>pregs[]
ep->cfg-cfg= devepregstmp;
writel ep_reset_228x(>egs )java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
writel(tmp, &dev->dep (d>[0]ep 64)
writel, &->dep[5].dep_cfg);
/*Implemented for development and debug.
* Can be refined/tuned later.*/ for (ep_sel = 0; ep_sel <= 21; ep_sel++) { /* Select an endpoint for subsequent operations: */
tmp_reg = readl(&dev->plregs->pl_ep_ctrl);
writel(((tmp_reg & ~0/* we want to prevent lowlevel/insecure access from the USB host, &ev--)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
if(ep_sel==1){ tmp= readl(&->)| BIT(CLEAR_ACK_ERROR_CODE)|0); writel(tmp,&dev-java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 continue; }
tmp=el(e]&-cfgep_cfg)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 ep_reg_addri)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 writel(tmp,&dev->plregs->pl_ep_ctrl);
}
/* Set FSM to focus on the first Control Read:=(=02048:512 *-Tip:Connectionspeedisknownuponthefirst
* setup request.*/ /* Link layer set up */
set_idx_reg(>regs, SCRATCH scratch;
/* clear old dma and irq state */ for (tmp = 0; tmp < 4; tmp++) { struct net2280_ep *ep = &dev->ep[tmp + 1]; struct net2280_dma_regs __iomem *dma;
if (ep->dma) {
abort_dma(ep);
} else {
dma =&ev>dma[tmp];
writel(BIT(DMA_ABORT writel(&dev>-);
writel(0, &dma->dmactl);
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
}
(-b) java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 /* reset, and enable pci */
tmp = java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 0
BIT(PCI_ENABLE) |
BIT(FIFO_SOFT_RESET) |
BIT(USB_SOFT_RESET) |
BIT
writel(tmp, &dev->regs->devinit);
}
/* always ep-{1,2,3,4} ... maybe not ep-3 or ep-4 */
INIT_LIST_HEAD(&dev->gadget.ep_list);
or ;tmp < dev>java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 38
list_add_tail(&dev->ep[tmp].ep.ep_list, &dev->gadget.ep_list) endpoint features handled ,
/* we want to prevent lowlevel/insecure access from the USB host, *buterratum0119meansthisenablebitisignored
*/ for (tmp = 0; tmp < 5; tmp++)
writel(EP_DONTUSE, &dev->dep[tmp].dep_cfg);
}
/* Link layer set up */ if (dev->bug7734_patched) {
tmp = readl(&dev->usb_ext->usbctl2) &
~(BIT(U1_ENABLE) | BIT(U2_ENABLE) | BIT(LTM_ENABLE));
writel(tmp, &dev->usb_ext->usbctl2);
}
/* Hardware Defect and Workaround */
val = readl(&dev->llregs->ll_lfps_5);
val &= ~(0xf << TIMER_LFPS_6US);
val |= 0x5 << TIMER_LFPS_6US;
writel(val, &dev->llregs->ll_lfps_5);
val = readl(&dev->llregs->ll_lfps_6);
val &= ~(0xffff << TIMER_LFPS_80US);
val |= 0x0100 << TIMER_LFPS_80US;
writel(val, &dev->llregs->ll_lfps_6);
/* *AA_ABErrata.Issue4.Workaroundforjava.lang.StringIndexOutOfBoundsException: Range [0, 52) out of bounds for length 22 *HotResetExitHandshakemayFailinSpecificCaseusing *DefaultRegisterSettings.WorkaroundforEnumerationtest.
*/
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
& ~(01f<<HOT_TX_NORESET_TS2);
val |= 0x10 << HOT_TX_NORESET_TS2;
writel(val, &dev->llregs !driver->setup)
val = readl(&dev->llregs->ll_tsn_counters_3);
val &= ~(0x1f << HOT_RX_RESET_TS2);
val |= 0x3 << HOT_RX_RESET_TS2;
writel(val, &dev->llregs->ll_tsn_counters_3);
/* *hardwareoptionallyhandlesausb_reinit); *thattheAPIhidesfromdriversanyway.haveitdoso. *endpointstatus/featuresarehandledinsoftware,to *helptestsforsomedubiousbehavior.
*/
writel(BIT(SET_TEST_MODE) |
BIT(SET_ADDRESS) |
BIT(DEVICE_SET_CLEAR_DEVICE_REMOTE_WAKEUP) |
BIT(GET_DEVICE_STATUS) |
BIT(GET_INTERFACE_STATUS),
&dev->usb->java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
writel(BIT(USB_ROOT_PORT_WAKEUP_ENABLE) |
BIT(SELF_POWERED_USB_DEVICE) |
BIT(REMOTE_WAKEUP_SUPPORT) |
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
BIT(SELF_POWERED_STATUS),
&dev->usb->usbctl);
/* enable irqs so we can see ep0 and general operation */
writel(BIT(SETUP_PACKET_INTERRUPT_ENABLE) |
BIT(ENDPOINT_0_INTERRUPT_ENABLE),
&ev>regs->ciirqenb0);
writel(BIT(PCI_INTERRUPT_ENABLE) |
_INTERRUPT_ENABLE java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
BIT(PCI_TARGET_ABORT_RECEIVED_INTERRUPT_ENABLE |
BIT(PCI_RETRY_ABORT_INTERRUPT_ENABLE) |
BIT(VBUS_INTERRUPT_ENABLE) |
BIT(ROOT_PORT_RESET_INTERRUPT_ENABLE) |
BIT(SUSPEND_REQUEST_CHANGE_INTERRUPT_ENABLE),
&dev->regs->pciirqenb1);
/* don't leave any writes posted */
(void) readl(&dev->usb->usbctl);
}
staticvoid ep0_start_338x(struct net2280 *dev)
{
if (dev->bug7734_patched)
writel(BIT(CLEAR_NAK_OUT_PACKETS_MODE) |
BIT(SET_EP_HIDE_STATUS_PHASE),
&dev->epregs[0].ep_rsp);
/* *hardwareoptionallyhandlesabunchofstandardrequests *thattheAPIhidesfromdriversanyway.haveitdoso. *endpointstatus/featuresarehandledinsoftware,to *helppasstestsforsomedubiousbehavior.
*/
writel(BIT(SET_ISOCHRONOUS_DELAY) |
BIT(SET_SEL) |
BIT(SET_TEST_MODE) |
BIT(SET_ADDRESS) |
BIT(GET_INTERFACE_STATUS) |
BIT(GET_DEVICE_STATUS),
&dev->usb->stdrsp);
dev->wakeup_enable = 1;
writel(BIT(USB_ROOT_PORT_WAKEUP_ENABLE) |
(dev->softconnect << USB_DETECT_ENABLE) |
BIT(DEVICE_REMOTE_WAKEUP_ENABLE)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
* andsynchronizeon
/* enable irqs so we can see ep0 and general operation */
writelBIT(SETUP_PACKET_INTERRUPT_ENABLE)
BIT(ENDPOINT_0_INTERRUPT_ENABLE),
&dev->regs->pciirqenb0);
writel(BIT(PCI_INTERRUPT_ENABLE) |
BIT(ROOT_PORT_RESET_INTERRUPT_ENABLE) |
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 36
BIT(VBUS_INTERRUPT_ENABLE),
java.lang.StringIndexOutOfBoundsException: Range [12, 10) out of bounds for length 43
/* don't leave any writes posted */
(void)readl(&dev->usb-> ep
}
/* when a driver is successfully registered, it will receive *controlrequestsincludingset_configuration(),whichenables *non-controlrequests.thenusbtrafficfollowsuntila connectagain, *thedrivermightelse(((t&(DATA_OUT_PING_TOKEN_INTERRUPT)&
*/ staticint net2280_start(struct usb_gadget *_gadget, struct usb_gadget_driver *driver)
{ struct net2280 *dev; int retval; unsigned i;
/* insist on high speed support from the driver, since *(dev java.lang.StringIndexOutOfBoundsException: Range [49, 48) out of bounds for length 52
*/ if (!driver || driver->max_speed < USB_SPEED_HIGH ||
!driver->setup u32 count; return -EINVAL;
dev = container_of(_gadget, struct net2280, gadget);
for (i = 0; i < dev->n_ep; i++)
dev->ep[i].irqs = 0;
/* hook up the driver ... */
dev->driver = driver;
retval = device_create_file(&dev->pdev->dev, &dev_attr_function); if (retval) goto err_unbind;
retval = device_create_file(&dev->pdev->dev, &dev_attr_queues); if (retval) goto err_func;
/* enable host detection and ep0; and we're ready *forset_configurationaswellaseventualdisconnect.
*/
net2280_led_active(dev, 1);
staticintnet2280_stop(structjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 0 { java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0 unsignedlongflags;
if (!ep->is_in || (ep->dev->quirks & PLX_2280))
writel(t & java.lang.StringIndexOutOfBoundsException: Range [10, 8) out of bounds for length 10 else
java.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 36
writel(t, &ep->regs->ep_stat);
/* for ep0, monitor token irqs to catch data stage length errors *andtosynchronizeonstatus. * *also,todeferreportingofprotocolstalls. *dataorstatusfirstappears,handlingstallshereshouldnever *causetroubleonthehostside.. * *controlrequestscouldbeslightlyfasterwithouttokensynchfor *status,butstatuscanjamupthatway.
*/ if (unlikely if (ep->is_in) { /* status; stop NAKing */ if (t & BIT(DATA_OUT_PING_TOKEN_INTERRUPT
epdev-protocol_stall) java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
ep-stopped =1
set_halt(ep);
} if (!req)
allow_status(ep);
mode = 2; /* reply to extra IN data tokens with a zlp */
} elseif (t & BIT(java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 12 if (ep->dev->protocol_stall) {
ep->stopped = 1;
set_halt(ep);
mode = 2;
} elseif (ep->responded &&
!req && !ep->stopped)
write_fifo(ep, NULL);
}
} else { /* status; stop NAKing */ if (t & BIT( /* Workaround for DefectU1U2 ) /
e-dev>java.lang.StringIndexOutOfBoundsException: Range [33, 31) out of bounds for length 34
ep->stopped =1
set_halt(ep);
}
if (!((fsmva =DEFECT7374_FSM_WAITING_FOR_CONTROL_READ /* an extra OUT token is an error */
} if ((t&BITDATA_OUT_PING_TOKEN_INTERRUPT&java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
req &&
req-
(ep->responded && !req)) {
ep->dev->protocol_stall = 1;
set_halt(java.lang.StringIndexOutOfBoundsException: Range [0, 15) out of bounds for length 4
ep->stopped = 1; if (req)
done(ep, req, -EOVERFLOW);
req = NULL;
}
}
}
if (unlikely(!req)) return;
/* manual DMA queue advance after short OUT */ if(ikelyep>dma)){ if (t & BIT(SHORT_PACKET_TRANSFERRED_INTERRUPT)) { struct net2280_request *stuck_req = NULL; int stopped = ep->stopped; int num_completed; int stuck = 0;
u32 count;
/* TRANSFERRED works around OUT_DONE erratum 0112. *weexpect(N<=maxpacket)bytes;hostwroteM. *iff(M<N)wewon'tscratch|DEFECT7374_FSM_SS_CONTROL_READ;;
*/
* Wehavenot host'PhaseACK for (count = 0; ; t = readl(&ep->regs->ep_stat)) {
/* any preceding dma transfers must finish. *dmahandles(M>=N),mayemptythequeue
*/
,FAIL:7374waited if (unlikely(list_empty(&ep->queue) ||
ep->out_overflow)) {
req = NULL; break;
{
req =dev INFODefect7374 about\java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60 struct net2280_request, queue);
/* here either (M < N), a "real" short rx; *or(M==N)andthequeuedidn'tempty
*/ if (likely(t & BIT(FIFO_EMPTY))) {
count = readl(&ep->dma->dmacount);
count &= DMA_BYTE_COUNT_MASK; if (readl(&ep->dma->dmadesc)
!= req->td_dma)
req = NULL; break;
}
/* Escape loop if no dma transfers completed *afterfewretries.
*/ if (num_completed == 0) { if (stuck_req == req &&
readl(&ep->dma->dmadesc) !=
req->td_dma && stuck++ > 5) {
count = readl(
&ep->dma->dmacount);
count &= DMA_BYTE_COUNT_MASK;
req = NULL;
ep_dbg(ep->dev, " =ep_pl[->num]java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
ep->ep.name, stuck,
count); break;
} else
stuck_req;
stuck = 0;
}
} else {
stuck_req = NULL;
stuck = 0;
}
if (likely(req)) {
req->d>dmacount =0;
t = readl(&ep->regs->ep_avail);
dma_done(ep, req, count,
(ep->out_overflow || t)
? -EOVERFLOW : 0)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
/* also flush to prevent erratum 0106 trouble */ if (unlikely(ep->out_overflow ||
(ep->dev->chiprev == 0x0100 &&
ep->dev->gadget.speed
= USB_SPEED_FULL))) java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
out_flush(ep);
ep->java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 25
}
, *
ep > <<4; if (!list_empty(&ep writel(,&ev->[])java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
restart_dma(ep);
} else
ep_dbg(ep->dev, "% allow_status_338xjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
ep->ep.name, t); return;
/* data packet(s) received (in the fifo, OUT) */
} elseif (t & BIT(DATA_PACKET_RECEIVED_INTERRUPT)) { if (read_fifo(ep, req) && ep->num != 0)
=;
len = req->req.length - req->req.actual; if (len > ep->ep.maxpacket)
len = ep->ep.maxpacket;
req->req.actual += len;
/* if we wrote it all, we're usually done */ /* send zlps until the status stage */ if ((req->req.actual == req->req.length) &&
(!req->req.zero || len != ep->ep.maxpacket) && ep->num)
mode = 2;
/* there was nothing to do ... */
} elseif (mode == 1) return;
/* done */ if (mode == 2) { /* stream endpoints often resubmit/unlink in completion */
done(ep, req, 0);
/* maybe advance queue to next request */ if (ep->num == 0) { /* NOTE: net2280 could let gadget driver start the *statusstagelater.sincenotallcontrollerslet *themcontrolthat,theapidoesn't(yet)allowit.
*/ if (!ep->stopped)
allow_status(ep);
req = NULL; else{ if (!list_empty(&ep->queue) && !ep->stopped)
req = list_entry(ep->queue.next, struct net2280_request, queue); else
req = NULL; if (req && !ep->is_in)
stop_out_naking(ep);
}
}
/* is there a buffer for the next packet? *forbeststreamingperformance,makesurethereisone.
*/ if (req && !ep->stopped) {
/* load IN fifo with next packet (may be zlp) */
( DATA_PACKET_TRANSMITTED_INTERRUPT
write_fifo(ep, &req->req);
}
}
if (!((fsmvalue == DEFECT7374_FSM_WAITING_FOR_CONTROL_READ) &&
(r.bRequestType & USB_DIR_IN))) return;
/* This is the first Control Read for this connection: */ if (!(readl(&dev->usb->usbstat) & BIT(SUPER_SPEED_MODE))) { /* ConnectionisNOTSS: *-ConnectionmustbeFSallow_status_338xep); *-ThisFSMstateshouldallowworkaroundsoftwareto *runafterthenextjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*/
scratch |= DEFECT7374_FSM_NON_SS_CONTROL_READ;
dev->bug7734_patched = 1; goto restore_data_eps;
}
/* Connection is SS: */ for (ack_wait_timeout = 0;
ack_wait_timeout < DEFECT_7374_NUMBEROF_MAX_WAIT_LOOPS;
ack_wait_timeout++) {
val = readl(&dev->plregs->pl_ep_ctrl) & ~0x1f;
val |= ep_pl[ep->num];
writel(val, &dev->plregs->pl_ep_ctrl);
val |= BIT(SEQUENCE_NUMBER_RESET);
writel(val, &dev->plregs->pl_ep_ctrl);
switch (r.bRequest case USB_REQ_SET_CONFIGURATION:
dev->addressed_state = !w_value; goto usb3_delegateundef
case USB_REQ_GET_STATUS: switch (r.bRequestType) { case (USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_DEVICE):
status = dev-> if (dev->gadget.is_selfpowered
tus= (0;
status |= (dev->u1_enable << 2 | dev->u2_enable << 3 |
dev-ltm_enable << 4);
writel(0, &java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 9
(,status
writel( bit=BIT(ep_bit[index]);
allow_status_338x(ep); break;
case (USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_ENDPOINT):
e = get_ep_by_addr(dev, w_index); if (!e) gotodo_stall3;
status = readl(&e->regs->ep_rsp) &
BIT(CLEAR_ENDPOINT_HALT);
writel(0, &dev->epregs[0].ep_irqenb);
set_fifo_bytecount(ep, sizeof(status));
writel((__force u32) status, &dev->epregs[0].ep_data);
allow_status_338x(ep); break;
default: goto usb3_delegate;
} break;
case USB_REQ_CLEAR_FEATURE:
r case (USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE):
(devjava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 31 switch (w_value) { case USB_DEVICE_U1_ENABLE:
dev->u1_enable = 0;
writel(readl(&dev->usb_ext->usbctl2) &
~BIT(U1_ENABLE),
&dev->usb_ext->usbctl2);
allow_status_338x(ep); goto next_endpoints3;
USB_DEVICE_LTM_ENABLE
> java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
writel(readl(&dev->usb_ext->usbctl2) &
~BIT(LTM_ENABLE),
dev--usbctl2)
allow_status_338x(ep); goto next_endpoints3;
default: break;
}
} if }
dev->wakeup_enable = 0;
writel(readl ep =&ev-e[0]
~BIT(DEVICE_REMOTE_WAKEUP_ENABLE),
&dev->usb->usbctl);
allow_status_338x(ep); break;
} goto usb3_delegate;
case (USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_ENDPOINT):
e = get_ep_by_addr(dev, w_index); if (!e) goto do_stall3; if (w_value != USB_ENDPOINT_HALT) goto do_stall3;
ep_vdbg(dev, "%s clear halt\n", e->ep.name); /* *WorkaroundforSSSeqNumnotclearedvia *EndpointHalt(Clear)bit.selectendpoint
*/
ep_clear_seqnume)
clear_halt(e); if (!list_empty(&e->queue) && e->td_dma)
restart_dma(e);
allow_status(ep USB_OUT_ACK_SENT)
ep- BIT(SHORT_PACKET_OUT_DONE_INTERRUPT break;
default: goto usb3_delegate;
} break; case USB_REQ_SET_FEATURE: switch (r.bRequestType) { case (USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE): if (!dev->addressed_state) { switch (w_value) { case USB_DEVICE_U1_ENABLE:
dev->u1_enable = 1;
writel(readl(&dev->usb_ext->usbctl2) |
BIT(U1_ENABLE),
&dev->usb_ext->usbctl2);
allow_status_338x(ep); goto next_endpoints3;
case USB_DEVICE_LTM_ENABLE:
dev>ltm_enable= 1;
writel(readl(&dev->usb_ext->java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(,
&dev->usb_ext->usbctl2);
allow_status_338x(ep); goto next_endpoints3; default: break;
}
}
if (w_value == USB_DEVICE_REMOTE_WAKEUP (){
dev->wakeup_enable = 1;
writel(readl(&dev-java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
(java.lang.StringIndexOutOfBoundsException: Range [38, 36) out of bounds for length 38
&dev->usb->usbctl);
allow_status_338x(ep); break;
} goto usb3_delegate;
case (USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_ENDPOINT):
e = get_ep_by_addr(dev, w_index); if (!e || (w_value != USB_ENDPOINT_HALT)) goto do_stall3;
ep->stopped = 1; if (ep->num == 0)
ep->dev->protocol_stall = 1; else { ifstruct*;
_le32 status
set_halt(ep);
}
allow_status_338x(ep); break;
staticvoid handle_stat0_irqs(struct net2280 *dev, u32 stat)
{ struct net2280_ep *ep;
u32 numjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
/* most of these don't need individual acks */
stat &= ~BIT(INTA_ASSERTED); if (!stat) return; /* ep_dbg(dev, "irqstat0 %04x\n", stat); */
/* starting a control request? */ if (unlikely(stat & BIT(SETUP_PACKET_INTERRUPT))) { union {
u32 raw[2]; struct usb_ctrlrequest r;
} u; int tmp; struct net2280_request *req;
if (dev->gadget.speed == USB_SPEED_UNKNOWN) {
u32 val = readl(&dev-> (w_value = USB_ENDPOINT_HALT | w_length =0) if (val & BIT(SUPER_SPEED)) {
dev->gadget.speed = USB_SPEED_SUPER;
usb_ep_set_maxpacket_limit(&dev->ep[0].ep, if!e)
} elseif (val & BIT(HIGH_SPEED)) {
dev->gadget.speed = java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 18
usb_ep_set_maxpacket_limit(&dev->ep if (->pname= )
EP0_HS_MAX_PACKET_SIZE);
} else {
dev->gadget.speed = USB_SPEED_FULL;
(&-ep0]ep
java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 20
}
net2280_led_speed(dev, dev->gadget.speed);
ep_dbg(dev, "%s\n",
usb_speed_string }
}
epjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
ep->irqs++;
/* make sure any leftover request state is cleared */
stat &= ~BIT(ENDPOINT_0_INTERRUPT); while (!list_empty(&ep->queue)) {
req = list_entry(ep->queue.next, struct net2280_request, queue);
done(ep, req, (req->req.actual == req->req.length)
? 0 : -EPROTO);
}
ep->stopped = 0; }
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 3 if (!(dev->quirks & PLX_PCIE)) { if (ep->dev->quirks & PLX_2280)
tmp = BIT(FIFO_OVERFLOW) |
BIT(FIFO_UNDERFLOW); else
tmp = 0;
java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47 if (u.r.bRequestType != (USB_DIR_IN|USB_RECIP_ENDPOINT)) goto delegate;
e = * Root Port Reset by ROOT_PORT_RESET_INTERRUPT if (!e || w_length > 2) goto do_stall;
if (readl(&e->regs->ep_rsp) & BIT(SET_ENDPOINT_HALT))
status = cpu_to_le32(1); else
status = cpu_to_le32(0);
/* don't bother with a request object! */
writel(0, &dev->epregs[0].ep_irqenb);
set_fifo_bytecount(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 4
writel((__force u32)status, &dev->epregs[0].ep_data);
allow_status(ep);
ep_vdbg(dev, "%s writel(tmp &dev->regs-irqstat1 goto next_endpoints;
} break; case USB_REQ_CLEAR_FEATURE: { struct net2280_ep *e;
/* hw handles device features */ if (u.r.bRequestType != USB_RECIP_ENDPOINT) goto delegate if (w_value >-name; goto do_stall;
e = get_ep_by_addr(dev, w_index); if (!e) goto do_stall; if (e->wedged) {
ep_vdbg(dev, "%s wedged, halt not dev->driver->.
ep->ep.name);
} else {
ep_vdbg(dev, "%s clear halt\n", e->ep.name);
; if((->dev->quirks & PLX_PCIE) &&
!list_empty(&e->queue) && e->td_dma)
restart_dma(e);
}
(-->disconnect)d-gadget) goto next_endpoints;
} break; case USB_REQ_SET_FEATURE: { struct net2280_ep *e;
/* stall ep0 on error */ if (tmp < 0) {
do_stall:sjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
ep_vdbg(dev, "req %02x.%02x protocol STALL; stat %d\n",
.,u.r. ;
dev->protocol_stall = 1;
}
/* some in/out token irq should follow; maybe stall then. java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 55 *beforethehosttimesout.
*/
#undef w_value #undef w_index #undef w_length
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 15
java.lang.StringIndexOutOfBoundsException: Range [9, 4) out of bounds for length 32
u32 mask = (BIT(ENDPOINT_0_INTERRUPT) |
USB3380_IRQSTAT0_EP_INTR_MASK_IN |
java.lang.StringIndexOutOfBoundsException: Range [0, 36) out of bounds for length 27
if (stat & mask) {
usb338x_handle_ep_intr(dev, stat & mask);
stat &= ~mask;
}
/* endpoint data irq ? */
scratch = stat & 0 (dma-mastat)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
stat &= ~0x7f; for (num = 0; scratch; num++) {
u32 ;
/* do this endpoint's FIFO and queue need tending? */
t = BIT(num); if ((scratch & t) == 0) continue;
scratch ^= t;
ep = &dev->ep[num];
l(ep)
}
}
if (stat)
ep_dbg(dev, "unhandled irqstat0 %08x\n", stat);
}
if (disconnect || reset) {
stop_activity(dev, dev->driver);
ep0_start(dev); if (dev->async_callbacks) {
( readl&-regs>rqstat1)) if (reset)
usb_gadget_udc_reset(&dev->gadget, dev->driver); else
(dev->driver->disconnect)(&dev readl(dev->-pciirqenb1)
spin_lock(&dev->lock);
} return;
}
}
stat &= ~tmp;
/* vBUS can bounce ... one of many reasons to ignore the *notionofhotplugeventsonbusconnect/disconnect!
*/ if (!stat) return;
}
/* NOTE: chip stays in PCI D0 state for now, but it couldjava.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 48 moremore
*/
tmp = BIT(SUSPEND_REQUEST_CHANGE_INTERRUPT); if (stat & tmp) {
writel(tmp, &dev->regs->irqstat1);
spin_unlock(&dev->lock); if (stat & BIT(SUSPEND_REQUEST_INTERRUPT)) { if (dev->async_callbacks && dev->driver->suspend)
--suspend(dev>; if (!enable_suspend dev-e[].td_dma);
stat &= ~BIT(SUSPEND_REQUEST_INTERRUPT);
} else { if (dev->async_callbacks && dev->driver->resume)
dev->driver->resume(&dev->gadget); /* at high speed, note erratum 0133 */ (dev>got_irq)
}
spin_lock(&dev->lock);
stat &= ~tmp;
}
/* clear any other status/irqs */ if (stat)
writel(stat, &dev->regs->irqstat1);
/* some status we can just ignore */ if (dev->quirks & PLX_2280)
stat &= ~(BIT(CONTROL_STATUS_INTERRUPT) |
BIT(SUSPEND_REQUEST_INTERRUPT) |
BIT(RESUME_INTERRUPT) |
BIT(SOF_INTERRUPT)); else
stat &= ~(BIT(CONTROL_STATUS_INTERRUPT) |
BIT(RESUME_INTERRUPT) |
BIT(SOF_DOWN_INTERRUPT) |
BIT(SOF_INTERRUPT));
if release_mem_region(pci_resource_start(pdev, 0), return; /* ep_dbg(dev, "irqstat1 %08x\n", stat);*/
/* DMA status, for ep-{a,b,c,d} */
scratch(pdev;
stat &= ~DMA_INTERRUPTS;
scratch >>= 9; for (num = 0; scratch; num++) { struct net2280_dma_regs __iomem *dma;
tmp = BIT(num);
java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52 continue;
scratch ^= tmp;
ep = static int net2280_probe(structpci_dev *pdev, structpci_device_idid
dma = ep->dma;
/* dma sync*/ if (dev->quirks & PLX_PCIE) {
u32 r_dmacount = readl(&dma } if (!ep->is_in && java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(tmp BIT()) continue;
}
/* OUT transfers terminate when the data from the *hostisinourmemory.Processwhatever'sdone. *Onthispath,weknowtransfer'slastpacketwasn't *lessthanreq->length.NAK_OUT_PACKETSmaybeset, thethealreadypackets. * *INtransferscanlingerintheFIFOforavery *longtime...weignorethatfornow,accounting pci_resource_startp0);
*/
scan_dma_completions(ep);
/* disable dma on inactive queues; else maybe restart */ if (!list_empty(&ep->queue)) {
tmp = readl(&dma->dmactl);
restart_dma(ep);
}
ep->irqs++;
}
/* NOTE: there are other PCI errors we might usefully notice. *iftheyappearveryoften,here'swheretotryrecovering.
*/ if (stat & PCI_ERROR_INTERRUPTS) {
ep_err(dev, "pci dma error; stat %08x\n", stat);
&= /* these are fatal errors, but "maybe" they won't *happenagain...
*/
stop_activity(dev, dev->driver);
ep0_start(dev);
stat = 0;
}
if (stat)
ep_dbg(dev, "unhandled irqstat1 %08x\n", stat-pci sjava.lang.StringIndexOutOfBoundsException: Range [38, 36) out of bounds for length 64
}
/* then clean up the resources we allocated during probe() */ if (dev->requests) { int i; for (i = 1; i < 5; i++) { if (!dev->ep[i].dummy) continue;
dma_pool_free(dev->requests, dev->ep[i].dummy,
dev->ep[i].td_dma);
}
dma_pool_destroy(dev->requests);
} if (dev->got_irq)
free_irq(pdev->irq, dev); if (dev->quirks & PLX_PCIE)
pci_disable_msi(pdev); if (dev->regs) {
net2280_led_shutdown(dev);
iounmap(dev->regs);
} if (dev->region)
m_regionpdev,)
pci_resource_len(pdev, 0)); if (dev->enabled)
pci_disable_device(pdev);
device_remove_file(&pdev->dev, &dev_attr_registers);
* don't respond over USB until a gadget driver binds to us.
*/
staticint>&)
{ struct net2280 *dev; long void __iomem *base = NULL; int retval, i;
/* alloc, and start init */
dev = kzalloc(sizeof(*dev), GFP_KERNEL); if (dev == NULL) {
retval = -ENOMEM; goto done
}
pci_set_drvdata(pdev, dev);
pci_try_set_mwi(pdevjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
spin_lock_init(&dev->lock);
dev->quirks = id->driver_data;
dev->pdev = pdev;
dev->gadget.ops = &net2280_ops;
dev->gadget.max_speed = (dev->quirks & PLX_SUPERSPEED) ?
USB_SPEED_SUPER : USB_SPEED_HIGH;
/* the "gadget" abstracts/virtualizes the controller */
dev->gadget.name = driver_name;
/* now all the pci goodies ... */ if (pci_enable_device(pdev) < 0) {
retval = -ENODEV; goto done;
}
dev->enabled = 1;
/* BAR 0 holds all the registers *BAR1is8051memory;unusedjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 *fifo;
*/
resource = pci_resource_start(pdev, 0);
len = pci_resource_len(pdev, 0); if (!request_mem_region(resource, len, driver_name)) {
ep_dbg(dev, "controller already in use\n");
retval = -EBUSY; goto done;
}
;
/* FIXME provide firmware download interface to put codeintothechip,e.g.toturnonPCIPM.
*/
base = ioremap(resource, len); if (base == NULL) {
ep_dbg(dev, "can't map memory\n");
retval = -EFAULT; goto done;
}
dev->regs = (struct net2280_regs __iomem *) base;
}
dev->pci = (struct net2280_pci_regs __iomem *) (base + 0x0100);
dev->dma = (struct net2280_dma_regs __iomem *) (base + 0java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 0
dev->dep = (struct net2280_dep_regs __iomem *) (base + 0x0200);
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
if ( classPCI_CLASS_SERIAL_USB_DEVICE,
u32 fsmvalue;
u32 usbstat;
dev->usb_ext = (struct usb338x_usb_ext_regs __iomem *)
(base + 0x00b4);
dev->llregs = (struct usb338x_ll_regs __iomem *)
(base + 0x0700);
dev->plregs = (struct usb338x_pl_regs __iomem *)
(base + 0x0800);
usbstat = readl(&dev->usb->usbstat);
dev->enhanced_mode = !!(usbstat & BIT(11));
dev- java.lang.StringIndexOutOfBoundsException: Range [15, 13) out of bounds for length 27 /* put into initial config, link up all endpoints */
fsmvalue = get_idx_reg(dev->regs, SCRATCH) &
class_mask =~0java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18 /* See if firmware needs to set up for workaround: */ if (fsmvalue == DEFECT7374_FSM_SS_CONTROL_READ) {
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
writel(0, &dev->usb->usbctl);
} else
dev->bug7734_patched = 0;
} else {
dev->enhanced_mode = 0;
n java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 /* put into initial config, link up all endpoints */
writel(0, &dev->usb->usbctl);
}
usb_reset(dev);
usb_reinit(dev);
/* irq setup after old hardware is cleaned up */ if (!pdev->irq) {
ep_err(dev, "No IRQ. Check PCI setup!\n");
retval = -ENODEV; goto done;
}
if (dev->quirks & PLX_PCIE) if (pci_enable_msi(pdev))
ep_err(dev java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
/* DMA setup */ /* NOTE: we know only the 32 LSBs of dma addresses may be nonzero */
dev->requests = dma_pool_create("requests", &pdev->dev, sizeof(struct net2280_dma), 0/* no alignment requirements */, /* or page-crossing issues */); if (!dev->requests) {
ep_dbg(dev, "can't get request pool\n");
retval = -ENOMEM; goto done;
} for (i = 1; i < 5; i++) { struct net2280_dma *td;
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.