xref: /linux/drivers/usb/host/xhci.c (revision df02351331671abb26788bc13f6d276e26ae068f)
1  // SPDX-License-Identifier: GPL-2.0
2  /*
3   * xHCI host controller driver
4   *
5   * Copyright (C) 2008 Intel Corp.
6   *
7   * Author: Sarah Sharp
8   * Some code borrowed from the Linux EHCI driver.
9   */
10  
11  #include <linux/jiffies.h>
12  #include <linux/pci.h>
13  #include <linux/iommu.h>
14  #include <linux/iopoll.h>
15  #include <linux/irq.h>
16  #include <linux/log2.h>
17  #include <linux/module.h>
18  #include <linux/moduleparam.h>
19  #include <linux/slab.h>
20  #include <linux/string_choices.h>
21  #include <linux/dmi.h>
22  #include <linux/dma-mapping.h>
23  
24  #include "xhci.h"
25  #include "xhci-trace.h"
26  #include "xhci-debugfs.h"
27  #include "xhci-dbgcap.h"
28  
29  #define DRIVER_AUTHOR "Sarah Sharp"
30  #define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver"
31  
32  #define	PORT_WAKE_BITS	(PORT_WKOC_E | PORT_WKDISC_E | PORT_WKCONN_E)
33  
34  /* Some 0.95 hardware can't handle the chain bit on a Link TRB being cleared */
35  static int link_quirk;
36  module_param(link_quirk, int, S_IRUGO | S_IWUSR);
37  MODULE_PARM_DESC(link_quirk, "Don't clear the chain bit on a link TRB");
38  
39  static unsigned long long quirks;
40  module_param(quirks, ullong, S_IRUGO);
41  MODULE_PARM_DESC(quirks, "Bit flags for quirks to be enabled as default");
42  
td_on_ring(struct xhci_td * td,struct xhci_ring * ring)43  static bool td_on_ring(struct xhci_td *td, struct xhci_ring *ring)
44  {
45  	struct xhci_segment *seg;
46  
47  	if (!td || !td->start_seg)
48  		return false;
49  
50  	xhci_for_each_ring_seg(ring->first_seg, seg) {
51  		if (seg == td->start_seg)
52  			return true;
53  	}
54  
55  	return false;
56  }
57  
58  /*
59   * xhci_handshake - spin reading hc until handshake completes or fails
60   * @ptr: address of hc register to be read
61   * @mask: bits to look at in result of read
62   * @done: value of those bits when handshake succeeds
63   * @usec: timeout in microseconds
64   *
65   * Returns negative errno, or zero on success
66   *
67   * Success happens when the "mask" bits have the specified value (hardware
68   * handshake done).  There are two failure modes:  "usec" have passed (major
69   * hardware flakeout), or the register reads as all-ones (hardware removed).
70   */
xhci_handshake(void __iomem * ptr,u32 mask,u32 done,u64 timeout_us)71  int xhci_handshake(void __iomem *ptr, u32 mask, u32 done, u64 timeout_us)
72  {
73  	u32	result;
74  	int	ret;
75  
76  	ret = readl_poll_timeout_atomic(ptr, result,
77  					(result & mask) == done ||
78  					result == U32_MAX,
79  					1, timeout_us);
80  	if (result == U32_MAX)		/* card removed */
81  		return -ENODEV;
82  
83  	return ret;
84  }
85  
86  /*
87   * xhci_handshake_check_state - same as xhci_handshake but takes an additional
88   * exit_state parameter, and bails out with an error immediately when xhc_state
89   * has exit_state flag set.
90   */
xhci_handshake_check_state(struct xhci_hcd * xhci,void __iomem * ptr,u32 mask,u32 done,int usec,unsigned int exit_state)91  int xhci_handshake_check_state(struct xhci_hcd *xhci, void __iomem *ptr,
92  		u32 mask, u32 done, int usec, unsigned int exit_state)
93  {
94  	u32	result;
95  	int	ret;
96  
97  	ret = readl_poll_timeout_atomic(ptr, result,
98  				(result & mask) == done ||
99  				result == U32_MAX ||
100  				xhci->xhc_state & exit_state,
101  				1, usec);
102  
103  	if (result == U32_MAX || xhci->xhc_state & exit_state)
104  		return -ENODEV;
105  
106  	return ret;
107  }
108  
109  /*
110   * Disable interrupts and begin the xHCI halting process.
111   */
xhci_quiesce(struct xhci_hcd * xhci)112  void xhci_quiesce(struct xhci_hcd *xhci)
113  {
114  	u32 halted;
115  	u32 cmd;
116  	u32 mask;
117  
118  	mask = ~(XHCI_IRQS);
119  	halted = readl(&xhci->op_regs->status) & STS_HALT;
120  	if (!halted)
121  		mask &= ~CMD_RUN;
122  
123  	cmd = readl(&xhci->op_regs->command);
124  	cmd &= mask;
125  	writel(cmd, &xhci->op_regs->command);
126  }
127  
128  /*
129   * Force HC into halt state.
130   *
131   * Disable any IRQs and clear the run/stop bit.
132   * HC will complete any current and actively pipelined transactions, and
133   * should halt within 16 ms of the run/stop bit being cleared.
134   * Read HC Halted bit in the status register to see when the HC is finished.
135   */
xhci_halt(struct xhci_hcd * xhci)136  int xhci_halt(struct xhci_hcd *xhci)
137  {
138  	int ret;
139  
140  	xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Halt the HC");
141  	xhci_quiesce(xhci);
142  
143  	ret = xhci_handshake(&xhci->op_regs->status,
144  			STS_HALT, STS_HALT, XHCI_MAX_HALT_USEC);
145  	if (ret) {
146  		xhci_warn(xhci, "Host halt failed, %d\n", ret);
147  		return ret;
148  	}
149  
150  	xhci->xhc_state |= XHCI_STATE_HALTED;
151  	xhci->cmd_ring_state = CMD_RING_STATE_STOPPED;
152  
153  	return ret;
154  }
155  
156  /*
157   * Set the run bit and wait for the host to be running.
158   */
xhci_start(struct xhci_hcd * xhci)159  int xhci_start(struct xhci_hcd *xhci)
160  {
161  	u32 temp;
162  	int ret;
163  
164  	temp = readl(&xhci->op_regs->command);
165  	temp |= (CMD_RUN);
166  	xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Turn on HC, cmd = 0x%x.",
167  			temp);
168  	writel(temp, &xhci->op_regs->command);
169  
170  	/*
171  	 * Wait for the HCHalted Status bit to be 0 to indicate the host is
172  	 * running.
173  	 */
174  	ret = xhci_handshake(&xhci->op_regs->status,
175  			STS_HALT, 0, XHCI_MAX_HALT_USEC);
176  	if (ret == -ETIMEDOUT)
177  		xhci_err(xhci, "Host took too long to start, "
178  				"waited %u microseconds.\n",
179  				XHCI_MAX_HALT_USEC);
180  	if (!ret) {
181  		/* clear state flags. Including dying, halted or removing */
182  		xhci->xhc_state = 0;
183  		xhci->run_graceperiod = jiffies + msecs_to_jiffies(500);
184  	}
185  
186  	return ret;
187  }
188  
189  /*
190   * Reset a halted HC.
191   *
192   * This resets pipelines, timers, counters, state machines, etc.
193   * Transactions will be terminated immediately, and operational registers
194   * will be set to their defaults.
195   */
xhci_reset(struct xhci_hcd * xhci,u64 timeout_us)196  int xhci_reset(struct xhci_hcd *xhci, u64 timeout_us)
197  {
198  	u32 command;
199  	u32 state;
200  	int ret;
201  
202  	state = readl(&xhci->op_regs->status);
203  
204  	if (state == ~(u32)0) {
205  		xhci_warn(xhci, "Host not accessible, reset failed.\n");
206  		return -ENODEV;
207  	}
208  
209  	if ((state & STS_HALT) == 0) {
210  		xhci_warn(xhci, "Host controller not halted, aborting reset.\n");
211  		return 0;
212  	}
213  
214  	xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Reset the HC");
215  	command = readl(&xhci->op_regs->command);
216  	command |= CMD_RESET;
217  	writel(command, &xhci->op_regs->command);
218  
219  	/* Existing Intel xHCI controllers require a delay of 1 mS,
220  	 * after setting the CMD_RESET bit, and before accessing any
221  	 * HC registers. This allows the HC to complete the
222  	 * reset operation and be ready for HC register access.
223  	 * Without this delay, the subsequent HC register access,
224  	 * may result in a system hang very rarely.
225  	 */
226  	if (xhci->quirks & XHCI_INTEL_HOST)
227  		udelay(1000);
228  
229  	ret = xhci_handshake_check_state(xhci, &xhci->op_regs->command,
230  				CMD_RESET, 0, timeout_us, XHCI_STATE_REMOVING);
231  	if (ret)
232  		return ret;
233  
234  	if (xhci->quirks & XHCI_ASMEDIA_MODIFY_FLOWCONTROL)
235  		usb_asmedia_modifyflowcontrol(to_pci_dev(xhci_to_hcd(xhci)->self.controller));
236  
237  	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
238  			 "Wait for controller to be ready for doorbell rings");
239  	/*
240  	 * xHCI cannot write to any doorbells or operational registers other
241  	 * than status until the "Controller Not Ready" flag is cleared.
242  	 */
243  	ret = xhci_handshake(&xhci->op_regs->status, STS_CNR, 0, timeout_us);
244  
245  	xhci->usb2_rhub.bus_state.port_c_suspend = 0;
246  	xhci->usb2_rhub.bus_state.suspended_ports = 0;
247  	xhci->usb2_rhub.bus_state.resuming_ports = 0;
248  	xhci->usb3_rhub.bus_state.port_c_suspend = 0;
249  	xhci->usb3_rhub.bus_state.suspended_ports = 0;
250  	xhci->usb3_rhub.bus_state.resuming_ports = 0;
251  
252  	return ret;
253  }
254  
xhci_zero_64b_regs(struct xhci_hcd * xhci)255  static void xhci_zero_64b_regs(struct xhci_hcd *xhci)
256  {
257  	struct device *dev = xhci_to_hcd(xhci)->self.sysdev;
258  	struct iommu_domain *domain;
259  	int err, i;
260  	u64 val;
261  	u32 intrs;
262  
263  	/*
264  	 * Some Renesas controllers get into a weird state if they are
265  	 * reset while programmed with 64bit addresses (they will preserve
266  	 * the top half of the address in internal, non visible
267  	 * registers). You end up with half the address coming from the
268  	 * kernel, and the other half coming from the firmware. Also,
269  	 * changing the programming leads to extra accesses even if the
270  	 * controller is supposed to be halted. The controller ends up with
271  	 * a fatal fault, and is then ripe for being properly reset.
272  	 *
273  	 * Special care is taken to only apply this if the device is behind
274  	 * an iommu. Doing anything when there is no iommu is definitely
275  	 * unsafe...
276  	 */
277  	domain = iommu_get_domain_for_dev(dev);
278  	if (!(xhci->quirks & XHCI_ZERO_64B_REGS) || !domain ||
279  	    domain->type == IOMMU_DOMAIN_IDENTITY)
280  		return;
281  
282  	xhci_info(xhci, "Zeroing 64bit base registers, expecting fault\n");
283  
284  	/* Clear HSEIE so that faults do not get signaled */
285  	val = readl(&xhci->op_regs->command);
286  	val &= ~CMD_HSEIE;
287  	writel(val, &xhci->op_regs->command);
288  
289  	/* Clear HSE (aka FATAL) */
290  	val = readl(&xhci->op_regs->status);
291  	val |= STS_FATAL;
292  	writel(val, &xhci->op_regs->status);
293  
294  	/* Now zero the registers, and brace for impact */
295  	val = xhci_read_64(xhci, &xhci->op_regs->dcbaa_ptr);
296  	if (upper_32_bits(val))
297  		xhci_write_64(xhci, 0, &xhci->op_regs->dcbaa_ptr);
298  	val = xhci_read_64(xhci, &xhci->op_regs->cmd_ring);
299  	if (upper_32_bits(val))
300  		xhci_write_64(xhci, 0, &xhci->op_regs->cmd_ring);
301  
302  	intrs = min_t(u32, HCS_MAX_INTRS(xhci->hcs_params1),
303  		      ARRAY_SIZE(xhci->run_regs->ir_set));
304  
305  	for (i = 0; i < intrs; i++) {
306  		struct xhci_intr_reg __iomem *ir;
307  
308  		ir = &xhci->run_regs->ir_set[i];
309  		val = xhci_read_64(xhci, &ir->erst_base);
310  		if (upper_32_bits(val))
311  			xhci_write_64(xhci, 0, &ir->erst_base);
312  		val= xhci_read_64(xhci, &ir->erst_dequeue);
313  		if (upper_32_bits(val))
314  			xhci_write_64(xhci, 0, &ir->erst_dequeue);
315  	}
316  
317  	/* Wait for the fault to appear. It will be cleared on reset */
318  	err = xhci_handshake(&xhci->op_regs->status,
319  			     STS_FATAL, STS_FATAL,
320  			     XHCI_MAX_HALT_USEC);
321  	if (!err)
322  		xhci_info(xhci, "Fault detected\n");
323  }
324  
xhci_enable_interrupter(struct xhci_interrupter * ir)325  static int xhci_enable_interrupter(struct xhci_interrupter *ir)
326  {
327  	u32 iman;
328  
329  	if (!ir || !ir->ir_set)
330  		return -EINVAL;
331  
332  	iman = readl(&ir->ir_set->irq_pending);
333  	writel(ER_IRQ_ENABLE(iman), &ir->ir_set->irq_pending);
334  
335  	return 0;
336  }
337  
xhci_disable_interrupter(struct xhci_interrupter * ir)338  static int xhci_disable_interrupter(struct xhci_interrupter *ir)
339  {
340  	u32 iman;
341  
342  	if (!ir || !ir->ir_set)
343  		return -EINVAL;
344  
345  	iman = readl(&ir->ir_set->irq_pending);
346  	writel(ER_IRQ_DISABLE(iman), &ir->ir_set->irq_pending);
347  
348  	return 0;
349  }
350  
351  /* interrupt moderation interval imod_interval in nanoseconds */
xhci_set_interrupter_moderation(struct xhci_interrupter * ir,u32 imod_interval)352  int xhci_set_interrupter_moderation(struct xhci_interrupter *ir,
353  				    u32 imod_interval)
354  {
355  	u32 imod;
356  
357  	if (!ir || !ir->ir_set || imod_interval > U16_MAX * 250)
358  		return -EINVAL;
359  
360  	imod = readl(&ir->ir_set->irq_control);
361  	imod &= ~ER_IRQ_INTERVAL_MASK;
362  	imod |= (imod_interval / 250) & ER_IRQ_INTERVAL_MASK;
363  	writel(imod, &ir->ir_set->irq_control);
364  
365  	return 0;
366  }
367  
compliance_mode_recovery(struct timer_list * t)368  static void compliance_mode_recovery(struct timer_list *t)
369  {
370  	struct xhci_hcd *xhci;
371  	struct usb_hcd *hcd;
372  	struct xhci_hub *rhub;
373  	u32 temp;
374  	int i;
375  
376  	xhci = from_timer(xhci, t, comp_mode_recovery_timer);
377  	rhub = &xhci->usb3_rhub;
378  	hcd = rhub->hcd;
379  
380  	if (!hcd)
381  		return;
382  
383  	for (i = 0; i < rhub->num_ports; i++) {
384  		temp = readl(rhub->ports[i]->addr);
385  		if ((temp & PORT_PLS_MASK) == USB_SS_PORT_LS_COMP_MOD) {
386  			/*
387  			 * Compliance Mode Detected. Letting USB Core
388  			 * handle the Warm Reset
389  			 */
390  			xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
391  					"Compliance mode detected->port %d",
392  					i + 1);
393  			xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
394  					"Attempting compliance mode recovery");
395  
396  			if (hcd->state == HC_STATE_SUSPENDED)
397  				usb_hcd_resume_root_hub(hcd);
398  
399  			usb_hcd_poll_rh_status(hcd);
400  		}
401  	}
402  
403  	if (xhci->port_status_u0 != ((1 << rhub->num_ports) - 1))
404  		mod_timer(&xhci->comp_mode_recovery_timer,
405  			jiffies + msecs_to_jiffies(COMP_MODE_RCVRY_MSECS));
406  }
407  
408  /*
409   * Quirk to work around issue generated by the SN65LVPE502CP USB3.0 re-driver
410   * that causes ports behind that hardware to enter compliance mode sometimes.
411   * The quirk creates a timer that polls every 2 seconds the link state of
412   * each host controller's port and recovers it by issuing a Warm reset
413   * if Compliance mode is detected, otherwise the port will become "dead" (no
414   * device connections or disconnections will be detected anymore). Becasue no
415   * status event is generated when entering compliance mode (per xhci spec),
416   * this quirk is needed on systems that have the failing hardware installed.
417   */
compliance_mode_recovery_timer_init(struct xhci_hcd * xhci)418  static void compliance_mode_recovery_timer_init(struct xhci_hcd *xhci)
419  {
420  	xhci->port_status_u0 = 0;
421  	timer_setup(&xhci->comp_mode_recovery_timer, compliance_mode_recovery,
422  		    0);
423  	xhci->comp_mode_recovery_timer.expires = jiffies +
424  			msecs_to_jiffies(COMP_MODE_RCVRY_MSECS);
425  
426  	add_timer(&xhci->comp_mode_recovery_timer);
427  	xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
428  			"Compliance mode recovery timer initialized");
429  }
430  
431  /*
432   * This function identifies the systems that have installed the SN65LVPE502CP
433   * USB3.0 re-driver and that need the Compliance Mode Quirk.
434   * Systems:
435   * Vendor: Hewlett-Packard -> System Models: Z420, Z620 and Z820
436   */
xhci_compliance_mode_recovery_timer_quirk_check(void)437  static bool xhci_compliance_mode_recovery_timer_quirk_check(void)
438  {
439  	const char *dmi_product_name, *dmi_sys_vendor;
440  
441  	dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME);
442  	dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR);
443  	if (!dmi_product_name || !dmi_sys_vendor)
444  		return false;
445  
446  	if (!(strstr(dmi_sys_vendor, "Hewlett-Packard")))
447  		return false;
448  
449  	if (strstr(dmi_product_name, "Z420") ||
450  			strstr(dmi_product_name, "Z620") ||
451  			strstr(dmi_product_name, "Z820") ||
452  			strstr(dmi_product_name, "Z1 Workstation"))
453  		return true;
454  
455  	return false;
456  }
457  
xhci_all_ports_seen_u0(struct xhci_hcd * xhci)458  static int xhci_all_ports_seen_u0(struct xhci_hcd *xhci)
459  {
460  	return (xhci->port_status_u0 == ((1 << xhci->usb3_rhub.num_ports) - 1));
461  }
462  
463  
464  /*
465   * Initialize memory for HCD and xHC (one-time init).
466   *
467   * Program the PAGESIZE register, initialize the device context array, create
468   * device contexts (?), set up a command ring segment (or two?), create event
469   * ring (one for now).
470   */
xhci_init(struct usb_hcd * hcd)471  static int xhci_init(struct usb_hcd *hcd)
472  {
473  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
474  	int retval;
475  
476  	xhci_dbg_trace(xhci, trace_xhci_dbg_init, "xhci_init");
477  	spin_lock_init(&xhci->lock);
478  
479  	retval = xhci_mem_init(xhci, GFP_KERNEL);
480  	xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Finished xhci_init");
481  
482  	/* Initializing Compliance Mode Recovery Data If Needed */
483  	if (xhci_compliance_mode_recovery_timer_quirk_check()) {
484  		xhci->quirks |= XHCI_COMP_MODE_QUIRK;
485  		compliance_mode_recovery_timer_init(xhci);
486  	}
487  
488  	return retval;
489  }
490  
491  /*-------------------------------------------------------------------------*/
492  
xhci_run_finished(struct xhci_hcd * xhci)493  static int xhci_run_finished(struct xhci_hcd *xhci)
494  {
495  	struct xhci_interrupter *ir = xhci->interrupters[0];
496  	unsigned long	flags;
497  	u32		temp;
498  
499  	/*
500  	 * Enable interrupts before starting the host (xhci 4.2 and 5.5.2).
501  	 * Protect the short window before host is running with a lock
502  	 */
503  	spin_lock_irqsave(&xhci->lock, flags);
504  
505  	xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Enable interrupts");
506  	temp = readl(&xhci->op_regs->command);
507  	temp |= (CMD_EIE);
508  	writel(temp, &xhci->op_regs->command);
509  
510  	xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Enable primary interrupter");
511  	xhci_enable_interrupter(ir);
512  
513  	if (xhci_start(xhci)) {
514  		xhci_halt(xhci);
515  		spin_unlock_irqrestore(&xhci->lock, flags);
516  		return -ENODEV;
517  	}
518  
519  	xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
520  
521  	if (xhci->quirks & XHCI_NEC_HOST)
522  		xhci_ring_cmd_db(xhci);
523  
524  	spin_unlock_irqrestore(&xhci->lock, flags);
525  
526  	return 0;
527  }
528  
529  /*
530   * Start the HC after it was halted.
531   *
532   * This function is called by the USB core when the HC driver is added.
533   * Its opposite is xhci_stop().
534   *
535   * xhci_init() must be called once before this function can be called.
536   * Reset the HC, enable device slot contexts, program DCBAAP, and
537   * set command ring pointer and event ring pointer.
538   *
539   * Setup MSI-X vectors and enable interrupts.
540   */
xhci_run(struct usb_hcd * hcd)541  int xhci_run(struct usb_hcd *hcd)
542  {
543  	u64 temp_64;
544  	int ret;
545  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
546  	struct xhci_interrupter *ir = xhci->interrupters[0];
547  	/* Start the xHCI host controller running only after the USB 2.0 roothub
548  	 * is setup.
549  	 */
550  
551  	hcd->uses_new_polling = 1;
552  	if (hcd->msi_enabled)
553  		ir->ip_autoclear = true;
554  
555  	if (!usb_hcd_is_primary_hcd(hcd))
556  		return xhci_run_finished(xhci);
557  
558  	xhci_dbg_trace(xhci, trace_xhci_dbg_init, "xhci_run");
559  
560  	temp_64 = xhci_read_64(xhci, &ir->ir_set->erst_dequeue);
561  	temp_64 &= ERST_PTR_MASK;
562  	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
563  			"ERST deq = 64'h%0lx", (long unsigned int) temp_64);
564  
565  	xhci_set_interrupter_moderation(ir, xhci->imod_interval);
566  
567  	if (xhci->quirks & XHCI_NEC_HOST) {
568  		struct xhci_command *command;
569  
570  		command = xhci_alloc_command(xhci, false, GFP_KERNEL);
571  		if (!command)
572  			return -ENOMEM;
573  
574  		ret = xhci_queue_vendor_command(xhci, command, 0, 0, 0,
575  				TRB_TYPE(TRB_NEC_GET_FW));
576  		if (ret)
577  			xhci_free_command(xhci, command);
578  	}
579  	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
580  			"Finished %s for main hcd", __func__);
581  
582  	xhci_create_dbc_dev(xhci);
583  
584  	xhci_debugfs_init(xhci);
585  
586  	if (xhci_has_one_roothub(xhci))
587  		return xhci_run_finished(xhci);
588  
589  	set_bit(HCD_FLAG_DEFER_RH_REGISTER, &hcd->flags);
590  
591  	return 0;
592  }
593  EXPORT_SYMBOL_GPL(xhci_run);
594  
595  /*
596   * Stop xHCI driver.
597   *
598   * This function is called by the USB core when the HC driver is removed.
599   * Its opposite is xhci_run().
600   *
601   * Disable device contexts, disable IRQs, and quiesce the HC.
602   * Reset the HC, finish any completed transactions, and cleanup memory.
603   */
xhci_stop(struct usb_hcd * hcd)604  void xhci_stop(struct usb_hcd *hcd)
605  {
606  	u32 temp;
607  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
608  	struct xhci_interrupter *ir = xhci->interrupters[0];
609  
610  	mutex_lock(&xhci->mutex);
611  
612  	/* Only halt host and free memory after both hcds are removed */
613  	if (!usb_hcd_is_primary_hcd(hcd)) {
614  		mutex_unlock(&xhci->mutex);
615  		return;
616  	}
617  
618  	xhci_remove_dbc_dev(xhci);
619  
620  	spin_lock_irq(&xhci->lock);
621  	xhci->xhc_state |= XHCI_STATE_HALTED;
622  	xhci->cmd_ring_state = CMD_RING_STATE_STOPPED;
623  	xhci_halt(xhci);
624  	xhci_reset(xhci, XHCI_RESET_SHORT_USEC);
625  	spin_unlock_irq(&xhci->lock);
626  
627  	/* Deleting Compliance Mode Recovery Timer */
628  	if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) &&
629  			(!(xhci_all_ports_seen_u0(xhci)))) {
630  		del_timer_sync(&xhci->comp_mode_recovery_timer);
631  		xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
632  				"%s: compliance mode recovery timer deleted",
633  				__func__);
634  	}
635  
636  	if (xhci->quirks & XHCI_AMD_PLL_FIX)
637  		usb_amd_dev_put();
638  
639  	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
640  			"// Disabling event ring interrupts");
641  	temp = readl(&xhci->op_regs->status);
642  	writel((temp & ~0x1fff) | STS_EINT, &xhci->op_regs->status);
643  	xhci_disable_interrupter(ir);
644  
645  	xhci_dbg_trace(xhci, trace_xhci_dbg_init, "cleaning up memory");
646  	xhci_mem_cleanup(xhci);
647  	xhci_debugfs_exit(xhci);
648  	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
649  			"xhci_stop completed - status = %x",
650  			readl(&xhci->op_regs->status));
651  	mutex_unlock(&xhci->mutex);
652  }
653  EXPORT_SYMBOL_GPL(xhci_stop);
654  
655  /*
656   * Shutdown HC (not bus-specific)
657   *
658   * This is called when the machine is rebooting or halting.  We assume that the
659   * machine will be powered off, and the HC's internal state will be reset.
660   * Don't bother to free memory.
661   *
662   * This will only ever be called with the main usb_hcd (the USB3 roothub).
663   */
xhci_shutdown(struct usb_hcd * hcd)664  void xhci_shutdown(struct usb_hcd *hcd)
665  {
666  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
667  
668  	if (xhci->quirks & XHCI_SPURIOUS_REBOOT)
669  		usb_disable_xhci_ports(to_pci_dev(hcd->self.sysdev));
670  
671  	/* Don't poll the roothubs after shutdown. */
672  	xhci_dbg(xhci, "%s: stopping usb%d port polling.\n",
673  			__func__, hcd->self.busnum);
674  	clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
675  	del_timer_sync(&hcd->rh_timer);
676  
677  	if (xhci->shared_hcd) {
678  		clear_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags);
679  		del_timer_sync(&xhci->shared_hcd->rh_timer);
680  	}
681  
682  	spin_lock_irq(&xhci->lock);
683  	xhci_halt(xhci);
684  
685  	/*
686  	 * Workaround for spurious wakeps at shutdown with HSW, and for boot
687  	 * firmware delay in ADL-P PCH if port are left in U3 at shutdown
688  	 */
689  	if (xhci->quirks & XHCI_SPURIOUS_WAKEUP ||
690  	    xhci->quirks & XHCI_RESET_TO_DEFAULT)
691  		xhci_reset(xhci, XHCI_RESET_SHORT_USEC);
692  
693  	spin_unlock_irq(&xhci->lock);
694  
695  	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
696  			"xhci_shutdown completed - status = %x",
697  			readl(&xhci->op_regs->status));
698  }
699  EXPORT_SYMBOL_GPL(xhci_shutdown);
700  
701  #ifdef CONFIG_PM
xhci_save_registers(struct xhci_hcd * xhci)702  static void xhci_save_registers(struct xhci_hcd *xhci)
703  {
704  	struct xhci_interrupter *ir;
705  	unsigned int i;
706  
707  	xhci->s3.command = readl(&xhci->op_regs->command);
708  	xhci->s3.dev_nt = readl(&xhci->op_regs->dev_notification);
709  	xhci->s3.dcbaa_ptr = xhci_read_64(xhci, &xhci->op_regs->dcbaa_ptr);
710  	xhci->s3.config_reg = readl(&xhci->op_regs->config_reg);
711  
712  	/* save both primary and all secondary interrupters */
713  	/* fixme, shold we lock  to prevent race with remove secondary interrupter? */
714  	for (i = 0; i < xhci->max_interrupters; i++) {
715  		ir = xhci->interrupters[i];
716  		if (!ir)
717  			continue;
718  
719  		ir->s3_erst_size = readl(&ir->ir_set->erst_size);
720  		ir->s3_erst_base = xhci_read_64(xhci, &ir->ir_set->erst_base);
721  		ir->s3_erst_dequeue = xhci_read_64(xhci, &ir->ir_set->erst_dequeue);
722  		ir->s3_irq_pending = readl(&ir->ir_set->irq_pending);
723  		ir->s3_irq_control = readl(&ir->ir_set->irq_control);
724  	}
725  }
726  
xhci_restore_registers(struct xhci_hcd * xhci)727  static void xhci_restore_registers(struct xhci_hcd *xhci)
728  {
729  	struct xhci_interrupter *ir;
730  	unsigned int i;
731  
732  	writel(xhci->s3.command, &xhci->op_regs->command);
733  	writel(xhci->s3.dev_nt, &xhci->op_regs->dev_notification);
734  	xhci_write_64(xhci, xhci->s3.dcbaa_ptr, &xhci->op_regs->dcbaa_ptr);
735  	writel(xhci->s3.config_reg, &xhci->op_regs->config_reg);
736  
737  	/* FIXME should we lock to protect against freeing of interrupters */
738  	for (i = 0; i < xhci->max_interrupters; i++) {
739  		ir = xhci->interrupters[i];
740  		if (!ir)
741  			continue;
742  
743  		writel(ir->s3_erst_size, &ir->ir_set->erst_size);
744  		xhci_write_64(xhci, ir->s3_erst_base, &ir->ir_set->erst_base);
745  		xhci_write_64(xhci, ir->s3_erst_dequeue, &ir->ir_set->erst_dequeue);
746  		writel(ir->s3_irq_pending, &ir->ir_set->irq_pending);
747  		writel(ir->s3_irq_control, &ir->ir_set->irq_control);
748  	}
749  }
750  
xhci_set_cmd_ring_deq(struct xhci_hcd * xhci)751  static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci)
752  {
753  	u64	val_64;
754  
755  	/* step 2: initialize command ring buffer */
756  	val_64 = xhci_read_64(xhci, &xhci->op_regs->cmd_ring);
757  	val_64 = (val_64 & (u64) CMD_RING_RSVD_BITS) |
758  		(xhci_trb_virt_to_dma(xhci->cmd_ring->deq_seg,
759  				      xhci->cmd_ring->dequeue) &
760  		 (u64) ~CMD_RING_RSVD_BITS) |
761  		xhci->cmd_ring->cycle_state;
762  	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
763  			"// Setting command ring address to 0x%llx",
764  			(long unsigned long) val_64);
765  	xhci_write_64(xhci, val_64, &xhci->op_regs->cmd_ring);
766  }
767  
768  /*
769   * The whole command ring must be cleared to zero when we suspend the host.
770   *
771   * The host doesn't save the command ring pointer in the suspend well, so we
772   * need to re-program it on resume.  Unfortunately, the pointer must be 64-byte
773   * aligned, because of the reserved bits in the command ring dequeue pointer
774   * register.  Therefore, we can't just set the dequeue pointer back in the
775   * middle of the ring (TRBs are 16-byte aligned).
776   */
xhci_clear_command_ring(struct xhci_hcd * xhci)777  static void xhci_clear_command_ring(struct xhci_hcd *xhci)
778  {
779  	struct xhci_ring *ring;
780  	struct xhci_segment *seg;
781  
782  	ring = xhci->cmd_ring;
783  	xhci_for_each_ring_seg(ring->first_seg, seg) {
784  		/* erase all TRBs before the link */
785  		memset(seg->trbs, 0, sizeof(union xhci_trb) * (TRBS_PER_SEGMENT - 1));
786  		/* clear link cycle bit */
787  		seg->trbs[TRBS_PER_SEGMENT - 1].link.control &= cpu_to_le32(~TRB_CYCLE);
788  	}
789  
790  	xhci_initialize_ring_info(ring);
791  	/*
792  	 * Reset the hardware dequeue pointer.
793  	 * Yes, this will need to be re-written after resume, but we're paranoid
794  	 * and want to make sure the hardware doesn't access bogus memory
795  	 * because, say, the BIOS or an SMI started the host without changing
796  	 * the command ring pointers.
797  	 */
798  	xhci_set_cmd_ring_deq(xhci);
799  }
800  
801  /*
802   * Disable port wake bits if do_wakeup is not set.
803   *
804   * Also clear a possible internal port wake state left hanging for ports that
805   * detected termination but never successfully enumerated (trained to 0U).
806   * Internal wake causes immediate xHCI wake after suspend. PORT_CSC write done
807   * at enumeration clears this wake, force one here as well for unconnected ports
808   */
809  
xhci_disable_hub_port_wake(struct xhci_hcd * xhci,struct xhci_hub * rhub,bool do_wakeup)810  static void xhci_disable_hub_port_wake(struct xhci_hcd *xhci,
811  				       struct xhci_hub *rhub,
812  				       bool do_wakeup)
813  {
814  	unsigned long flags;
815  	u32 t1, t2, portsc;
816  	int i;
817  
818  	spin_lock_irqsave(&xhci->lock, flags);
819  
820  	for (i = 0; i < rhub->num_ports; i++) {
821  		portsc = readl(rhub->ports[i]->addr);
822  		t1 = xhci_port_state_to_neutral(portsc);
823  		t2 = t1;
824  
825  		/* clear wake bits if do_wake is not set */
826  		if (!do_wakeup)
827  			t2 &= ~PORT_WAKE_BITS;
828  
829  		/* Don't touch csc bit if connected or connect change is set */
830  		if (!(portsc & (PORT_CSC | PORT_CONNECT)))
831  			t2 |= PORT_CSC;
832  
833  		if (t1 != t2) {
834  			writel(t2, rhub->ports[i]->addr);
835  			xhci_dbg(xhci, "config port %d-%d wake bits, portsc: 0x%x, write: 0x%x\n",
836  				 rhub->hcd->self.busnum, i + 1, portsc, t2);
837  		}
838  	}
839  	spin_unlock_irqrestore(&xhci->lock, flags);
840  }
841  
xhci_pending_portevent(struct xhci_hcd * xhci)842  static bool xhci_pending_portevent(struct xhci_hcd *xhci)
843  {
844  	struct xhci_port	**ports;
845  	int			port_index;
846  	u32			status;
847  	u32			portsc;
848  
849  	status = readl(&xhci->op_regs->status);
850  	if (status & STS_EINT)
851  		return true;
852  	/*
853  	 * Checking STS_EINT is not enough as there is a lag between a change
854  	 * bit being set and the Port Status Change Event that it generated
855  	 * being written to the Event Ring. See note in xhci 1.1 section 4.19.2.
856  	 */
857  
858  	port_index = xhci->usb2_rhub.num_ports;
859  	ports = xhci->usb2_rhub.ports;
860  	while (port_index--) {
861  		portsc = readl(ports[port_index]->addr);
862  		if (portsc & PORT_CHANGE_MASK ||
863  		    (portsc & PORT_PLS_MASK) == XDEV_RESUME)
864  			return true;
865  	}
866  	port_index = xhci->usb3_rhub.num_ports;
867  	ports = xhci->usb3_rhub.ports;
868  	while (port_index--) {
869  		portsc = readl(ports[port_index]->addr);
870  		if (portsc & (PORT_CHANGE_MASK | PORT_CAS) ||
871  		    (portsc & PORT_PLS_MASK) == XDEV_RESUME)
872  			return true;
873  	}
874  	return false;
875  }
876  
877  /*
878   * Stop HC (not bus-specific)
879   *
880   * This is called when the machine transition into S3/S4 mode.
881   *
882   */
xhci_suspend(struct xhci_hcd * xhci,bool do_wakeup)883  int xhci_suspend(struct xhci_hcd *xhci, bool do_wakeup)
884  {
885  	int			rc = 0;
886  	unsigned int		delay = XHCI_MAX_HALT_USEC * 2;
887  	struct usb_hcd		*hcd = xhci_to_hcd(xhci);
888  	u32			command;
889  	u32			res;
890  
891  	if (!hcd->state)
892  		return 0;
893  
894  	if (hcd->state != HC_STATE_SUSPENDED ||
895  	    (xhci->shared_hcd && xhci->shared_hcd->state != HC_STATE_SUSPENDED))
896  		return -EINVAL;
897  
898  	/* Clear root port wake on bits if wakeup not allowed. */
899  	xhci_disable_hub_port_wake(xhci, &xhci->usb3_rhub, do_wakeup);
900  	xhci_disable_hub_port_wake(xhci, &xhci->usb2_rhub, do_wakeup);
901  
902  	if (!HCD_HW_ACCESSIBLE(hcd))
903  		return 0;
904  
905  	xhci_dbc_suspend(xhci);
906  
907  	/* Don't poll the roothubs on bus suspend. */
908  	xhci_dbg(xhci, "%s: stopping usb%d port polling.\n",
909  		 __func__, hcd->self.busnum);
910  	clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
911  	del_timer_sync(&hcd->rh_timer);
912  	if (xhci->shared_hcd) {
913  		clear_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags);
914  		del_timer_sync(&xhci->shared_hcd->rh_timer);
915  	}
916  
917  	if (xhci->quirks & XHCI_SUSPEND_DELAY)
918  		usleep_range(1000, 1500);
919  
920  	spin_lock_irq(&xhci->lock);
921  	clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
922  	if (xhci->shared_hcd)
923  		clear_bit(HCD_FLAG_HW_ACCESSIBLE, &xhci->shared_hcd->flags);
924  	/* step 1: stop endpoint */
925  	/* skipped assuming that port suspend has done */
926  
927  	/* step 2: clear Run/Stop bit */
928  	command = readl(&xhci->op_regs->command);
929  	command &= ~CMD_RUN;
930  	writel(command, &xhci->op_regs->command);
931  
932  	/* Some chips from Fresco Logic need an extraordinary delay */
933  	delay *= (xhci->quirks & XHCI_SLOW_SUSPEND) ? 10 : 1;
934  
935  	if (xhci_handshake(&xhci->op_regs->status,
936  		      STS_HALT, STS_HALT, delay)) {
937  		xhci_warn(xhci, "WARN: xHC CMD_RUN timeout\n");
938  		spin_unlock_irq(&xhci->lock);
939  		return -ETIMEDOUT;
940  	}
941  	xhci_clear_command_ring(xhci);
942  
943  	/* step 3: save registers */
944  	xhci_save_registers(xhci);
945  
946  	/* step 4: set CSS flag */
947  	command = readl(&xhci->op_regs->command);
948  	command |= CMD_CSS;
949  	writel(command, &xhci->op_regs->command);
950  	xhci->broken_suspend = 0;
951  	if (xhci_handshake(&xhci->op_regs->status,
952  				STS_SAVE, 0, 20 * 1000)) {
953  	/*
954  	 * AMD SNPS xHC 3.0 occasionally does not clear the
955  	 * SSS bit of USBSTS and when driver tries to poll
956  	 * to see if the xHC clears BIT(8) which never happens
957  	 * and driver assumes that controller is not responding
958  	 * and times out. To workaround this, its good to check
959  	 * if SRE and HCE bits are not set (as per xhci
960  	 * Section 5.4.2) and bypass the timeout.
961  	 */
962  		res = readl(&xhci->op_regs->status);
963  		if ((xhci->quirks & XHCI_SNPS_BROKEN_SUSPEND) &&
964  		    (((res & STS_SRE) == 0) &&
965  				((res & STS_HCE) == 0))) {
966  			xhci->broken_suspend = 1;
967  		} else {
968  			xhci_warn(xhci, "WARN: xHC save state timeout\n");
969  			spin_unlock_irq(&xhci->lock);
970  			return -ETIMEDOUT;
971  		}
972  	}
973  	spin_unlock_irq(&xhci->lock);
974  
975  	/*
976  	 * Deleting Compliance Mode Recovery Timer because the xHCI Host
977  	 * is about to be suspended.
978  	 */
979  	if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) &&
980  			(!(xhci_all_ports_seen_u0(xhci)))) {
981  		del_timer_sync(&xhci->comp_mode_recovery_timer);
982  		xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
983  				"%s: compliance mode recovery timer deleted",
984  				__func__);
985  	}
986  
987  	return rc;
988  }
989  EXPORT_SYMBOL_GPL(xhci_suspend);
990  
991  /*
992   * start xHC (not bus-specific)
993   *
994   * This is called when the machine transition from S3/S4 mode.
995   *
996   */
xhci_resume(struct xhci_hcd * xhci,bool power_lost,bool is_auto_resume)997  int xhci_resume(struct xhci_hcd *xhci, bool power_lost, bool is_auto_resume)
998  {
999  	u32			command, temp = 0;
1000  	struct usb_hcd		*hcd = xhci_to_hcd(xhci);
1001  	int			retval = 0;
1002  	bool			comp_timer_running = false;
1003  	bool			pending_portevent = false;
1004  	bool			suspended_usb3_devs = false;
1005  
1006  	if (!hcd->state)
1007  		return 0;
1008  
1009  	/* Wait a bit if either of the roothubs need to settle from the
1010  	 * transition into bus suspend.
1011  	 */
1012  
1013  	if (time_before(jiffies, xhci->usb2_rhub.bus_state.next_statechange) ||
1014  	    time_before(jiffies, xhci->usb3_rhub.bus_state.next_statechange))
1015  		msleep(100);
1016  
1017  	set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
1018  	if (xhci->shared_hcd)
1019  		set_bit(HCD_FLAG_HW_ACCESSIBLE, &xhci->shared_hcd->flags);
1020  
1021  	spin_lock_irq(&xhci->lock);
1022  
1023  	if (xhci->quirks & XHCI_RESET_ON_RESUME || xhci->broken_suspend)
1024  		power_lost = true;
1025  
1026  	if (!power_lost) {
1027  		/*
1028  		 * Some controllers might lose power during suspend, so wait
1029  		 * for controller not ready bit to clear, just as in xHC init.
1030  		 */
1031  		retval = xhci_handshake(&xhci->op_regs->status,
1032  					STS_CNR, 0, 10 * 1000 * 1000);
1033  		if (retval) {
1034  			xhci_warn(xhci, "Controller not ready at resume %d\n",
1035  				  retval);
1036  			spin_unlock_irq(&xhci->lock);
1037  			return retval;
1038  		}
1039  		/* step 1: restore register */
1040  		xhci_restore_registers(xhci);
1041  		/* step 2: initialize command ring buffer */
1042  		xhci_set_cmd_ring_deq(xhci);
1043  		/* step 3: restore state and start state*/
1044  		/* step 3: set CRS flag */
1045  		command = readl(&xhci->op_regs->command);
1046  		command |= CMD_CRS;
1047  		writel(command, &xhci->op_regs->command);
1048  		/*
1049  		 * Some controllers take up to 55+ ms to complete the controller
1050  		 * restore so setting the timeout to 100ms. Xhci specification
1051  		 * doesn't mention any timeout value.
1052  		 */
1053  		if (xhci_handshake(&xhci->op_regs->status,
1054  			      STS_RESTORE, 0, 100 * 1000)) {
1055  			xhci_warn(xhci, "WARN: xHC restore state timeout\n");
1056  			spin_unlock_irq(&xhci->lock);
1057  			return -ETIMEDOUT;
1058  		}
1059  	}
1060  
1061  	temp = readl(&xhci->op_regs->status);
1062  
1063  	/* re-initialize the HC on Restore Error, or Host Controller Error */
1064  	if ((temp & (STS_SRE | STS_HCE)) &&
1065  	    !(xhci->xhc_state & XHCI_STATE_REMOVING)) {
1066  		if (!power_lost)
1067  			xhci_warn(xhci, "xHC error in resume, USBSTS 0x%x, Reinit\n", temp);
1068  		power_lost = true;
1069  	}
1070  
1071  	if (power_lost) {
1072  		if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) &&
1073  				!(xhci_all_ports_seen_u0(xhci))) {
1074  			del_timer_sync(&xhci->comp_mode_recovery_timer);
1075  			xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
1076  				"Compliance Mode Recovery Timer deleted!");
1077  		}
1078  
1079  		/* Let the USB core know _both_ roothubs lost power. */
1080  		usb_root_hub_lost_power(xhci->main_hcd->self.root_hub);
1081  		if (xhci->shared_hcd)
1082  			usb_root_hub_lost_power(xhci->shared_hcd->self.root_hub);
1083  
1084  		xhci_dbg(xhci, "Stop HCD\n");
1085  		xhci_halt(xhci);
1086  		xhci_zero_64b_regs(xhci);
1087  		retval = xhci_reset(xhci, XHCI_RESET_LONG_USEC);
1088  		spin_unlock_irq(&xhci->lock);
1089  		if (retval)
1090  			return retval;
1091  
1092  		xhci_dbg(xhci, "// Disabling event ring interrupts\n");
1093  		temp = readl(&xhci->op_regs->status);
1094  		writel((temp & ~0x1fff) | STS_EINT, &xhci->op_regs->status);
1095  		xhci_disable_interrupter(xhci->interrupters[0]);
1096  
1097  		xhci_dbg(xhci, "cleaning up memory\n");
1098  		xhci_mem_cleanup(xhci);
1099  		xhci_debugfs_exit(xhci);
1100  		xhci_dbg(xhci, "xhci_stop completed - status = %x\n",
1101  			    readl(&xhci->op_regs->status));
1102  
1103  		/* USB core calls the PCI reinit and start functions twice:
1104  		 * first with the primary HCD, and then with the secondary HCD.
1105  		 * If we don't do the same, the host will never be started.
1106  		 */
1107  		xhci_dbg(xhci, "Initialize the xhci_hcd\n");
1108  		retval = xhci_init(hcd);
1109  		if (retval)
1110  			return retval;
1111  		comp_timer_running = true;
1112  
1113  		xhci_dbg(xhci, "Start the primary HCD\n");
1114  		retval = xhci_run(hcd);
1115  		if (!retval && xhci->shared_hcd) {
1116  			xhci_dbg(xhci, "Start the secondary HCD\n");
1117  			retval = xhci_run(xhci->shared_hcd);
1118  		}
1119  		if (retval)
1120  			return retval;
1121  		/*
1122  		 * Resume roothubs unconditionally as PORTSC change bits are not
1123  		 * immediately visible after xHC reset
1124  		 */
1125  		hcd->state = HC_STATE_SUSPENDED;
1126  
1127  		if (xhci->shared_hcd) {
1128  			xhci->shared_hcd->state = HC_STATE_SUSPENDED;
1129  			usb_hcd_resume_root_hub(xhci->shared_hcd);
1130  		}
1131  		usb_hcd_resume_root_hub(hcd);
1132  
1133  		goto done;
1134  	}
1135  
1136  	/* step 4: set Run/Stop bit */
1137  	command = readl(&xhci->op_regs->command);
1138  	command |= CMD_RUN;
1139  	writel(command, &xhci->op_regs->command);
1140  	xhci_handshake(&xhci->op_regs->status, STS_HALT,
1141  		  0, 250 * 1000);
1142  
1143  	/* step 5: walk topology and initialize portsc,
1144  	 * portpmsc and portli
1145  	 */
1146  	/* this is done in bus_resume */
1147  
1148  	/* step 6: restart each of the previously
1149  	 * Running endpoints by ringing their doorbells
1150  	 */
1151  
1152  	spin_unlock_irq(&xhci->lock);
1153  
1154  	xhci_dbc_resume(xhci);
1155  
1156  	if (retval == 0) {
1157  		/*
1158  		 * Resume roothubs only if there are pending events.
1159  		 * USB 3 devices resend U3 LFPS wake after a 100ms delay if
1160  		 * the first wake signalling failed, give it that chance if
1161  		 * there are suspended USB 3 devices.
1162  		 */
1163  		if (xhci->usb3_rhub.bus_state.suspended_ports ||
1164  		    xhci->usb3_rhub.bus_state.bus_suspended)
1165  			suspended_usb3_devs = true;
1166  
1167  		pending_portevent = xhci_pending_portevent(xhci);
1168  
1169  		if (suspended_usb3_devs && !pending_portevent && is_auto_resume) {
1170  			msleep(120);
1171  			pending_portevent = xhci_pending_portevent(xhci);
1172  		}
1173  
1174  		if (pending_portevent) {
1175  			if (xhci->shared_hcd)
1176  				usb_hcd_resume_root_hub(xhci->shared_hcd);
1177  			usb_hcd_resume_root_hub(hcd);
1178  		}
1179  	}
1180  done:
1181  	/*
1182  	 * If system is subject to the Quirk, Compliance Mode Timer needs to
1183  	 * be re-initialized Always after a system resume. Ports are subject
1184  	 * to suffer the Compliance Mode issue again. It doesn't matter if
1185  	 * ports have entered previously to U0 before system's suspension.
1186  	 */
1187  	if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && !comp_timer_running)
1188  		compliance_mode_recovery_timer_init(xhci);
1189  
1190  	if (xhci->quirks & XHCI_ASMEDIA_MODIFY_FLOWCONTROL)
1191  		usb_asmedia_modifyflowcontrol(to_pci_dev(hcd->self.controller));
1192  
1193  	/* Re-enable port polling. */
1194  	xhci_dbg(xhci, "%s: starting usb%d port polling.\n",
1195  		 __func__, hcd->self.busnum);
1196  	if (xhci->shared_hcd) {
1197  		set_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags);
1198  		usb_hcd_poll_rh_status(xhci->shared_hcd);
1199  	}
1200  	set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
1201  	usb_hcd_poll_rh_status(hcd);
1202  
1203  	return retval;
1204  }
1205  EXPORT_SYMBOL_GPL(xhci_resume);
1206  #endif	/* CONFIG_PM */
1207  
1208  /*-------------------------------------------------------------------------*/
1209  
xhci_map_temp_buffer(struct usb_hcd * hcd,struct urb * urb)1210  static int xhci_map_temp_buffer(struct usb_hcd *hcd, struct urb *urb)
1211  {
1212  	void *temp;
1213  	int ret = 0;
1214  	unsigned int buf_len;
1215  	enum dma_data_direction dir;
1216  
1217  	dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
1218  	buf_len = urb->transfer_buffer_length;
1219  
1220  	temp = kzalloc_node(buf_len, GFP_ATOMIC,
1221  			    dev_to_node(hcd->self.sysdev));
1222  	if (!temp)
1223  		return -ENOMEM;
1224  
1225  	if (usb_urb_dir_out(urb))
1226  		sg_pcopy_to_buffer(urb->sg, urb->num_sgs,
1227  				   temp, buf_len, 0);
1228  
1229  	urb->transfer_buffer = temp;
1230  	urb->transfer_dma = dma_map_single(hcd->self.sysdev,
1231  					   urb->transfer_buffer,
1232  					   urb->transfer_buffer_length,
1233  					   dir);
1234  
1235  	if (dma_mapping_error(hcd->self.sysdev,
1236  			      urb->transfer_dma)) {
1237  		ret = -EAGAIN;
1238  		kfree(temp);
1239  	} else {
1240  		urb->transfer_flags |= URB_DMA_MAP_SINGLE;
1241  	}
1242  
1243  	return ret;
1244  }
1245  
xhci_urb_temp_buffer_required(struct usb_hcd * hcd,struct urb * urb)1246  static bool xhci_urb_temp_buffer_required(struct usb_hcd *hcd,
1247  					  struct urb *urb)
1248  {
1249  	bool ret = false;
1250  	unsigned int i;
1251  	unsigned int len = 0;
1252  	unsigned int trb_size;
1253  	unsigned int max_pkt;
1254  	struct scatterlist *sg;
1255  	struct scatterlist *tail_sg;
1256  
1257  	tail_sg = urb->sg;
1258  	max_pkt = usb_endpoint_maxp(&urb->ep->desc);
1259  
1260  	if (!urb->num_sgs)
1261  		return ret;
1262  
1263  	if (urb->dev->speed >= USB_SPEED_SUPER)
1264  		trb_size = TRB_CACHE_SIZE_SS;
1265  	else
1266  		trb_size = TRB_CACHE_SIZE_HS;
1267  
1268  	if (urb->transfer_buffer_length != 0 &&
1269  	    !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)) {
1270  		for_each_sg(urb->sg, sg, urb->num_sgs, i) {
1271  			len = len + sg->length;
1272  			if (i > trb_size - 2) {
1273  				len = len - tail_sg->length;
1274  				if (len < max_pkt) {
1275  					ret = true;
1276  					break;
1277  				}
1278  
1279  				tail_sg = sg_next(tail_sg);
1280  			}
1281  		}
1282  	}
1283  	return ret;
1284  }
1285  
xhci_unmap_temp_buf(struct usb_hcd * hcd,struct urb * urb)1286  static void xhci_unmap_temp_buf(struct usb_hcd *hcd, struct urb *urb)
1287  {
1288  	unsigned int len;
1289  	unsigned int buf_len;
1290  	enum dma_data_direction dir;
1291  
1292  	dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
1293  
1294  	buf_len = urb->transfer_buffer_length;
1295  
1296  	if (IS_ENABLED(CONFIG_HAS_DMA) &&
1297  	    (urb->transfer_flags & URB_DMA_MAP_SINGLE))
1298  		dma_unmap_single(hcd->self.sysdev,
1299  				 urb->transfer_dma,
1300  				 urb->transfer_buffer_length,
1301  				 dir);
1302  
1303  	if (usb_urb_dir_in(urb)) {
1304  		len = sg_pcopy_from_buffer(urb->sg, urb->num_sgs,
1305  					   urb->transfer_buffer,
1306  					   buf_len,
1307  					   0);
1308  		if (len != buf_len) {
1309  			xhci_dbg(hcd_to_xhci(hcd),
1310  				 "Copy from tmp buf to urb sg list failed\n");
1311  			urb->actual_length = len;
1312  		}
1313  	}
1314  	urb->transfer_flags &= ~URB_DMA_MAP_SINGLE;
1315  	kfree(urb->transfer_buffer);
1316  	urb->transfer_buffer = NULL;
1317  }
1318  
1319  /*
1320   * Bypass the DMA mapping if URB is suitable for Immediate Transfer (IDT),
1321   * we'll copy the actual data into the TRB address register. This is limited to
1322   * transfers up to 8 bytes on output endpoints of any kind with wMaxPacketSize
1323   * >= 8 bytes. If suitable for IDT only one Transfer TRB per TD is allowed.
1324   */
xhci_map_urb_for_dma(struct usb_hcd * hcd,struct urb * urb,gfp_t mem_flags)1325  static int xhci_map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb,
1326  				gfp_t mem_flags)
1327  {
1328  	struct xhci_hcd *xhci;
1329  
1330  	xhci = hcd_to_xhci(hcd);
1331  
1332  	if (xhci_urb_suitable_for_idt(urb))
1333  		return 0;
1334  
1335  	if (xhci->quirks & XHCI_SG_TRB_CACHE_SIZE_QUIRK) {
1336  		if (xhci_urb_temp_buffer_required(hcd, urb))
1337  			return xhci_map_temp_buffer(hcd, urb);
1338  	}
1339  	return usb_hcd_map_urb_for_dma(hcd, urb, mem_flags);
1340  }
1341  
xhci_unmap_urb_for_dma(struct usb_hcd * hcd,struct urb * urb)1342  static void xhci_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb)
1343  {
1344  	struct xhci_hcd *xhci;
1345  	bool unmap_temp_buf = false;
1346  
1347  	xhci = hcd_to_xhci(hcd);
1348  
1349  	if (urb->num_sgs && (urb->transfer_flags & URB_DMA_MAP_SINGLE))
1350  		unmap_temp_buf = true;
1351  
1352  	if ((xhci->quirks & XHCI_SG_TRB_CACHE_SIZE_QUIRK) && unmap_temp_buf)
1353  		xhci_unmap_temp_buf(hcd, urb);
1354  	else
1355  		usb_hcd_unmap_urb_for_dma(hcd, urb);
1356  }
1357  
1358  /**
1359   * xhci_get_endpoint_index - Used for passing endpoint bitmasks between the core and
1360   * HCDs.  Find the index for an endpoint given its descriptor.  Use the return
1361   * value to right shift 1 for the bitmask.
1362   *
1363   * Index  = (epnum * 2) + direction - 1,
1364   * where direction = 0 for OUT, 1 for IN.
1365   * For control endpoints, the IN index is used (OUT index is unused), so
1366   * index = (epnum * 2) + direction - 1 = (epnum * 2) + 1 - 1 = (epnum * 2)
1367   */
xhci_get_endpoint_index(struct usb_endpoint_descriptor * desc)1368  unsigned int xhci_get_endpoint_index(struct usb_endpoint_descriptor *desc)
1369  {
1370  	unsigned int index;
1371  	if (usb_endpoint_xfer_control(desc))
1372  		index = (unsigned int) (usb_endpoint_num(desc)*2);
1373  	else
1374  		index = (unsigned int) (usb_endpoint_num(desc)*2) +
1375  			(usb_endpoint_dir_in(desc) ? 1 : 0) - 1;
1376  	return index;
1377  }
1378  EXPORT_SYMBOL_GPL(xhci_get_endpoint_index);
1379  
1380  /* The reverse operation to xhci_get_endpoint_index. Calculate the USB endpoint
1381   * address from the XHCI endpoint index.
1382   */
xhci_get_endpoint_address(unsigned int ep_index)1383  static unsigned int xhci_get_endpoint_address(unsigned int ep_index)
1384  {
1385  	unsigned int number = DIV_ROUND_UP(ep_index, 2);
1386  	unsigned int direction = ep_index % 2 ? USB_DIR_OUT : USB_DIR_IN;
1387  	return direction | number;
1388  }
1389  
1390  /* Find the flag for this endpoint (for use in the control context).  Use the
1391   * endpoint index to create a bitmask.  The slot context is bit 0, endpoint 0 is
1392   * bit 1, etc.
1393   */
xhci_get_endpoint_flag(struct usb_endpoint_descriptor * desc)1394  static unsigned int xhci_get_endpoint_flag(struct usb_endpoint_descriptor *desc)
1395  {
1396  	return 1 << (xhci_get_endpoint_index(desc) + 1);
1397  }
1398  
1399  /* Compute the last valid endpoint context index.  Basically, this is the
1400   * endpoint index plus one.  For slot contexts with more than valid endpoint,
1401   * we find the most significant bit set in the added contexts flags.
1402   * e.g. ep 1 IN (with epnum 0x81) => added_ctxs = 0b1000
1403   * fls(0b1000) = 4, but the endpoint context index is 3, so subtract one.
1404   */
xhci_last_valid_endpoint(u32 added_ctxs)1405  unsigned int xhci_last_valid_endpoint(u32 added_ctxs)
1406  {
1407  	return fls(added_ctxs) - 1;
1408  }
1409  
1410  /* Returns 1 if the arguments are OK;
1411   * returns 0 this is a root hub; returns -EINVAL for NULL pointers.
1412   */
xhci_check_args(struct usb_hcd * hcd,struct usb_device * udev,struct usb_host_endpoint * ep,int check_ep,bool check_virt_dev,const char * func)1413  static int xhci_check_args(struct usb_hcd *hcd, struct usb_device *udev,
1414  		struct usb_host_endpoint *ep, int check_ep, bool check_virt_dev,
1415  		const char *func) {
1416  	struct xhci_hcd	*xhci;
1417  	struct xhci_virt_device	*virt_dev;
1418  
1419  	if (!hcd || (check_ep && !ep) || !udev) {
1420  		pr_debug("xHCI %s called with invalid args\n", func);
1421  		return -EINVAL;
1422  	}
1423  	if (!udev->parent) {
1424  		pr_debug("xHCI %s called for root hub\n", func);
1425  		return 0;
1426  	}
1427  
1428  	xhci = hcd_to_xhci(hcd);
1429  	if (check_virt_dev) {
1430  		if (!udev->slot_id || !xhci->devs[udev->slot_id]) {
1431  			xhci_dbg(xhci, "xHCI %s called with unaddressed device\n",
1432  					func);
1433  			return -EINVAL;
1434  		}
1435  
1436  		virt_dev = xhci->devs[udev->slot_id];
1437  		if (virt_dev->udev != udev) {
1438  			xhci_dbg(xhci, "xHCI %s called with udev and "
1439  					  "virt_dev does not match\n", func);
1440  			return -EINVAL;
1441  		}
1442  	}
1443  
1444  	if (xhci->xhc_state & XHCI_STATE_HALTED)
1445  		return -ENODEV;
1446  
1447  	return 1;
1448  }
1449  
1450  static int xhci_configure_endpoint(struct xhci_hcd *xhci,
1451  		struct usb_device *udev, struct xhci_command *command,
1452  		bool ctx_change, bool must_succeed);
1453  
1454  /*
1455   * Full speed devices may have a max packet size greater than 8 bytes, but the
1456   * USB core doesn't know that until it reads the first 8 bytes of the
1457   * descriptor.  If the usb_device's max packet size changes after that point,
1458   * we need to issue an evaluate context command and wait on it.
1459   */
xhci_check_ep0_maxpacket(struct xhci_hcd * xhci,struct xhci_virt_device * vdev)1460  static int xhci_check_ep0_maxpacket(struct xhci_hcd *xhci, struct xhci_virt_device *vdev)
1461  {
1462  	struct xhci_input_control_ctx *ctrl_ctx;
1463  	struct xhci_ep_ctx *ep_ctx;
1464  	struct xhci_command *command;
1465  	int max_packet_size;
1466  	int hw_max_packet_size;
1467  	int ret = 0;
1468  
1469  	ep_ctx = xhci_get_ep_ctx(xhci, vdev->out_ctx, 0);
1470  	hw_max_packet_size = MAX_PACKET_DECODED(le32_to_cpu(ep_ctx->ep_info2));
1471  	max_packet_size = usb_endpoint_maxp(&vdev->udev->ep0.desc);
1472  
1473  	if (hw_max_packet_size == max_packet_size)
1474  		return 0;
1475  
1476  	switch (max_packet_size) {
1477  	case 8: case 16: case 32: case 64: case 9:
1478  		xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
1479  				"Max Packet Size for ep 0 changed.");
1480  		xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
1481  				"Max packet size in usb_device = %d",
1482  				max_packet_size);
1483  		xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
1484  				"Max packet size in xHCI HW = %d",
1485  				hw_max_packet_size);
1486  		xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
1487  				"Issuing evaluate context command.");
1488  
1489  		command = xhci_alloc_command(xhci, true, GFP_KERNEL);
1490  		if (!command)
1491  			return -ENOMEM;
1492  
1493  		command->in_ctx = vdev->in_ctx;
1494  		ctrl_ctx = xhci_get_input_control_ctx(command->in_ctx);
1495  		if (!ctrl_ctx) {
1496  			xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
1497  					__func__);
1498  			ret = -ENOMEM;
1499  			break;
1500  		}
1501  		/* Set up the modified control endpoint 0 */
1502  		xhci_endpoint_copy(xhci, vdev->in_ctx, vdev->out_ctx, 0);
1503  
1504  		ep_ctx = xhci_get_ep_ctx(xhci, command->in_ctx, 0);
1505  		ep_ctx->ep_info &= cpu_to_le32(~EP_STATE_MASK);/* must clear */
1506  		ep_ctx->ep_info2 &= cpu_to_le32(~MAX_PACKET_MASK);
1507  		ep_ctx->ep_info2 |= cpu_to_le32(MAX_PACKET(max_packet_size));
1508  
1509  		ctrl_ctx->add_flags = cpu_to_le32(EP0_FLAG);
1510  		ctrl_ctx->drop_flags = 0;
1511  
1512  		ret = xhci_configure_endpoint(xhci, vdev->udev, command,
1513  					      true, false);
1514  		/* Clean up the input context for later use by bandwidth functions */
1515  		ctrl_ctx->add_flags = cpu_to_le32(SLOT_FLAG);
1516  		break;
1517  	default:
1518  		dev_dbg(&vdev->udev->dev, "incorrect max packet size %d for ep0\n",
1519  			max_packet_size);
1520  		return -EINVAL;
1521  	}
1522  
1523  	kfree(command->completion);
1524  	kfree(command);
1525  
1526  	return ret;
1527  }
1528  
1529  /*
1530   * non-error returns are a promise to giveback() the urb later
1531   * we drop ownership so next owner (or urb unlink) can get it
1532   */
xhci_urb_enqueue(struct usb_hcd * hcd,struct urb * urb,gfp_t mem_flags)1533  static int xhci_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flags)
1534  {
1535  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
1536  	unsigned long flags;
1537  	int ret = 0;
1538  	unsigned int slot_id, ep_index;
1539  	unsigned int *ep_state;
1540  	struct urb_priv	*urb_priv;
1541  	int num_tds;
1542  
1543  	ep_index = xhci_get_endpoint_index(&urb->ep->desc);
1544  
1545  	if (usb_endpoint_xfer_isoc(&urb->ep->desc))
1546  		num_tds = urb->number_of_packets;
1547  	else if (usb_endpoint_is_bulk_out(&urb->ep->desc) &&
1548  	    urb->transfer_buffer_length > 0 &&
1549  	    urb->transfer_flags & URB_ZERO_PACKET &&
1550  	    !(urb->transfer_buffer_length % usb_endpoint_maxp(&urb->ep->desc)))
1551  		num_tds = 2;
1552  	else
1553  		num_tds = 1;
1554  
1555  	urb_priv = kzalloc(struct_size(urb_priv, td, num_tds), mem_flags);
1556  	if (!urb_priv)
1557  		return -ENOMEM;
1558  
1559  	urb_priv->num_tds = num_tds;
1560  	urb_priv->num_tds_done = 0;
1561  	urb->hcpriv = urb_priv;
1562  
1563  	trace_xhci_urb_enqueue(urb);
1564  
1565  	spin_lock_irqsave(&xhci->lock, flags);
1566  
1567  	ret = xhci_check_args(hcd, urb->dev, urb->ep,
1568  			      true, true, __func__);
1569  	if (ret <= 0) {
1570  		ret = ret ? ret : -EINVAL;
1571  		goto free_priv;
1572  	}
1573  
1574  	slot_id = urb->dev->slot_id;
1575  
1576  	if (!HCD_HW_ACCESSIBLE(hcd)) {
1577  		ret = -ESHUTDOWN;
1578  		goto free_priv;
1579  	}
1580  
1581  	if (xhci->devs[slot_id]->flags & VDEV_PORT_ERROR) {
1582  		xhci_dbg(xhci, "Can't queue urb, port error, link inactive\n");
1583  		ret = -ENODEV;
1584  		goto free_priv;
1585  	}
1586  
1587  	if (xhci->xhc_state & XHCI_STATE_DYING) {
1588  		xhci_dbg(xhci, "Ep 0x%x: URB %p submitted for non-responsive xHCI host.\n",
1589  			 urb->ep->desc.bEndpointAddress, urb);
1590  		ret = -ESHUTDOWN;
1591  		goto free_priv;
1592  	}
1593  
1594  	ep_state = &xhci->devs[slot_id]->eps[ep_index].ep_state;
1595  
1596  	if (*ep_state & (EP_GETTING_STREAMS | EP_GETTING_NO_STREAMS)) {
1597  		xhci_warn(xhci, "WARN: Can't enqueue URB, ep in streams transition state %x\n",
1598  			  *ep_state);
1599  		ret = -EINVAL;
1600  		goto free_priv;
1601  	}
1602  	if (*ep_state & EP_SOFT_CLEAR_TOGGLE) {
1603  		xhci_warn(xhci, "Can't enqueue URB while manually clearing toggle\n");
1604  		ret = -EINVAL;
1605  		goto free_priv;
1606  	}
1607  
1608  	/* Class driver might not be aware ep halted due to async URB giveback */
1609  	if (*ep_state & EP_STALLED)
1610  		dev_dbg(&urb->dev->dev, "URB %p queued before clearing halt\n",
1611  			urb);
1612  
1613  	switch (usb_endpoint_type(&urb->ep->desc)) {
1614  
1615  	case USB_ENDPOINT_XFER_CONTROL:
1616  		ret = xhci_queue_ctrl_tx(xhci, GFP_ATOMIC, urb,
1617  					 slot_id, ep_index);
1618  		break;
1619  	case USB_ENDPOINT_XFER_BULK:
1620  		ret = xhci_queue_bulk_tx(xhci, GFP_ATOMIC, urb,
1621  					 slot_id, ep_index);
1622  		break;
1623  	case USB_ENDPOINT_XFER_INT:
1624  		ret = xhci_queue_intr_tx(xhci, GFP_ATOMIC, urb,
1625  				slot_id, ep_index);
1626  		break;
1627  	case USB_ENDPOINT_XFER_ISOC:
1628  		ret = xhci_queue_isoc_tx_prepare(xhci, GFP_ATOMIC, urb,
1629  				slot_id, ep_index);
1630  	}
1631  
1632  	if (ret) {
1633  free_priv:
1634  		xhci_urb_free_priv(urb_priv);
1635  		urb->hcpriv = NULL;
1636  	}
1637  	spin_unlock_irqrestore(&xhci->lock, flags);
1638  	return ret;
1639  }
1640  
1641  /*
1642   * Remove the URB's TD from the endpoint ring.  This may cause the HC to stop
1643   * USB transfers, potentially stopping in the middle of a TRB buffer.  The HC
1644   * should pick up where it left off in the TD, unless a Set Transfer Ring
1645   * Dequeue Pointer is issued.
1646   *
1647   * The TRBs that make up the buffers for the canceled URB will be "removed" from
1648   * the ring.  Since the ring is a contiguous structure, they can't be physically
1649   * removed.  Instead, there are two options:
1650   *
1651   *  1) If the HC is in the middle of processing the URB to be canceled, we
1652   *     simply move the ring's dequeue pointer past those TRBs using the Set
1653   *     Transfer Ring Dequeue Pointer command.  This will be the common case,
1654   *     when drivers timeout on the last submitted URB and attempt to cancel.
1655   *
1656   *  2) If the HC is in the middle of a different TD, we turn the TRBs into a
1657   *     series of 1-TRB transfer no-op TDs.  (No-ops shouldn't be chained.)  The
1658   *     HC will need to invalidate the any TRBs it has cached after the stop
1659   *     endpoint command, as noted in the xHCI 0.95 errata.
1660   *
1661   *  3) The TD may have completed by the time the Stop Endpoint Command
1662   *     completes, so software needs to handle that case too.
1663   *
1664   * This function should protect against the TD enqueueing code ringing the
1665   * doorbell while this code is waiting for a Stop Endpoint command to complete.
1666   * It also needs to account for multiple cancellations on happening at the same
1667   * time for the same endpoint.
1668   *
1669   * Note that this function can be called in any context, or so says
1670   * usb_hcd_unlink_urb()
1671   */
xhci_urb_dequeue(struct usb_hcd * hcd,struct urb * urb,int status)1672  static int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
1673  {
1674  	unsigned long flags;
1675  	int ret, i;
1676  	u32 temp;
1677  	struct xhci_hcd *xhci;
1678  	struct urb_priv	*urb_priv;
1679  	struct xhci_td *td;
1680  	unsigned int ep_index;
1681  	struct xhci_ring *ep_ring;
1682  	struct xhci_virt_ep *ep;
1683  	struct xhci_command *command;
1684  	struct xhci_virt_device *vdev;
1685  
1686  	xhci = hcd_to_xhci(hcd);
1687  	spin_lock_irqsave(&xhci->lock, flags);
1688  
1689  	trace_xhci_urb_dequeue(urb);
1690  
1691  	/* Make sure the URB hasn't completed or been unlinked already */
1692  	ret = usb_hcd_check_unlink_urb(hcd, urb, status);
1693  	if (ret)
1694  		goto done;
1695  
1696  	/* give back URB now if we can't queue it for cancel */
1697  	vdev = xhci->devs[urb->dev->slot_id];
1698  	urb_priv = urb->hcpriv;
1699  	if (!vdev || !urb_priv)
1700  		goto err_giveback;
1701  
1702  	ep_index = xhci_get_endpoint_index(&urb->ep->desc);
1703  	ep = &vdev->eps[ep_index];
1704  	ep_ring = xhci_urb_to_transfer_ring(xhci, urb);
1705  	if (!ep || !ep_ring)
1706  		goto err_giveback;
1707  
1708  	/* If xHC is dead take it down and return ALL URBs in xhci_hc_died() */
1709  	temp = readl(&xhci->op_regs->status);
1710  	if (temp == ~(u32)0 || xhci->xhc_state & XHCI_STATE_DYING) {
1711  		xhci_hc_died(xhci);
1712  		goto done;
1713  	}
1714  
1715  	/*
1716  	 * check ring is not re-allocated since URB was enqueued. If it is, then
1717  	 * make sure none of the ring related pointers in this URB private data
1718  	 * are touched, such as td_list, otherwise we overwrite freed data
1719  	 */
1720  	if (!td_on_ring(&urb_priv->td[0], ep_ring)) {
1721  		xhci_err(xhci, "Canceled URB td not found on endpoint ring");
1722  		for (i = urb_priv->num_tds_done; i < urb_priv->num_tds; i++) {
1723  			td = &urb_priv->td[i];
1724  			if (!list_empty(&td->cancelled_td_list))
1725  				list_del_init(&td->cancelled_td_list);
1726  		}
1727  		goto err_giveback;
1728  	}
1729  
1730  	if (xhci->xhc_state & XHCI_STATE_HALTED) {
1731  		xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb,
1732  				"HC halted, freeing TD manually.");
1733  		for (i = urb_priv->num_tds_done;
1734  		     i < urb_priv->num_tds;
1735  		     i++) {
1736  			td = &urb_priv->td[i];
1737  			if (!list_empty(&td->td_list))
1738  				list_del_init(&td->td_list);
1739  			if (!list_empty(&td->cancelled_td_list))
1740  				list_del_init(&td->cancelled_td_list);
1741  		}
1742  		goto err_giveback;
1743  	}
1744  
1745  	i = urb_priv->num_tds_done;
1746  	if (i < urb_priv->num_tds)
1747  		xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb,
1748  				"Cancel URB %p, dev %s, ep 0x%x, "
1749  				"starting at offset 0x%llx",
1750  				urb, urb->dev->devpath,
1751  				urb->ep->desc.bEndpointAddress,
1752  				(unsigned long long) xhci_trb_virt_to_dma(
1753  					urb_priv->td[i].start_seg,
1754  					urb_priv->td[i].start_trb));
1755  
1756  	for (; i < urb_priv->num_tds; i++) {
1757  		td = &urb_priv->td[i];
1758  		/* TD can already be on cancelled list if ep halted on it */
1759  		if (list_empty(&td->cancelled_td_list)) {
1760  			td->cancel_status = TD_DIRTY;
1761  			list_add_tail(&td->cancelled_td_list,
1762  				      &ep->cancelled_td_list);
1763  		}
1764  	}
1765  
1766  	/* These completion handlers will sort out cancelled TDs for us */
1767  	if (ep->ep_state & (EP_STOP_CMD_PENDING | EP_HALTED | SET_DEQ_PENDING)) {
1768  		xhci_dbg(xhci, "Not queuing Stop Endpoint on slot %d ep %d in state 0x%x\n",
1769  				urb->dev->slot_id, ep_index, ep->ep_state);
1770  		goto done;
1771  	}
1772  
1773  	/* In these cases no commands are pending but the endpoint is stopped */
1774  	if (ep->ep_state & (EP_CLEARING_TT | EP_STALLED)) {
1775  		/* and cancelled TDs can be given back right away */
1776  		xhci_dbg(xhci, "Invalidating TDs instantly on slot %d ep %d in state 0x%x\n",
1777  				urb->dev->slot_id, ep_index, ep->ep_state);
1778  		xhci_process_cancelled_tds(ep);
1779  	} else {
1780  		/* Otherwise, queue a new Stop Endpoint command */
1781  		command = xhci_alloc_command(xhci, false, GFP_ATOMIC);
1782  		if (!command) {
1783  			ret = -ENOMEM;
1784  			goto done;
1785  		}
1786  		ep->stop_time = jiffies;
1787  		ep->ep_state |= EP_STOP_CMD_PENDING;
1788  		xhci_queue_stop_endpoint(xhci, command, urb->dev->slot_id,
1789  					 ep_index, 0);
1790  		xhci_ring_cmd_db(xhci);
1791  	}
1792  done:
1793  	spin_unlock_irqrestore(&xhci->lock, flags);
1794  	return ret;
1795  
1796  err_giveback:
1797  	if (urb_priv)
1798  		xhci_urb_free_priv(urb_priv);
1799  	usb_hcd_unlink_urb_from_ep(hcd, urb);
1800  	spin_unlock_irqrestore(&xhci->lock, flags);
1801  	usb_hcd_giveback_urb(hcd, urb, -ESHUTDOWN);
1802  	return ret;
1803  }
1804  
1805  /* Drop an endpoint from a new bandwidth configuration for this device.
1806   * Only one call to this function is allowed per endpoint before
1807   * check_bandwidth() or reset_bandwidth() must be called.
1808   * A call to xhci_drop_endpoint() followed by a call to xhci_add_endpoint() will
1809   * add the endpoint to the schedule with possibly new parameters denoted by a
1810   * different endpoint descriptor in usb_host_endpoint.
1811   * A call to xhci_add_endpoint() followed by a call to xhci_drop_endpoint() is
1812   * not allowed.
1813   *
1814   * The USB core will not allow URBs to be queued to an endpoint that is being
1815   * disabled, so there's no need for mutual exclusion to protect
1816   * the xhci->devs[slot_id] structure.
1817   */
xhci_drop_endpoint(struct usb_hcd * hcd,struct usb_device * udev,struct usb_host_endpoint * ep)1818  int xhci_drop_endpoint(struct usb_hcd *hcd, struct usb_device *udev,
1819  		       struct usb_host_endpoint *ep)
1820  {
1821  	struct xhci_hcd *xhci;
1822  	struct xhci_container_ctx *in_ctx, *out_ctx;
1823  	struct xhci_input_control_ctx *ctrl_ctx;
1824  	unsigned int ep_index;
1825  	struct xhci_ep_ctx *ep_ctx;
1826  	u32 drop_flag;
1827  	u32 new_add_flags, new_drop_flags;
1828  	int ret;
1829  
1830  	ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
1831  	if (ret <= 0)
1832  		return ret;
1833  	xhci = hcd_to_xhci(hcd);
1834  	if (xhci->xhc_state & XHCI_STATE_DYING)
1835  		return -ENODEV;
1836  
1837  	xhci_dbg(xhci, "%s called for udev %p\n", __func__, udev);
1838  	drop_flag = xhci_get_endpoint_flag(&ep->desc);
1839  	if (drop_flag == SLOT_FLAG || drop_flag == EP0_FLAG) {
1840  		xhci_dbg(xhci, "xHCI %s - can't drop slot or ep 0 %#x\n",
1841  				__func__, drop_flag);
1842  		return 0;
1843  	}
1844  
1845  	in_ctx = xhci->devs[udev->slot_id]->in_ctx;
1846  	out_ctx = xhci->devs[udev->slot_id]->out_ctx;
1847  	ctrl_ctx = xhci_get_input_control_ctx(in_ctx);
1848  	if (!ctrl_ctx) {
1849  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
1850  				__func__);
1851  		return 0;
1852  	}
1853  
1854  	ep_index = xhci_get_endpoint_index(&ep->desc);
1855  	ep_ctx = xhci_get_ep_ctx(xhci, out_ctx, ep_index);
1856  	/* If the HC already knows the endpoint is disabled,
1857  	 * or the HCD has noted it is disabled, ignore this request
1858  	 */
1859  	if ((GET_EP_CTX_STATE(ep_ctx) == EP_STATE_DISABLED) ||
1860  	    le32_to_cpu(ctrl_ctx->drop_flags) &
1861  	    xhci_get_endpoint_flag(&ep->desc)) {
1862  		/* Do not warn when called after a usb_device_reset */
1863  		if (xhci->devs[udev->slot_id]->eps[ep_index].ring != NULL)
1864  			xhci_warn(xhci, "xHCI %s called with disabled ep %p\n",
1865  				  __func__, ep);
1866  		return 0;
1867  	}
1868  
1869  	ctrl_ctx->drop_flags |= cpu_to_le32(drop_flag);
1870  	new_drop_flags = le32_to_cpu(ctrl_ctx->drop_flags);
1871  
1872  	ctrl_ctx->add_flags &= cpu_to_le32(~drop_flag);
1873  	new_add_flags = le32_to_cpu(ctrl_ctx->add_flags);
1874  
1875  	xhci_debugfs_remove_endpoint(xhci, xhci->devs[udev->slot_id], ep_index);
1876  
1877  	xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
1878  
1879  	xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
1880  			(unsigned int) ep->desc.bEndpointAddress,
1881  			udev->slot_id,
1882  			(unsigned int) new_drop_flags,
1883  			(unsigned int) new_add_flags);
1884  	return 0;
1885  }
1886  EXPORT_SYMBOL_GPL(xhci_drop_endpoint);
1887  
1888  /* Add an endpoint to a new possible bandwidth configuration for this device.
1889   * Only one call to this function is allowed per endpoint before
1890   * check_bandwidth() or reset_bandwidth() must be called.
1891   * A call to xhci_drop_endpoint() followed by a call to xhci_add_endpoint() will
1892   * add the endpoint to the schedule with possibly new parameters denoted by a
1893   * different endpoint descriptor in usb_host_endpoint.
1894   * A call to xhci_add_endpoint() followed by a call to xhci_drop_endpoint() is
1895   * not allowed.
1896   *
1897   * The USB core will not allow URBs to be queued to an endpoint until the
1898   * configuration or alt setting is installed in the device, so there's no need
1899   * for mutual exclusion to protect the xhci->devs[slot_id] structure.
1900   */
xhci_add_endpoint(struct usb_hcd * hcd,struct usb_device * udev,struct usb_host_endpoint * ep)1901  int xhci_add_endpoint(struct usb_hcd *hcd, struct usb_device *udev,
1902  		      struct usb_host_endpoint *ep)
1903  {
1904  	struct xhci_hcd *xhci;
1905  	struct xhci_container_ctx *in_ctx;
1906  	unsigned int ep_index;
1907  	struct xhci_input_control_ctx *ctrl_ctx;
1908  	struct xhci_ep_ctx *ep_ctx;
1909  	u32 added_ctxs;
1910  	u32 new_add_flags, new_drop_flags;
1911  	struct xhci_virt_device *virt_dev;
1912  	int ret = 0;
1913  
1914  	ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
1915  	if (ret <= 0) {
1916  		/* So we won't queue a reset ep command for a root hub */
1917  		ep->hcpriv = NULL;
1918  		return ret;
1919  	}
1920  	xhci = hcd_to_xhci(hcd);
1921  	if (xhci->xhc_state & XHCI_STATE_DYING)
1922  		return -ENODEV;
1923  
1924  	added_ctxs = xhci_get_endpoint_flag(&ep->desc);
1925  	if (added_ctxs == SLOT_FLAG || added_ctxs == EP0_FLAG) {
1926  		/* FIXME when we have to issue an evaluate endpoint command to
1927  		 * deal with ep0 max packet size changing once we get the
1928  		 * descriptors
1929  		 */
1930  		xhci_dbg(xhci, "xHCI %s - can't add slot or ep 0 %#x\n",
1931  				__func__, added_ctxs);
1932  		return 0;
1933  	}
1934  
1935  	virt_dev = xhci->devs[udev->slot_id];
1936  	in_ctx = virt_dev->in_ctx;
1937  	ctrl_ctx = xhci_get_input_control_ctx(in_ctx);
1938  	if (!ctrl_ctx) {
1939  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
1940  				__func__);
1941  		return 0;
1942  	}
1943  
1944  	ep_index = xhci_get_endpoint_index(&ep->desc);
1945  	/* If this endpoint is already in use, and the upper layers are trying
1946  	 * to add it again without dropping it, reject the addition.
1947  	 */
1948  	if (virt_dev->eps[ep_index].ring &&
1949  			!(le32_to_cpu(ctrl_ctx->drop_flags) & added_ctxs)) {
1950  		xhci_warn(xhci, "Trying to add endpoint 0x%x "
1951  				"without dropping it.\n",
1952  				(unsigned int) ep->desc.bEndpointAddress);
1953  		return -EINVAL;
1954  	}
1955  
1956  	/* If the HCD has already noted the endpoint is enabled,
1957  	 * ignore this request.
1958  	 */
1959  	if (le32_to_cpu(ctrl_ctx->add_flags) & added_ctxs) {
1960  		xhci_warn(xhci, "xHCI %s called with enabled ep %p\n",
1961  				__func__, ep);
1962  		return 0;
1963  	}
1964  
1965  	/*
1966  	 * Configuration and alternate setting changes must be done in
1967  	 * process context, not interrupt context (or so documenation
1968  	 * for usb_set_interface() and usb_set_configuration() claim).
1969  	 */
1970  	if (xhci_endpoint_init(xhci, virt_dev, udev, ep, GFP_NOIO) < 0) {
1971  		dev_dbg(&udev->dev, "%s - could not initialize ep %#x\n",
1972  				__func__, ep->desc.bEndpointAddress);
1973  		return -ENOMEM;
1974  	}
1975  
1976  	ctrl_ctx->add_flags |= cpu_to_le32(added_ctxs);
1977  	new_add_flags = le32_to_cpu(ctrl_ctx->add_flags);
1978  
1979  	/* If xhci_endpoint_disable() was called for this endpoint, but the
1980  	 * xHC hasn't been notified yet through the check_bandwidth() call,
1981  	 * this re-adds a new state for the endpoint from the new endpoint
1982  	 * descriptors.  We must drop and re-add this endpoint, so we leave the
1983  	 * drop flags alone.
1984  	 */
1985  	new_drop_flags = le32_to_cpu(ctrl_ctx->drop_flags);
1986  
1987  	/* Store the usb_device pointer for later use */
1988  	ep->hcpriv = udev;
1989  
1990  	ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index);
1991  	trace_xhci_add_endpoint(ep_ctx);
1992  
1993  	xhci_dbg(xhci, "add ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
1994  			(unsigned int) ep->desc.bEndpointAddress,
1995  			udev->slot_id,
1996  			(unsigned int) new_drop_flags,
1997  			(unsigned int) new_add_flags);
1998  	return 0;
1999  }
2000  EXPORT_SYMBOL_GPL(xhci_add_endpoint);
2001  
xhci_zero_in_ctx(struct xhci_hcd * xhci,struct xhci_virt_device * virt_dev)2002  static void xhci_zero_in_ctx(struct xhci_hcd *xhci, struct xhci_virt_device *virt_dev)
2003  {
2004  	struct xhci_input_control_ctx *ctrl_ctx;
2005  	struct xhci_ep_ctx *ep_ctx;
2006  	struct xhci_slot_ctx *slot_ctx;
2007  	int i;
2008  
2009  	ctrl_ctx = xhci_get_input_control_ctx(virt_dev->in_ctx);
2010  	if (!ctrl_ctx) {
2011  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
2012  				__func__);
2013  		return;
2014  	}
2015  
2016  	/* When a device's add flag and drop flag are zero, any subsequent
2017  	 * configure endpoint command will leave that endpoint's state
2018  	 * untouched.  Make sure we don't leave any old state in the input
2019  	 * endpoint contexts.
2020  	 */
2021  	ctrl_ctx->drop_flags = 0;
2022  	ctrl_ctx->add_flags = 0;
2023  	slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->in_ctx);
2024  	slot_ctx->dev_info &= cpu_to_le32(~LAST_CTX_MASK);
2025  	/* Endpoint 0 is always valid */
2026  	slot_ctx->dev_info |= cpu_to_le32(LAST_CTX(1));
2027  	for (i = 1; i < 31; i++) {
2028  		ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, i);
2029  		ep_ctx->ep_info = 0;
2030  		ep_ctx->ep_info2 = 0;
2031  		ep_ctx->deq = 0;
2032  		ep_ctx->tx_info = 0;
2033  	}
2034  }
2035  
xhci_configure_endpoint_result(struct xhci_hcd * xhci,struct usb_device * udev,u32 * cmd_status)2036  static int xhci_configure_endpoint_result(struct xhci_hcd *xhci,
2037  		struct usb_device *udev, u32 *cmd_status)
2038  {
2039  	int ret;
2040  
2041  	switch (*cmd_status) {
2042  	case COMP_COMMAND_ABORTED:
2043  	case COMP_COMMAND_RING_STOPPED:
2044  		xhci_warn(xhci, "Timeout while waiting for configure endpoint command\n");
2045  		ret = -ETIME;
2046  		break;
2047  	case COMP_RESOURCE_ERROR:
2048  		dev_warn(&udev->dev,
2049  			 "Not enough host controller resources for new device state.\n");
2050  		ret = -ENOMEM;
2051  		/* FIXME: can we allocate more resources for the HC? */
2052  		break;
2053  	case COMP_BANDWIDTH_ERROR:
2054  	case COMP_SECONDARY_BANDWIDTH_ERROR:
2055  		dev_warn(&udev->dev,
2056  			 "Not enough bandwidth for new device state.\n");
2057  		ret = -ENOSPC;
2058  		/* FIXME: can we go back to the old state? */
2059  		break;
2060  	case COMP_TRB_ERROR:
2061  		/* the HCD set up something wrong */
2062  		dev_warn(&udev->dev, "ERROR: Endpoint drop flag = 0, "
2063  				"add flag = 1, "
2064  				"and endpoint is not disabled.\n");
2065  		ret = -EINVAL;
2066  		break;
2067  	case COMP_INCOMPATIBLE_DEVICE_ERROR:
2068  		dev_warn(&udev->dev,
2069  			 "ERROR: Incompatible device for endpoint configure command.\n");
2070  		ret = -ENODEV;
2071  		break;
2072  	case COMP_SUCCESS:
2073  		xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
2074  				"Successful Endpoint Configure command");
2075  		ret = 0;
2076  		break;
2077  	default:
2078  		xhci_err(xhci, "ERROR: unexpected command completion code 0x%x.\n",
2079  				*cmd_status);
2080  		ret = -EINVAL;
2081  		break;
2082  	}
2083  	return ret;
2084  }
2085  
xhci_evaluate_context_result(struct xhci_hcd * xhci,struct usb_device * udev,u32 * cmd_status)2086  static int xhci_evaluate_context_result(struct xhci_hcd *xhci,
2087  		struct usb_device *udev, u32 *cmd_status)
2088  {
2089  	int ret;
2090  
2091  	switch (*cmd_status) {
2092  	case COMP_COMMAND_ABORTED:
2093  	case COMP_COMMAND_RING_STOPPED:
2094  		xhci_warn(xhci, "Timeout while waiting for evaluate context command\n");
2095  		ret = -ETIME;
2096  		break;
2097  	case COMP_PARAMETER_ERROR:
2098  		dev_warn(&udev->dev,
2099  			 "WARN: xHCI driver setup invalid evaluate context command.\n");
2100  		ret = -EINVAL;
2101  		break;
2102  	case COMP_SLOT_NOT_ENABLED_ERROR:
2103  		dev_warn(&udev->dev,
2104  			"WARN: slot not enabled for evaluate context command.\n");
2105  		ret = -EINVAL;
2106  		break;
2107  	case COMP_CONTEXT_STATE_ERROR:
2108  		dev_warn(&udev->dev,
2109  			"WARN: invalid context state for evaluate context command.\n");
2110  		ret = -EINVAL;
2111  		break;
2112  	case COMP_INCOMPATIBLE_DEVICE_ERROR:
2113  		dev_warn(&udev->dev,
2114  			"ERROR: Incompatible device for evaluate context command.\n");
2115  		ret = -ENODEV;
2116  		break;
2117  	case COMP_MAX_EXIT_LATENCY_TOO_LARGE_ERROR:
2118  		/* Max Exit Latency too large error */
2119  		dev_warn(&udev->dev, "WARN: Max Exit Latency too large\n");
2120  		ret = -EINVAL;
2121  		break;
2122  	case COMP_SUCCESS:
2123  		xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
2124  				"Successful evaluate context command");
2125  		ret = 0;
2126  		break;
2127  	default:
2128  		xhci_err(xhci, "ERROR: unexpected command completion code 0x%x.\n",
2129  			*cmd_status);
2130  		ret = -EINVAL;
2131  		break;
2132  	}
2133  	return ret;
2134  }
2135  
xhci_count_num_new_endpoints(struct xhci_hcd * xhci,struct xhci_input_control_ctx * ctrl_ctx)2136  static u32 xhci_count_num_new_endpoints(struct xhci_hcd *xhci,
2137  		struct xhci_input_control_ctx *ctrl_ctx)
2138  {
2139  	u32 valid_add_flags;
2140  	u32 valid_drop_flags;
2141  
2142  	/* Ignore the slot flag (bit 0), and the default control endpoint flag
2143  	 * (bit 1).  The default control endpoint is added during the Address
2144  	 * Device command and is never removed until the slot is disabled.
2145  	 */
2146  	valid_add_flags = le32_to_cpu(ctrl_ctx->add_flags) >> 2;
2147  	valid_drop_flags = le32_to_cpu(ctrl_ctx->drop_flags) >> 2;
2148  
2149  	/* Use hweight32 to count the number of ones in the add flags, or
2150  	 * number of endpoints added.  Don't count endpoints that are changed
2151  	 * (both added and dropped).
2152  	 */
2153  	return hweight32(valid_add_flags) -
2154  		hweight32(valid_add_flags & valid_drop_flags);
2155  }
2156  
xhci_count_num_dropped_endpoints(struct xhci_hcd * xhci,struct xhci_input_control_ctx * ctrl_ctx)2157  static unsigned int xhci_count_num_dropped_endpoints(struct xhci_hcd *xhci,
2158  		struct xhci_input_control_ctx *ctrl_ctx)
2159  {
2160  	u32 valid_add_flags;
2161  	u32 valid_drop_flags;
2162  
2163  	valid_add_flags = le32_to_cpu(ctrl_ctx->add_flags) >> 2;
2164  	valid_drop_flags = le32_to_cpu(ctrl_ctx->drop_flags) >> 2;
2165  
2166  	return hweight32(valid_drop_flags) -
2167  		hweight32(valid_add_flags & valid_drop_flags);
2168  }
2169  
2170  /*
2171   * We need to reserve the new number of endpoints before the configure endpoint
2172   * command completes.  We can't subtract the dropped endpoints from the number
2173   * of active endpoints until the command completes because we can oversubscribe
2174   * the host in this case:
2175   *
2176   *  - the first configure endpoint command drops more endpoints than it adds
2177   *  - a second configure endpoint command that adds more endpoints is queued
2178   *  - the first configure endpoint command fails, so the config is unchanged
2179   *  - the second command may succeed, even though there isn't enough resources
2180   *
2181   * Must be called with xhci->lock held.
2182   */
xhci_reserve_host_resources(struct xhci_hcd * xhci,struct xhci_input_control_ctx * ctrl_ctx)2183  static int xhci_reserve_host_resources(struct xhci_hcd *xhci,
2184  		struct xhci_input_control_ctx *ctrl_ctx)
2185  {
2186  	u32 added_eps;
2187  
2188  	added_eps = xhci_count_num_new_endpoints(xhci, ctrl_ctx);
2189  	if (xhci->num_active_eps + added_eps > xhci->limit_active_eps) {
2190  		xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
2191  				"Not enough ep ctxs: "
2192  				"%u active, need to add %u, limit is %u.",
2193  				xhci->num_active_eps, added_eps,
2194  				xhci->limit_active_eps);
2195  		return -ENOMEM;
2196  	}
2197  	xhci->num_active_eps += added_eps;
2198  	xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
2199  			"Adding %u ep ctxs, %u now active.", added_eps,
2200  			xhci->num_active_eps);
2201  	return 0;
2202  }
2203  
2204  /*
2205   * The configure endpoint was failed by the xHC for some other reason, so we
2206   * need to revert the resources that failed configuration would have used.
2207   *
2208   * Must be called with xhci->lock held.
2209   */
xhci_free_host_resources(struct xhci_hcd * xhci,struct xhci_input_control_ctx * ctrl_ctx)2210  static void xhci_free_host_resources(struct xhci_hcd *xhci,
2211  		struct xhci_input_control_ctx *ctrl_ctx)
2212  {
2213  	u32 num_failed_eps;
2214  
2215  	num_failed_eps = xhci_count_num_new_endpoints(xhci, ctrl_ctx);
2216  	xhci->num_active_eps -= num_failed_eps;
2217  	xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
2218  			"Removing %u failed ep ctxs, %u now active.",
2219  			num_failed_eps,
2220  			xhci->num_active_eps);
2221  }
2222  
2223  /*
2224   * Now that the command has completed, clean up the active endpoint count by
2225   * subtracting out the endpoints that were dropped (but not changed).
2226   *
2227   * Must be called with xhci->lock held.
2228   */
xhci_finish_resource_reservation(struct xhci_hcd * xhci,struct xhci_input_control_ctx * ctrl_ctx)2229  static void xhci_finish_resource_reservation(struct xhci_hcd *xhci,
2230  		struct xhci_input_control_ctx *ctrl_ctx)
2231  {
2232  	u32 num_dropped_eps;
2233  
2234  	num_dropped_eps = xhci_count_num_dropped_endpoints(xhci, ctrl_ctx);
2235  	xhci->num_active_eps -= num_dropped_eps;
2236  	if (num_dropped_eps)
2237  		xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
2238  				"Removing %u dropped ep ctxs, %u now active.",
2239  				num_dropped_eps,
2240  				xhci->num_active_eps);
2241  }
2242  
xhci_get_block_size(struct usb_device * udev)2243  static unsigned int xhci_get_block_size(struct usb_device *udev)
2244  {
2245  	switch (udev->speed) {
2246  	case USB_SPEED_LOW:
2247  	case USB_SPEED_FULL:
2248  		return FS_BLOCK;
2249  	case USB_SPEED_HIGH:
2250  		return HS_BLOCK;
2251  	case USB_SPEED_SUPER:
2252  	case USB_SPEED_SUPER_PLUS:
2253  		return SS_BLOCK;
2254  	case USB_SPEED_UNKNOWN:
2255  	default:
2256  		/* Should never happen */
2257  		return 1;
2258  	}
2259  }
2260  
2261  static unsigned int
xhci_get_largest_overhead(struct xhci_interval_bw * interval_bw)2262  xhci_get_largest_overhead(struct xhci_interval_bw *interval_bw)
2263  {
2264  	if (interval_bw->overhead[LS_OVERHEAD_TYPE])
2265  		return LS_OVERHEAD;
2266  	if (interval_bw->overhead[FS_OVERHEAD_TYPE])
2267  		return FS_OVERHEAD;
2268  	return HS_OVERHEAD;
2269  }
2270  
2271  /* If we are changing a LS/FS device under a HS hub,
2272   * make sure (if we are activating a new TT) that the HS bus has enough
2273   * bandwidth for this new TT.
2274   */
xhci_check_tt_bw_table(struct xhci_hcd * xhci,struct xhci_virt_device * virt_dev,int old_active_eps)2275  static int xhci_check_tt_bw_table(struct xhci_hcd *xhci,
2276  		struct xhci_virt_device *virt_dev,
2277  		int old_active_eps)
2278  {
2279  	struct xhci_interval_bw_table *bw_table;
2280  	struct xhci_tt_bw_info *tt_info;
2281  
2282  	/* Find the bandwidth table for the root port this TT is attached to. */
2283  	bw_table = &xhci->rh_bw[virt_dev->rhub_port->hw_portnum].bw_table;
2284  	tt_info = virt_dev->tt_info;
2285  	/* If this TT already had active endpoints, the bandwidth for this TT
2286  	 * has already been added.  Removing all periodic endpoints (and thus
2287  	 * making the TT enactive) will only decrease the bandwidth used.
2288  	 */
2289  	if (old_active_eps)
2290  		return 0;
2291  	if (old_active_eps == 0 && tt_info->active_eps != 0) {
2292  		if (bw_table->bw_used + TT_HS_OVERHEAD > HS_BW_LIMIT)
2293  			return -ENOMEM;
2294  		return 0;
2295  	}
2296  	/* Not sure why we would have no new active endpoints...
2297  	 *
2298  	 * Maybe because of an Evaluate Context change for a hub update or a
2299  	 * control endpoint 0 max packet size change?
2300  	 * FIXME: skip the bandwidth calculation in that case.
2301  	 */
2302  	return 0;
2303  }
2304  
xhci_check_ss_bw(struct xhci_hcd * xhci,struct xhci_virt_device * virt_dev)2305  static int xhci_check_ss_bw(struct xhci_hcd *xhci,
2306  		struct xhci_virt_device *virt_dev)
2307  {
2308  	unsigned int bw_reserved;
2309  
2310  	bw_reserved = DIV_ROUND_UP(SS_BW_RESERVED*SS_BW_LIMIT_IN, 100);
2311  	if (virt_dev->bw_table->ss_bw_in > (SS_BW_LIMIT_IN - bw_reserved))
2312  		return -ENOMEM;
2313  
2314  	bw_reserved = DIV_ROUND_UP(SS_BW_RESERVED*SS_BW_LIMIT_OUT, 100);
2315  	if (virt_dev->bw_table->ss_bw_out > (SS_BW_LIMIT_OUT - bw_reserved))
2316  		return -ENOMEM;
2317  
2318  	return 0;
2319  }
2320  
2321  /*
2322   * This algorithm is a very conservative estimate of the worst-case scheduling
2323   * scenario for any one interval.  The hardware dynamically schedules the
2324   * packets, so we can't tell which microframe could be the limiting factor in
2325   * the bandwidth scheduling.  This only takes into account periodic endpoints.
2326   *
2327   * Obviously, we can't solve an NP complete problem to find the minimum worst
2328   * case scenario.  Instead, we come up with an estimate that is no less than
2329   * the worst case bandwidth used for any one microframe, but may be an
2330   * over-estimate.
2331   *
2332   * We walk the requirements for each endpoint by interval, starting with the
2333   * smallest interval, and place packets in the schedule where there is only one
2334   * possible way to schedule packets for that interval.  In order to simplify
2335   * this algorithm, we record the largest max packet size for each interval, and
2336   * assume all packets will be that size.
2337   *
2338   * For interval 0, we obviously must schedule all packets for each interval.
2339   * The bandwidth for interval 0 is just the amount of data to be transmitted
2340   * (the sum of all max ESIT payload sizes, plus any overhead per packet times
2341   * the number of packets).
2342   *
2343   * For interval 1, we have two possible microframes to schedule those packets
2344   * in.  For this algorithm, if we can schedule the same number of packets for
2345   * each possible scheduling opportunity (each microframe), we will do so.  The
2346   * remaining number of packets will be saved to be transmitted in the gaps in
2347   * the next interval's scheduling sequence.
2348   *
2349   * As we move those remaining packets to be scheduled with interval 2 packets,
2350   * we have to double the number of remaining packets to transmit.  This is
2351   * because the intervals are actually powers of 2, and we would be transmitting
2352   * the previous interval's packets twice in this interval.  We also have to be
2353   * sure that when we look at the largest max packet size for this interval, we
2354   * also look at the largest max packet size for the remaining packets and take
2355   * the greater of the two.
2356   *
2357   * The algorithm continues to evenly distribute packets in each scheduling
2358   * opportunity, and push the remaining packets out, until we get to the last
2359   * interval.  Then those packets and their associated overhead are just added
2360   * to the bandwidth used.
2361   */
xhci_check_bw_table(struct xhci_hcd * xhci,struct xhci_virt_device * virt_dev,int old_active_eps)2362  static int xhci_check_bw_table(struct xhci_hcd *xhci,
2363  		struct xhci_virt_device *virt_dev,
2364  		int old_active_eps)
2365  {
2366  	unsigned int bw_reserved;
2367  	unsigned int max_bandwidth;
2368  	unsigned int bw_used;
2369  	unsigned int block_size;
2370  	struct xhci_interval_bw_table *bw_table;
2371  	unsigned int packet_size = 0;
2372  	unsigned int overhead = 0;
2373  	unsigned int packets_transmitted = 0;
2374  	unsigned int packets_remaining = 0;
2375  	unsigned int i;
2376  
2377  	if (virt_dev->udev->speed >= USB_SPEED_SUPER)
2378  		return xhci_check_ss_bw(xhci, virt_dev);
2379  
2380  	if (virt_dev->udev->speed == USB_SPEED_HIGH) {
2381  		max_bandwidth = HS_BW_LIMIT;
2382  		/* Convert percent of bus BW reserved to blocks reserved */
2383  		bw_reserved = DIV_ROUND_UP(HS_BW_RESERVED * max_bandwidth, 100);
2384  	} else {
2385  		max_bandwidth = FS_BW_LIMIT;
2386  		bw_reserved = DIV_ROUND_UP(FS_BW_RESERVED * max_bandwidth, 100);
2387  	}
2388  
2389  	bw_table = virt_dev->bw_table;
2390  	/* We need to translate the max packet size and max ESIT payloads into
2391  	 * the units the hardware uses.
2392  	 */
2393  	block_size = xhci_get_block_size(virt_dev->udev);
2394  
2395  	/* If we are manipulating a LS/FS device under a HS hub, double check
2396  	 * that the HS bus has enough bandwidth if we are activing a new TT.
2397  	 */
2398  	if (virt_dev->tt_info) {
2399  		xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
2400  				"Recalculating BW for rootport %u",
2401  				virt_dev->rhub_port->hw_portnum + 1);
2402  		if (xhci_check_tt_bw_table(xhci, virt_dev, old_active_eps)) {
2403  			xhci_warn(xhci, "Not enough bandwidth on HS bus for "
2404  					"newly activated TT.\n");
2405  			return -ENOMEM;
2406  		}
2407  		xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
2408  				"Recalculating BW for TT slot %u port %u",
2409  				virt_dev->tt_info->slot_id,
2410  				virt_dev->tt_info->ttport);
2411  	} else {
2412  		xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
2413  				"Recalculating BW for rootport %u",
2414  				virt_dev->rhub_port->hw_portnum + 1);
2415  	}
2416  
2417  	/* Add in how much bandwidth will be used for interval zero, or the
2418  	 * rounded max ESIT payload + number of packets * largest overhead.
2419  	 */
2420  	bw_used = DIV_ROUND_UP(bw_table->interval0_esit_payload, block_size) +
2421  		bw_table->interval_bw[0].num_packets *
2422  		xhci_get_largest_overhead(&bw_table->interval_bw[0]);
2423  
2424  	for (i = 1; i < XHCI_MAX_INTERVAL; i++) {
2425  		unsigned int bw_added;
2426  		unsigned int largest_mps;
2427  		unsigned int interval_overhead;
2428  
2429  		/*
2430  		 * How many packets could we transmit in this interval?
2431  		 * If packets didn't fit in the previous interval, we will need
2432  		 * to transmit that many packets twice within this interval.
2433  		 */
2434  		packets_remaining = 2 * packets_remaining +
2435  			bw_table->interval_bw[i].num_packets;
2436  
2437  		/* Find the largest max packet size of this or the previous
2438  		 * interval.
2439  		 */
2440  		if (list_empty(&bw_table->interval_bw[i].endpoints))
2441  			largest_mps = 0;
2442  		else {
2443  			struct xhci_virt_ep *virt_ep;
2444  			struct list_head *ep_entry;
2445  
2446  			ep_entry = bw_table->interval_bw[i].endpoints.next;
2447  			virt_ep = list_entry(ep_entry,
2448  					struct xhci_virt_ep, bw_endpoint_list);
2449  			/* Convert to blocks, rounding up */
2450  			largest_mps = DIV_ROUND_UP(
2451  					virt_ep->bw_info.max_packet_size,
2452  					block_size);
2453  		}
2454  		if (largest_mps > packet_size)
2455  			packet_size = largest_mps;
2456  
2457  		/* Use the larger overhead of this or the previous interval. */
2458  		interval_overhead = xhci_get_largest_overhead(
2459  				&bw_table->interval_bw[i]);
2460  		if (interval_overhead > overhead)
2461  			overhead = interval_overhead;
2462  
2463  		/* How many packets can we evenly distribute across
2464  		 * (1 << (i + 1)) possible scheduling opportunities?
2465  		 */
2466  		packets_transmitted = packets_remaining >> (i + 1);
2467  
2468  		/* Add in the bandwidth used for those scheduled packets */
2469  		bw_added = packets_transmitted * (overhead + packet_size);
2470  
2471  		/* How many packets do we have remaining to transmit? */
2472  		packets_remaining = packets_remaining % (1 << (i + 1));
2473  
2474  		/* What largest max packet size should those packets have? */
2475  		/* If we've transmitted all packets, don't carry over the
2476  		 * largest packet size.
2477  		 */
2478  		if (packets_remaining == 0) {
2479  			packet_size = 0;
2480  			overhead = 0;
2481  		} else if (packets_transmitted > 0) {
2482  			/* Otherwise if we do have remaining packets, and we've
2483  			 * scheduled some packets in this interval, take the
2484  			 * largest max packet size from endpoints with this
2485  			 * interval.
2486  			 */
2487  			packet_size = largest_mps;
2488  			overhead = interval_overhead;
2489  		}
2490  		/* Otherwise carry over packet_size and overhead from the last
2491  		 * time we had a remainder.
2492  		 */
2493  		bw_used += bw_added;
2494  		if (bw_used > max_bandwidth) {
2495  			xhci_warn(xhci, "Not enough bandwidth. "
2496  					"Proposed: %u, Max: %u\n",
2497  				bw_used, max_bandwidth);
2498  			return -ENOMEM;
2499  		}
2500  	}
2501  	/*
2502  	 * Ok, we know we have some packets left over after even-handedly
2503  	 * scheduling interval 15.  We don't know which microframes they will
2504  	 * fit into, so we over-schedule and say they will be scheduled every
2505  	 * microframe.
2506  	 */
2507  	if (packets_remaining > 0)
2508  		bw_used += overhead + packet_size;
2509  
2510  	if (!virt_dev->tt_info && virt_dev->udev->speed == USB_SPEED_HIGH) {
2511  		/* OK, we're manipulating a HS device attached to a
2512  		 * root port bandwidth domain.  Include the number of active TTs
2513  		 * in the bandwidth used.
2514  		 */
2515  		bw_used += TT_HS_OVERHEAD *
2516  			xhci->rh_bw[virt_dev->rhub_port->hw_portnum].num_active_tts;
2517  	}
2518  
2519  	xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
2520  		"Final bandwidth: %u, Limit: %u, Reserved: %u, "
2521  		"Available: %u " "percent",
2522  		bw_used, max_bandwidth, bw_reserved,
2523  		(max_bandwidth - bw_used - bw_reserved) * 100 /
2524  		max_bandwidth);
2525  
2526  	bw_used += bw_reserved;
2527  	if (bw_used > max_bandwidth) {
2528  		xhci_warn(xhci, "Not enough bandwidth. Proposed: %u, Max: %u\n",
2529  				bw_used, max_bandwidth);
2530  		return -ENOMEM;
2531  	}
2532  
2533  	bw_table->bw_used = bw_used;
2534  	return 0;
2535  }
2536  
xhci_is_async_ep(unsigned int ep_type)2537  static bool xhci_is_async_ep(unsigned int ep_type)
2538  {
2539  	return (ep_type != ISOC_OUT_EP && ep_type != INT_OUT_EP &&
2540  					ep_type != ISOC_IN_EP &&
2541  					ep_type != INT_IN_EP);
2542  }
2543  
xhci_is_sync_in_ep(unsigned int ep_type)2544  static bool xhci_is_sync_in_ep(unsigned int ep_type)
2545  {
2546  	return (ep_type == ISOC_IN_EP || ep_type == INT_IN_EP);
2547  }
2548  
xhci_get_ss_bw_consumed(struct xhci_bw_info * ep_bw)2549  static unsigned int xhci_get_ss_bw_consumed(struct xhci_bw_info *ep_bw)
2550  {
2551  	unsigned int mps = DIV_ROUND_UP(ep_bw->max_packet_size, SS_BLOCK);
2552  
2553  	if (ep_bw->ep_interval == 0)
2554  		return SS_OVERHEAD_BURST +
2555  			(ep_bw->mult * ep_bw->num_packets *
2556  					(SS_OVERHEAD + mps));
2557  	return DIV_ROUND_UP(ep_bw->mult * ep_bw->num_packets *
2558  				(SS_OVERHEAD + mps + SS_OVERHEAD_BURST),
2559  				1 << ep_bw->ep_interval);
2560  
2561  }
2562  
xhci_drop_ep_from_interval_table(struct xhci_hcd * xhci,struct xhci_bw_info * ep_bw,struct xhci_interval_bw_table * bw_table,struct usb_device * udev,struct xhci_virt_ep * virt_ep,struct xhci_tt_bw_info * tt_info)2563  static void xhci_drop_ep_from_interval_table(struct xhci_hcd *xhci,
2564  		struct xhci_bw_info *ep_bw,
2565  		struct xhci_interval_bw_table *bw_table,
2566  		struct usb_device *udev,
2567  		struct xhci_virt_ep *virt_ep,
2568  		struct xhci_tt_bw_info *tt_info)
2569  {
2570  	struct xhci_interval_bw	*interval_bw;
2571  	int normalized_interval;
2572  
2573  	if (xhci_is_async_ep(ep_bw->type))
2574  		return;
2575  
2576  	if (udev->speed >= USB_SPEED_SUPER) {
2577  		if (xhci_is_sync_in_ep(ep_bw->type))
2578  			xhci->devs[udev->slot_id]->bw_table->ss_bw_in -=
2579  				xhci_get_ss_bw_consumed(ep_bw);
2580  		else
2581  			xhci->devs[udev->slot_id]->bw_table->ss_bw_out -=
2582  				xhci_get_ss_bw_consumed(ep_bw);
2583  		return;
2584  	}
2585  
2586  	/* SuperSpeed endpoints never get added to intervals in the table, so
2587  	 * this check is only valid for HS/FS/LS devices.
2588  	 */
2589  	if (list_empty(&virt_ep->bw_endpoint_list))
2590  		return;
2591  	/* For LS/FS devices, we need to translate the interval expressed in
2592  	 * microframes to frames.
2593  	 */
2594  	if (udev->speed == USB_SPEED_HIGH)
2595  		normalized_interval = ep_bw->ep_interval;
2596  	else
2597  		normalized_interval = ep_bw->ep_interval - 3;
2598  
2599  	if (normalized_interval == 0)
2600  		bw_table->interval0_esit_payload -= ep_bw->max_esit_payload;
2601  	interval_bw = &bw_table->interval_bw[normalized_interval];
2602  	interval_bw->num_packets -= ep_bw->num_packets;
2603  	switch (udev->speed) {
2604  	case USB_SPEED_LOW:
2605  		interval_bw->overhead[LS_OVERHEAD_TYPE] -= 1;
2606  		break;
2607  	case USB_SPEED_FULL:
2608  		interval_bw->overhead[FS_OVERHEAD_TYPE] -= 1;
2609  		break;
2610  	case USB_SPEED_HIGH:
2611  		interval_bw->overhead[HS_OVERHEAD_TYPE] -= 1;
2612  		break;
2613  	default:
2614  		/* Should never happen because only LS/FS/HS endpoints will get
2615  		 * added to the endpoint list.
2616  		 */
2617  		return;
2618  	}
2619  	if (tt_info)
2620  		tt_info->active_eps -= 1;
2621  	list_del_init(&virt_ep->bw_endpoint_list);
2622  }
2623  
xhci_add_ep_to_interval_table(struct xhci_hcd * xhci,struct xhci_bw_info * ep_bw,struct xhci_interval_bw_table * bw_table,struct usb_device * udev,struct xhci_virt_ep * virt_ep,struct xhci_tt_bw_info * tt_info)2624  static void xhci_add_ep_to_interval_table(struct xhci_hcd *xhci,
2625  		struct xhci_bw_info *ep_bw,
2626  		struct xhci_interval_bw_table *bw_table,
2627  		struct usb_device *udev,
2628  		struct xhci_virt_ep *virt_ep,
2629  		struct xhci_tt_bw_info *tt_info)
2630  {
2631  	struct xhci_interval_bw	*interval_bw;
2632  	struct xhci_virt_ep *smaller_ep;
2633  	int normalized_interval;
2634  
2635  	if (xhci_is_async_ep(ep_bw->type))
2636  		return;
2637  
2638  	if (udev->speed == USB_SPEED_SUPER) {
2639  		if (xhci_is_sync_in_ep(ep_bw->type))
2640  			xhci->devs[udev->slot_id]->bw_table->ss_bw_in +=
2641  				xhci_get_ss_bw_consumed(ep_bw);
2642  		else
2643  			xhci->devs[udev->slot_id]->bw_table->ss_bw_out +=
2644  				xhci_get_ss_bw_consumed(ep_bw);
2645  		return;
2646  	}
2647  
2648  	/* For LS/FS devices, we need to translate the interval expressed in
2649  	 * microframes to frames.
2650  	 */
2651  	if (udev->speed == USB_SPEED_HIGH)
2652  		normalized_interval = ep_bw->ep_interval;
2653  	else
2654  		normalized_interval = ep_bw->ep_interval - 3;
2655  
2656  	if (normalized_interval == 0)
2657  		bw_table->interval0_esit_payload += ep_bw->max_esit_payload;
2658  	interval_bw = &bw_table->interval_bw[normalized_interval];
2659  	interval_bw->num_packets += ep_bw->num_packets;
2660  	switch (udev->speed) {
2661  	case USB_SPEED_LOW:
2662  		interval_bw->overhead[LS_OVERHEAD_TYPE] += 1;
2663  		break;
2664  	case USB_SPEED_FULL:
2665  		interval_bw->overhead[FS_OVERHEAD_TYPE] += 1;
2666  		break;
2667  	case USB_SPEED_HIGH:
2668  		interval_bw->overhead[HS_OVERHEAD_TYPE] += 1;
2669  		break;
2670  	default:
2671  		/* Should never happen because only LS/FS/HS endpoints will get
2672  		 * added to the endpoint list.
2673  		 */
2674  		return;
2675  	}
2676  
2677  	if (tt_info)
2678  		tt_info->active_eps += 1;
2679  	/* Insert the endpoint into the list, largest max packet size first. */
2680  	list_for_each_entry(smaller_ep, &interval_bw->endpoints,
2681  			bw_endpoint_list) {
2682  		if (ep_bw->max_packet_size >=
2683  				smaller_ep->bw_info.max_packet_size) {
2684  			/* Add the new ep before the smaller endpoint */
2685  			list_add_tail(&virt_ep->bw_endpoint_list,
2686  					&smaller_ep->bw_endpoint_list);
2687  			return;
2688  		}
2689  	}
2690  	/* Add the new endpoint at the end of the list. */
2691  	list_add_tail(&virt_ep->bw_endpoint_list,
2692  			&interval_bw->endpoints);
2693  }
2694  
xhci_update_tt_active_eps(struct xhci_hcd * xhci,struct xhci_virt_device * virt_dev,int old_active_eps)2695  void xhci_update_tt_active_eps(struct xhci_hcd *xhci,
2696  		struct xhci_virt_device *virt_dev,
2697  		int old_active_eps)
2698  {
2699  	struct xhci_root_port_bw_info *rh_bw_info;
2700  	if (!virt_dev->tt_info)
2701  		return;
2702  
2703  	rh_bw_info = &xhci->rh_bw[virt_dev->rhub_port->hw_portnum];
2704  	if (old_active_eps == 0 &&
2705  				virt_dev->tt_info->active_eps != 0) {
2706  		rh_bw_info->num_active_tts += 1;
2707  		rh_bw_info->bw_table.bw_used += TT_HS_OVERHEAD;
2708  	} else if (old_active_eps != 0 &&
2709  				virt_dev->tt_info->active_eps == 0) {
2710  		rh_bw_info->num_active_tts -= 1;
2711  		rh_bw_info->bw_table.bw_used -= TT_HS_OVERHEAD;
2712  	}
2713  }
2714  
xhci_reserve_bandwidth(struct xhci_hcd * xhci,struct xhci_virt_device * virt_dev,struct xhci_container_ctx * in_ctx)2715  static int xhci_reserve_bandwidth(struct xhci_hcd *xhci,
2716  		struct xhci_virt_device *virt_dev,
2717  		struct xhci_container_ctx *in_ctx)
2718  {
2719  	struct xhci_bw_info ep_bw_info[31];
2720  	int i;
2721  	struct xhci_input_control_ctx *ctrl_ctx;
2722  	int old_active_eps = 0;
2723  
2724  	if (virt_dev->tt_info)
2725  		old_active_eps = virt_dev->tt_info->active_eps;
2726  
2727  	ctrl_ctx = xhci_get_input_control_ctx(in_ctx);
2728  	if (!ctrl_ctx) {
2729  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
2730  				__func__);
2731  		return -ENOMEM;
2732  	}
2733  
2734  	for (i = 0; i < 31; i++) {
2735  		if (!EP_IS_ADDED(ctrl_ctx, i) && !EP_IS_DROPPED(ctrl_ctx, i))
2736  			continue;
2737  
2738  		/* Make a copy of the BW info in case we need to revert this */
2739  		memcpy(&ep_bw_info[i], &virt_dev->eps[i].bw_info,
2740  				sizeof(ep_bw_info[i]));
2741  		/* Drop the endpoint from the interval table if the endpoint is
2742  		 * being dropped or changed.
2743  		 */
2744  		if (EP_IS_DROPPED(ctrl_ctx, i))
2745  			xhci_drop_ep_from_interval_table(xhci,
2746  					&virt_dev->eps[i].bw_info,
2747  					virt_dev->bw_table,
2748  					virt_dev->udev,
2749  					&virt_dev->eps[i],
2750  					virt_dev->tt_info);
2751  	}
2752  	/* Overwrite the information stored in the endpoints' bw_info */
2753  	xhci_update_bw_info(xhci, virt_dev->in_ctx, ctrl_ctx, virt_dev);
2754  	for (i = 0; i < 31; i++) {
2755  		/* Add any changed or added endpoints to the interval table */
2756  		if (EP_IS_ADDED(ctrl_ctx, i))
2757  			xhci_add_ep_to_interval_table(xhci,
2758  					&virt_dev->eps[i].bw_info,
2759  					virt_dev->bw_table,
2760  					virt_dev->udev,
2761  					&virt_dev->eps[i],
2762  					virt_dev->tt_info);
2763  	}
2764  
2765  	if (!xhci_check_bw_table(xhci, virt_dev, old_active_eps)) {
2766  		/* Ok, this fits in the bandwidth we have.
2767  		 * Update the number of active TTs.
2768  		 */
2769  		xhci_update_tt_active_eps(xhci, virt_dev, old_active_eps);
2770  		return 0;
2771  	}
2772  
2773  	/* We don't have enough bandwidth for this, revert the stored info. */
2774  	for (i = 0; i < 31; i++) {
2775  		if (!EP_IS_ADDED(ctrl_ctx, i) && !EP_IS_DROPPED(ctrl_ctx, i))
2776  			continue;
2777  
2778  		/* Drop the new copies of any added or changed endpoints from
2779  		 * the interval table.
2780  		 */
2781  		if (EP_IS_ADDED(ctrl_ctx, i)) {
2782  			xhci_drop_ep_from_interval_table(xhci,
2783  					&virt_dev->eps[i].bw_info,
2784  					virt_dev->bw_table,
2785  					virt_dev->udev,
2786  					&virt_dev->eps[i],
2787  					virt_dev->tt_info);
2788  		}
2789  		/* Revert the endpoint back to its old information */
2790  		memcpy(&virt_dev->eps[i].bw_info, &ep_bw_info[i],
2791  				sizeof(ep_bw_info[i]));
2792  		/* Add any changed or dropped endpoints back into the table */
2793  		if (EP_IS_DROPPED(ctrl_ctx, i))
2794  			xhci_add_ep_to_interval_table(xhci,
2795  					&virt_dev->eps[i].bw_info,
2796  					virt_dev->bw_table,
2797  					virt_dev->udev,
2798  					&virt_dev->eps[i],
2799  					virt_dev->tt_info);
2800  	}
2801  	return -ENOMEM;
2802  }
2803  
2804  /*
2805   * Synchronous XHCI stop endpoint helper.  Issues the stop endpoint command and
2806   * waits for the command completion before returning.  This does not call
2807   * xhci_handle_cmd_stop_ep(), which has additional handling for 'context error'
2808   * cases, along with transfer ring cleanup.
2809   *
2810   * xhci_stop_endpoint_sync() is intended to be utilized by clients that manage
2811   * their own transfer ring, such as offload situations.
2812   */
xhci_stop_endpoint_sync(struct xhci_hcd * xhci,struct xhci_virt_ep * ep,int suspend,gfp_t gfp_flags)2813  int xhci_stop_endpoint_sync(struct xhci_hcd *xhci, struct xhci_virt_ep *ep, int suspend,
2814  			    gfp_t gfp_flags)
2815  {
2816  	struct xhci_command *command;
2817  	unsigned long flags;
2818  	int ret;
2819  
2820  	command = xhci_alloc_command(xhci, true, gfp_flags);
2821  	if (!command)
2822  		return -ENOMEM;
2823  
2824  	spin_lock_irqsave(&xhci->lock, flags);
2825  	ret = xhci_queue_stop_endpoint(xhci, command, ep->vdev->slot_id,
2826  				       ep->ep_index, suspend);
2827  	if (ret < 0) {
2828  		spin_unlock_irqrestore(&xhci->lock, flags);
2829  		goto out;
2830  	}
2831  
2832  	xhci_ring_cmd_db(xhci);
2833  	spin_unlock_irqrestore(&xhci->lock, flags);
2834  
2835  	wait_for_completion(command->completion);
2836  
2837  	/* No handling for COMP_CONTEXT_STATE_ERROR done at command completion*/
2838  	if (command->status == COMP_COMMAND_ABORTED ||
2839  	    command->status == COMP_COMMAND_RING_STOPPED) {
2840  		xhci_warn(xhci, "Timeout while waiting for stop endpoint command\n");
2841  		ret = -ETIME;
2842  	}
2843  out:
2844  	xhci_free_command(xhci, command);
2845  
2846  	return ret;
2847  }
2848  EXPORT_SYMBOL_GPL(xhci_stop_endpoint_sync);
2849  
2850  /* Issue a configure endpoint command or evaluate context command
2851   * and wait for it to finish.
2852   */
xhci_configure_endpoint(struct xhci_hcd * xhci,struct usb_device * udev,struct xhci_command * command,bool ctx_change,bool must_succeed)2853  static int xhci_configure_endpoint(struct xhci_hcd *xhci,
2854  		struct usb_device *udev,
2855  		struct xhci_command *command,
2856  		bool ctx_change, bool must_succeed)
2857  {
2858  	int ret;
2859  	unsigned long flags;
2860  	struct xhci_input_control_ctx *ctrl_ctx;
2861  	struct xhci_virt_device *virt_dev;
2862  	struct xhci_slot_ctx *slot_ctx;
2863  
2864  	if (!command)
2865  		return -EINVAL;
2866  
2867  	spin_lock_irqsave(&xhci->lock, flags);
2868  
2869  	if (xhci->xhc_state & XHCI_STATE_DYING) {
2870  		spin_unlock_irqrestore(&xhci->lock, flags);
2871  		return -ESHUTDOWN;
2872  	}
2873  
2874  	virt_dev = xhci->devs[udev->slot_id];
2875  
2876  	ctrl_ctx = xhci_get_input_control_ctx(command->in_ctx);
2877  	if (!ctrl_ctx) {
2878  		spin_unlock_irqrestore(&xhci->lock, flags);
2879  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
2880  				__func__);
2881  		return -ENOMEM;
2882  	}
2883  
2884  	if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK) &&
2885  			xhci_reserve_host_resources(xhci, ctrl_ctx)) {
2886  		spin_unlock_irqrestore(&xhci->lock, flags);
2887  		xhci_warn(xhci, "Not enough host resources, "
2888  				"active endpoint contexts = %u\n",
2889  				xhci->num_active_eps);
2890  		return -ENOMEM;
2891  	}
2892  	if ((xhci->quirks & XHCI_SW_BW_CHECKING) && !ctx_change &&
2893  	    xhci_reserve_bandwidth(xhci, virt_dev, command->in_ctx)) {
2894  		if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK))
2895  			xhci_free_host_resources(xhci, ctrl_ctx);
2896  		spin_unlock_irqrestore(&xhci->lock, flags);
2897  		xhci_warn(xhci, "Not enough bandwidth\n");
2898  		return -ENOMEM;
2899  	}
2900  
2901  	slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
2902  
2903  	trace_xhci_configure_endpoint_ctrl_ctx(ctrl_ctx);
2904  	trace_xhci_configure_endpoint(slot_ctx);
2905  
2906  	if (!ctx_change)
2907  		ret = xhci_queue_configure_endpoint(xhci, command,
2908  				command->in_ctx->dma,
2909  				udev->slot_id, must_succeed);
2910  	else
2911  		ret = xhci_queue_evaluate_context(xhci, command,
2912  				command->in_ctx->dma,
2913  				udev->slot_id, must_succeed);
2914  	if (ret < 0) {
2915  		if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK))
2916  			xhci_free_host_resources(xhci, ctrl_ctx);
2917  		spin_unlock_irqrestore(&xhci->lock, flags);
2918  		xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
2919  				"FIXME allocate a new ring segment");
2920  		return -ENOMEM;
2921  	}
2922  	xhci_ring_cmd_db(xhci);
2923  	spin_unlock_irqrestore(&xhci->lock, flags);
2924  
2925  	/* Wait for the configure endpoint command to complete */
2926  	wait_for_completion(command->completion);
2927  
2928  	if (!ctx_change)
2929  		ret = xhci_configure_endpoint_result(xhci, udev,
2930  						     &command->status);
2931  	else
2932  		ret = xhci_evaluate_context_result(xhci, udev,
2933  						   &command->status);
2934  
2935  	if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK)) {
2936  		spin_lock_irqsave(&xhci->lock, flags);
2937  		/* If the command failed, remove the reserved resources.
2938  		 * Otherwise, clean up the estimate to include dropped eps.
2939  		 */
2940  		if (ret)
2941  			xhci_free_host_resources(xhci, ctrl_ctx);
2942  		else
2943  			xhci_finish_resource_reservation(xhci, ctrl_ctx);
2944  		spin_unlock_irqrestore(&xhci->lock, flags);
2945  	}
2946  	return ret;
2947  }
2948  
xhci_check_bw_drop_ep_streams(struct xhci_hcd * xhci,struct xhci_virt_device * vdev,int i)2949  static void xhci_check_bw_drop_ep_streams(struct xhci_hcd *xhci,
2950  	struct xhci_virt_device *vdev, int i)
2951  {
2952  	struct xhci_virt_ep *ep = &vdev->eps[i];
2953  
2954  	if (ep->ep_state & EP_HAS_STREAMS) {
2955  		xhci_warn(xhci, "WARN: endpoint 0x%02x has streams on set_interface, freeing streams.\n",
2956  				xhci_get_endpoint_address(i));
2957  		xhci_free_stream_info(xhci, ep->stream_info);
2958  		ep->stream_info = NULL;
2959  		ep->ep_state &= ~EP_HAS_STREAMS;
2960  	}
2961  }
2962  
2963  /* Called after one or more calls to xhci_add_endpoint() or
2964   * xhci_drop_endpoint().  If this call fails, the USB core is expected
2965   * to call xhci_reset_bandwidth().
2966   *
2967   * Since we are in the middle of changing either configuration or
2968   * installing a new alt setting, the USB core won't allow URBs to be
2969   * enqueued for any endpoint on the old config or interface.  Nothing
2970   * else should be touching the xhci->devs[slot_id] structure, so we
2971   * don't need to take the xhci->lock for manipulating that.
2972   */
xhci_check_bandwidth(struct usb_hcd * hcd,struct usb_device * udev)2973  int xhci_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev)
2974  {
2975  	int i;
2976  	int ret = 0;
2977  	struct xhci_hcd *xhci;
2978  	struct xhci_virt_device	*virt_dev;
2979  	struct xhci_input_control_ctx *ctrl_ctx;
2980  	struct xhci_slot_ctx *slot_ctx;
2981  	struct xhci_command *command;
2982  
2983  	ret = xhci_check_args(hcd, udev, NULL, 0, true, __func__);
2984  	if (ret <= 0)
2985  		return ret;
2986  	xhci = hcd_to_xhci(hcd);
2987  	if ((xhci->xhc_state & XHCI_STATE_DYING) ||
2988  		(xhci->xhc_state & XHCI_STATE_REMOVING))
2989  		return -ENODEV;
2990  
2991  	xhci_dbg(xhci, "%s called for udev %p\n", __func__, udev);
2992  	virt_dev = xhci->devs[udev->slot_id];
2993  
2994  	command = xhci_alloc_command(xhci, true, GFP_KERNEL);
2995  	if (!command)
2996  		return -ENOMEM;
2997  
2998  	command->in_ctx = virt_dev->in_ctx;
2999  
3000  	/* See section 4.6.6 - A0 = 1; A1 = D0 = D1 = 0 */
3001  	ctrl_ctx = xhci_get_input_control_ctx(command->in_ctx);
3002  	if (!ctrl_ctx) {
3003  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
3004  				__func__);
3005  		ret = -ENOMEM;
3006  		goto command_cleanup;
3007  	}
3008  	ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
3009  	ctrl_ctx->add_flags &= cpu_to_le32(~EP0_FLAG);
3010  	ctrl_ctx->drop_flags &= cpu_to_le32(~(SLOT_FLAG | EP0_FLAG));
3011  
3012  	/* Don't issue the command if there's no endpoints to update. */
3013  	if (ctrl_ctx->add_flags == cpu_to_le32(SLOT_FLAG) &&
3014  	    ctrl_ctx->drop_flags == 0) {
3015  		ret = 0;
3016  		goto command_cleanup;
3017  	}
3018  	/* Fix up Context Entries field. Minimum value is EP0 == BIT(1). */
3019  	slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->in_ctx);
3020  	for (i = 31; i >= 1; i--) {
3021  		__le32 le32 = cpu_to_le32(BIT(i));
3022  
3023  		if ((virt_dev->eps[i-1].ring && !(ctrl_ctx->drop_flags & le32))
3024  		    || (ctrl_ctx->add_flags & le32) || i == 1) {
3025  			slot_ctx->dev_info &= cpu_to_le32(~LAST_CTX_MASK);
3026  			slot_ctx->dev_info |= cpu_to_le32(LAST_CTX(i));
3027  			break;
3028  		}
3029  	}
3030  
3031  	ret = xhci_configure_endpoint(xhci, udev, command,
3032  			false, false);
3033  	if (ret)
3034  		/* Callee should call reset_bandwidth() */
3035  		goto command_cleanup;
3036  
3037  	/* Free any rings that were dropped, but not changed. */
3038  	for (i = 1; i < 31; i++) {
3039  		if ((le32_to_cpu(ctrl_ctx->drop_flags) & (1 << (i + 1))) &&
3040  		    !(le32_to_cpu(ctrl_ctx->add_flags) & (1 << (i + 1)))) {
3041  			xhci_free_endpoint_ring(xhci, virt_dev, i);
3042  			xhci_check_bw_drop_ep_streams(xhci, virt_dev, i);
3043  		}
3044  	}
3045  	xhci_zero_in_ctx(xhci, virt_dev);
3046  	/*
3047  	 * Install any rings for completely new endpoints or changed endpoints,
3048  	 * and free any old rings from changed endpoints.
3049  	 */
3050  	for (i = 1; i < 31; i++) {
3051  		if (!virt_dev->eps[i].new_ring)
3052  			continue;
3053  		/* Only free the old ring if it exists.
3054  		 * It may not if this is the first add of an endpoint.
3055  		 */
3056  		if (virt_dev->eps[i].ring) {
3057  			xhci_free_endpoint_ring(xhci, virt_dev, i);
3058  		}
3059  		xhci_check_bw_drop_ep_streams(xhci, virt_dev, i);
3060  		virt_dev->eps[i].ring = virt_dev->eps[i].new_ring;
3061  		virt_dev->eps[i].new_ring = NULL;
3062  		xhci_debugfs_create_endpoint(xhci, virt_dev, i);
3063  	}
3064  command_cleanup:
3065  	kfree(command->completion);
3066  	kfree(command);
3067  
3068  	return ret;
3069  }
3070  EXPORT_SYMBOL_GPL(xhci_check_bandwidth);
3071  
xhci_reset_bandwidth(struct usb_hcd * hcd,struct usb_device * udev)3072  void xhci_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev)
3073  {
3074  	struct xhci_hcd *xhci;
3075  	struct xhci_virt_device	*virt_dev;
3076  	int i, ret;
3077  
3078  	ret = xhci_check_args(hcd, udev, NULL, 0, true, __func__);
3079  	if (ret <= 0)
3080  		return;
3081  	xhci = hcd_to_xhci(hcd);
3082  
3083  	xhci_dbg(xhci, "%s called for udev %p\n", __func__, udev);
3084  	virt_dev = xhci->devs[udev->slot_id];
3085  	/* Free any rings allocated for added endpoints */
3086  	for (i = 0; i < 31; i++) {
3087  		if (virt_dev->eps[i].new_ring) {
3088  			xhci_debugfs_remove_endpoint(xhci, virt_dev, i);
3089  			xhci_ring_free(xhci, virt_dev->eps[i].new_ring);
3090  			virt_dev->eps[i].new_ring = NULL;
3091  		}
3092  	}
3093  	xhci_zero_in_ctx(xhci, virt_dev);
3094  }
3095  EXPORT_SYMBOL_GPL(xhci_reset_bandwidth);
3096  
xhci_setup_input_ctx_for_config_ep(struct xhci_hcd * xhci,struct xhci_container_ctx * in_ctx,struct xhci_container_ctx * out_ctx,struct xhci_input_control_ctx * ctrl_ctx,u32 add_flags,u32 drop_flags)3097  static void xhci_setup_input_ctx_for_config_ep(struct xhci_hcd *xhci,
3098  		struct xhci_container_ctx *in_ctx,
3099  		struct xhci_container_ctx *out_ctx,
3100  		struct xhci_input_control_ctx *ctrl_ctx,
3101  		u32 add_flags, u32 drop_flags)
3102  {
3103  	ctrl_ctx->add_flags = cpu_to_le32(add_flags);
3104  	ctrl_ctx->drop_flags = cpu_to_le32(drop_flags);
3105  	xhci_slot_copy(xhci, in_ctx, out_ctx);
3106  	ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
3107  }
3108  
xhci_endpoint_disable(struct usb_hcd * hcd,struct usb_host_endpoint * host_ep)3109  static void xhci_endpoint_disable(struct usb_hcd *hcd,
3110  				  struct usb_host_endpoint *host_ep)
3111  {
3112  	struct xhci_hcd		*xhci;
3113  	struct xhci_virt_device	*vdev;
3114  	struct xhci_virt_ep	*ep;
3115  	struct usb_device	*udev;
3116  	unsigned long		flags;
3117  	unsigned int		ep_index;
3118  
3119  	xhci = hcd_to_xhci(hcd);
3120  rescan:
3121  	spin_lock_irqsave(&xhci->lock, flags);
3122  
3123  	udev = (struct usb_device *)host_ep->hcpriv;
3124  	if (!udev || !udev->slot_id)
3125  		goto done;
3126  
3127  	vdev = xhci->devs[udev->slot_id];
3128  	if (!vdev)
3129  		goto done;
3130  
3131  	ep_index = xhci_get_endpoint_index(&host_ep->desc);
3132  	ep = &vdev->eps[ep_index];
3133  
3134  	/* wait for hub_tt_work to finish clearing hub TT */
3135  	if (ep->ep_state & EP_CLEARING_TT) {
3136  		spin_unlock_irqrestore(&xhci->lock, flags);
3137  		schedule_timeout_uninterruptible(1);
3138  		goto rescan;
3139  	}
3140  
3141  	if (ep->ep_state)
3142  		xhci_dbg(xhci, "endpoint disable with ep_state 0x%x\n",
3143  			 ep->ep_state);
3144  done:
3145  	host_ep->hcpriv = NULL;
3146  	spin_unlock_irqrestore(&xhci->lock, flags);
3147  }
3148  
3149  /*
3150   * Called after usb core issues a clear halt control message.
3151   * The host side of the halt should already be cleared by a reset endpoint
3152   * command issued when the STALL event was received.
3153   *
3154   * The reset endpoint command may only be issued to endpoints in the halted
3155   * state. For software that wishes to reset the data toggle or sequence number
3156   * of an endpoint that isn't in the halted state this function will issue a
3157   * configure endpoint command with the Drop and Add bits set for the target
3158   * endpoint. Refer to the additional note in xhci spcification section 4.6.8.
3159   *
3160   * vdev may be lost due to xHC restore error and re-initialization during S3/S4
3161   * resume. A new vdev will be allocated later by xhci_discover_or_reset_device()
3162   */
3163  
xhci_endpoint_reset(struct usb_hcd * hcd,struct usb_host_endpoint * host_ep)3164  static void xhci_endpoint_reset(struct usb_hcd *hcd,
3165  		struct usb_host_endpoint *host_ep)
3166  {
3167  	struct xhci_hcd *xhci;
3168  	struct usb_device *udev;
3169  	struct xhci_virt_device *vdev;
3170  	struct xhci_virt_ep *ep;
3171  	struct xhci_input_control_ctx *ctrl_ctx;
3172  	struct xhci_command *stop_cmd, *cfg_cmd;
3173  	unsigned int ep_index;
3174  	unsigned long flags;
3175  	u32 ep_flag;
3176  	int err;
3177  
3178  	xhci = hcd_to_xhci(hcd);
3179  	ep_index = xhci_get_endpoint_index(&host_ep->desc);
3180  
3181  	/*
3182  	 * Usb core assumes a max packet value for ep0 on FS devices until the
3183  	 * real value is read from the descriptor. Core resets Ep0 if values
3184  	 * mismatch. Reconfigure the xhci ep0 endpoint context here in that case
3185  	 */
3186  	if (usb_endpoint_xfer_control(&host_ep->desc) && ep_index == 0) {
3187  
3188  		udev = container_of(host_ep, struct usb_device, ep0);
3189  		if (udev->speed != USB_SPEED_FULL || !udev->slot_id)
3190  			return;
3191  
3192  		vdev = xhci->devs[udev->slot_id];
3193  		if (!vdev || vdev->udev != udev)
3194  			return;
3195  
3196  		xhci_check_ep0_maxpacket(xhci, vdev);
3197  
3198  		/* Nothing else should be done here for ep0 during ep reset */
3199  		return;
3200  	}
3201  
3202  	if (!host_ep->hcpriv)
3203  		return;
3204  	udev = (struct usb_device *) host_ep->hcpriv;
3205  	vdev = xhci->devs[udev->slot_id];
3206  
3207  	if (!udev->slot_id || !vdev)
3208  		return;
3209  
3210  	ep = &vdev->eps[ep_index];
3211  
3212  	spin_lock_irqsave(&xhci->lock, flags);
3213  
3214  	ep->ep_state &= ~EP_STALLED;
3215  
3216  	/* Bail out if toggle is already being cleared by a endpoint reset */
3217  	if (ep->ep_state & EP_HARD_CLEAR_TOGGLE) {
3218  		ep->ep_state &= ~EP_HARD_CLEAR_TOGGLE;
3219  		spin_unlock_irqrestore(&xhci->lock, flags);
3220  		return;
3221  	}
3222  	spin_unlock_irqrestore(&xhci->lock, flags);
3223  	/* Only interrupt and bulk ep's use data toggle, USB2 spec 5.5.4-> */
3224  	if (usb_endpoint_xfer_control(&host_ep->desc) ||
3225  	    usb_endpoint_xfer_isoc(&host_ep->desc))
3226  		return;
3227  
3228  	ep_flag = xhci_get_endpoint_flag(&host_ep->desc);
3229  
3230  	if (ep_flag == SLOT_FLAG || ep_flag == EP0_FLAG)
3231  		return;
3232  
3233  	stop_cmd = xhci_alloc_command(xhci, true, GFP_NOWAIT);
3234  	if (!stop_cmd)
3235  		return;
3236  
3237  	cfg_cmd = xhci_alloc_command_with_ctx(xhci, true, GFP_NOWAIT);
3238  	if (!cfg_cmd)
3239  		goto cleanup;
3240  
3241  	spin_lock_irqsave(&xhci->lock, flags);
3242  
3243  	/* block queuing new trbs and ringing ep doorbell */
3244  	ep->ep_state |= EP_SOFT_CLEAR_TOGGLE;
3245  
3246  	/*
3247  	 * Make sure endpoint ring is empty before resetting the toggle/seq.
3248  	 * Driver is required to synchronously cancel all transfer request.
3249  	 * Stop the endpoint to force xHC to update the output context
3250  	 */
3251  
3252  	if (!list_empty(&ep->ring->td_list)) {
3253  		dev_err(&udev->dev, "EP not empty, refuse reset\n");
3254  		spin_unlock_irqrestore(&xhci->lock, flags);
3255  		xhci_free_command(xhci, cfg_cmd);
3256  		goto cleanup;
3257  	}
3258  
3259  	err = xhci_queue_stop_endpoint(xhci, stop_cmd, udev->slot_id,
3260  					ep_index, 0);
3261  	if (err < 0) {
3262  		spin_unlock_irqrestore(&xhci->lock, flags);
3263  		xhci_free_command(xhci, cfg_cmd);
3264  		xhci_dbg(xhci, "%s: Failed to queue stop ep command, %d ",
3265  				__func__, err);
3266  		goto cleanup;
3267  	}
3268  
3269  	xhci_ring_cmd_db(xhci);
3270  	spin_unlock_irqrestore(&xhci->lock, flags);
3271  
3272  	wait_for_completion(stop_cmd->completion);
3273  
3274  	spin_lock_irqsave(&xhci->lock, flags);
3275  
3276  	/* config ep command clears toggle if add and drop ep flags are set */
3277  	ctrl_ctx = xhci_get_input_control_ctx(cfg_cmd->in_ctx);
3278  	if (!ctrl_ctx) {
3279  		spin_unlock_irqrestore(&xhci->lock, flags);
3280  		xhci_free_command(xhci, cfg_cmd);
3281  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
3282  				__func__);
3283  		goto cleanup;
3284  	}
3285  
3286  	xhci_setup_input_ctx_for_config_ep(xhci, cfg_cmd->in_ctx, vdev->out_ctx,
3287  					   ctrl_ctx, ep_flag, ep_flag);
3288  	xhci_endpoint_copy(xhci, cfg_cmd->in_ctx, vdev->out_ctx, ep_index);
3289  
3290  	err = xhci_queue_configure_endpoint(xhci, cfg_cmd, cfg_cmd->in_ctx->dma,
3291  				      udev->slot_id, false);
3292  	if (err < 0) {
3293  		spin_unlock_irqrestore(&xhci->lock, flags);
3294  		xhci_free_command(xhci, cfg_cmd);
3295  		xhci_dbg(xhci, "%s: Failed to queue config ep command, %d ",
3296  				__func__, err);
3297  		goto cleanup;
3298  	}
3299  
3300  	xhci_ring_cmd_db(xhci);
3301  	spin_unlock_irqrestore(&xhci->lock, flags);
3302  
3303  	wait_for_completion(cfg_cmd->completion);
3304  
3305  	xhci_free_command(xhci, cfg_cmd);
3306  cleanup:
3307  	xhci_free_command(xhci, stop_cmd);
3308  	spin_lock_irqsave(&xhci->lock, flags);
3309  	if (ep->ep_state & EP_SOFT_CLEAR_TOGGLE)
3310  		ep->ep_state &= ~EP_SOFT_CLEAR_TOGGLE;
3311  	spin_unlock_irqrestore(&xhci->lock, flags);
3312  }
3313  
xhci_check_streams_endpoint(struct xhci_hcd * xhci,struct usb_device * udev,struct usb_host_endpoint * ep,unsigned int slot_id)3314  static int xhci_check_streams_endpoint(struct xhci_hcd *xhci,
3315  		struct usb_device *udev, struct usb_host_endpoint *ep,
3316  		unsigned int slot_id)
3317  {
3318  	int ret;
3319  	unsigned int ep_index;
3320  	unsigned int ep_state;
3321  
3322  	if (!ep)
3323  		return -EINVAL;
3324  	ret = xhci_check_args(xhci_to_hcd(xhci), udev, ep, 1, true, __func__);
3325  	if (ret <= 0)
3326  		return ret ? ret : -EINVAL;
3327  	if (usb_ss_max_streams(&ep->ss_ep_comp) == 0) {
3328  		xhci_warn(xhci, "WARN: SuperSpeed Endpoint Companion"
3329  				" descriptor for ep 0x%x does not support streams\n",
3330  				ep->desc.bEndpointAddress);
3331  		return -EINVAL;
3332  	}
3333  
3334  	ep_index = xhci_get_endpoint_index(&ep->desc);
3335  	ep_state = xhci->devs[slot_id]->eps[ep_index].ep_state;
3336  	if (ep_state & EP_HAS_STREAMS ||
3337  			ep_state & EP_GETTING_STREAMS) {
3338  		xhci_warn(xhci, "WARN: SuperSpeed bulk endpoint 0x%x "
3339  				"already has streams set up.\n",
3340  				ep->desc.bEndpointAddress);
3341  		xhci_warn(xhci, "Send email to xHCI maintainer and ask for "
3342  				"dynamic stream context array reallocation.\n");
3343  		return -EINVAL;
3344  	}
3345  	if (!list_empty(&xhci->devs[slot_id]->eps[ep_index].ring->td_list)) {
3346  		xhci_warn(xhci, "Cannot setup streams for SuperSpeed bulk "
3347  				"endpoint 0x%x; URBs are pending.\n",
3348  				ep->desc.bEndpointAddress);
3349  		return -EINVAL;
3350  	}
3351  	return 0;
3352  }
3353  
xhci_calculate_streams_entries(struct xhci_hcd * xhci,unsigned int * num_streams,unsigned int * num_stream_ctxs)3354  static void xhci_calculate_streams_entries(struct xhci_hcd *xhci,
3355  		unsigned int *num_streams, unsigned int *num_stream_ctxs)
3356  {
3357  	unsigned int max_streams;
3358  
3359  	/* The stream context array size must be a power of two */
3360  	*num_stream_ctxs = roundup_pow_of_two(*num_streams);
3361  	/*
3362  	 * Find out how many primary stream array entries the host controller
3363  	 * supports.  Later we may use secondary stream arrays (similar to 2nd
3364  	 * level page entries), but that's an optional feature for xHCI host
3365  	 * controllers. xHCs must support at least 4 stream IDs.
3366  	 */
3367  	max_streams = HCC_MAX_PSA(xhci->hcc_params);
3368  	if (*num_stream_ctxs > max_streams) {
3369  		xhci_dbg(xhci, "xHCI HW only supports %u stream ctx entries.\n",
3370  				max_streams);
3371  		*num_stream_ctxs = max_streams;
3372  		*num_streams = max_streams;
3373  	}
3374  }
3375  
3376  /* Returns an error code if one of the endpoint already has streams.
3377   * This does not change any data structures, it only checks and gathers
3378   * information.
3379   */
xhci_calculate_streams_and_bitmask(struct xhci_hcd * xhci,struct usb_device * udev,struct usb_host_endpoint ** eps,unsigned int num_eps,unsigned int * num_streams,u32 * changed_ep_bitmask)3380  static int xhci_calculate_streams_and_bitmask(struct xhci_hcd *xhci,
3381  		struct usb_device *udev,
3382  		struct usb_host_endpoint **eps, unsigned int num_eps,
3383  		unsigned int *num_streams, u32 *changed_ep_bitmask)
3384  {
3385  	unsigned int max_streams;
3386  	unsigned int endpoint_flag;
3387  	int i;
3388  	int ret;
3389  
3390  	for (i = 0; i < num_eps; i++) {
3391  		ret = xhci_check_streams_endpoint(xhci, udev,
3392  				eps[i], udev->slot_id);
3393  		if (ret < 0)
3394  			return ret;
3395  
3396  		max_streams = usb_ss_max_streams(&eps[i]->ss_ep_comp);
3397  		if (max_streams < (*num_streams - 1)) {
3398  			xhci_dbg(xhci, "Ep 0x%x only supports %u stream IDs.\n",
3399  					eps[i]->desc.bEndpointAddress,
3400  					max_streams);
3401  			*num_streams = max_streams+1;
3402  		}
3403  
3404  		endpoint_flag = xhci_get_endpoint_flag(&eps[i]->desc);
3405  		if (*changed_ep_bitmask & endpoint_flag)
3406  			return -EINVAL;
3407  		*changed_ep_bitmask |= endpoint_flag;
3408  	}
3409  	return 0;
3410  }
3411  
xhci_calculate_no_streams_bitmask(struct xhci_hcd * xhci,struct usb_device * udev,struct usb_host_endpoint ** eps,unsigned int num_eps)3412  static u32 xhci_calculate_no_streams_bitmask(struct xhci_hcd *xhci,
3413  		struct usb_device *udev,
3414  		struct usb_host_endpoint **eps, unsigned int num_eps)
3415  {
3416  	u32 changed_ep_bitmask = 0;
3417  	unsigned int slot_id;
3418  	unsigned int ep_index;
3419  	unsigned int ep_state;
3420  	int i;
3421  
3422  	slot_id = udev->slot_id;
3423  	if (!xhci->devs[slot_id])
3424  		return 0;
3425  
3426  	for (i = 0; i < num_eps; i++) {
3427  		ep_index = xhci_get_endpoint_index(&eps[i]->desc);
3428  		ep_state = xhci->devs[slot_id]->eps[ep_index].ep_state;
3429  		/* Are streams already being freed for the endpoint? */
3430  		if (ep_state & EP_GETTING_NO_STREAMS) {
3431  			xhci_warn(xhci, "WARN Can't disable streams for "
3432  					"endpoint 0x%x, "
3433  					"streams are being disabled already\n",
3434  					eps[i]->desc.bEndpointAddress);
3435  			return 0;
3436  		}
3437  		/* Are there actually any streams to free? */
3438  		if (!(ep_state & EP_HAS_STREAMS) &&
3439  				!(ep_state & EP_GETTING_STREAMS)) {
3440  			xhci_warn(xhci, "WARN Can't disable streams for "
3441  					"endpoint 0x%x, "
3442  					"streams are already disabled!\n",
3443  					eps[i]->desc.bEndpointAddress);
3444  			xhci_warn(xhci, "WARN xhci_free_streams() called "
3445  					"with non-streams endpoint\n");
3446  			return 0;
3447  		}
3448  		changed_ep_bitmask |= xhci_get_endpoint_flag(&eps[i]->desc);
3449  	}
3450  	return changed_ep_bitmask;
3451  }
3452  
3453  /*
3454   * The USB device drivers use this function (through the HCD interface in USB
3455   * core) to prepare a set of bulk endpoints to use streams.  Streams are used to
3456   * coordinate mass storage command queueing across multiple endpoints (basically
3457   * a stream ID == a task ID).
3458   *
3459   * Setting up streams involves allocating the same size stream context array
3460   * for each endpoint and issuing a configure endpoint command for all endpoints.
3461   *
3462   * Don't allow the call to succeed if one endpoint only supports one stream
3463   * (which means it doesn't support streams at all).
3464   *
3465   * Drivers may get less stream IDs than they asked for, if the host controller
3466   * hardware or endpoints claim they can't support the number of requested
3467   * stream IDs.
3468   */
xhci_alloc_streams(struct usb_hcd * hcd,struct usb_device * udev,struct usb_host_endpoint ** eps,unsigned int num_eps,unsigned int num_streams,gfp_t mem_flags)3469  static int xhci_alloc_streams(struct usb_hcd *hcd, struct usb_device *udev,
3470  		struct usb_host_endpoint **eps, unsigned int num_eps,
3471  		unsigned int num_streams, gfp_t mem_flags)
3472  {
3473  	int i, ret;
3474  	struct xhci_hcd *xhci;
3475  	struct xhci_virt_device *vdev;
3476  	struct xhci_command *config_cmd;
3477  	struct xhci_input_control_ctx *ctrl_ctx;
3478  	unsigned int ep_index;
3479  	unsigned int num_stream_ctxs;
3480  	unsigned int max_packet;
3481  	unsigned long flags;
3482  	u32 changed_ep_bitmask = 0;
3483  
3484  	if (!eps)
3485  		return -EINVAL;
3486  
3487  	/* Add one to the number of streams requested to account for
3488  	 * stream 0 that is reserved for xHCI usage.
3489  	 */
3490  	num_streams += 1;
3491  	xhci = hcd_to_xhci(hcd);
3492  	xhci_dbg(xhci, "Driver wants %u stream IDs (including stream 0).\n",
3493  			num_streams);
3494  
3495  	/* MaxPSASize value 0 (2 streams) means streams are not supported */
3496  	if ((xhci->quirks & XHCI_BROKEN_STREAMS) ||
3497  			HCC_MAX_PSA(xhci->hcc_params) < 4) {
3498  		xhci_dbg(xhci, "xHCI controller does not support streams.\n");
3499  		return -ENOSYS;
3500  	}
3501  
3502  	config_cmd = xhci_alloc_command_with_ctx(xhci, true, mem_flags);
3503  	if (!config_cmd)
3504  		return -ENOMEM;
3505  
3506  	ctrl_ctx = xhci_get_input_control_ctx(config_cmd->in_ctx);
3507  	if (!ctrl_ctx) {
3508  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
3509  				__func__);
3510  		xhci_free_command(xhci, config_cmd);
3511  		return -ENOMEM;
3512  	}
3513  
3514  	/* Check to make sure all endpoints are not already configured for
3515  	 * streams.  While we're at it, find the maximum number of streams that
3516  	 * all the endpoints will support and check for duplicate endpoints.
3517  	 */
3518  	spin_lock_irqsave(&xhci->lock, flags);
3519  	ret = xhci_calculate_streams_and_bitmask(xhci, udev, eps,
3520  			num_eps, &num_streams, &changed_ep_bitmask);
3521  	if (ret < 0) {
3522  		xhci_free_command(xhci, config_cmd);
3523  		spin_unlock_irqrestore(&xhci->lock, flags);
3524  		return ret;
3525  	}
3526  	if (num_streams <= 1) {
3527  		xhci_warn(xhci, "WARN: endpoints can't handle "
3528  				"more than one stream.\n");
3529  		xhci_free_command(xhci, config_cmd);
3530  		spin_unlock_irqrestore(&xhci->lock, flags);
3531  		return -EINVAL;
3532  	}
3533  	vdev = xhci->devs[udev->slot_id];
3534  	/* Mark each endpoint as being in transition, so
3535  	 * xhci_urb_enqueue() will reject all URBs.
3536  	 */
3537  	for (i = 0; i < num_eps; i++) {
3538  		ep_index = xhci_get_endpoint_index(&eps[i]->desc);
3539  		vdev->eps[ep_index].ep_state |= EP_GETTING_STREAMS;
3540  	}
3541  	spin_unlock_irqrestore(&xhci->lock, flags);
3542  
3543  	/* Setup internal data structures and allocate HW data structures for
3544  	 * streams (but don't install the HW structures in the input context
3545  	 * until we're sure all memory allocation succeeded).
3546  	 */
3547  	xhci_calculate_streams_entries(xhci, &num_streams, &num_stream_ctxs);
3548  	xhci_dbg(xhci, "Need %u stream ctx entries for %u stream IDs.\n",
3549  			num_stream_ctxs, num_streams);
3550  
3551  	for (i = 0; i < num_eps; i++) {
3552  		ep_index = xhci_get_endpoint_index(&eps[i]->desc);
3553  		max_packet = usb_endpoint_maxp(&eps[i]->desc);
3554  		vdev->eps[ep_index].stream_info = xhci_alloc_stream_info(xhci,
3555  				num_stream_ctxs,
3556  				num_streams,
3557  				max_packet, mem_flags);
3558  		if (!vdev->eps[ep_index].stream_info)
3559  			goto cleanup;
3560  		/* Set maxPstreams in endpoint context and update deq ptr to
3561  		 * point to stream context array. FIXME
3562  		 */
3563  	}
3564  
3565  	/* Set up the input context for a configure endpoint command. */
3566  	for (i = 0; i < num_eps; i++) {
3567  		struct xhci_ep_ctx *ep_ctx;
3568  
3569  		ep_index = xhci_get_endpoint_index(&eps[i]->desc);
3570  		ep_ctx = xhci_get_ep_ctx(xhci, config_cmd->in_ctx, ep_index);
3571  
3572  		xhci_endpoint_copy(xhci, config_cmd->in_ctx,
3573  				vdev->out_ctx, ep_index);
3574  		xhci_setup_streams_ep_input_ctx(xhci, ep_ctx,
3575  				vdev->eps[ep_index].stream_info);
3576  	}
3577  	/* Tell the HW to drop its old copy of the endpoint context info
3578  	 * and add the updated copy from the input context.
3579  	 */
3580  	xhci_setup_input_ctx_for_config_ep(xhci, config_cmd->in_ctx,
3581  			vdev->out_ctx, ctrl_ctx,
3582  			changed_ep_bitmask, changed_ep_bitmask);
3583  
3584  	/* Issue and wait for the configure endpoint command */
3585  	ret = xhci_configure_endpoint(xhci, udev, config_cmd,
3586  			false, false);
3587  
3588  	/* xHC rejected the configure endpoint command for some reason, so we
3589  	 * leave the old ring intact and free our internal streams data
3590  	 * structure.
3591  	 */
3592  	if (ret < 0)
3593  		goto cleanup;
3594  
3595  	spin_lock_irqsave(&xhci->lock, flags);
3596  	for (i = 0; i < num_eps; i++) {
3597  		ep_index = xhci_get_endpoint_index(&eps[i]->desc);
3598  		vdev->eps[ep_index].ep_state &= ~EP_GETTING_STREAMS;
3599  		xhci_dbg(xhci, "Slot %u ep ctx %u now has streams.\n",
3600  			 udev->slot_id, ep_index);
3601  		vdev->eps[ep_index].ep_state |= EP_HAS_STREAMS;
3602  	}
3603  	xhci_free_command(xhci, config_cmd);
3604  	spin_unlock_irqrestore(&xhci->lock, flags);
3605  
3606  	for (i = 0; i < num_eps; i++) {
3607  		ep_index = xhci_get_endpoint_index(&eps[i]->desc);
3608  		xhci_debugfs_create_stream_files(xhci, vdev, ep_index);
3609  	}
3610  	/* Subtract 1 for stream 0, which drivers can't use */
3611  	return num_streams - 1;
3612  
3613  cleanup:
3614  	/* If it didn't work, free the streams! */
3615  	for (i = 0; i < num_eps; i++) {
3616  		ep_index = xhci_get_endpoint_index(&eps[i]->desc);
3617  		xhci_free_stream_info(xhci, vdev->eps[ep_index].stream_info);
3618  		vdev->eps[ep_index].stream_info = NULL;
3619  		/* FIXME Unset maxPstreams in endpoint context and
3620  		 * update deq ptr to point to normal string ring.
3621  		 */
3622  		vdev->eps[ep_index].ep_state &= ~EP_GETTING_STREAMS;
3623  		vdev->eps[ep_index].ep_state &= ~EP_HAS_STREAMS;
3624  		xhci_endpoint_zero(xhci, vdev, eps[i]);
3625  	}
3626  	xhci_free_command(xhci, config_cmd);
3627  	return -ENOMEM;
3628  }
3629  
3630  /* Transition the endpoint from using streams to being a "normal" endpoint
3631   * without streams.
3632   *
3633   * Modify the endpoint context state, submit a configure endpoint command,
3634   * and free all endpoint rings for streams if that completes successfully.
3635   */
xhci_free_streams(struct usb_hcd * hcd,struct usb_device * udev,struct usb_host_endpoint ** eps,unsigned int num_eps,gfp_t mem_flags)3636  static int xhci_free_streams(struct usb_hcd *hcd, struct usb_device *udev,
3637  		struct usb_host_endpoint **eps, unsigned int num_eps,
3638  		gfp_t mem_flags)
3639  {
3640  	int i, ret;
3641  	struct xhci_hcd *xhci;
3642  	struct xhci_virt_device *vdev;
3643  	struct xhci_command *command;
3644  	struct xhci_input_control_ctx *ctrl_ctx;
3645  	unsigned int ep_index;
3646  	unsigned long flags;
3647  	u32 changed_ep_bitmask;
3648  
3649  	xhci = hcd_to_xhci(hcd);
3650  	vdev = xhci->devs[udev->slot_id];
3651  
3652  	/* Set up a configure endpoint command to remove the streams rings */
3653  	spin_lock_irqsave(&xhci->lock, flags);
3654  	changed_ep_bitmask = xhci_calculate_no_streams_bitmask(xhci,
3655  			udev, eps, num_eps);
3656  	if (changed_ep_bitmask == 0) {
3657  		spin_unlock_irqrestore(&xhci->lock, flags);
3658  		return -EINVAL;
3659  	}
3660  
3661  	/* Use the xhci_command structure from the first endpoint.  We may have
3662  	 * allocated too many, but the driver may call xhci_free_streams() for
3663  	 * each endpoint it grouped into one call to xhci_alloc_streams().
3664  	 */
3665  	ep_index = xhci_get_endpoint_index(&eps[0]->desc);
3666  	command = vdev->eps[ep_index].stream_info->free_streams_command;
3667  	ctrl_ctx = xhci_get_input_control_ctx(command->in_ctx);
3668  	if (!ctrl_ctx) {
3669  		spin_unlock_irqrestore(&xhci->lock, flags);
3670  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
3671  				__func__);
3672  		return -EINVAL;
3673  	}
3674  
3675  	for (i = 0; i < num_eps; i++) {
3676  		struct xhci_ep_ctx *ep_ctx;
3677  
3678  		ep_index = xhci_get_endpoint_index(&eps[i]->desc);
3679  		ep_ctx = xhci_get_ep_ctx(xhci, command->in_ctx, ep_index);
3680  		xhci->devs[udev->slot_id]->eps[ep_index].ep_state |=
3681  			EP_GETTING_NO_STREAMS;
3682  
3683  		xhci_endpoint_copy(xhci, command->in_ctx,
3684  				vdev->out_ctx, ep_index);
3685  		xhci_setup_no_streams_ep_input_ctx(ep_ctx,
3686  				&vdev->eps[ep_index]);
3687  	}
3688  	xhci_setup_input_ctx_for_config_ep(xhci, command->in_ctx,
3689  			vdev->out_ctx, ctrl_ctx,
3690  			changed_ep_bitmask, changed_ep_bitmask);
3691  	spin_unlock_irqrestore(&xhci->lock, flags);
3692  
3693  	/* Issue and wait for the configure endpoint command,
3694  	 * which must succeed.
3695  	 */
3696  	ret = xhci_configure_endpoint(xhci, udev, command,
3697  			false, true);
3698  
3699  	/* xHC rejected the configure endpoint command for some reason, so we
3700  	 * leave the streams rings intact.
3701  	 */
3702  	if (ret < 0)
3703  		return ret;
3704  
3705  	spin_lock_irqsave(&xhci->lock, flags);
3706  	for (i = 0; i < num_eps; i++) {
3707  		ep_index = xhci_get_endpoint_index(&eps[i]->desc);
3708  		xhci_free_stream_info(xhci, vdev->eps[ep_index].stream_info);
3709  		vdev->eps[ep_index].stream_info = NULL;
3710  		/* FIXME Unset maxPstreams in endpoint context and
3711  		 * update deq ptr to point to normal string ring.
3712  		 */
3713  		vdev->eps[ep_index].ep_state &= ~EP_GETTING_NO_STREAMS;
3714  		vdev->eps[ep_index].ep_state &= ~EP_HAS_STREAMS;
3715  	}
3716  	spin_unlock_irqrestore(&xhci->lock, flags);
3717  
3718  	return 0;
3719  }
3720  
3721  /*
3722   * Deletes endpoint resources for endpoints that were active before a Reset
3723   * Device command, or a Disable Slot command.  The Reset Device command leaves
3724   * the control endpoint intact, whereas the Disable Slot command deletes it.
3725   *
3726   * Must be called with xhci->lock held.
3727   */
xhci_free_device_endpoint_resources(struct xhci_hcd * xhci,struct xhci_virt_device * virt_dev,bool drop_control_ep)3728  void xhci_free_device_endpoint_resources(struct xhci_hcd *xhci,
3729  	struct xhci_virt_device *virt_dev, bool drop_control_ep)
3730  {
3731  	int i;
3732  	unsigned int num_dropped_eps = 0;
3733  	unsigned int drop_flags = 0;
3734  
3735  	for (i = (drop_control_ep ? 0 : 1); i < 31; i++) {
3736  		if (virt_dev->eps[i].ring) {
3737  			drop_flags |= 1 << i;
3738  			num_dropped_eps++;
3739  		}
3740  	}
3741  	xhci->num_active_eps -= num_dropped_eps;
3742  	if (num_dropped_eps)
3743  		xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
3744  				"Dropped %u ep ctxs, flags = 0x%x, "
3745  				"%u now active.",
3746  				num_dropped_eps, drop_flags,
3747  				xhci->num_active_eps);
3748  }
3749  
3750  static void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev);
3751  
3752  /*
3753   * This submits a Reset Device Command, which will set the device state to 0,
3754   * set the device address to 0, and disable all the endpoints except the default
3755   * control endpoint.  The USB core should come back and call
3756   * xhci_address_device(), and then re-set up the configuration.  If this is
3757   * called because of a usb_reset_and_verify_device(), then the old alternate
3758   * settings will be re-installed through the normal bandwidth allocation
3759   * functions.
3760   *
3761   * Wait for the Reset Device command to finish.  Remove all structures
3762   * associated with the endpoints that were disabled.  Clear the input device
3763   * structure? Reset the control endpoint 0 max packet size?
3764   *
3765   * If the virt_dev to be reset does not exist or does not match the udev,
3766   * it means the device is lost, possibly due to the xHC restore error and
3767   * re-initialization during S3/S4. In this case, call xhci_alloc_dev() to
3768   * re-allocate the device.
3769   */
xhci_discover_or_reset_device(struct usb_hcd * hcd,struct usb_device * udev)3770  static int xhci_discover_or_reset_device(struct usb_hcd *hcd,
3771  		struct usb_device *udev)
3772  {
3773  	int ret, i;
3774  	unsigned long flags;
3775  	struct xhci_hcd *xhci;
3776  	unsigned int slot_id;
3777  	struct xhci_virt_device *virt_dev;
3778  	struct xhci_command *reset_device_cmd;
3779  	struct xhci_slot_ctx *slot_ctx;
3780  	int old_active_eps = 0;
3781  
3782  	ret = xhci_check_args(hcd, udev, NULL, 0, false, __func__);
3783  	if (ret <= 0)
3784  		return ret;
3785  	xhci = hcd_to_xhci(hcd);
3786  	slot_id = udev->slot_id;
3787  	virt_dev = xhci->devs[slot_id];
3788  	if (!virt_dev) {
3789  		xhci_dbg(xhci, "The device to be reset with slot ID %u does "
3790  				"not exist. Re-allocate the device\n", slot_id);
3791  		ret = xhci_alloc_dev(hcd, udev);
3792  		if (ret == 1)
3793  			return 0;
3794  		else
3795  			return -EINVAL;
3796  	}
3797  
3798  	if (virt_dev->tt_info)
3799  		old_active_eps = virt_dev->tt_info->active_eps;
3800  
3801  	if (virt_dev->udev != udev) {
3802  		/* If the virt_dev and the udev does not match, this virt_dev
3803  		 * may belong to another udev.
3804  		 * Re-allocate the device.
3805  		 */
3806  		xhci_dbg(xhci, "The device to be reset with slot ID %u does "
3807  				"not match the udev. Re-allocate the device\n",
3808  				slot_id);
3809  		ret = xhci_alloc_dev(hcd, udev);
3810  		if (ret == 1)
3811  			return 0;
3812  		else
3813  			return -EINVAL;
3814  	}
3815  
3816  	/* If device is not setup, there is no point in resetting it */
3817  	slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->out_ctx);
3818  	if (GET_SLOT_STATE(le32_to_cpu(slot_ctx->dev_state)) ==
3819  						SLOT_STATE_DISABLED)
3820  		return 0;
3821  
3822  	if (xhci->quirks & XHCI_ETRON_HOST) {
3823  		/*
3824  		 * Obtaining a new device slot to inform the xHCI host that
3825  		 * the USB device has been reset.
3826  		 */
3827  		ret = xhci_disable_slot(xhci, udev->slot_id);
3828  		xhci_free_virt_device(xhci, udev->slot_id);
3829  		if (!ret) {
3830  			ret = xhci_alloc_dev(hcd, udev);
3831  			if (ret == 1)
3832  				ret = 0;
3833  			else
3834  				ret = -EINVAL;
3835  		}
3836  		return ret;
3837  	}
3838  
3839  	trace_xhci_discover_or_reset_device(slot_ctx);
3840  
3841  	xhci_dbg(xhci, "Resetting device with slot ID %u\n", slot_id);
3842  	/* Allocate the command structure that holds the struct completion.
3843  	 * Assume we're in process context, since the normal device reset
3844  	 * process has to wait for the device anyway.  Storage devices are
3845  	 * reset as part of error handling, so use GFP_NOIO instead of
3846  	 * GFP_KERNEL.
3847  	 */
3848  	reset_device_cmd = xhci_alloc_command(xhci, true, GFP_NOIO);
3849  	if (!reset_device_cmd) {
3850  		xhci_dbg(xhci, "Couldn't allocate command structure.\n");
3851  		return -ENOMEM;
3852  	}
3853  
3854  	/* Attempt to submit the Reset Device command to the command ring */
3855  	spin_lock_irqsave(&xhci->lock, flags);
3856  
3857  	ret = xhci_queue_reset_device(xhci, reset_device_cmd, slot_id);
3858  	if (ret) {
3859  		xhci_dbg(xhci, "FIXME: allocate a command ring segment\n");
3860  		spin_unlock_irqrestore(&xhci->lock, flags);
3861  		goto command_cleanup;
3862  	}
3863  	xhci_ring_cmd_db(xhci);
3864  	spin_unlock_irqrestore(&xhci->lock, flags);
3865  
3866  	/* Wait for the Reset Device command to finish */
3867  	wait_for_completion(reset_device_cmd->completion);
3868  
3869  	/* The Reset Device command can't fail, according to the 0.95/0.96 spec,
3870  	 * unless we tried to reset a slot ID that wasn't enabled,
3871  	 * or the device wasn't in the addressed or configured state.
3872  	 */
3873  	ret = reset_device_cmd->status;
3874  	switch (ret) {
3875  	case COMP_COMMAND_ABORTED:
3876  	case COMP_COMMAND_RING_STOPPED:
3877  		xhci_warn(xhci, "Timeout waiting for reset device command\n");
3878  		ret = -ETIME;
3879  		goto command_cleanup;
3880  	case COMP_SLOT_NOT_ENABLED_ERROR: /* 0.95 completion for bad slot ID */
3881  	case COMP_CONTEXT_STATE_ERROR: /* 0.96 completion code for same thing */
3882  		xhci_dbg(xhci, "Can't reset device (slot ID %u) in %s state\n",
3883  				slot_id,
3884  				xhci_get_slot_state(xhci, virt_dev->out_ctx));
3885  		xhci_dbg(xhci, "Not freeing device rings.\n");
3886  		/* Don't treat this as an error.  May change my mind later. */
3887  		ret = 0;
3888  		goto command_cleanup;
3889  	case COMP_SUCCESS:
3890  		xhci_dbg(xhci, "Successful reset device command.\n");
3891  		break;
3892  	default:
3893  		if (xhci_is_vendor_info_code(xhci, ret))
3894  			break;
3895  		xhci_warn(xhci, "Unknown completion code %u for "
3896  				"reset device command.\n", ret);
3897  		ret = -EINVAL;
3898  		goto command_cleanup;
3899  	}
3900  
3901  	/* Free up host controller endpoint resources */
3902  	if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK)) {
3903  		spin_lock_irqsave(&xhci->lock, flags);
3904  		/* Don't delete the default control endpoint resources */
3905  		xhci_free_device_endpoint_resources(xhci, virt_dev, false);
3906  		spin_unlock_irqrestore(&xhci->lock, flags);
3907  	}
3908  
3909  	/* Everything but endpoint 0 is disabled, so free the rings. */
3910  	for (i = 1; i < 31; i++) {
3911  		struct xhci_virt_ep *ep = &virt_dev->eps[i];
3912  
3913  		if (ep->ep_state & EP_HAS_STREAMS) {
3914  			xhci_warn(xhci, "WARN: endpoint 0x%02x has streams on device reset, freeing streams.\n",
3915  					xhci_get_endpoint_address(i));
3916  			xhci_free_stream_info(xhci, ep->stream_info);
3917  			ep->stream_info = NULL;
3918  			ep->ep_state &= ~EP_HAS_STREAMS;
3919  		}
3920  
3921  		if (ep->ring) {
3922  			xhci_debugfs_remove_endpoint(xhci, virt_dev, i);
3923  			xhci_free_endpoint_ring(xhci, virt_dev, i);
3924  		}
3925  		if (!list_empty(&virt_dev->eps[i].bw_endpoint_list))
3926  			xhci_drop_ep_from_interval_table(xhci,
3927  					&virt_dev->eps[i].bw_info,
3928  					virt_dev->bw_table,
3929  					udev,
3930  					&virt_dev->eps[i],
3931  					virt_dev->tt_info);
3932  		xhci_clear_endpoint_bw_info(&virt_dev->eps[i].bw_info);
3933  	}
3934  	/* If necessary, update the number of active TTs on this root port */
3935  	xhci_update_tt_active_eps(xhci, virt_dev, old_active_eps);
3936  	virt_dev->flags = 0;
3937  	ret = 0;
3938  
3939  command_cleanup:
3940  	xhci_free_command(xhci, reset_device_cmd);
3941  	return ret;
3942  }
3943  
3944  /*
3945   * At this point, the struct usb_device is about to go away, the device has
3946   * disconnected, and all traffic has been stopped and the endpoints have been
3947   * disabled.  Free any HC data structures associated with that device.
3948   */
xhci_free_dev(struct usb_hcd * hcd,struct usb_device * udev)3949  static void xhci_free_dev(struct usb_hcd *hcd, struct usb_device *udev)
3950  {
3951  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
3952  	struct xhci_virt_device *virt_dev;
3953  	struct xhci_slot_ctx *slot_ctx;
3954  	unsigned long flags;
3955  	int i, ret;
3956  
3957  	/*
3958  	 * We called pm_runtime_get_noresume when the device was attached.
3959  	 * Decrement the counter here to allow controller to runtime suspend
3960  	 * if no devices remain.
3961  	 */
3962  	if (xhci->quirks & XHCI_RESET_ON_RESUME)
3963  		pm_runtime_put_noidle(hcd->self.controller);
3964  
3965  	ret = xhci_check_args(hcd, udev, NULL, 0, true, __func__);
3966  	/* If the host is halted due to driver unload, we still need to free the
3967  	 * device.
3968  	 */
3969  	if (ret <= 0 && ret != -ENODEV)
3970  		return;
3971  
3972  	virt_dev = xhci->devs[udev->slot_id];
3973  	slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->out_ctx);
3974  	trace_xhci_free_dev(slot_ctx);
3975  
3976  	/* Stop any wayward timer functions (which may grab the lock) */
3977  	for (i = 0; i < 31; i++)
3978  		virt_dev->eps[i].ep_state &= ~EP_STOP_CMD_PENDING;
3979  	virt_dev->udev = NULL;
3980  	xhci_disable_slot(xhci, udev->slot_id);
3981  
3982  	spin_lock_irqsave(&xhci->lock, flags);
3983  	xhci_free_virt_device(xhci, udev->slot_id);
3984  	spin_unlock_irqrestore(&xhci->lock, flags);
3985  
3986  }
3987  
xhci_disable_slot(struct xhci_hcd * xhci,u32 slot_id)3988  int xhci_disable_slot(struct xhci_hcd *xhci, u32 slot_id)
3989  {
3990  	struct xhci_command *command;
3991  	unsigned long flags;
3992  	u32 state;
3993  	int ret;
3994  
3995  	command = xhci_alloc_command(xhci, true, GFP_KERNEL);
3996  	if (!command)
3997  		return -ENOMEM;
3998  
3999  	xhci_debugfs_remove_slot(xhci, slot_id);
4000  
4001  	spin_lock_irqsave(&xhci->lock, flags);
4002  	/* Don't disable the slot if the host controller is dead. */
4003  	state = readl(&xhci->op_regs->status);
4004  	if (state == 0xffffffff || (xhci->xhc_state & XHCI_STATE_DYING) ||
4005  			(xhci->xhc_state & XHCI_STATE_HALTED)) {
4006  		spin_unlock_irqrestore(&xhci->lock, flags);
4007  		kfree(command);
4008  		return -ENODEV;
4009  	}
4010  
4011  	ret = xhci_queue_slot_control(xhci, command, TRB_DISABLE_SLOT,
4012  				slot_id);
4013  	if (ret) {
4014  		spin_unlock_irqrestore(&xhci->lock, flags);
4015  		kfree(command);
4016  		return ret;
4017  	}
4018  	xhci_ring_cmd_db(xhci);
4019  	spin_unlock_irqrestore(&xhci->lock, flags);
4020  
4021  	wait_for_completion(command->completion);
4022  
4023  	if (command->status != COMP_SUCCESS)
4024  		xhci_warn(xhci, "Unsuccessful disable slot %u command, status %d\n",
4025  			  slot_id, command->status);
4026  
4027  	xhci_free_command(xhci, command);
4028  
4029  	return 0;
4030  }
4031  
4032  /*
4033   * Checks if we have enough host controller resources for the default control
4034   * endpoint.
4035   *
4036   * Must be called with xhci->lock held.
4037   */
xhci_reserve_host_control_ep_resources(struct xhci_hcd * xhci)4038  static int xhci_reserve_host_control_ep_resources(struct xhci_hcd *xhci)
4039  {
4040  	if (xhci->num_active_eps + 1 > xhci->limit_active_eps) {
4041  		xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
4042  				"Not enough ep ctxs: "
4043  				"%u active, need to add 1, limit is %u.",
4044  				xhci->num_active_eps, xhci->limit_active_eps);
4045  		return -ENOMEM;
4046  	}
4047  	xhci->num_active_eps += 1;
4048  	xhci_dbg_trace(xhci, trace_xhci_dbg_quirks,
4049  			"Adding 1 ep ctx, %u now active.",
4050  			xhci->num_active_eps);
4051  	return 0;
4052  }
4053  
4054  
4055  /*
4056   * Returns 0 if the xHC ran out of device slots, the Enable Slot command
4057   * timed out, or allocating memory failed.  Returns 1 on success.
4058   */
xhci_alloc_dev(struct usb_hcd * hcd,struct usb_device * udev)4059  int xhci_alloc_dev(struct usb_hcd *hcd, struct usb_device *udev)
4060  {
4061  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
4062  	struct xhci_virt_device *vdev;
4063  	struct xhci_slot_ctx *slot_ctx;
4064  	unsigned long flags;
4065  	int ret, slot_id;
4066  	struct xhci_command *command;
4067  
4068  	command = xhci_alloc_command(xhci, true, GFP_KERNEL);
4069  	if (!command)
4070  		return 0;
4071  
4072  	spin_lock_irqsave(&xhci->lock, flags);
4073  	ret = xhci_queue_slot_control(xhci, command, TRB_ENABLE_SLOT, 0);
4074  	if (ret) {
4075  		spin_unlock_irqrestore(&xhci->lock, flags);
4076  		xhci_dbg(xhci, "FIXME: allocate a command ring segment\n");
4077  		xhci_free_command(xhci, command);
4078  		return 0;
4079  	}
4080  	xhci_ring_cmd_db(xhci);
4081  	spin_unlock_irqrestore(&xhci->lock, flags);
4082  
4083  	wait_for_completion(command->completion);
4084  	slot_id = command->slot_id;
4085  
4086  	if (!slot_id || command->status != COMP_SUCCESS) {
4087  		xhci_err(xhci, "Error while assigning device slot ID: %s\n",
4088  			 xhci_trb_comp_code_string(command->status));
4089  		xhci_err(xhci, "Max number of devices this xHCI host supports is %u.\n",
4090  				HCS_MAX_SLOTS(
4091  					readl(&xhci->cap_regs->hcs_params1)));
4092  		xhci_free_command(xhci, command);
4093  		return 0;
4094  	}
4095  
4096  	xhci_free_command(xhci, command);
4097  
4098  	if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK)) {
4099  		spin_lock_irqsave(&xhci->lock, flags);
4100  		ret = xhci_reserve_host_control_ep_resources(xhci);
4101  		if (ret) {
4102  			spin_unlock_irqrestore(&xhci->lock, flags);
4103  			xhci_warn(xhci, "Not enough host resources, "
4104  					"active endpoint contexts = %u\n",
4105  					xhci->num_active_eps);
4106  			goto disable_slot;
4107  		}
4108  		spin_unlock_irqrestore(&xhci->lock, flags);
4109  	}
4110  	/* Use GFP_NOIO, since this function can be called from
4111  	 * xhci_discover_or_reset_device(), which may be called as part of
4112  	 * mass storage driver error handling.
4113  	 */
4114  	if (!xhci_alloc_virt_device(xhci, slot_id, udev, GFP_NOIO)) {
4115  		xhci_warn(xhci, "Could not allocate xHCI USB device data structures\n");
4116  		goto disable_slot;
4117  	}
4118  	vdev = xhci->devs[slot_id];
4119  	slot_ctx = xhci_get_slot_ctx(xhci, vdev->out_ctx);
4120  	trace_xhci_alloc_dev(slot_ctx);
4121  
4122  	udev->slot_id = slot_id;
4123  
4124  	xhci_debugfs_create_slot(xhci, slot_id);
4125  
4126  	/*
4127  	 * If resetting upon resume, we can't put the controller into runtime
4128  	 * suspend if there is a device attached.
4129  	 */
4130  	if (xhci->quirks & XHCI_RESET_ON_RESUME)
4131  		pm_runtime_get_noresume(hcd->self.controller);
4132  
4133  	/* Is this a LS or FS device under a HS hub? */
4134  	/* Hub or peripherial? */
4135  	return 1;
4136  
4137  disable_slot:
4138  	xhci_disable_slot(xhci, udev->slot_id);
4139  	xhci_free_virt_device(xhci, udev->slot_id);
4140  
4141  	return 0;
4142  }
4143  
4144  /**
4145   * xhci_setup_device - issues an Address Device command to assign a unique
4146   *			USB bus address.
4147   * @hcd: USB host controller data structure.
4148   * @udev: USB dev structure representing the connected device.
4149   * @setup: Enum specifying setup mode: address only or with context.
4150   * @timeout_ms: Max wait time (ms) for the command operation to complete.
4151   *
4152   * Return: 0 if successful; otherwise, negative error code.
4153   */
xhci_setup_device(struct usb_hcd * hcd,struct usb_device * udev,enum xhci_setup_dev setup,unsigned int timeout_ms)4154  static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev,
4155  			     enum xhci_setup_dev setup, unsigned int timeout_ms)
4156  {
4157  	const char *act = setup == SETUP_CONTEXT_ONLY ? "context" : "address";
4158  	unsigned long flags;
4159  	struct xhci_virt_device *virt_dev;
4160  	int ret = 0;
4161  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
4162  	struct xhci_slot_ctx *slot_ctx;
4163  	struct xhci_input_control_ctx *ctrl_ctx;
4164  	u64 temp_64;
4165  	struct xhci_command *command = NULL;
4166  
4167  	mutex_lock(&xhci->mutex);
4168  
4169  	if (xhci->xhc_state) {	/* dying, removing or halted */
4170  		ret = -ESHUTDOWN;
4171  		goto out;
4172  	}
4173  
4174  	if (!udev->slot_id) {
4175  		xhci_dbg_trace(xhci, trace_xhci_dbg_address,
4176  				"Bad Slot ID %d", udev->slot_id);
4177  		ret = -EINVAL;
4178  		goto out;
4179  	}
4180  
4181  	virt_dev = xhci->devs[udev->slot_id];
4182  
4183  	if (WARN_ON(!virt_dev)) {
4184  		/*
4185  		 * In plug/unplug torture test with an NEC controller,
4186  		 * a zero-dereference was observed once due to virt_dev = 0.
4187  		 * Print useful debug rather than crash if it is observed again!
4188  		 */
4189  		xhci_warn(xhci, "Virt dev invalid for slot_id 0x%x!\n",
4190  			udev->slot_id);
4191  		ret = -EINVAL;
4192  		goto out;
4193  	}
4194  	slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->out_ctx);
4195  	trace_xhci_setup_device_slot(slot_ctx);
4196  
4197  	if (setup == SETUP_CONTEXT_ONLY) {
4198  		if (GET_SLOT_STATE(le32_to_cpu(slot_ctx->dev_state)) ==
4199  		    SLOT_STATE_DEFAULT) {
4200  			xhci_dbg(xhci, "Slot already in default state\n");
4201  			goto out;
4202  		}
4203  	}
4204  
4205  	command = xhci_alloc_command(xhci, true, GFP_KERNEL);
4206  	if (!command) {
4207  		ret = -ENOMEM;
4208  		goto out;
4209  	}
4210  
4211  	command->in_ctx = virt_dev->in_ctx;
4212  	command->timeout_ms = timeout_ms;
4213  
4214  	slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->in_ctx);
4215  	ctrl_ctx = xhci_get_input_control_ctx(virt_dev->in_ctx);
4216  	if (!ctrl_ctx) {
4217  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
4218  				__func__);
4219  		ret = -EINVAL;
4220  		goto out;
4221  	}
4222  	/*
4223  	 * If this is the first Set Address since device plug-in or
4224  	 * virt_device realloaction after a resume with an xHCI power loss,
4225  	 * then set up the slot context.
4226  	 */
4227  	if (!slot_ctx->dev_info)
4228  		xhci_setup_addressable_virt_dev(xhci, udev);
4229  	/* Otherwise, update the control endpoint ring enqueue pointer. */
4230  	else
4231  		xhci_copy_ep0_dequeue_into_input_ctx(xhci, udev);
4232  	ctrl_ctx->add_flags = cpu_to_le32(SLOT_FLAG | EP0_FLAG);
4233  	ctrl_ctx->drop_flags = 0;
4234  
4235  	trace_xhci_address_ctx(xhci, virt_dev->in_ctx,
4236  				le32_to_cpu(slot_ctx->dev_info) >> 27);
4237  
4238  	trace_xhci_address_ctrl_ctx(ctrl_ctx);
4239  	spin_lock_irqsave(&xhci->lock, flags);
4240  	trace_xhci_setup_device(virt_dev);
4241  	ret = xhci_queue_address_device(xhci, command, virt_dev->in_ctx->dma,
4242  					udev->slot_id, setup);
4243  	if (ret) {
4244  		spin_unlock_irqrestore(&xhci->lock, flags);
4245  		xhci_dbg_trace(xhci, trace_xhci_dbg_address,
4246  				"FIXME: allocate a command ring segment");
4247  		goto out;
4248  	}
4249  	xhci_ring_cmd_db(xhci);
4250  	spin_unlock_irqrestore(&xhci->lock, flags);
4251  
4252  	/* ctrl tx can take up to 5 sec; XXX: need more time for xHC? */
4253  	wait_for_completion(command->completion);
4254  
4255  	/* FIXME: From section 4.3.4: "Software shall be responsible for timing
4256  	 * the SetAddress() "recovery interval" required by USB and aborting the
4257  	 * command on a timeout.
4258  	 */
4259  	switch (command->status) {
4260  	case COMP_COMMAND_ABORTED:
4261  	case COMP_COMMAND_RING_STOPPED:
4262  		xhci_warn(xhci, "Timeout while waiting for setup device command\n");
4263  		ret = -ETIME;
4264  		break;
4265  	case COMP_CONTEXT_STATE_ERROR:
4266  	case COMP_SLOT_NOT_ENABLED_ERROR:
4267  		xhci_err(xhci, "Setup ERROR: setup %s command for slot %d.\n",
4268  			 act, udev->slot_id);
4269  		ret = -EINVAL;
4270  		break;
4271  	case COMP_USB_TRANSACTION_ERROR:
4272  		dev_warn(&udev->dev, "Device not responding to setup %s.\n", act);
4273  
4274  		mutex_unlock(&xhci->mutex);
4275  		ret = xhci_disable_slot(xhci, udev->slot_id);
4276  		xhci_free_virt_device(xhci, udev->slot_id);
4277  		if (!ret) {
4278  			if (xhci_alloc_dev(hcd, udev) == 1)
4279  				xhci_setup_addressable_virt_dev(xhci, udev);
4280  		}
4281  		kfree(command->completion);
4282  		kfree(command);
4283  		return -EPROTO;
4284  	case COMP_INCOMPATIBLE_DEVICE_ERROR:
4285  		dev_warn(&udev->dev,
4286  			 "ERROR: Incompatible device for setup %s command\n", act);
4287  		ret = -ENODEV;
4288  		break;
4289  	case COMP_SUCCESS:
4290  		xhci_dbg_trace(xhci, trace_xhci_dbg_address,
4291  			       "Successful setup %s command", act);
4292  		break;
4293  	default:
4294  		xhci_err(xhci,
4295  			 "ERROR: unexpected setup %s command completion code 0x%x.\n",
4296  			 act, command->status);
4297  		trace_xhci_address_ctx(xhci, virt_dev->out_ctx, 1);
4298  		ret = -EINVAL;
4299  		break;
4300  	}
4301  	if (ret)
4302  		goto out;
4303  	temp_64 = xhci_read_64(xhci, &xhci->op_regs->dcbaa_ptr);
4304  	xhci_dbg_trace(xhci, trace_xhci_dbg_address,
4305  			"Op regs DCBAA ptr = %#016llx", temp_64);
4306  	xhci_dbg_trace(xhci, trace_xhci_dbg_address,
4307  		"Slot ID %d dcbaa entry @%p = %#016llx",
4308  		udev->slot_id,
4309  		&xhci->dcbaa->dev_context_ptrs[udev->slot_id],
4310  		(unsigned long long)
4311  		le64_to_cpu(xhci->dcbaa->dev_context_ptrs[udev->slot_id]));
4312  	xhci_dbg_trace(xhci, trace_xhci_dbg_address,
4313  			"Output Context DMA address = %#08llx",
4314  			(unsigned long long)virt_dev->out_ctx->dma);
4315  	trace_xhci_address_ctx(xhci, virt_dev->in_ctx,
4316  				le32_to_cpu(slot_ctx->dev_info) >> 27);
4317  	/*
4318  	 * USB core uses address 1 for the roothubs, so we add one to the
4319  	 * address given back to us by the HC.
4320  	 */
4321  	trace_xhci_address_ctx(xhci, virt_dev->out_ctx,
4322  				le32_to_cpu(slot_ctx->dev_info) >> 27);
4323  	/* Zero the input context control for later use */
4324  	ctrl_ctx->add_flags = 0;
4325  	ctrl_ctx->drop_flags = 0;
4326  	slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->out_ctx);
4327  	udev->devaddr = (u8)(le32_to_cpu(slot_ctx->dev_state) & DEV_ADDR_MASK);
4328  
4329  	xhci_dbg_trace(xhci, trace_xhci_dbg_address,
4330  		       "Internal device address = %d",
4331  		       le32_to_cpu(slot_ctx->dev_state) & DEV_ADDR_MASK);
4332  out:
4333  	mutex_unlock(&xhci->mutex);
4334  	if (command) {
4335  		kfree(command->completion);
4336  		kfree(command);
4337  	}
4338  	return ret;
4339  }
4340  
xhci_address_device(struct usb_hcd * hcd,struct usb_device * udev,unsigned int timeout_ms)4341  static int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev,
4342  			       unsigned int timeout_ms)
4343  {
4344  	return xhci_setup_device(hcd, udev, SETUP_CONTEXT_ADDRESS, timeout_ms);
4345  }
4346  
xhci_enable_device(struct usb_hcd * hcd,struct usb_device * udev)4347  static int xhci_enable_device(struct usb_hcd *hcd, struct usb_device *udev)
4348  {
4349  	return xhci_setup_device(hcd, udev, SETUP_CONTEXT_ONLY,
4350  				 XHCI_CMD_DEFAULT_TIMEOUT);
4351  }
4352  
4353  /*
4354   * Transfer the port index into real index in the HW port status
4355   * registers. Caculate offset between the port's PORTSC register
4356   * and port status base. Divide the number of per port register
4357   * to get the real index. The raw port number bases 1.
4358   */
xhci_find_raw_port_number(struct usb_hcd * hcd,int port1)4359  int xhci_find_raw_port_number(struct usb_hcd *hcd, int port1)
4360  {
4361  	struct xhci_hub *rhub;
4362  
4363  	rhub = xhci_get_rhub(hcd);
4364  	return rhub->ports[port1 - 1]->hw_portnum + 1;
4365  }
4366  
4367  /*
4368   * Issue an Evaluate Context command to change the Maximum Exit Latency in the
4369   * slot context.  If that succeeds, store the new MEL in the xhci_virt_device.
4370   */
xhci_change_max_exit_latency(struct xhci_hcd * xhci,struct usb_device * udev,u16 max_exit_latency)4371  static int __maybe_unused xhci_change_max_exit_latency(struct xhci_hcd *xhci,
4372  			struct usb_device *udev, u16 max_exit_latency)
4373  {
4374  	struct xhci_virt_device *virt_dev;
4375  	struct xhci_command *command;
4376  	struct xhci_input_control_ctx *ctrl_ctx;
4377  	struct xhci_slot_ctx *slot_ctx;
4378  	unsigned long flags;
4379  	int ret;
4380  
4381  	command = xhci_alloc_command_with_ctx(xhci, true, GFP_KERNEL);
4382  	if (!command)
4383  		return -ENOMEM;
4384  
4385  	spin_lock_irqsave(&xhci->lock, flags);
4386  
4387  	virt_dev = xhci->devs[udev->slot_id];
4388  
4389  	/*
4390  	 * virt_dev might not exists yet if xHC resumed from hibernate (S4) and
4391  	 * xHC was re-initialized. Exit latency will be set later after
4392  	 * hub_port_finish_reset() is done and xhci->devs[] are re-allocated
4393  	 */
4394  
4395  	if (!virt_dev || max_exit_latency == virt_dev->current_mel) {
4396  		spin_unlock_irqrestore(&xhci->lock, flags);
4397  		xhci_free_command(xhci, command);
4398  		return 0;
4399  	}
4400  
4401  	/* Attempt to issue an Evaluate Context command to change the MEL. */
4402  	ctrl_ctx = xhci_get_input_control_ctx(command->in_ctx);
4403  	if (!ctrl_ctx) {
4404  		spin_unlock_irqrestore(&xhci->lock, flags);
4405  		xhci_free_command(xhci, command);
4406  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
4407  				__func__);
4408  		return -ENOMEM;
4409  	}
4410  
4411  	xhci_slot_copy(xhci, command->in_ctx, virt_dev->out_ctx);
4412  	spin_unlock_irqrestore(&xhci->lock, flags);
4413  
4414  	ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
4415  	slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
4416  	slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
4417  	slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
4418  	slot_ctx->dev_state = 0;
4419  
4420  	xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
4421  			"Set up evaluate context for LPM MEL change.");
4422  
4423  	/* Issue and wait for the evaluate context command. */
4424  	ret = xhci_configure_endpoint(xhci, udev, command,
4425  			true, true);
4426  
4427  	if (!ret) {
4428  		spin_lock_irqsave(&xhci->lock, flags);
4429  		virt_dev->current_mel = max_exit_latency;
4430  		spin_unlock_irqrestore(&xhci->lock, flags);
4431  	}
4432  
4433  	xhci_free_command(xhci, command);
4434  
4435  	return ret;
4436  }
4437  
4438  #ifdef CONFIG_PM
4439  
4440  /* BESL to HIRD Encoding array for USB2 LPM */
4441  static int xhci_besl_encoding[16] = {125, 150, 200, 300, 400, 500, 1000, 2000,
4442  	3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000};
4443  
4444  /* Calculate HIRD/BESL for USB2 PORTPMSC*/
xhci_calculate_hird_besl(struct xhci_hcd * xhci,struct usb_device * udev)4445  static int xhci_calculate_hird_besl(struct xhci_hcd *xhci,
4446  					struct usb_device *udev)
4447  {
4448  	int u2del, besl, besl_host;
4449  	int besl_device = 0;
4450  	u32 field;
4451  
4452  	u2del = HCS_U2_LATENCY(xhci->hcs_params3);
4453  	field = le32_to_cpu(udev->bos->ext_cap->bmAttributes);
4454  
4455  	if (field & USB_BESL_SUPPORT) {
4456  		for (besl_host = 0; besl_host < 16; besl_host++) {
4457  			if (xhci_besl_encoding[besl_host] >= u2del)
4458  				break;
4459  		}
4460  		/* Use baseline BESL value as default */
4461  		if (field & USB_BESL_BASELINE_VALID)
4462  			besl_device = USB_GET_BESL_BASELINE(field);
4463  		else if (field & USB_BESL_DEEP_VALID)
4464  			besl_device = USB_GET_BESL_DEEP(field);
4465  	} else {
4466  		if (u2del <= 50)
4467  			besl_host = 0;
4468  		else
4469  			besl_host = (u2del - 51) / 75 + 1;
4470  	}
4471  
4472  	besl = besl_host + besl_device;
4473  	if (besl > 15)
4474  		besl = 15;
4475  
4476  	return besl;
4477  }
4478  
4479  /* Calculate BESLD, L1 timeout and HIRDM for USB2 PORTHLPMC */
xhci_calculate_usb2_hw_lpm_params(struct usb_device * udev)4480  static int xhci_calculate_usb2_hw_lpm_params(struct usb_device *udev)
4481  {
4482  	u32 field;
4483  	int l1;
4484  	int besld = 0;
4485  	int hirdm = 0;
4486  
4487  	field = le32_to_cpu(udev->bos->ext_cap->bmAttributes);
4488  
4489  	/* xHCI l1 is set in steps of 256us, xHCI 1.0 section 5.4.11.2 */
4490  	l1 = udev->l1_params.timeout / 256;
4491  
4492  	/* device has preferred BESLD */
4493  	if (field & USB_BESL_DEEP_VALID) {
4494  		besld = USB_GET_BESL_DEEP(field);
4495  		hirdm = 1;
4496  	}
4497  
4498  	return PORT_BESLD(besld) | PORT_L1_TIMEOUT(l1) | PORT_HIRDM(hirdm);
4499  }
4500  
xhci_set_usb2_hardware_lpm(struct usb_hcd * hcd,struct usb_device * udev,int enable)4501  static int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd,
4502  			struct usb_device *udev, int enable)
4503  {
4504  	struct xhci_hcd	*xhci = hcd_to_xhci(hcd);
4505  	struct xhci_port **ports;
4506  	__le32 __iomem	*pm_addr, *hlpm_addr;
4507  	u32		pm_val, hlpm_val, field;
4508  	unsigned int	port_num;
4509  	unsigned long	flags;
4510  	int		hird, exit_latency;
4511  	int		ret;
4512  
4513  	if (xhci->quirks & XHCI_HW_LPM_DISABLE)
4514  		return -EPERM;
4515  
4516  	if (hcd->speed >= HCD_USB3 || !xhci->hw_lpm_support ||
4517  			!udev->lpm_capable)
4518  		return -EPERM;
4519  
4520  	if (!udev->parent || udev->parent->parent ||
4521  			udev->descriptor.bDeviceClass == USB_CLASS_HUB)
4522  		return -EPERM;
4523  
4524  	if (udev->usb2_hw_lpm_capable != 1)
4525  		return -EPERM;
4526  
4527  	spin_lock_irqsave(&xhci->lock, flags);
4528  
4529  	ports = xhci->usb2_rhub.ports;
4530  	port_num = udev->portnum - 1;
4531  	pm_addr = ports[port_num]->addr + PORTPMSC;
4532  	pm_val = readl(pm_addr);
4533  	hlpm_addr = ports[port_num]->addr + PORTHLPMC;
4534  
4535  	xhci_dbg(xhci, "%s port %d USB2 hardware LPM\n",
4536  		 str_enable_disable(enable), port_num + 1);
4537  
4538  	if (enable) {
4539  		/* Host supports BESL timeout instead of HIRD */
4540  		if (udev->usb2_hw_lpm_besl_capable) {
4541  			/* if device doesn't have a preferred BESL value use a
4542  			 * default one which works with mixed HIRD and BESL
4543  			 * systems. See XHCI_DEFAULT_BESL definition in xhci.h
4544  			 */
4545  			field = le32_to_cpu(udev->bos->ext_cap->bmAttributes);
4546  			if ((field & USB_BESL_SUPPORT) &&
4547  			    (field & USB_BESL_BASELINE_VALID))
4548  				hird = USB_GET_BESL_BASELINE(field);
4549  			else
4550  				hird = udev->l1_params.besl;
4551  
4552  			exit_latency = xhci_besl_encoding[hird];
4553  			spin_unlock_irqrestore(&xhci->lock, flags);
4554  
4555  			ret = xhci_change_max_exit_latency(xhci, udev,
4556  							   exit_latency);
4557  			if (ret < 0)
4558  				return ret;
4559  			spin_lock_irqsave(&xhci->lock, flags);
4560  
4561  			hlpm_val = xhci_calculate_usb2_hw_lpm_params(udev);
4562  			writel(hlpm_val, hlpm_addr);
4563  			/* flush write */
4564  			readl(hlpm_addr);
4565  		} else {
4566  			hird = xhci_calculate_hird_besl(xhci, udev);
4567  		}
4568  
4569  		pm_val &= ~PORT_HIRD_MASK;
4570  		pm_val |= PORT_HIRD(hird) | PORT_RWE | PORT_L1DS(udev->slot_id);
4571  		writel(pm_val, pm_addr);
4572  		pm_val = readl(pm_addr);
4573  		pm_val |= PORT_HLE;
4574  		writel(pm_val, pm_addr);
4575  		/* flush write */
4576  		readl(pm_addr);
4577  	} else {
4578  		pm_val &= ~(PORT_HLE | PORT_RWE | PORT_HIRD_MASK | PORT_L1DS_MASK);
4579  		writel(pm_val, pm_addr);
4580  		/* flush write */
4581  		readl(pm_addr);
4582  		if (udev->usb2_hw_lpm_besl_capable) {
4583  			spin_unlock_irqrestore(&xhci->lock, flags);
4584  			xhci_change_max_exit_latency(xhci, udev, 0);
4585  			readl_poll_timeout(ports[port_num]->addr, pm_val,
4586  					   (pm_val & PORT_PLS_MASK) == XDEV_U0,
4587  					   100, 10000);
4588  			return 0;
4589  		}
4590  	}
4591  
4592  	spin_unlock_irqrestore(&xhci->lock, flags);
4593  	return 0;
4594  }
4595  
xhci_update_device(struct usb_hcd * hcd,struct usb_device * udev)4596  static int xhci_update_device(struct usb_hcd *hcd, struct usb_device *udev)
4597  {
4598  	struct xhci_hcd	*xhci = hcd_to_xhci(hcd);
4599  	struct xhci_port *port;
4600  	u32 capability;
4601  
4602  	/* Check if USB3 device at root port is tunneled over USB4 */
4603  	if (hcd->speed >= HCD_USB3 && !udev->parent->parent) {
4604  		port = xhci->usb3_rhub.ports[udev->portnum - 1];
4605  
4606  		udev->tunnel_mode = xhci_port_is_tunneled(xhci, port);
4607  		if (udev->tunnel_mode == USB_LINK_UNKNOWN)
4608  			dev_dbg(&udev->dev, "link tunnel state unknown\n");
4609  		else if (udev->tunnel_mode == USB_LINK_TUNNELED)
4610  			dev_dbg(&udev->dev, "tunneled over USB4 link\n");
4611  		else if (udev->tunnel_mode == USB_LINK_NATIVE)
4612  			dev_dbg(&udev->dev, "native USB 3.x link\n");
4613  		return 0;
4614  	}
4615  
4616  	if (hcd->speed >= HCD_USB3 || !udev->lpm_capable || !xhci->hw_lpm_support)
4617  		return 0;
4618  
4619  	/* we only support lpm for non-hub device connected to root hub yet */
4620  	if (!udev->parent || udev->parent->parent ||
4621  			udev->descriptor.bDeviceClass == USB_CLASS_HUB)
4622  		return 0;
4623  
4624  	port = xhci->usb2_rhub.ports[udev->portnum - 1];
4625  	capability = port->port_cap->protocol_caps;
4626  
4627  	if (capability & XHCI_HLC) {
4628  		udev->usb2_hw_lpm_capable = 1;
4629  		udev->l1_params.timeout = XHCI_L1_TIMEOUT;
4630  		udev->l1_params.besl = XHCI_DEFAULT_BESL;
4631  		if (capability & XHCI_BLC)
4632  			udev->usb2_hw_lpm_besl_capable = 1;
4633  	}
4634  
4635  	return 0;
4636  }
4637  
4638  /*---------------------- USB 3.0 Link PM functions ------------------------*/
4639  
4640  /* Service interval in nanoseconds = 2^(bInterval - 1) * 125us * 1000ns / 1us */
xhci_service_interval_to_ns(struct usb_endpoint_descriptor * desc)4641  static unsigned long long xhci_service_interval_to_ns(
4642  		struct usb_endpoint_descriptor *desc)
4643  {
4644  	return (1ULL << (desc->bInterval - 1)) * 125 * 1000;
4645  }
4646  
xhci_get_timeout_no_hub_lpm(struct usb_device * udev,enum usb3_link_state state)4647  static u16 xhci_get_timeout_no_hub_lpm(struct usb_device *udev,
4648  		enum usb3_link_state state)
4649  {
4650  	unsigned long long sel;
4651  	unsigned long long pel;
4652  	unsigned int max_sel_pel;
4653  	char *state_name;
4654  
4655  	switch (state) {
4656  	case USB3_LPM_U1:
4657  		/* Convert SEL and PEL stored in nanoseconds to microseconds */
4658  		sel = DIV_ROUND_UP(udev->u1_params.sel, 1000);
4659  		pel = DIV_ROUND_UP(udev->u1_params.pel, 1000);
4660  		max_sel_pel = USB3_LPM_MAX_U1_SEL_PEL;
4661  		state_name = "U1";
4662  		break;
4663  	case USB3_LPM_U2:
4664  		sel = DIV_ROUND_UP(udev->u2_params.sel, 1000);
4665  		pel = DIV_ROUND_UP(udev->u2_params.pel, 1000);
4666  		max_sel_pel = USB3_LPM_MAX_U2_SEL_PEL;
4667  		state_name = "U2";
4668  		break;
4669  	default:
4670  		dev_warn(&udev->dev, "%s: Can't get timeout for non-U1 or U2 state.\n",
4671  				__func__);
4672  		return USB3_LPM_DISABLED;
4673  	}
4674  
4675  	if (sel <= max_sel_pel && pel <= max_sel_pel)
4676  		return USB3_LPM_DEVICE_INITIATED;
4677  
4678  	if (sel > max_sel_pel)
4679  		dev_dbg(&udev->dev, "Device-initiated %s disabled "
4680  				"due to long SEL %llu ms\n",
4681  				state_name, sel);
4682  	else
4683  		dev_dbg(&udev->dev, "Device-initiated %s disabled "
4684  				"due to long PEL %llu ms\n",
4685  				state_name, pel);
4686  	return USB3_LPM_DISABLED;
4687  }
4688  
4689  /* The U1 timeout should be the maximum of the following values:
4690   *  - For control endpoints, U1 system exit latency (SEL) * 3
4691   *  - For bulk endpoints, U1 SEL * 5
4692   *  - For interrupt endpoints:
4693   *    - Notification EPs, U1 SEL * 3
4694   *    - Periodic EPs, max(105% of bInterval, U1 SEL * 2)
4695   *  - For isochronous endpoints, max(105% of bInterval, U1 SEL * 2)
4696   */
xhci_calculate_intel_u1_timeout(struct usb_device * udev,struct usb_endpoint_descriptor * desc)4697  static unsigned long long xhci_calculate_intel_u1_timeout(
4698  		struct usb_device *udev,
4699  		struct usb_endpoint_descriptor *desc)
4700  {
4701  	unsigned long long timeout_ns;
4702  	int ep_type;
4703  	int intr_type;
4704  
4705  	ep_type = usb_endpoint_type(desc);
4706  	switch (ep_type) {
4707  	case USB_ENDPOINT_XFER_CONTROL:
4708  		timeout_ns = udev->u1_params.sel * 3;
4709  		break;
4710  	case USB_ENDPOINT_XFER_BULK:
4711  		timeout_ns = udev->u1_params.sel * 5;
4712  		break;
4713  	case USB_ENDPOINT_XFER_INT:
4714  		intr_type = usb_endpoint_interrupt_type(desc);
4715  		if (intr_type == USB_ENDPOINT_INTR_NOTIFICATION) {
4716  			timeout_ns = udev->u1_params.sel * 3;
4717  			break;
4718  		}
4719  		/* Otherwise the calculation is the same as isoc eps */
4720  		fallthrough;
4721  	case USB_ENDPOINT_XFER_ISOC:
4722  		timeout_ns = xhci_service_interval_to_ns(desc);
4723  		timeout_ns = DIV_ROUND_UP_ULL(timeout_ns * 105, 100);
4724  		if (timeout_ns < udev->u1_params.sel * 2)
4725  			timeout_ns = udev->u1_params.sel * 2;
4726  		break;
4727  	default:
4728  		return 0;
4729  	}
4730  
4731  	return timeout_ns;
4732  }
4733  
4734  /* Returns the hub-encoded U1 timeout value. */
xhci_calculate_u1_timeout(struct xhci_hcd * xhci,struct usb_device * udev,struct usb_endpoint_descriptor * desc)4735  static u16 xhci_calculate_u1_timeout(struct xhci_hcd *xhci,
4736  		struct usb_device *udev,
4737  		struct usb_endpoint_descriptor *desc)
4738  {
4739  	unsigned long long timeout_ns;
4740  
4741  	/* Prevent U1 if service interval is shorter than U1 exit latency */
4742  	if (usb_endpoint_xfer_int(desc) || usb_endpoint_xfer_isoc(desc)) {
4743  		if (xhci_service_interval_to_ns(desc) <= udev->u1_params.mel) {
4744  			dev_dbg(&udev->dev, "Disable U1, ESIT shorter than exit latency\n");
4745  			return USB3_LPM_DISABLED;
4746  		}
4747  	}
4748  
4749  	if (xhci->quirks & (XHCI_INTEL_HOST | XHCI_ZHAOXIN_HOST))
4750  		timeout_ns = xhci_calculate_intel_u1_timeout(udev, desc);
4751  	else
4752  		timeout_ns = udev->u1_params.sel;
4753  
4754  	/* The U1 timeout is encoded in 1us intervals.
4755  	 * Don't return a timeout of zero, because that's USB3_LPM_DISABLED.
4756  	 */
4757  	if (timeout_ns == USB3_LPM_DISABLED)
4758  		timeout_ns = 1;
4759  	else
4760  		timeout_ns = DIV_ROUND_UP_ULL(timeout_ns, 1000);
4761  
4762  	/* If the necessary timeout value is bigger than what we can set in the
4763  	 * USB 3.0 hub, we have to disable hub-initiated U1.
4764  	 */
4765  	if (timeout_ns <= USB3_LPM_U1_MAX_TIMEOUT)
4766  		return timeout_ns;
4767  	dev_dbg(&udev->dev, "Hub-initiated U1 disabled due to long timeout %lluus\n",
4768  		timeout_ns);
4769  	return xhci_get_timeout_no_hub_lpm(udev, USB3_LPM_U1);
4770  }
4771  
4772  /* The U2 timeout should be the maximum of:
4773   *  - 10 ms (to avoid the bandwidth impact on the scheduler)
4774   *  - largest bInterval of any active periodic endpoint (to avoid going
4775   *    into lower power link states between intervals).
4776   *  - the U2 Exit Latency of the device
4777   */
xhci_calculate_intel_u2_timeout(struct usb_device * udev,struct usb_endpoint_descriptor * desc)4778  static unsigned long long xhci_calculate_intel_u2_timeout(
4779  		struct usb_device *udev,
4780  		struct usb_endpoint_descriptor *desc)
4781  {
4782  	unsigned long long timeout_ns;
4783  	unsigned long long u2_del_ns;
4784  
4785  	timeout_ns = 10 * 1000 * 1000;
4786  
4787  	if ((usb_endpoint_xfer_int(desc) || usb_endpoint_xfer_isoc(desc)) &&
4788  			(xhci_service_interval_to_ns(desc) > timeout_ns))
4789  		timeout_ns = xhci_service_interval_to_ns(desc);
4790  
4791  	u2_del_ns = le16_to_cpu(udev->bos->ss_cap->bU2DevExitLat) * 1000ULL;
4792  	if (u2_del_ns > timeout_ns)
4793  		timeout_ns = u2_del_ns;
4794  
4795  	return timeout_ns;
4796  }
4797  
4798  /* Returns the hub-encoded U2 timeout value. */
xhci_calculate_u2_timeout(struct xhci_hcd * xhci,struct usb_device * udev,struct usb_endpoint_descriptor * desc)4799  static u16 xhci_calculate_u2_timeout(struct xhci_hcd *xhci,
4800  		struct usb_device *udev,
4801  		struct usb_endpoint_descriptor *desc)
4802  {
4803  	unsigned long long timeout_ns;
4804  
4805  	/* Prevent U2 if service interval is shorter than U2 exit latency */
4806  	if (usb_endpoint_xfer_int(desc) || usb_endpoint_xfer_isoc(desc)) {
4807  		if (xhci_service_interval_to_ns(desc) <= udev->u2_params.mel) {
4808  			dev_dbg(&udev->dev, "Disable U2, ESIT shorter than exit latency\n");
4809  			return USB3_LPM_DISABLED;
4810  		}
4811  	}
4812  
4813  	if (xhci->quirks & (XHCI_INTEL_HOST | XHCI_ZHAOXIN_HOST))
4814  		timeout_ns = xhci_calculate_intel_u2_timeout(udev, desc);
4815  	else
4816  		timeout_ns = udev->u2_params.sel;
4817  
4818  	/* The U2 timeout is encoded in 256us intervals */
4819  	timeout_ns = DIV_ROUND_UP_ULL(timeout_ns, 256 * 1000);
4820  	/* If the necessary timeout value is bigger than what we can set in the
4821  	 * USB 3.0 hub, we have to disable hub-initiated U2.
4822  	 */
4823  	if (timeout_ns <= USB3_LPM_U2_MAX_TIMEOUT)
4824  		return timeout_ns;
4825  	dev_dbg(&udev->dev, "Hub-initiated U2 disabled due to long timeout %lluus\n",
4826  		timeout_ns * 256);
4827  	return xhci_get_timeout_no_hub_lpm(udev, USB3_LPM_U2);
4828  }
4829  
xhci_call_host_update_timeout_for_endpoint(struct xhci_hcd * xhci,struct usb_device * udev,struct usb_endpoint_descriptor * desc,enum usb3_link_state state,u16 * timeout)4830  static u16 xhci_call_host_update_timeout_for_endpoint(struct xhci_hcd *xhci,
4831  		struct usb_device *udev,
4832  		struct usb_endpoint_descriptor *desc,
4833  		enum usb3_link_state state,
4834  		u16 *timeout)
4835  {
4836  	if (state == USB3_LPM_U1)
4837  		return xhci_calculate_u1_timeout(xhci, udev, desc);
4838  	else if (state == USB3_LPM_U2)
4839  		return xhci_calculate_u2_timeout(xhci, udev, desc);
4840  
4841  	return USB3_LPM_DISABLED;
4842  }
4843  
xhci_update_timeout_for_endpoint(struct xhci_hcd * xhci,struct usb_device * udev,struct usb_endpoint_descriptor * desc,enum usb3_link_state state,u16 * timeout)4844  static int xhci_update_timeout_for_endpoint(struct xhci_hcd *xhci,
4845  		struct usb_device *udev,
4846  		struct usb_endpoint_descriptor *desc,
4847  		enum usb3_link_state state,
4848  		u16 *timeout)
4849  {
4850  	u16 alt_timeout;
4851  
4852  	alt_timeout = xhci_call_host_update_timeout_for_endpoint(xhci, udev,
4853  		desc, state, timeout);
4854  
4855  	/* If we found we can't enable hub-initiated LPM, and
4856  	 * the U1 or U2 exit latency was too high to allow
4857  	 * device-initiated LPM as well, then we will disable LPM
4858  	 * for this device, so stop searching any further.
4859  	 */
4860  	if (alt_timeout == USB3_LPM_DISABLED) {
4861  		*timeout = alt_timeout;
4862  		return -E2BIG;
4863  	}
4864  	if (alt_timeout > *timeout)
4865  		*timeout = alt_timeout;
4866  	return 0;
4867  }
4868  
xhci_update_timeout_for_interface(struct xhci_hcd * xhci,struct usb_device * udev,struct usb_host_interface * alt,enum usb3_link_state state,u16 * timeout)4869  static int xhci_update_timeout_for_interface(struct xhci_hcd *xhci,
4870  		struct usb_device *udev,
4871  		struct usb_host_interface *alt,
4872  		enum usb3_link_state state,
4873  		u16 *timeout)
4874  {
4875  	int j;
4876  
4877  	for (j = 0; j < alt->desc.bNumEndpoints; j++) {
4878  		if (xhci_update_timeout_for_endpoint(xhci, udev,
4879  					&alt->endpoint[j].desc, state, timeout))
4880  			return -E2BIG;
4881  	}
4882  	return 0;
4883  }
4884  
xhci_check_tier_policy(struct xhci_hcd * xhci,struct usb_device * udev,enum usb3_link_state state)4885  static int xhci_check_tier_policy(struct xhci_hcd *xhci,
4886  		struct usb_device *udev,
4887  		enum usb3_link_state state)
4888  {
4889  	struct usb_device *parent = udev->parent;
4890  	int tier = 1; /* roothub is tier1 */
4891  
4892  	while (parent) {
4893  		parent = parent->parent;
4894  		tier++;
4895  	}
4896  
4897  	if (xhci->quirks & XHCI_INTEL_HOST && tier > 3)
4898  		goto fail;
4899  	if (xhci->quirks & XHCI_ZHAOXIN_HOST && tier > 2)
4900  		goto fail;
4901  
4902  	return 0;
4903  fail:
4904  	dev_dbg(&udev->dev, "Tier policy prevents U1/U2 LPM states for devices at tier %d\n",
4905  			tier);
4906  	return -E2BIG;
4907  }
4908  
4909  /* Returns the U1 or U2 timeout that should be enabled.
4910   * If the tier check or timeout setting functions return with a non-zero exit
4911   * code, that means the timeout value has been finalized and we shouldn't look
4912   * at any more endpoints.
4913   */
xhci_calculate_lpm_timeout(struct usb_hcd * hcd,struct usb_device * udev,enum usb3_link_state state)4914  static u16 xhci_calculate_lpm_timeout(struct usb_hcd *hcd,
4915  			struct usb_device *udev, enum usb3_link_state state)
4916  {
4917  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
4918  	struct usb_host_config *config;
4919  	char *state_name;
4920  	int i;
4921  	u16 timeout = USB3_LPM_DISABLED;
4922  
4923  	if (state == USB3_LPM_U1)
4924  		state_name = "U1";
4925  	else if (state == USB3_LPM_U2)
4926  		state_name = "U2";
4927  	else {
4928  		dev_warn(&udev->dev, "Can't enable unknown link state %i\n",
4929  				state);
4930  		return timeout;
4931  	}
4932  
4933  	/* Gather some information about the currently installed configuration
4934  	 * and alternate interface settings.
4935  	 */
4936  	if (xhci_update_timeout_for_endpoint(xhci, udev, &udev->ep0.desc,
4937  			state, &timeout))
4938  		return timeout;
4939  
4940  	config = udev->actconfig;
4941  	if (!config)
4942  		return timeout;
4943  
4944  	for (i = 0; i < config->desc.bNumInterfaces; i++) {
4945  		struct usb_driver *driver;
4946  		struct usb_interface *intf = config->interface[i];
4947  
4948  		if (!intf)
4949  			continue;
4950  
4951  		/* Check if any currently bound drivers want hub-initiated LPM
4952  		 * disabled.
4953  		 */
4954  		if (intf->dev.driver) {
4955  			driver = to_usb_driver(intf->dev.driver);
4956  			if (driver && driver->disable_hub_initiated_lpm) {
4957  				dev_dbg(&udev->dev, "Hub-initiated %s disabled at request of driver %s\n",
4958  					state_name, driver->name);
4959  				timeout = xhci_get_timeout_no_hub_lpm(udev,
4960  								      state);
4961  				if (timeout == USB3_LPM_DISABLED)
4962  					return timeout;
4963  			}
4964  		}
4965  
4966  		/* Not sure how this could happen... */
4967  		if (!intf->cur_altsetting)
4968  			continue;
4969  
4970  		if (xhci_update_timeout_for_interface(xhci, udev,
4971  					intf->cur_altsetting,
4972  					state, &timeout))
4973  			return timeout;
4974  	}
4975  	return timeout;
4976  }
4977  
calculate_max_exit_latency(struct usb_device * udev,enum usb3_link_state state_changed,u16 hub_encoded_timeout)4978  static int calculate_max_exit_latency(struct usb_device *udev,
4979  		enum usb3_link_state state_changed,
4980  		u16 hub_encoded_timeout)
4981  {
4982  	unsigned long long u1_mel_us = 0;
4983  	unsigned long long u2_mel_us = 0;
4984  	unsigned long long mel_us = 0;
4985  	bool disabling_u1;
4986  	bool disabling_u2;
4987  	bool enabling_u1;
4988  	bool enabling_u2;
4989  
4990  	disabling_u1 = (state_changed == USB3_LPM_U1 &&
4991  			hub_encoded_timeout == USB3_LPM_DISABLED);
4992  	disabling_u2 = (state_changed == USB3_LPM_U2 &&
4993  			hub_encoded_timeout == USB3_LPM_DISABLED);
4994  
4995  	enabling_u1 = (state_changed == USB3_LPM_U1 &&
4996  			hub_encoded_timeout != USB3_LPM_DISABLED);
4997  	enabling_u2 = (state_changed == USB3_LPM_U2 &&
4998  			hub_encoded_timeout != USB3_LPM_DISABLED);
4999  
5000  	/* If U1 was already enabled and we're not disabling it,
5001  	 * or we're going to enable U1, account for the U1 max exit latency.
5002  	 */
5003  	if ((udev->u1_params.timeout != USB3_LPM_DISABLED && !disabling_u1) ||
5004  			enabling_u1)
5005  		u1_mel_us = DIV_ROUND_UP(udev->u1_params.mel, 1000);
5006  	if ((udev->u2_params.timeout != USB3_LPM_DISABLED && !disabling_u2) ||
5007  			enabling_u2)
5008  		u2_mel_us = DIV_ROUND_UP(udev->u2_params.mel, 1000);
5009  
5010  	mel_us = max(u1_mel_us, u2_mel_us);
5011  
5012  	/* xHCI host controller max exit latency field is only 16 bits wide. */
5013  	if (mel_us > MAX_EXIT) {
5014  		dev_warn(&udev->dev, "Link PM max exit latency of %lluus "
5015  				"is too big.\n", mel_us);
5016  		return -E2BIG;
5017  	}
5018  	return mel_us;
5019  }
5020  
5021  /* Returns the USB3 hub-encoded value for the U1/U2 timeout. */
xhci_enable_usb3_lpm_timeout(struct usb_hcd * hcd,struct usb_device * udev,enum usb3_link_state state)5022  static int xhci_enable_usb3_lpm_timeout(struct usb_hcd *hcd,
5023  			struct usb_device *udev, enum usb3_link_state state)
5024  {
5025  	struct xhci_hcd	*xhci;
5026  	struct xhci_port *port;
5027  	u16 hub_encoded_timeout;
5028  	int mel;
5029  	int ret;
5030  
5031  	xhci = hcd_to_xhci(hcd);
5032  	/* The LPM timeout values are pretty host-controller specific, so don't
5033  	 * enable hub-initiated timeouts unless the vendor has provided
5034  	 * information about their timeout algorithm.
5035  	 */
5036  	if (!xhci || !(xhci->quirks & XHCI_LPM_SUPPORT) ||
5037  			!xhci->devs[udev->slot_id])
5038  		return USB3_LPM_DISABLED;
5039  
5040  	if (xhci_check_tier_policy(xhci, udev, state) < 0)
5041  		return USB3_LPM_DISABLED;
5042  
5043  	/* If connected to root port then check port can handle lpm */
5044  	if (udev->parent && !udev->parent->parent) {
5045  		port = xhci->usb3_rhub.ports[udev->portnum - 1];
5046  		if (port->lpm_incapable)
5047  			return USB3_LPM_DISABLED;
5048  	}
5049  
5050  	hub_encoded_timeout = xhci_calculate_lpm_timeout(hcd, udev, state);
5051  	mel = calculate_max_exit_latency(udev, state, hub_encoded_timeout);
5052  	if (mel < 0) {
5053  		/* Max Exit Latency is too big, disable LPM. */
5054  		hub_encoded_timeout = USB3_LPM_DISABLED;
5055  		mel = 0;
5056  	}
5057  
5058  	ret = xhci_change_max_exit_latency(xhci, udev, mel);
5059  	if (ret)
5060  		return ret;
5061  	return hub_encoded_timeout;
5062  }
5063  
xhci_disable_usb3_lpm_timeout(struct usb_hcd * hcd,struct usb_device * udev,enum usb3_link_state state)5064  static int xhci_disable_usb3_lpm_timeout(struct usb_hcd *hcd,
5065  			struct usb_device *udev, enum usb3_link_state state)
5066  {
5067  	struct xhci_hcd	*xhci;
5068  	u16 mel;
5069  
5070  	xhci = hcd_to_xhci(hcd);
5071  	if (!xhci || !(xhci->quirks & XHCI_LPM_SUPPORT) ||
5072  			!xhci->devs[udev->slot_id])
5073  		return 0;
5074  
5075  	mel = calculate_max_exit_latency(udev, state, USB3_LPM_DISABLED);
5076  	return xhci_change_max_exit_latency(xhci, udev, mel);
5077  }
5078  #else /* CONFIG_PM */
5079  
xhci_set_usb2_hardware_lpm(struct usb_hcd * hcd,struct usb_device * udev,int enable)5080  static int xhci_set_usb2_hardware_lpm(struct usb_hcd *hcd,
5081  				struct usb_device *udev, int enable)
5082  {
5083  	return 0;
5084  }
5085  
xhci_update_device(struct usb_hcd * hcd,struct usb_device * udev)5086  static int xhci_update_device(struct usb_hcd *hcd, struct usb_device *udev)
5087  {
5088  	return 0;
5089  }
5090  
xhci_enable_usb3_lpm_timeout(struct usb_hcd * hcd,struct usb_device * udev,enum usb3_link_state state)5091  static int xhci_enable_usb3_lpm_timeout(struct usb_hcd *hcd,
5092  			struct usb_device *udev, enum usb3_link_state state)
5093  {
5094  	return USB3_LPM_DISABLED;
5095  }
5096  
xhci_disable_usb3_lpm_timeout(struct usb_hcd * hcd,struct usb_device * udev,enum usb3_link_state state)5097  static int xhci_disable_usb3_lpm_timeout(struct usb_hcd *hcd,
5098  			struct usb_device *udev, enum usb3_link_state state)
5099  {
5100  	return 0;
5101  }
5102  #endif	/* CONFIG_PM */
5103  
5104  /*-------------------------------------------------------------------------*/
5105  
5106  /* Once a hub descriptor is fetched for a device, we need to update the xHC's
5107   * internal data structures for the device.
5108   */
xhci_update_hub_device(struct usb_hcd * hcd,struct usb_device * hdev,struct usb_tt * tt,gfp_t mem_flags)5109  int xhci_update_hub_device(struct usb_hcd *hcd, struct usb_device *hdev,
5110  			struct usb_tt *tt, gfp_t mem_flags)
5111  {
5112  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
5113  	struct xhci_virt_device *vdev;
5114  	struct xhci_command *config_cmd;
5115  	struct xhci_input_control_ctx *ctrl_ctx;
5116  	struct xhci_slot_ctx *slot_ctx;
5117  	unsigned long flags;
5118  	unsigned think_time;
5119  	int ret;
5120  
5121  	/* Ignore root hubs */
5122  	if (!hdev->parent)
5123  		return 0;
5124  
5125  	vdev = xhci->devs[hdev->slot_id];
5126  	if (!vdev) {
5127  		xhci_warn(xhci, "Cannot update hub desc for unknown device.\n");
5128  		return -EINVAL;
5129  	}
5130  
5131  	config_cmd = xhci_alloc_command_with_ctx(xhci, true, mem_flags);
5132  	if (!config_cmd)
5133  		return -ENOMEM;
5134  
5135  	ctrl_ctx = xhci_get_input_control_ctx(config_cmd->in_ctx);
5136  	if (!ctrl_ctx) {
5137  		xhci_warn(xhci, "%s: Could not get input context, bad type.\n",
5138  				__func__);
5139  		xhci_free_command(xhci, config_cmd);
5140  		return -ENOMEM;
5141  	}
5142  
5143  	spin_lock_irqsave(&xhci->lock, flags);
5144  	if (hdev->speed == USB_SPEED_HIGH &&
5145  			xhci_alloc_tt_info(xhci, vdev, hdev, tt, GFP_ATOMIC)) {
5146  		xhci_dbg(xhci, "Could not allocate xHCI TT structure.\n");
5147  		xhci_free_command(xhci, config_cmd);
5148  		spin_unlock_irqrestore(&xhci->lock, flags);
5149  		return -ENOMEM;
5150  	}
5151  
5152  	xhci_slot_copy(xhci, config_cmd->in_ctx, vdev->out_ctx);
5153  	ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
5154  	slot_ctx = xhci_get_slot_ctx(xhci, config_cmd->in_ctx);
5155  	slot_ctx->dev_info |= cpu_to_le32(DEV_HUB);
5156  	/*
5157  	 * refer to section 6.2.2: MTT should be 0 for full speed hub,
5158  	 * but it may be already set to 1 when setup an xHCI virtual
5159  	 * device, so clear it anyway.
5160  	 */
5161  	if (tt->multi)
5162  		slot_ctx->dev_info |= cpu_to_le32(DEV_MTT);
5163  	else if (hdev->speed == USB_SPEED_FULL)
5164  		slot_ctx->dev_info &= cpu_to_le32(~DEV_MTT);
5165  
5166  	if (xhci->hci_version > 0x95) {
5167  		xhci_dbg(xhci, "xHCI version %x needs hub "
5168  				"TT think time and number of ports\n",
5169  				(unsigned int) xhci->hci_version);
5170  		slot_ctx->dev_info2 |= cpu_to_le32(XHCI_MAX_PORTS(hdev->maxchild));
5171  		/* Set TT think time - convert from ns to FS bit times.
5172  		 * 0 = 8 FS bit times, 1 = 16 FS bit times,
5173  		 * 2 = 24 FS bit times, 3 = 32 FS bit times.
5174  		 *
5175  		 * xHCI 1.0: this field shall be 0 if the device is not a
5176  		 * High-spped hub.
5177  		 */
5178  		think_time = tt->think_time;
5179  		if (think_time != 0)
5180  			think_time = (think_time / 666) - 1;
5181  		if (xhci->hci_version < 0x100 || hdev->speed == USB_SPEED_HIGH)
5182  			slot_ctx->tt_info |=
5183  				cpu_to_le32(TT_THINK_TIME(think_time));
5184  	} else {
5185  		xhci_dbg(xhci, "xHCI version %x doesn't need hub "
5186  				"TT think time or number of ports\n",
5187  				(unsigned int) xhci->hci_version);
5188  	}
5189  	slot_ctx->dev_state = 0;
5190  	spin_unlock_irqrestore(&xhci->lock, flags);
5191  
5192  	xhci_dbg(xhci, "Set up %s for hub device.\n",
5193  			(xhci->hci_version > 0x95) ?
5194  			"configure endpoint" : "evaluate context");
5195  
5196  	/* Issue and wait for the configure endpoint or
5197  	 * evaluate context command.
5198  	 */
5199  	if (xhci->hci_version > 0x95)
5200  		ret = xhci_configure_endpoint(xhci, hdev, config_cmd,
5201  				false, false);
5202  	else
5203  		ret = xhci_configure_endpoint(xhci, hdev, config_cmd,
5204  				true, false);
5205  
5206  	xhci_free_command(xhci, config_cmd);
5207  	return ret;
5208  }
5209  EXPORT_SYMBOL_GPL(xhci_update_hub_device);
5210  
xhci_get_frame(struct usb_hcd * hcd)5211  static int xhci_get_frame(struct usb_hcd *hcd)
5212  {
5213  	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
5214  	/* EHCI mods by the periodic size.  Why? */
5215  	return readl(&xhci->run_regs->microframe_index) >> 3;
5216  }
5217  
xhci_hcd_init_usb2_data(struct xhci_hcd * xhci,struct usb_hcd * hcd)5218  static void xhci_hcd_init_usb2_data(struct xhci_hcd *xhci, struct usb_hcd *hcd)
5219  {
5220  	xhci->usb2_rhub.hcd = hcd;
5221  	hcd->speed = HCD_USB2;
5222  	hcd->self.root_hub->speed = USB_SPEED_HIGH;
5223  	/*
5224  	 * USB 2.0 roothub under xHCI has an integrated TT,
5225  	 * (rate matching hub) as opposed to having an OHCI/UHCI
5226  	 * companion controller.
5227  	 */
5228  	hcd->has_tt = 1;
5229  }
5230  
xhci_hcd_init_usb3_data(struct xhci_hcd * xhci,struct usb_hcd * hcd)5231  static void xhci_hcd_init_usb3_data(struct xhci_hcd *xhci, struct usb_hcd *hcd)
5232  {
5233  	unsigned int minor_rev;
5234  
5235  	/*
5236  	 * Early xHCI 1.1 spec did not mention USB 3.1 capable hosts
5237  	 * should return 0x31 for sbrn, or that the minor revision
5238  	 * is a two digit BCD containig minor and sub-minor numbers.
5239  	 * This was later clarified in xHCI 1.2.
5240  	 *
5241  	 * Some USB 3.1 capable hosts therefore have sbrn 0x30, and
5242  	 * minor revision set to 0x1 instead of 0x10.
5243  	 */
5244  	if (xhci->usb3_rhub.min_rev == 0x1)
5245  		minor_rev = 1;
5246  	else
5247  		minor_rev = xhci->usb3_rhub.min_rev / 0x10;
5248  
5249  	switch (minor_rev) {
5250  	case 2:
5251  		hcd->speed = HCD_USB32;
5252  		hcd->self.root_hub->speed = USB_SPEED_SUPER_PLUS;
5253  		hcd->self.root_hub->rx_lanes = 2;
5254  		hcd->self.root_hub->tx_lanes = 2;
5255  		hcd->self.root_hub->ssp_rate = USB_SSP_GEN_2x2;
5256  		break;
5257  	case 1:
5258  		hcd->speed = HCD_USB31;
5259  		hcd->self.root_hub->speed = USB_SPEED_SUPER_PLUS;
5260  		hcd->self.root_hub->ssp_rate = USB_SSP_GEN_2x1;
5261  		break;
5262  	}
5263  	xhci_info(xhci, "Host supports USB 3.%x %sSuperSpeed\n",
5264  		  minor_rev, minor_rev ? "Enhanced " : "");
5265  
5266  	xhci->usb3_rhub.hcd = hcd;
5267  }
5268  
xhci_gen_setup(struct usb_hcd * hcd,xhci_get_quirks_t get_quirks)5269  int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks)
5270  {
5271  	struct xhci_hcd		*xhci;
5272  	/*
5273  	 * TODO: Check with DWC3 clients for sysdev according to
5274  	 * quirks
5275  	 */
5276  	struct device		*dev = hcd->self.sysdev;
5277  	int			retval;
5278  
5279  	/* Accept arbitrarily long scatter-gather lists */
5280  	hcd->self.sg_tablesize = ~0;
5281  
5282  	/* support to build packet from discontinuous buffers */
5283  	hcd->self.no_sg_constraint = 1;
5284  
5285  	/* XHCI controllers don't stop the ep queue on short packets :| */
5286  	hcd->self.no_stop_on_short = 1;
5287  
5288  	xhci = hcd_to_xhci(hcd);
5289  
5290  	if (!usb_hcd_is_primary_hcd(hcd)) {
5291  		xhci_hcd_init_usb3_data(xhci, hcd);
5292  		return 0;
5293  	}
5294  
5295  	mutex_init(&xhci->mutex);
5296  	xhci->main_hcd = hcd;
5297  	xhci->cap_regs = hcd->regs;
5298  	xhci->op_regs = hcd->regs +
5299  		HC_LENGTH(readl(&xhci->cap_regs->hc_capbase));
5300  	xhci->run_regs = hcd->regs +
5301  		(readl(&xhci->cap_regs->run_regs_off) & RTSOFF_MASK);
5302  	/* Cache read-only capability registers */
5303  	xhci->hcs_params1 = readl(&xhci->cap_regs->hcs_params1);
5304  	xhci->hcs_params2 = readl(&xhci->cap_regs->hcs_params2);
5305  	xhci->hcs_params3 = readl(&xhci->cap_regs->hcs_params3);
5306  	xhci->hci_version = HC_VERSION(readl(&xhci->cap_regs->hc_capbase));
5307  	xhci->hcc_params = readl(&xhci->cap_regs->hcc_params);
5308  	if (xhci->hci_version > 0x100)
5309  		xhci->hcc_params2 = readl(&xhci->cap_regs->hcc_params2);
5310  
5311  	/* xhci-plat or xhci-pci might have set max_interrupters already */
5312  	if ((!xhci->max_interrupters) ||
5313  	    xhci->max_interrupters > HCS_MAX_INTRS(xhci->hcs_params1))
5314  		xhci->max_interrupters = HCS_MAX_INTRS(xhci->hcs_params1);
5315  
5316  	xhci->quirks |= quirks;
5317  
5318  	if (get_quirks)
5319  		get_quirks(dev, xhci);
5320  
5321  	/* In xhci controllers which follow xhci 1.0 spec gives a spurious
5322  	 * success event after a short transfer. This quirk will ignore such
5323  	 * spurious event.
5324  	 */
5325  	if (xhci->hci_version > 0x96)
5326  		xhci->quirks |= XHCI_SPURIOUS_SUCCESS;
5327  
5328  	if (xhci->hci_version == 0x95 && link_quirk) {
5329  		xhci_dbg(xhci, "QUIRK: Not clearing Link TRB chain bits");
5330  		xhci->quirks |= XHCI_LINK_TRB_QUIRK;
5331  	}
5332  
5333  	/* Make sure the HC is halted. */
5334  	retval = xhci_halt(xhci);
5335  	if (retval)
5336  		return retval;
5337  
5338  	xhci_zero_64b_regs(xhci);
5339  
5340  	xhci_dbg(xhci, "Resetting HCD\n");
5341  	/* Reset the internal HC memory state and registers. */
5342  	retval = xhci_reset(xhci, XHCI_RESET_LONG_USEC);
5343  	if (retval)
5344  		return retval;
5345  	xhci_dbg(xhci, "Reset complete\n");
5346  
5347  	/*
5348  	 * On some xHCI controllers (e.g. R-Car SoCs), the AC64 bit (bit 0)
5349  	 * of HCCPARAMS1 is set to 1. However, the xHCs don't support 64-bit
5350  	 * address memory pointers actually. So, this driver clears the AC64
5351  	 * bit of xhci->hcc_params to call dma_set_coherent_mask(dev,
5352  	 * DMA_BIT_MASK(32)) in this xhci_gen_setup().
5353  	 */
5354  	if (xhci->quirks & XHCI_NO_64BIT_SUPPORT)
5355  		xhci->hcc_params &= ~BIT(0);
5356  
5357  	/* Set dma_mask and coherent_dma_mask to 64-bits,
5358  	 * if xHC supports 64-bit addressing */
5359  	if (HCC_64BIT_ADDR(xhci->hcc_params) &&
5360  			!dma_set_mask(dev, DMA_BIT_MASK(64))) {
5361  		xhci_dbg(xhci, "Enabling 64-bit DMA addresses.\n");
5362  		dma_set_coherent_mask(dev, DMA_BIT_MASK(64));
5363  	} else {
5364  		/*
5365  		 * This is to avoid error in cases where a 32-bit USB
5366  		 * controller is used on a 64-bit capable system.
5367  		 */
5368  		retval = dma_set_mask(dev, DMA_BIT_MASK(32));
5369  		if (retval)
5370  			return retval;
5371  		xhci_dbg(xhci, "Enabling 32-bit DMA addresses.\n");
5372  		dma_set_coherent_mask(dev, DMA_BIT_MASK(32));
5373  	}
5374  
5375  	xhci_dbg(xhci, "Calling HCD init\n");
5376  	/* Initialize HCD and host controller data structures. */
5377  	retval = xhci_init(hcd);
5378  	if (retval)
5379  		return retval;
5380  	xhci_dbg(xhci, "Called HCD init\n");
5381  
5382  	if (xhci_hcd_is_usb3(hcd))
5383  		xhci_hcd_init_usb3_data(xhci, hcd);
5384  	else
5385  		xhci_hcd_init_usb2_data(xhci, hcd);
5386  
5387  	xhci_info(xhci, "hcc params 0x%08x hci version 0x%x quirks 0x%016llx\n",
5388  		  xhci->hcc_params, xhci->hci_version, xhci->quirks);
5389  
5390  	return 0;
5391  }
5392  EXPORT_SYMBOL_GPL(xhci_gen_setup);
5393  
xhci_clear_tt_buffer_complete(struct usb_hcd * hcd,struct usb_host_endpoint * ep)5394  static void xhci_clear_tt_buffer_complete(struct usb_hcd *hcd,
5395  		struct usb_host_endpoint *ep)
5396  {
5397  	struct xhci_hcd *xhci;
5398  	struct usb_device *udev;
5399  	unsigned int slot_id;
5400  	unsigned int ep_index;
5401  	unsigned long flags;
5402  
5403  	xhci = hcd_to_xhci(hcd);
5404  
5405  	spin_lock_irqsave(&xhci->lock, flags);
5406  	udev = (struct usb_device *)ep->hcpriv;
5407  	slot_id = udev->slot_id;
5408  	ep_index = xhci_get_endpoint_index(&ep->desc);
5409  
5410  	xhci->devs[slot_id]->eps[ep_index].ep_state &= ~EP_CLEARING_TT;
5411  	xhci_ring_doorbell_for_active_rings(xhci, slot_id, ep_index);
5412  	spin_unlock_irqrestore(&xhci->lock, flags);
5413  }
5414  
5415  static const struct hc_driver xhci_hc_driver = {
5416  	.description =		"xhci-hcd",
5417  	.product_desc =		"xHCI Host Controller",
5418  	.hcd_priv_size =	sizeof(struct xhci_hcd),
5419  
5420  	/*
5421  	 * generic hardware linkage
5422  	 */
5423  	.irq =			xhci_irq,
5424  	.flags =		HCD_MEMORY | HCD_DMA | HCD_USB3 | HCD_SHARED |
5425  				HCD_BH,
5426  
5427  	/*
5428  	 * basic lifecycle operations
5429  	 */
5430  	.reset =		NULL, /* set in xhci_init_driver() */
5431  	.start =		xhci_run,
5432  	.stop =			xhci_stop,
5433  	.shutdown =		xhci_shutdown,
5434  
5435  	/*
5436  	 * managing i/o requests and associated device resources
5437  	 */
5438  	.map_urb_for_dma =      xhci_map_urb_for_dma,
5439  	.unmap_urb_for_dma =    xhci_unmap_urb_for_dma,
5440  	.urb_enqueue =		xhci_urb_enqueue,
5441  	.urb_dequeue =		xhci_urb_dequeue,
5442  	.alloc_dev =		xhci_alloc_dev,
5443  	.free_dev =		xhci_free_dev,
5444  	.alloc_streams =	xhci_alloc_streams,
5445  	.free_streams =		xhci_free_streams,
5446  	.add_endpoint =		xhci_add_endpoint,
5447  	.drop_endpoint =	xhci_drop_endpoint,
5448  	.endpoint_disable =	xhci_endpoint_disable,
5449  	.endpoint_reset =	xhci_endpoint_reset,
5450  	.check_bandwidth =	xhci_check_bandwidth,
5451  	.reset_bandwidth =	xhci_reset_bandwidth,
5452  	.address_device =	xhci_address_device,
5453  	.enable_device =	xhci_enable_device,
5454  	.update_hub_device =	xhci_update_hub_device,
5455  	.reset_device =		xhci_discover_or_reset_device,
5456  
5457  	/*
5458  	 * scheduling support
5459  	 */
5460  	.get_frame_number =	xhci_get_frame,
5461  
5462  	/*
5463  	 * root hub support
5464  	 */
5465  	.hub_control =		xhci_hub_control,
5466  	.hub_status_data =	xhci_hub_status_data,
5467  	.bus_suspend =		xhci_bus_suspend,
5468  	.bus_resume =		xhci_bus_resume,
5469  	.get_resuming_ports =	xhci_get_resuming_ports,
5470  
5471  	/*
5472  	 * call back when device connected and addressed
5473  	 */
5474  	.update_device =        xhci_update_device,
5475  	.set_usb2_hw_lpm =	xhci_set_usb2_hardware_lpm,
5476  	.enable_usb3_lpm_timeout =	xhci_enable_usb3_lpm_timeout,
5477  	.disable_usb3_lpm_timeout =	xhci_disable_usb3_lpm_timeout,
5478  	.find_raw_port_number =	xhci_find_raw_port_number,
5479  	.clear_tt_buffer_complete = xhci_clear_tt_buffer_complete,
5480  };
5481  
xhci_init_driver(struct hc_driver * drv,const struct xhci_driver_overrides * over)5482  void xhci_init_driver(struct hc_driver *drv,
5483  		      const struct xhci_driver_overrides *over)
5484  {
5485  	BUG_ON(!over);
5486  
5487  	/* Copy the generic table to drv then apply the overrides */
5488  	*drv = xhci_hc_driver;
5489  
5490  	if (over) {
5491  		drv->hcd_priv_size += over->extra_priv_size;
5492  		if (over->reset)
5493  			drv->reset = over->reset;
5494  		if (over->start)
5495  			drv->start = over->start;
5496  		if (over->add_endpoint)
5497  			drv->add_endpoint = over->add_endpoint;
5498  		if (over->drop_endpoint)
5499  			drv->drop_endpoint = over->drop_endpoint;
5500  		if (over->check_bandwidth)
5501  			drv->check_bandwidth = over->check_bandwidth;
5502  		if (over->reset_bandwidth)
5503  			drv->reset_bandwidth = over->reset_bandwidth;
5504  		if (over->update_hub_device)
5505  			drv->update_hub_device = over->update_hub_device;
5506  		if (over->hub_control)
5507  			drv->hub_control = over->hub_control;
5508  	}
5509  }
5510  EXPORT_SYMBOL_GPL(xhci_init_driver);
5511  
5512  MODULE_DESCRIPTION(DRIVER_DESC);
5513  MODULE_AUTHOR(DRIVER_AUTHOR);
5514  MODULE_LICENSE("GPL");
5515  
xhci_hcd_init(void)5516  static int __init xhci_hcd_init(void)
5517  {
5518  	/*
5519  	 * Check the compiler generated sizes of structures that must be laid
5520  	 * out in specific ways for hardware access.
5521  	 */
5522  	BUILD_BUG_ON(sizeof(struct xhci_doorbell_array) != 256*32/8);
5523  	BUILD_BUG_ON(sizeof(struct xhci_slot_ctx) != 8*32/8);
5524  	BUILD_BUG_ON(sizeof(struct xhci_ep_ctx) != 8*32/8);
5525  	/* xhci_device_control has eight fields, and also
5526  	 * embeds one xhci_slot_ctx and 31 xhci_ep_ctx
5527  	 */
5528  	BUILD_BUG_ON(sizeof(struct xhci_stream_ctx) != 4*32/8);
5529  	BUILD_BUG_ON(sizeof(union xhci_trb) != 4*32/8);
5530  	BUILD_BUG_ON(sizeof(struct xhci_erst_entry) != 4*32/8);
5531  	BUILD_BUG_ON(sizeof(struct xhci_cap_regs) != 8*32/8);
5532  	BUILD_BUG_ON(sizeof(struct xhci_intr_reg) != 8*32/8);
5533  	/* xhci_run_regs has eight fields and embeds 128 xhci_intr_regs */
5534  	BUILD_BUG_ON(sizeof(struct xhci_run_regs) != (8+8*128)*32/8);
5535  
5536  	if (usb_disabled())
5537  		return -ENODEV;
5538  
5539  	xhci_debugfs_create_root();
5540  	xhci_dbc_init();
5541  
5542  	return 0;
5543  }
5544  
5545  /*
5546   * If an init function is provided, an exit function must also be provided
5547   * to allow module unload.
5548   */
xhci_hcd_fini(void)5549  static void __exit xhci_hcd_fini(void)
5550  {
5551  	xhci_debugfs_remove_root();
5552  	xhci_dbc_exit();
5553  }
5554  
5555  module_init(xhci_hcd_init);
5556  module_exit(xhci_hcd_fini);
5557