| 
				
			 | 
			
			
				
				@@ -279,23 +279,24 @@ static void xhci_init ( struct xhci_device *xhci, void *regs ) { 
			 | 
		
		
	
		
			
			| 
				279
			 | 
			
				279
			 | 
			
			
				
				 	xhci->op = ( xhci->cap + caplength ); 
			 | 
		
		
	
		
			
			| 
				280
			 | 
			
				280
			 | 
			
			
				
				 	xhci->run = ( xhci->cap + rtsoff ); 
			 | 
		
		
	
		
			
			| 
				281
			 | 
			
				281
			 | 
			
			
				
				 	xhci->db = ( xhci->cap + dboff ); 
			 | 
		
		
	
		
			
			| 
				282
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p cap %08lx op %08lx run %08lx db %08lx\n", 
			 | 
		
		
	
		
			
			| 
				283
			 | 
			
				
			 | 
			
			
				
				-		xhci, virt_to_phys ( xhci->cap ), virt_to_phys ( xhci->op ), 
			 | 
		
		
	
		
			
			| 
				284
			 | 
			
				
			 | 
			
			
				
				-		virt_to_phys ( xhci->run ), virt_to_phys ( xhci->db ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				282
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s cap %08lx op %08lx run %08lx db %08lx\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				283
			 | 
			
			
				
				+		xhci->name, virt_to_phys ( xhci->cap ), 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				284
			 | 
			
			
				
				+		virt_to_phys ( xhci->op ), virt_to_phys ( xhci->run ), 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				285
			 | 
			
			
				
				+		virt_to_phys ( xhci->db ) ); 
			 | 
		
		
	
		
			
			| 
				285
			 | 
			
				286
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				286
			 | 
			
				287
			 | 
			
			
				
				 	/* Read structural parameters 1 */ 
			 | 
		
		
	
		
			
			| 
				287
			 | 
			
				288
			 | 
			
			
				
				 	hcsparams1 = readl ( xhci->cap + XHCI_CAP_HCSPARAMS1 ); 
			 | 
		
		
	
		
			
			| 
				288
			 | 
			
				289
			 | 
			
			
				
				 	xhci->slots = XHCI_HCSPARAMS1_SLOTS ( hcsparams1 ); 
			 | 
		
		
	
		
			
			| 
				289
			 | 
			
				290
			 | 
			
			
				
				 	xhci->intrs = XHCI_HCSPARAMS1_INTRS ( hcsparams1 ); 
			 | 
		
		
	
		
			
			| 
				290
			 | 
			
				291
			 | 
			
			
				
				 	xhci->ports = XHCI_HCSPARAMS1_PORTS ( hcsparams1 ); 
			 | 
		
		
	
		
			
			| 
				291
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p has %d slots %d intrs %d ports\n", 
			 | 
		
		
	
		
			
			| 
				292
			 | 
			
				
			 | 
			
			
				
				-	       xhci, xhci->slots, xhci->intrs, xhci->ports ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				292
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s has %d slots %d intrs %d ports\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				293
			 | 
			
			
				
				+	       xhci->name, xhci->slots, xhci->intrs, xhci->ports ); 
			 | 
		
		
	
		
			
			| 
				293
			 | 
			
				294
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				294
			 | 
			
				295
			 | 
			
			
				
				 	/* Read structural parameters 2 */ 
			 | 
		
		
	
		
			
			| 
				295
			 | 
			
				296
			 | 
			
			
				
				 	hcsparams2 = readl ( xhci->cap + XHCI_CAP_HCSPARAMS2 ); 
			 | 
		
		
	
		
			
			| 
				296
			 | 
			
				297
			 | 
			
			
				
				 	xhci->scratchpads = XHCI_HCSPARAMS2_SCRATCHPADS ( hcsparams2 ); 
			 | 
		
		
	
		
			
			| 
				297
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p needs %d scratchpads\n", 
			 | 
		
		
	
		
			
			| 
				298
			 | 
			
				
			 | 
			
			
				
				-		xhci, xhci->scratchpads ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				298
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s needs %d scratchpads\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				299
			 | 
			
			
				
				+		xhci->name, xhci->scratchpads ); 
			 | 
		
		
	
		
			
			| 
				299
			 | 
			
				300
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				300
			 | 
			
				301
			 | 
			
			
				
				 	/* Read capability parameters 1 */ 
			 | 
		
		
	
		
			
			| 
				301
			 | 
			
				302
			 | 
			
			
				
				 	hccparams1 = readl ( xhci->cap + XHCI_CAP_HCCPARAMS1 ); 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -308,8 +309,8 @@ static void xhci_init ( struct xhci_device *xhci, void *regs ) { 
			 | 
		
		
	
		
			
			| 
				308
			 | 
			
				309
			 | 
			
			
				
				 	xhci->pagesize = XHCI_PAGESIZE ( pagesize ); 
			 | 
		
		
	
		
			
			| 
				309
			 | 
			
				310
			 | 
			
			
				
				 	assert ( xhci->pagesize != 0 ); 
			 | 
		
		
	
		
			
			| 
				310
			 | 
			
				311
			 | 
			
			
				
				 	assert ( ( ( xhci->pagesize ) & ( xhci->pagesize - 1 ) ) == 0 ); 
			 | 
		
		
	
		
			
			| 
				311
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p page size %zd bytes\n", 
			 | 
		
		
	
		
			
			| 
				312
			 | 
			
				
			 | 
			
			
				
				-		xhci, xhci->pagesize ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				312
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s page size %zd bytes\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				313
			 | 
			
			
				
				+		xhci->name, xhci->pagesize ); 
			 | 
		
		
	
		
			
			| 
				313
			 | 
			
				314
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				314
			 | 
			
				315
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				315
			 | 
			
				316
			 | 
			
			
				
				 /** 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -371,8 +372,8 @@ xhci_writeq ( struct xhci_device *xhci, physaddr_t value, void *reg ) { 
			 | 
		
		
	
		
			
			| 
				371
			 | 
			
				372
			 | 
			
			
				
				 	 * address is outside the 32-bit address space, then fail. 
			 | 
		
		
	
		
			
			| 
				372
			 | 
			
				373
			 | 
			
			
				
				 	 */ 
			 | 
		
		
	
		
			
			| 
				373
			 | 
			
				374
			 | 
			
			
				
				 	if ( ( value & ~0xffffffffULL ) && ! xhci->addr64 ) { 
			 | 
		
		
	
		
			
			| 
				374
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p cannot access address %lx\n", 
			 | 
		
		
	
		
			
			| 
				375
			 | 
			
				
			 | 
			
			
				
				-		       xhci, value ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				375
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s cannot access address %lx\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				376
			 | 
			
			
				
				+		       xhci->name, value ); 
			 | 
		
		
	
		
			
			| 
				376
			 | 
			
				377
			 | 
			
			
				
				 		return -ENOTSUP; 
			 | 
		
		
	
		
			
			| 
				377
			 | 
			
				378
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				378
			 | 
			
				379
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -452,26 +453,26 @@ static inline void xhci_dump ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				452
			 | 
			
				453
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				453
			 | 
			
				454
			 | 
			
			
				
				 	/* Dump USBCMD */ 
			 | 
		
		
	
		
			
			| 
				454
			 | 
			
				455
			 | 
			
			
				
				 	usbcmd = readl ( xhci->op + XHCI_OP_USBCMD ); 
			 | 
		
		
	
		
			
			| 
				455
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p USBCMD %08x%s%s\n", xhci, usbcmd, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				456
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s USBCMD %08x%s%s\n", xhci->name, usbcmd, 
			 | 
		
		
	
		
			
			| 
				456
			 | 
			
				457
			 | 
			
			
				
				 	       ( ( usbcmd & XHCI_USBCMD_RUN ) ? " run" : "" ), 
			 | 
		
		
	
		
			
			| 
				457
			 | 
			
				458
			 | 
			
			
				
				 	       ( ( usbcmd & XHCI_USBCMD_HCRST ) ? " hcrst" : "" ) ); 
			 | 
		
		
	
		
			
			| 
				458
			 | 
			
				459
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				459
			 | 
			
				460
			 | 
			
			
				
				 	/* Dump USBSTS */ 
			 | 
		
		
	
		
			
			| 
				460
			 | 
			
				461
			 | 
			
			
				
				 	usbsts = readl ( xhci->op + XHCI_OP_USBSTS ); 
			 | 
		
		
	
		
			
			| 
				461
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p USBSTS %08x%s\n", xhci, usbsts, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				462
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s USBSTS %08x%s\n", xhci->name, usbsts, 
			 | 
		
		
	
		
			
			| 
				462
			 | 
			
				463
			 | 
			
			
				
				 	       ( ( usbsts & XHCI_USBSTS_HCH ) ? " hch" : "" ) ); 
			 | 
		
		
	
		
			
			| 
				463
			 | 
			
				464
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				464
			 | 
			
				465
			 | 
			
			
				
				 	/* Dump PAGESIZE */ 
			 | 
		
		
	
		
			
			| 
				465
			 | 
			
				466
			 | 
			
			
				
				 	pagesize = readl ( xhci->op + XHCI_OP_PAGESIZE ); 
			 | 
		
		
	
		
			
			| 
				466
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p PAGESIZE %08x\n", xhci, pagesize ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				467
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s PAGESIZE %08x\n", xhci->name, pagesize ); 
			 | 
		
		
	
		
			
			| 
				467
			 | 
			
				468
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				468
			 | 
			
				469
			 | 
			
			
				
				 	/* Dump DNCTRL */ 
			 | 
		
		
	
		
			
			| 
				469
			 | 
			
				470
			 | 
			
			
				
				 	dnctrl = readl ( xhci->op + XHCI_OP_DNCTRL ); 
			 | 
		
		
	
		
			
			| 
				470
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p DNCTRL %08x\n", xhci, dnctrl ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				471
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s DNCTRL %08x\n", xhci->name, dnctrl ); 
			 | 
		
		
	
		
			
			| 
				471
			 | 
			
				472
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				472
			 | 
			
				473
			 | 
			
			
				
				 	/* Dump CONFIG */ 
			 | 
		
		
	
		
			
			| 
				473
			 | 
			
				474
			 | 
			
			
				
				 	config = readl ( xhci->op + XHCI_OP_CONFIG ); 
			 | 
		
		
	
		
			
			| 
				474
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p CONFIG %08x\n", xhci, config ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				475
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s CONFIG %08x\n", xhci->name, config ); 
			 | 
		
		
	
		
			
			| 
				475
			 | 
			
				476
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				476
			 | 
			
				477
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				477
			 | 
			
				478
			 | 
			
			
				
				 /** 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -493,8 +494,8 @@ static inline void xhci_dump_port ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				493
			 | 
			
				494
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				494
			 | 
			
				495
			 | 
			
			
				
				 	/* Dump PORTSC */ 
			 | 
		
		
	
		
			
			| 
				495
			 | 
			
				496
			 | 
			
			
				
				 	portsc = readl ( xhci->op + XHCI_OP_PORTSC ( port ) ); 
			 | 
		
		
	
		
			
			| 
				496
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p port %d PORTSC %08x%s%s%s%s psiv=%d\n", 
			 | 
		
		
	
		
			
			| 
				497
			 | 
			
				
			 | 
			
			
				
				-	       xhci, port, portsc, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				497
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s-%d PORTSC %08x%s%s%s%s psiv=%d\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				498
			 | 
			
			
				
				+	       xhci->name, port, portsc, 
			 | 
		
		
	
		
			
			| 
				498
			 | 
			
				499
			 | 
			
			
				
				 	       ( ( portsc & XHCI_PORTSC_CCS ) ? " ccs" : "" ), 
			 | 
		
		
	
		
			
			| 
				499
			 | 
			
				500
			 | 
			
			
				
				 	       ( ( portsc & XHCI_PORTSC_PED ) ? " ped" : "" ), 
			 | 
		
		
	
		
			
			| 
				500
			 | 
			
				501
			 | 
			
			
				
				 	       ( ( portsc & XHCI_PORTSC_PR ) ? " pr" : "" ), 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -503,16 +504,16 @@ static inline void xhci_dump_port ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				503
			 | 
			
				504
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				504
			 | 
			
				505
			 | 
			
			
				
				 	/* Dump PORTPMSC */ 
			 | 
		
		
	
		
			
			| 
				505
			 | 
			
				506
			 | 
			
			
				
				 	portpmsc = readl ( xhci->op + XHCI_OP_PORTPMSC ( port ) ); 
			 | 
		
		
	
		
			
			| 
				506
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p port %d PORTPMSC %08x\n", xhci, port, portpmsc ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				507
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s-%d PORTPMSC %08x\n", xhci->name, port, portpmsc ); 
			 | 
		
		
	
		
			
			| 
				507
			 | 
			
				508
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				508
			 | 
			
				509
			 | 
			
			
				
				 	/* Dump PORTLI */ 
			 | 
		
		
	
		
			
			| 
				509
			 | 
			
				510
			 | 
			
			
				
				 	portli = readl ( xhci->op + XHCI_OP_PORTLI ( port ) ); 
			 | 
		
		
	
		
			
			| 
				510
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p port %d PORTLI %08x\n", xhci, port, portli ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				511
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s-%d PORTLI %08x\n", xhci->name, port, portli ); 
			 | 
		
		
	
		
			
			| 
				511
			 | 
			
				512
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				512
			 | 
			
				513
			 | 
			
			
				
				 	/* Dump PORTHLPMC */ 
			 | 
		
		
	
		
			
			| 
				513
			 | 
			
				514
			 | 
			
			
				
				 	porthlpmc = readl ( xhci->op + XHCI_OP_PORTHLPMC ( port ) ); 
			 | 
		
		
	
		
			
			| 
				514
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p port %d PORTHLPMC %08x\n", 
			 | 
		
		
	
		
			
			| 
				515
			 | 
			
				
			 | 
			
			
				
				-	       xhci, port, porthlpmc ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				515
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s-%d PORTHLPMC %08x\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				516
			 | 
			
			
				
				+	       xhci->name, port, porthlpmc ); 
			 | 
		
		
	
		
			
			| 
				516
			 | 
			
				517
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				517
			 | 
			
				518
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				518
			 | 
			
				519
			 | 
			
			
				
				 /****************************************************************************** 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -538,8 +539,8 @@ static void xhci_legacy_init ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				538
			 | 
			
				539
			 | 
			
			
				
				 	legacy = xhci_extended_capability ( xhci, XHCI_XECP_ID_LEGACY, 0 ); 
			 | 
		
		
	
		
			
			| 
				539
			 | 
			
				540
			 | 
			
			
				
				 	if ( ! legacy ) { 
			 | 
		
		
	
		
			
			| 
				540
			 | 
			
				541
			 | 
			
			
				
				 		/* Not an error; capability may not be present */ 
			 | 
		
		
	
		
			
			| 
				541
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p has no USB legacy support capability\n", 
			 | 
		
		
	
		
			
			| 
				542
			 | 
			
				
			 | 
			
			
				
				-		       xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				542
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s has no USB legacy support capability\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				543
			 | 
			
			
				
				+		       xhci->name ); 
			 | 
		
		
	
		
			
			| 
				543
			 | 
			
				544
			 | 
			
			
				
				 		return; 
			 | 
		
		
	
		
			
			| 
				544
			 | 
			
				545
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				545
			 | 
			
				546
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -547,8 +548,8 @@ static void xhci_legacy_init ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				547
			 | 
			
				548
			 | 
			
			
				
				 	bios = readb ( xhci->cap + legacy + XHCI_USBLEGSUP_BIOS ); 
			 | 
		
		
	
		
			
			| 
				548
			 | 
			
				549
			 | 
			
			
				
				 	if ( ! ( bios & XHCI_USBLEGSUP_BIOS_OWNED ) ) { 
			 | 
		
		
	
		
			
			| 
				549
			 | 
			
				550
			 | 
			
			
				
				 		/* Not an error; already owned by OS */ 
			 | 
		
		
	
		
			
			| 
				550
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p USB legacy support already disabled\n", 
			 | 
		
		
	
		
			
			| 
				551
			 | 
			
				
			 | 
			
			
				
				-		       xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				551
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s USB legacy support already disabled\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				552
			 | 
			
			
				
				+		       xhci->name ); 
			 | 
		
		
	
		
			
			| 
				552
			 | 
			
				553
			 | 
			
			
				
				 		return; 
			 | 
		
		
	
		
			
			| 
				553
			 | 
			
				554
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				554
			 | 
			
				555
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -580,13 +581,13 @@ static void xhci_legacy_claim ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				580
			 | 
			
				581
			 | 
			
			
				
				 		/* Check if BIOS has released ownership */ 
			 | 
		
		
	
		
			
			| 
				581
			 | 
			
				582
			 | 
			
			
				
				 		bios = readb ( xhci->cap + xhci->legacy + XHCI_USBLEGSUP_BIOS ); 
			 | 
		
		
	
		
			
			| 
				582
			 | 
			
				583
			 | 
			
			
				
				 		if ( ! ( bios & XHCI_USBLEGSUP_BIOS_OWNED ) ) { 
			 | 
		
		
	
		
			
			| 
				583
			 | 
			
				
			 | 
			
			
				
				-			DBGC ( xhci, "XHCI %p claimed ownership from BIOS\n", 
			 | 
		
		
	
		
			
			| 
				584
			 | 
			
				
			 | 
			
			
				
				-			       xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				584
			 | 
			
			
				
				+			DBGC ( xhci, "XHCI %s claimed ownership from BIOS\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				585
			 | 
			
			
				
				+			       xhci->name ); 
			 | 
		
		
	
		
			
			| 
				585
			 | 
			
				586
			 | 
			
			
				
				 			ctlsts = readl ( xhci->cap + xhci->legacy + 
			 | 
		
		
	
		
			
			| 
				586
			 | 
			
				587
			 | 
			
			
				
				 					 XHCI_USBLEGSUP_CTLSTS ); 
			 | 
		
		
	
		
			
			| 
				587
			 | 
			
				588
			 | 
			
			
				
				 			if ( ctlsts ) { 
			 | 
		
		
	
		
			
			| 
				588
			 | 
			
				
			 | 
			
			
				
				-				DBGC ( xhci, "XHCI %p warning: BIOS retained " 
			 | 
		
		
	
		
			
			| 
				589
			 | 
			
				
			 | 
			
			
				
				-				       "SMIs: %08x\n", xhci, ctlsts ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				589
			 | 
			
			
				
				+				DBGC ( xhci, "XHCI %s warning: BIOS retained " 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				590
			 | 
			
			
				
				+				       "SMIs: %08x\n", xhci->name, ctlsts ); 
			 | 
		
		
	
		
			
			| 
				590
			 | 
			
				591
			 | 
			
			
				
				 			} 
			 | 
		
		
	
		
			
			| 
				591
			 | 
			
				592
			 | 
			
			
				
				 			return; 
			 | 
		
		
	
		
			
			| 
				592
			 | 
			
				593
			 | 
			
			
				
				 		} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -598,8 +599,8 @@ static void xhci_legacy_claim ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				598
			 | 
			
				599
			 | 
			
			
				
				 	/* BIOS did not release ownership.  Claim it forcibly by 
			 | 
		
		
	
		
			
			| 
				599
			 | 
			
				600
			 | 
			
			
				
				 	 * disabling all SMIs. 
			 | 
		
		
	
		
			
			| 
				600
			 | 
			
				601
			 | 
			
			
				
				 	 */ 
			 | 
		
		
	
		
			
			| 
				601
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p could not claim ownership from BIOS: forcibly " 
			 | 
		
		
	
		
			
			| 
				602
			 | 
			
				
			 | 
			
			
				
				-	       "disabling SMIs\n", xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				602
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s could not claim ownership from BIOS: forcibly " 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				603
			 | 
			
			
				
				+	       "disabling SMIs\n", xhci->name ); 
			 | 
		
		
	
		
			
			| 
				603
			 | 
			
				604
			 | 
			
			
				
				 	writel ( 0, xhci->cap + xhci->legacy + XHCI_USBLEGSUP_CTLSTS ); 
			 | 
		
		
	
		
			
			| 
				604
			 | 
			
				605
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				605
			 | 
			
				606
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -616,13 +617,14 @@ static void xhci_legacy_release ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				616
			 | 
			
				617
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				617
			 | 
			
				618
			 | 
			
			
				
				 	/* Do nothing if releasing ownership is prevented */ 
			 | 
		
		
	
		
			
			| 
				618
			 | 
			
				619
			 | 
			
			
				
				 	if ( xhci_legacy_prevent_release ) { 
			 | 
		
		
	
		
			
			| 
				619
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p not releasing ownership to BIOS\n", xhci); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				620
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s not releasing ownership to BIOS\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				621
			 | 
			
			
				
				+		       xhci->name ); 
			 | 
		
		
	
		
			
			| 
				620
			 | 
			
				622
			 | 
			
			
				
				 		return; 
			 | 
		
		
	
		
			
			| 
				621
			 | 
			
				623
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				622
			 | 
			
				624
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				623
			 | 
			
				625
			 | 
			
			
				
				 	/* Release ownership */ 
			 | 
		
		
	
		
			
			| 
				624
			 | 
			
				626
			 | 
			
			
				
				 	writeb ( 0, xhci->cap + xhci->legacy + XHCI_USBLEGSUP_OS ); 
			 | 
		
		
	
		
			
			| 
				625
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p released ownership to BIOS\n", xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				627
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s released ownership to BIOS\n", xhci->name ); 
			 | 
		
		
	
		
			
			| 
				626
			 | 
			
				628
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				627
			 | 
			
				629
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				628
			 | 
			
				630
			 | 
			
			
				
				 /****************************************************************************** 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -683,8 +685,8 @@ static unsigned int xhci_supported_protocol ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				683
			 | 
			
				685
			 | 
			
			
				
				 			return supported; 
			 | 
		
		
	
		
			
			| 
				684
			 | 
			
				686
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				685
			 | 
			
				687
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				686
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p port %d has no supported protocol\n", 
			 | 
		
		
	
		
			
			| 
				687
			 | 
			
				
			 | 
			
			
				
				-	       xhci, port ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				688
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s-%d has no supported protocol\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				689
			 | 
			
			
				
				+	       xhci->name, port ); 
			 | 
		
		
	
		
			
			| 
				688
			 | 
			
				690
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				689
			 | 
			
				691
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				690
			 | 
			
				692
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -727,8 +729,8 @@ static unsigned int xhci_port_protocol ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				727
			 | 
			
				729
			 | 
			
			
				
				 		name.text[4] = '\0'; 
			 | 
		
		
	
		
			
			| 
				728
			 | 
			
				730
			 | 
			
			
				
				 		slot = readl ( xhci->cap + supported + XHCI_SUPPORTED_SLOT ); 
			 | 
		
		
	
		
			
			| 
				729
			 | 
			
				731
			 | 
			
			
				
				 		type = XHCI_SUPPORTED_SLOT_TYPE ( slot ); 
			 | 
		
		
	
		
			
			| 
				730
			 | 
			
				
			 | 
			
			
				
				-		DBGC2 ( xhci, "XHCI %p port %d %sv%04x type %d", 
			 | 
		
		
	
		
			
			| 
				731
			 | 
			
				
			 | 
			
			
				
				-			xhci, port, name.text, protocol, type ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				732
			 | 
			
			
				
				+		DBGC2 ( xhci, "XHCI %s-%d %sv%04x type %d", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				733
			 | 
			
			
				
				+			xhci->name, port, name.text, protocol, type ); 
			 | 
		
		
	
		
			
			| 
				732
			 | 
			
				734
			 | 
			
			
				
				 		ports = readl ( xhci->cap + supported + XHCI_SUPPORTED_PORTS ); 
			 | 
		
		
	
		
			
			| 
				733
			 | 
			
				735
			 | 
			
			
				
				 		psic = XHCI_SUPPORTED_PORTS_PSIC ( ports ); 
			 | 
		
		
	
		
			
			| 
				734
			 | 
			
				736
			 | 
			
			
				
				 		if ( psic ) { 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -805,8 +807,8 @@ static int xhci_port_speed ( struct xhci_device *xhci, unsigned int port, 
			 | 
		
		
	
		
			
			| 
				805
			 | 
			
				807
			 | 
			
			
				
				 		case XHCI_SPEED_HIGH :	return USB_SPEED_HIGH; 
			 | 
		
		
	
		
			
			| 
				806
			 | 
			
				808
			 | 
			
			
				
				 		case XHCI_SPEED_SUPER :	return USB_SPEED_SUPER; 
			 | 
		
		
	
		
			
			| 
				807
			 | 
			
				809
			 | 
			
			
				
				 		default: 
			 | 
		
		
	
		
			
			| 
				808
			 | 
			
				
			 | 
			
			
				
				-			DBGC ( xhci, "XHCI %p port %d non-standard PSI value " 
			 | 
		
		
	
		
			
			| 
				809
			 | 
			
				
			 | 
			
			
				
				-			       "%d\n", xhci, port, psiv ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				810
			 | 
			
			
				
				+			DBGC ( xhci, "XHCI %s-%d non-standard PSI value %d\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				811
			 | 
			
			
				
				+			       xhci->name, port, psiv ); 
			 | 
		
		
	
		
			
			| 
				810
			 | 
			
				812
			 | 
			
			
				
				 			return -ENOTSUP; 
			 | 
		
		
	
		
			
			| 
				811
			 | 
			
				813
			 | 
			
			
				
				 		} 
			 | 
		
		
	
		
			
			| 
				812
			 | 
			
				814
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -822,8 +824,8 @@ static int xhci_port_speed ( struct xhci_device *xhci, unsigned int port, 
			 | 
		
		
	
		
			
			| 
				822
			 | 
			
				824
			 | 
			
			
				
				 		} 
			 | 
		
		
	
		
			
			| 
				823
			 | 
			
				825
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				824
			 | 
			
				826
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				825
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p port %d spurious PSI value %d\n", 
			 | 
		
		
	
		
			
			| 
				826
			 | 
			
				
			 | 
			
			
				
				-	       xhci, port, psiv ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				827
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s-%d spurious PSI value %d\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				828
			 | 
			
			
				
				+	       xhci->name, port, psiv ); 
			 | 
		
		
	
		
			
			| 
				827
			 | 
			
				829
			 | 
			
			
				
				 	return -ENOENT; 
			 | 
		
		
	
		
			
			| 
				828
			 | 
			
				830
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				829
			 | 
			
				831
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -862,8 +864,8 @@ static int xhci_port_psiv ( struct xhci_device *xhci, unsigned int port, 
			 | 
		
		
	
		
			
			| 
				862
			 | 
			
				864
			 | 
			
			
				
				 		case USB_SPEED_HIGH :	return XHCI_SPEED_HIGH; 
			 | 
		
		
	
		
			
			| 
				863
			 | 
			
				865
			 | 
			
			
				
				 		case USB_SPEED_SUPER :	return XHCI_SPEED_SUPER; 
			 | 
		
		
	
		
			
			| 
				864
			 | 
			
				866
			 | 
			
			
				
				 		default: 
			 | 
		
		
	
		
			
			| 
				865
			 | 
			
				
			 | 
			
			
				
				-			DBGC ( xhci, "XHCI %p port %d non-standad speed %d\n", 
			 | 
		
		
	
		
			
			| 
				866
			 | 
			
				
			 | 
			
			
				
				-			       xhci, port, speed ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				867
			 | 
			
			
				
				+			DBGC ( xhci, "XHCI %s-%d non-standad speed %d\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				868
			 | 
			
			
				
				+			       xhci->name, port, speed ); 
			 | 
		
		
	
		
			
			| 
				867
			 | 
			
				869
			 | 
			
			
				
				 			return -ENOTSUP; 
			 | 
		
		
	
		
			
			| 
				868
			 | 
			
				870
			 | 
			
			
				
				 		} 
			 | 
		
		
	
		
			
			| 
				869
			 | 
			
				871
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -879,8 +881,8 @@ static int xhci_port_psiv ( struct xhci_device *xhci, unsigned int port, 
			 | 
		
		
	
		
			
			| 
				879
			 | 
			
				881
			 | 
			
			
				
				 		} 
			 | 
		
		
	
		
			
			| 
				880
			 | 
			
				882
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				881
			 | 
			
				883
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				882
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p port %d unrepresentable speed %#x\n", 
			 | 
		
		
	
		
			
			| 
				883
			 | 
			
				
			 | 
			
			
				
				-	       xhci, port, speed ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				884
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s-%d unrepresentable speed %#x\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				885
			 | 
			
			
				
				+	       xhci->name, port, speed ); 
			 | 
		
		
	
		
			
			| 
				884
			 | 
			
				886
			 | 
			
			
				
				 	return -ENOENT; 
			 | 
		
		
	
		
			
			| 
				885
			 | 
			
				887
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				886
			 | 
			
				888
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -910,7 +912,7 @@ static int xhci_dcbaa_alloc ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				910
			 | 
			
				912
			 | 
			
			
				
				 	len = ( ( xhci->slots + 1 ) * sizeof ( xhci->dcbaa[0] ) ); 
			 | 
		
		
	
		
			
			| 
				911
			 | 
			
				913
			 | 
			
			
				
				 	xhci->dcbaa = malloc_dma ( len, xhci_align ( len ) ); 
			 | 
		
		
	
		
			
			| 
				912
			 | 
			
				914
			 | 
			
			
				
				 	if ( ! xhci->dcbaa ) { 
			 | 
		
		
	
		
			
			| 
				913
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p could not allocate DCBAA\n", xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				915
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s could not allocate DCBAA\n", xhci->name ); 
			 | 
		
		
	
		
			
			| 
				914
			 | 
			
				916
			 | 
			
			
				
				 		rc = -ENOMEM; 
			 | 
		
		
	
		
			
			| 
				915
			 | 
			
				917
			 | 
			
			
				
				 		goto err_alloc; 
			 | 
		
		
	
		
			
			| 
				916
			 | 
			
				918
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -922,8 +924,8 @@ static int xhci_dcbaa_alloc ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				922
			 | 
			
				924
			 | 
			
			
				
				 				  xhci->op + XHCI_OP_DCBAAP ) ) != 0 ) 
			 | 
		
		
	
		
			
			| 
				923
			 | 
			
				925
			 | 
			
			
				
				 		goto err_writeq; 
			 | 
		
		
	
		
			
			| 
				924
			 | 
			
				926
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				925
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p DCBAA at [%08lx,%08lx)\n", 
			 | 
		
		
	
		
			
			| 
				926
			 | 
			
				
			 | 
			
			
				
				-		xhci, dcbaap, ( dcbaap + len ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				927
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s DCBAA at [%08lx,%08lx)\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				928
			 | 
			
			
				
				+		xhci->name, dcbaap, ( dcbaap + len ) ); 
			 | 
		
		
	
		
			
			| 
				927
			 | 
			
				929
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				928
			 | 
			
				930
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				929
			 | 
			
				931
			 | 
			
			
				
				  err_writeq: 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -981,8 +983,8 @@ static int xhci_scratchpad_alloc ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				981
			 | 
			
				983
			 | 
			
			
				
				 	len = ( xhci->scratchpads * xhci->pagesize ); 
			 | 
		
		
	
		
			
			| 
				982
			 | 
			
				984
			 | 
			
			
				
				 	xhci->scratchpad = umalloc ( len ); 
			 | 
		
		
	
		
			
			| 
				983
			 | 
			
				985
			 | 
			
			
				
				 	if ( ! xhci->scratchpad ) { 
			 | 
		
		
	
		
			
			| 
				984
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p could not allocate scratchpad buffers\n", 
			 | 
		
		
	
		
			
			| 
				985
			 | 
			
				
			 | 
			
			
				
				-		       xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				986
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s could not allocate scratchpad buffers\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				987
			 | 
			
			
				
				+		       xhci->name ); 
			 | 
		
		
	
		
			
			| 
				986
			 | 
			
				988
			 | 
			
			
				
				 		rc = -ENOMEM; 
			 | 
		
		
	
		
			
			| 
				987
			 | 
			
				989
			 | 
			
			
				
				 		goto err_alloc; 
			 | 
		
		
	
		
			
			| 
				988
			 | 
			
				990
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -993,8 +995,8 @@ static int xhci_scratchpad_alloc ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				993
			 | 
			
				995
			 | 
			
			
				
				 	xhci->scratchpad_array = 
			 | 
		
		
	
		
			
			| 
				994
			 | 
			
				996
			 | 
			
			
				
				 		malloc_dma ( array_len, xhci_align ( array_len ) ); 
			 | 
		
		
	
		
			
			| 
				995
			 | 
			
				997
			 | 
			
			
				
				 	if ( ! xhci->scratchpad_array ) { 
			 | 
		
		
	
		
			
			| 
				996
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p could not allocate scratchpad buffer " 
			 | 
		
		
	
		
			
			| 
				997
			 | 
			
				
			 | 
			
			
				
				-		       "array\n", xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				998
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s could not allocate scratchpad buffer " 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				999
			 | 
			
			
				
				+		       "array\n", xhci->name ); 
			 | 
		
		
	
		
			
			| 
				998
			 | 
			
				1000
			 | 
			
			
				
				 		rc = -ENOMEM; 
			 | 
		
		
	
		
			
			| 
				999
			 | 
			
				1001
			 | 
			
			
				
				 		goto err_alloc_array; 
			 | 
		
		
	
		
			
			| 
				1000
			 | 
			
				1002
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1009,8 +1011,8 @@ static int xhci_scratchpad_alloc ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				1009
			 | 
			
				1011
			 | 
			
			
				
				 	assert ( xhci->dcbaa != NULL ); 
			 | 
		
		
	
		
			
			| 
				1010
			 | 
			
				1012
			 | 
			
			
				
				 	xhci->dcbaa[0] = cpu_to_le64 ( virt_to_phys ( xhci->scratchpad_array )); 
			 | 
		
		
	
		
			
			| 
				1011
			 | 
			
				1013
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1012
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p scratchpad [%08lx,%08lx) array [%08lx,%08lx)\n", 
			 | 
		
		
	
		
			
			| 
				1013
			 | 
			
				
			 | 
			
			
				
				-		xhci, user_to_phys ( xhci->scratchpad, 0 ), 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1014
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s scratchpad [%08lx,%08lx) array [%08lx,%08lx)\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1015
			 | 
			
			
				
				+		xhci->name, user_to_phys ( xhci->scratchpad, 0 ), 
			 | 
		
		
	
		
			
			| 
				1014
			 | 
			
				1016
			 | 
			
			
				
				 		user_to_phys ( xhci->scratchpad, len ), 
			 | 
		
		
	
		
			
			| 
				1015
			 | 
			
				1017
			 | 
			
			
				
				 		virt_to_phys ( xhci->scratchpad_array ), 
			 | 
		
		
	
		
			
			| 
				1016
			 | 
			
				1018
			 | 
			
			
				
				 		( virt_to_phys ( xhci->scratchpad_array ) + array_len ) ); 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1103,7 +1105,7 @@ static int xhci_stop ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				1103
			 | 
			
				1105
			 | 
			
			
				
				 		mdelay ( 1 ); 
			 | 
		
		
	
		
			
			| 
				1104
			 | 
			
				1106
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				1105
			 | 
			
				1107
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1106
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p timed out waiting for stop\n", xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1108
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s timed out waiting for stop\n", xhci->name ); 
			 | 
		
		
	
		
			
			| 
				1107
			 | 
			
				1109
			 | 
			
			
				
				 	return -ETIMEDOUT; 
			 | 
		
		
	
		
			
			| 
				1108
			 | 
			
				1110
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				1109
			 | 
			
				1111
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1141,7 +1143,7 @@ static int xhci_reset ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				1141
			 | 
			
				1143
			 | 
			
			
				
				 		mdelay ( 1 ); 
			 | 
		
		
	
		
			
			| 
				1142
			 | 
			
				1144
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				1143
			 | 
			
				1145
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1144
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p timed out waiting for reset\n", xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1146
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s timed out waiting for reset\n", xhci->name ); 
			 | 
		
		
	
		
			
			| 
				1145
			 | 
			
				1147
			 | 
			
			
				
				 	return -ETIMEDOUT; 
			 | 
		
		
	
		
			
			| 
				1146
			 | 
			
				1148
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				1147
			 | 
			
				1149
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1416,8 +1418,8 @@ static int xhci_command_alloc ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				1416
			 | 
			
				1418
			 | 
			
			
				
				 				  xhci->op + XHCI_OP_CRCR ) ) != 0 ) 
			 | 
		
		
	
		
			
			| 
				1417
			 | 
			
				1419
			 | 
			
			
				
				 		goto err_writeq; 
			 | 
		
		
	
		
			
			| 
				1418
			 | 
			
				1420
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1419
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p CRCR at [%08lx,%08lx)\n", 
			 | 
		
		
	
		
			
			| 
				1420
			 | 
			
				
			 | 
			
			
				
				-		xhci, crp, ( crp + xhci->command.len ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1421
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s CRCR at [%08lx,%08lx)\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1422
			 | 
			
			
				
				+		xhci->name, crp, ( crp + xhci->command.len ) ); 
			 | 
		
		
	
		
			
			| 
				1421
			 | 
			
				1423
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				1422
			 | 
			
				1424
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1423
			 | 
			
				1425
			 | 
			
			
				
				  err_writeq: 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1485,8 +1487,8 @@ static int xhci_event_alloc ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				1485
			 | 
			
				1487
			 | 
			
			
				
				 				  xhci->run + XHCI_RUN_ERSTBA ( 0 ) ) ) != 0 ) 
			 | 
		
		
	
		
			
			| 
				1486
			 | 
			
				1488
			 | 
			
			
				
				 		goto err_writeq_erstba; 
			 | 
		
		
	
		
			
			| 
				1487
			 | 
			
				1489
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1488
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p event ring [%08lx,%08lx) table [%08lx,%08lx)\n", 
			 | 
		
		
	
		
			
			| 
				1489
			 | 
			
				
			 | 
			
			
				
				-		xhci, virt_to_phys ( event->trb ), 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1490
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s event ring [%08lx,%08lx) table [%08lx,%08lx)\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1491
			 | 
			
			
				
				+		xhci->name, virt_to_phys ( event->trb ), 
			 | 
		
		
	
		
			
			| 
				1490
			 | 
			
				1492
			 | 
			
			
				
				 		( virt_to_phys ( event->trb ) + len ), 
			 | 
		
		
	
		
			
			| 
				1491
			 | 
			
				1493
			 | 
			
			
				
				 		virt_to_phys ( event->segment ), 
			 | 
		
		
	
		
			
			| 
				1492
			 | 
			
				1494
			 | 
			
			
				
				 		( virt_to_phys ( event->segment ) + 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1547,8 +1549,8 @@ static void xhci_transfer ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				1547
			 | 
			
				1549
			 | 
			
			
				
				 	/* Identify slot */ 
			 | 
		
		
	
		
			
			| 
				1548
			 | 
			
				1550
			 | 
			
			
				
				 	if ( ( trb->slot > xhci->slots ) || 
			 | 
		
		
	
		
			
			| 
				1549
			 | 
			
				1551
			 | 
			
			
				
				 	     ( ( slot = xhci->slot[trb->slot] ) == NULL ) ) { 
			 | 
		
		
	
		
			
			| 
				1550
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p transfer event invalid slot %d:\n", 
			 | 
		
		
	
		
			
			| 
				1551
			 | 
			
				
			 | 
			
			
				
				-		       xhci, trb->slot ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1552
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s transfer event invalid slot %d:\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1553
			 | 
			
			
				
				+		       xhci->name, trb->slot ); 
			 | 
		
		
	
		
			
			| 
				1552
			 | 
			
				1554
			 | 
			
			
				
				 		DBGC_HDA ( xhci, 0, trb, sizeof ( *trb ) ); 
			 | 
		
		
	
		
			
			| 
				1553
			 | 
			
				1555
			 | 
			
			
				
				 		return; 
			 | 
		
		
	
		
			
			| 
				1554
			 | 
			
				1556
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1556,8 +1558,8 @@ static void xhci_transfer ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				1556
			 | 
			
				1558
			 | 
			
			
				
				 	/* Identify endpoint */ 
			 | 
		
		
	
		
			
			| 
				1557
			 | 
			
				1559
			 | 
			
			
				
				 	if ( ( trb->endpoint > XHCI_CTX_END ) || 
			 | 
		
		
	
		
			
			| 
				1558
			 | 
			
				1560
			 | 
			
			
				
				 	     ( ( endpoint = slot->endpoint[trb->endpoint] ) == NULL ) ) { 
			 | 
		
		
	
		
			
			| 
				1559
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p slot %d transfer event invalid epid " 
			 | 
		
		
	
		
			
			| 
				1560
			 | 
			
				
			 | 
			
			
				
				-		       "%d:\n", xhci, slot->id, trb->endpoint ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1561
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s slot %d transfer event invalid epid " 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1562
			 | 
			
			
				
				+		       "%d:\n", xhci->name, slot->id, trb->endpoint ); 
			 | 
		
		
	
		
			
			| 
				1561
			 | 
			
				1563
			 | 
			
			
				
				 		DBGC_HDA ( xhci, 0, trb, sizeof ( *trb ) ); 
			 | 
		
		
	
		
			
			| 
				1562
			 | 
			
				1564
			 | 
			
			
				
				 		return; 
			 | 
		
		
	
		
			
			| 
				1563
			 | 
			
				1565
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1572,8 +1574,8 @@ static void xhci_transfer ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				1572
			 | 
			
				1574
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1573
			 | 
			
				1575
			 | 
			
			
				
				 		/* Construct error */ 
			 | 
		
		
	
		
			
			| 
				1574
			 | 
			
				1576
			 | 
			
			
				
				 		rc = -ECODE ( trb->code ); 
			 | 
		
		
	
		
			
			| 
				1575
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p slot %d ctx %d failed (code %d): %s\n", 
			 | 
		
		
	
		
			
			| 
				1576
			 | 
			
				
			 | 
			
			
				
				-		       xhci, slot->id, endpoint->ctx, trb->code, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1577
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s slot %d ctx %d failed (code %d): %s\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1578
			 | 
			
			
				
				+		       xhci->name, slot->id, endpoint->ctx, trb->code, 
			 | 
		
		
	
		
			
			| 
				1577
			 | 
			
				1579
			 | 
			
			
				
				 		       strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				1578
			 | 
			
				1580
			 | 
			
			
				
				 		DBGC_HDA ( xhci, 0, trb, sizeof ( *trb ) ); 
			 | 
		
		
	
		
			
			| 
				1579
			 | 
			
				1581
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1610,15 +1612,15 @@ static void xhci_complete ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				1610
			 | 
			
				1612
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1611
			 | 
			
				1613
			 | 
			
			
				
				 	/* Ignore "command ring stopped" notifications */ 
			 | 
		
		
	
		
			
			| 
				1612
			 | 
			
				1614
			 | 
			
			
				
				 	if ( trb->code == XHCI_CMPLT_CMD_STOPPED ) { 
			 | 
		
		
	
		
			
			| 
				1613
			 | 
			
				
			 | 
			
			
				
				-		DBGC2 ( xhci, "XHCI %p command ring stopped\n", xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1615
			 | 
			
			
				
				+		DBGC2 ( xhci, "XHCI %s command ring stopped\n", xhci->name ); 
			 | 
		
		
	
		
			
			| 
				1614
			 | 
			
				1616
			 | 
			
			
				
				 		return; 
			 | 
		
		
	
		
			
			| 
				1615
			 | 
			
				1617
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				1616
			 | 
			
				1618
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1617
			 | 
			
				1619
			 | 
			
			
				
				 	/* Ignore unexpected completions */ 
			 | 
		
		
	
		
			
			| 
				1618
			 | 
			
				1620
			 | 
			
			
				
				 	if ( ! xhci->pending ) { 
			 | 
		
		
	
		
			
			| 
				1619
			 | 
			
				1621
			 | 
			
			
				
				 		rc = -ECODE ( trb->code ); 
			 | 
		
		
	
		
			
			| 
				1620
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p unexpected completion (code %d): %s\n", 
			 | 
		
		
	
		
			
			| 
				1621
			 | 
			
				
			 | 
			
			
				
				-		       xhci, trb->code, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1622
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s unexpected completion (code %d): %s\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1623
			 | 
			
			
				
				+		       xhci->name, trb->code, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				1622
			 | 
			
				1624
			 | 
			
			
				
				 		DBGC_HDA ( xhci, 0, trb, sizeof ( *trb ) ); 
			 | 
		
		
	
		
			
			| 
				1623
			 | 
			
				1625
			 | 
			
			
				
				 		return; 
			 | 
		
		
	
		
			
			| 
				1624
			 | 
			
				1626
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1671,8 +1673,8 @@ static void xhci_host_controller ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				1671
			 | 
			
				1673
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1672
			 | 
			
				1674
			 | 
			
			
				
				 	/* Construct error */ 
			 | 
		
		
	
		
			
			| 
				1673
			 | 
			
				1675
			 | 
			
			
				
				 	rc = -ECODE ( trb->code ); 
			 | 
		
		
	
		
			
			| 
				1674
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p host controller event (code %d): %s\n", 
			 | 
		
		
	
		
			
			| 
				1675
			 | 
			
				
			 | 
			
			
				
				-	       xhci, trb->code, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1676
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s host controller event (code %d): %s\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1677
			 | 
			
			
				
				+	       xhci->name, trb->code, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				1676
			 | 
			
				1678
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				1677
			 | 
			
				1679
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1678
			 | 
			
				1680
			 | 
			
			
				
				 /** 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1721,8 +1723,8 @@ static void xhci_event_poll ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				1721
			 | 
			
				1723
			 | 
			
			
				
				 			break; 
			 | 
		
		
	
		
			
			| 
				1722
			 | 
			
				1724
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1723
			 | 
			
				1725
			 | 
			
			
				
				 		default: 
			 | 
		
		
	
		
			
			| 
				1724
			 | 
			
				
			 | 
			
			
				
				-			DBGC ( xhci, "XHCI %p unrecognised event %#x\n:", 
			 | 
		
		
	
		
			
			| 
				1725
			 | 
			
				
			 | 
			
			
				
				-			       xhci, event->cons ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1726
			 | 
			
			
				
				+			DBGC ( xhci, "XHCI %s unrecognised event %#x\n:", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1727
			 | 
			
			
				
				+			       xhci->name, event->cons ); 
			 | 
		
		
	
		
			
			| 
				1726
			 | 
			
				1728
			 | 
			
			
				
				 			DBGC_HDA ( xhci, virt_to_phys ( trb ), 
			 | 
		
		
	
		
			
			| 
				1727
			 | 
			
				1729
			 | 
			
			
				
				 				   trb, sizeof ( *trb ) ); 
			 | 
		
		
	
		
			
			| 
				1728
			 | 
			
				1730
			 | 
			
			
				
				 			break; 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1749,7 +1751,7 @@ static void xhci_abort ( struct xhci_device *xhci ) { 
			 | 
		
		
	
		
			
			| 
				1749
			 | 
			
				1751
			 | 
			
			
				
				 	physaddr_t crp; 
			 | 
		
		
	
		
			
			| 
				1750
			 | 
			
				1752
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1751
			 | 
			
				1753
			 | 
			
			
				
				 	/* Abort the command */ 
			 | 
		
		
	
		
			
			| 
				1752
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p aborting command\n", xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1754
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s aborting command\n", xhci->name ); 
			 | 
		
		
	
		
			
			| 
				1753
			 | 
			
				1755
			 | 
			
			
				
				 	xhci_writeq ( xhci, XHCI_CRCR_CA, xhci->op + XHCI_OP_CRCR ); 
			 | 
		
		
	
		
			
			| 
				1754
			 | 
			
				1756
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1755
			 | 
			
				1757
			 | 
			
			
				
				 	/* Allow time for command to abort */ 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1802,8 +1804,8 @@ static int xhci_command ( struct xhci_device *xhci, union xhci_trb *trb ) { 
			 | 
		
		
	
		
			
			| 
				1802
			 | 
			
				1804
			 | 
			
			
				
				 		if ( ! xhci->pending ) { 
			 | 
		
		
	
		
			
			| 
				1803
			 | 
			
				1805
			 | 
			
			
				
				 			if ( complete->code != XHCI_CMPLT_SUCCESS ) { 
			 | 
		
		
	
		
			
			| 
				1804
			 | 
			
				1806
			 | 
			
			
				
				 				rc = -ECODE ( complete->code ); 
			 | 
		
		
	
		
			
			| 
				1805
			 | 
			
				
			 | 
			
			
				
				-				DBGC ( xhci, "XHCI %p command failed (code " 
			 | 
		
		
	
		
			
			| 
				1806
			 | 
			
				
			 | 
			
			
				
				-				       "%d): %s\n", xhci, complete->code, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1807
			 | 
			
			
				
				+				DBGC ( xhci, "XHCI %s command failed (code " 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1808
			 | 
			
			
				
				+				       "%d): %s\n", xhci->name, complete->code, 
			 | 
		
		
	
		
			
			| 
				1807
			 | 
			
				1809
			 | 
			
			
				
				 				       strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				1808
			 | 
			
				1810
			 | 
			
			
				
				 				DBGC_HDA ( xhci, 0, trb, sizeof ( *trb ) ); 
			 | 
		
		
	
		
			
			| 
				1809
			 | 
			
				1811
			 | 
			
			
				
				 				return rc; 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1816,7 +1818,7 @@ static int xhci_command ( struct xhci_device *xhci, union xhci_trb *trb ) { 
			 | 
		
		
	
		
			
			| 
				1816
			 | 
			
				1818
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				1817
			 | 
			
				1819
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1818
			 | 
			
				1820
			 | 
			
			
				
				 	/* Timeout */ 
			 | 
		
		
	
		
			
			| 
				1819
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p timed out waiting for completion\n", xhci ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1821
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s timed out waiting for completion\n", xhci->name ); 
			 | 
		
		
	
		
			
			| 
				1820
			 | 
			
				1822
			 | 
			
			
				
				 	rc = -ETIMEDOUT; 
			 | 
		
		
	
		
			
			| 
				1821
			 | 
			
				1823
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1822
			 | 
			
				1824
			 | 
			
			
				
				 	/* Abort command */ 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1872,15 +1874,15 @@ static inline int xhci_enable_slot ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				1872
			 | 
			
				1874
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1873
			 | 
			
				1875
			 | 
			
			
				
				 	/* Issue command and wait for completion */ 
			 | 
		
		
	
		
			
			| 
				1874
			 | 
			
				1876
			 | 
			
			
				
				 	if ( ( rc = xhci_command ( xhci, &trb ) ) != 0 ) { 
			 | 
		
		
	
		
			
			| 
				1875
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p could not enable new slot: %s\n", 
			 | 
		
		
	
		
			
			| 
				1876
			 | 
			
				
			 | 
			
			
				
				-		       xhci, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1877
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s could not enable new slot: %s\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1878
			 | 
			
			
				
				+		       xhci->name, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				1877
			 | 
			
				1879
			 | 
			
			
				
				 		return rc; 
			 | 
		
		
	
		
			
			| 
				1878
			 | 
			
				1880
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				1879
			 | 
			
				1881
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1880
			 | 
			
				1882
			 | 
			
			
				
				 	/* Extract slot number */ 
			 | 
		
		
	
		
			
			| 
				1881
			 | 
			
				1883
			 | 
			
			
				
				 	slot = enabled->slot; 
			 | 
		
		
	
		
			
			| 
				1882
			 | 
			
				1884
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1883
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p slot %d enabled\n", xhci, slot ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1885
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s slot %d enabled\n", xhci->name, slot ); 
			 | 
		
		
	
		
			
			| 
				1884
			 | 
			
				1886
			 | 
			
			
				
				 	return slot; 
			 | 
		
		
	
		
			
			| 
				1885
			 | 
			
				1887
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				1886
			 | 
			
				1888
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -1904,12 +1906,12 @@ static inline int xhci_disable_slot ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				1904
			 | 
			
				1906
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1905
			 | 
			
				1907
			 | 
			
			
				
				 	/* Issue command and wait for completion */ 
			 | 
		
		
	
		
			
			| 
				1906
			 | 
			
				1908
			 | 
			
			
				
				 	if ( ( rc = xhci_command ( xhci, &trb ) ) != 0 ) { 
			 | 
		
		
	
		
			
			| 
				1907
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p could not disable slot %d: %s\n", 
			 | 
		
		
	
		
			
			| 
				1908
			 | 
			
				
			 | 
			
			
				
				-		       xhci, slot, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1909
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s could not disable slot %d: %s\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1910
			 | 
			
			
				
				+		       xhci->name, slot, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				1909
			 | 
			
				1911
			 | 
			
			
				
				 		return rc; 
			 | 
		
		
	
		
			
			| 
				1910
			 | 
			
				1912
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				1911
			 | 
			
				1913
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				1912
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p slot %d disabled\n", xhci, slot ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				1914
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s slot %d disabled\n", xhci->name, slot ); 
			 | 
		
		
	
		
			
			| 
				1913
			 | 
			
				1915
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				1914
			 | 
			
				1916
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				1915
			 | 
			
				1917
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2028,8 +2030,8 @@ static inline int xhci_address_device ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				2028
			 | 
			
				2030
			 | 
			
			
				
				 	slot_ctx = ( slot->context + 
			 | 
		
		
	
		
			
			| 
				2029
			 | 
			
				2031
			 | 
			
			
				
				 		     xhci_device_context_offset ( xhci, XHCI_CTX_SLOT ) ); 
			 | 
		
		
	
		
			
			| 
				2030
			 | 
			
				2032
			 | 
			
			
				
				 	usb->address = slot_ctx->address; 
			 | 
		
		
	
		
			
			| 
				2031
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p assigned address %d to %s\n", 
			 | 
		
		
	
		
			
			| 
				2032
			 | 
			
				
			 | 
			
			
				
				-		xhci, usb->address, usb->name ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2033
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s assigned address %d to %s\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2034
			 | 
			
			
				
				+		xhci->name, usb->address, usb->name ); 
			 | 
		
		
	
		
			
			| 
				2033
			 | 
			
				2035
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2034
			 | 
			
				2036
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				2035
			 | 
			
				2037
			 | 
			
			
				
				 } 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2092,8 +2094,8 @@ static inline int xhci_configure_endpoint ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				2092
			 | 
			
				2094
			 | 
			
			
				
				 				   xhci_configure_endpoint_input ) ) != 0 ) 
			 | 
		
		
	
		
			
			| 
				2093
			 | 
			
				2095
			 | 
			
			
				
				 		return rc; 
			 | 
		
		
	
		
			
			| 
				2094
			 | 
			
				2096
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2095
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p slot %d ctx %d configured\n", 
			 | 
		
		
	
		
			
			| 
				2096
			 | 
			
				
			 | 
			
			
				
				-		xhci, slot->id, endpoint->ctx ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2097
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s slot %d ctx %d configured\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2098
			 | 
			
			
				
				+		xhci->name, slot->id, endpoint->ctx ); 
			 | 
		
		
	
		
			
			| 
				2097
			 | 
			
				2099
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				2098
			 | 
			
				2100
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				2099
			 | 
			
				2101
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2143,8 +2145,8 @@ static inline int xhci_deconfigure_endpoint ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				2143
			 | 
			
				2145
			 | 
			
			
				
				 				   xhci_deconfigure_endpoint_input ) ) != 0 ) 
			 | 
		
		
	
		
			
			| 
				2144
			 | 
			
				2146
			 | 
			
			
				
				 		return rc; 
			 | 
		
		
	
		
			
			| 
				2145
			 | 
			
				2147
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2146
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p slot %d ctx %d deconfigured\n", 
			 | 
		
		
	
		
			
			| 
				2147
			 | 
			
				
			 | 
			
			
				
				-		xhci, slot->id, endpoint->ctx ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2148
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s slot %d ctx %d deconfigured\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2149
			 | 
			
			
				
				+		xhci->name, slot->id, endpoint->ctx ); 
			 | 
		
		
	
		
			
			| 
				2148
			 | 
			
				2150
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				2149
			 | 
			
				2151
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				2150
			 | 
			
				2152
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2198,8 +2200,8 @@ static inline int xhci_evaluate_context ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				2198
			 | 
			
				2200
			 | 
			
			
				
				 				   xhci_evaluate_context_input ) ) != 0 ) 
			 | 
		
		
	
		
			
			| 
				2199
			 | 
			
				2201
			 | 
			
			
				
				 		return rc; 
			 | 
		
		
	
		
			
			| 
				2200
			 | 
			
				2202
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2201
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p slot %d ctx %d (re-)evaluated\n", 
			 | 
		
		
	
		
			
			| 
				2202
			 | 
			
				
			 | 
			
			
				
				-		xhci, slot->id, endpoint->ctx ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2203
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s slot %d ctx %d (re-)evaluated\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2204
			 | 
			
			
				
				+		xhci->name, slot->id, endpoint->ctx ); 
			 | 
		
		
	
		
			
			| 
				2203
			 | 
			
				2205
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				2204
			 | 
			
				2206
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				2205
			 | 
			
				2207
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2226,8 +2228,8 @@ static inline int xhci_reset_endpoint ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				2226
			 | 
			
				2228
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2227
			 | 
			
				2229
			 | 
			
			
				
				 	/* Issue command and wait for completion */ 
			 | 
		
		
	
		
			
			| 
				2228
			 | 
			
				2230
			 | 
			
			
				
				 	if ( ( rc = xhci_command ( xhci, &trb ) ) != 0 ) { 
			 | 
		
		
	
		
			
			| 
				2229
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p slot %d ctx %d could not reset endpoint " 
			 | 
		
		
	
		
			
			| 
				2230
			 | 
			
				
			 | 
			
			
				
				-		       "in state %d: %s\n", xhci, slot->id, endpoint->ctx, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2231
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s slot %d ctx %d could not reset endpoint " 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2232
			 | 
			
			
				
				+		       "in state %d: %s\n", xhci->name, slot->id, endpoint->ctx, 
			 | 
		
		
	
		
			
			| 
				2231
			 | 
			
				2233
			 | 
			
			
				
				 		       endpoint->context->state, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				2232
			 | 
			
				2234
			 | 
			
			
				
				 		return rc; 
			 | 
		
		
	
		
			
			| 
				2233
			 | 
			
				2235
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2258,8 +2260,8 @@ static inline int xhci_stop_endpoint ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				2258
			 | 
			
				2260
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2259
			 | 
			
				2261
			 | 
			
			
				
				 	/* Issue command and wait for completion */ 
			 | 
		
		
	
		
			
			| 
				2260
			 | 
			
				2262
			 | 
			
			
				
				 	if ( ( rc = xhci_command ( xhci, &trb ) ) != 0 ) { 
			 | 
		
		
	
		
			
			| 
				2261
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p slot %d ctx %d could not stop endpoint " 
			 | 
		
		
	
		
			
			| 
				2262
			 | 
			
				
			 | 
			
			
				
				-		       "in state %d: %s\n", xhci, slot->id, endpoint->ctx, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2263
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s slot %d ctx %d could not stop endpoint " 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2264
			 | 
			
			
				
				+		       "in state %d: %s\n", xhci->name, slot->id, endpoint->ctx, 
			 | 
		
		
	
		
			
			| 
				2263
			 | 
			
				2265
			 | 
			
			
				
				 		       endpoint->context->state, strerror ( rc ) ); 
			 | 
		
		
	
		
			
			| 
				2264
			 | 
			
				2266
			 | 
			
			
				
				 		return rc; 
			 | 
		
		
	
		
			
			| 
				2265
			 | 
			
				2267
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2302,8 +2304,8 @@ xhci_set_tr_dequeue_pointer ( struct xhci_device *xhci, 
			 | 
		
		
	
		
			
			| 
				2302
			 | 
			
				2304
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2303
			 | 
			
				2305
			 | 
			
			
				
				 	/* Issue command and wait for completion */ 
			 | 
		
		
	
		
			
			| 
				2304
			 | 
			
				2306
			 | 
			
			
				
				 	if ( ( rc = xhci_command ( xhci, &trb ) ) != 0 ) { 
			 | 
		
		
	
		
			
			| 
				2305
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p slot %d ctx %d could not set TR dequeue " 
			 | 
		
		
	
		
			
			| 
				2306
			 | 
			
				
			 | 
			
			
				
				-		       "pointer in state %d: %s\n", xhci, slot->id, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2307
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s slot %d ctx %d could not set TR dequeue " 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2308
			 | 
			
			
				
				+		       "pointer in state %d: %s\n", xhci->name, slot->id, 
			 | 
		
		
	
		
			
			| 
				2307
			 | 
			
				2309
			 | 
			
			
				
				 		       endpoint->ctx, endpoint->context->state, strerror ( rc)); 
			 | 
		
		
	
		
			
			| 
				2308
			 | 
			
				2310
			 | 
			
			
				
				 		return rc; 
			 | 
		
		
	
		
			
			| 
				2309
			 | 
			
				2311
			 | 
			
			
				
				 	} 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2380,8 +2382,8 @@ static int xhci_endpoint_open ( struct usb_endpoint *ep ) { 
			 | 
		
		
	
		
			
			| 
				2380
			 | 
			
				2382
			 | 
			
			
				
				 	     ( ( rc = xhci_configure_endpoint ( xhci, slot, endpoint ) ) != 0 )) 
			 | 
		
		
	
		
			
			| 
				2381
			 | 
			
				2383
			 | 
			
			
				
				 		goto err_configure_endpoint; 
			 | 
		
		
	
		
			
			| 
				2382
			 | 
			
				2384
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2383
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p slot %d ctx %d ring [%08lx,%08lx)\n", 
			 | 
		
		
	
		
			
			| 
				2384
			 | 
			
				
			 | 
			
			
				
				-		xhci, slot->id, ctx, virt_to_phys ( endpoint->ring.trb ), 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2385
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s slot %d ctx %d ring [%08lx,%08lx)\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2386
			 | 
			
			
				
				+		xhci->name, slot->id, ctx, virt_to_phys ( endpoint->ring.trb ), 
			 | 
		
		
	
		
			
			| 
				2385
			 | 
			
				2387
			 | 
			
			
				
				 		( virt_to_phys ( endpoint->ring.trb ) + endpoint->ring.len ) ); 
			 | 
		
		
	
		
			
			| 
				2386
			 | 
			
				2388
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				2387
			 | 
			
				2389
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2446,8 +2448,8 @@ static int xhci_endpoint_reset ( struct usb_endpoint *ep ) { 
			 | 
		
		
	
		
			
			| 
				2446
			 | 
			
				2448
			 | 
			
			
				
				 	/* Ring doorbell to resume processing */ 
			 | 
		
		
	
		
			
			| 
				2447
			 | 
			
				2449
			 | 
			
			
				
				 	xhci_doorbell ( &endpoint->ring ); 
			 | 
		
		
	
		
			
			| 
				2448
			 | 
			
				2450
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2449
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p slot %d ctx %d reset\n", 
			 | 
		
		
	
		
			
			| 
				2450
			 | 
			
				
			 | 
			
			
				
				-	       xhci, slot->id, endpoint->ctx ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2451
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s slot %d ctx %d reset\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2452
			 | 
			
			
				
				+	       xhci->name, slot->id, endpoint->ctx ); 
			 | 
		
		
	
		
			
			| 
				2451
			 | 
			
				2453
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				2452
			 | 
			
				2454
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				2453
			 | 
			
				2455
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2609,8 +2611,8 @@ static int xhci_device_open ( struct usb_device *usb ) { 
			 | 
		
		
	
		
			
			| 
				2609
			 | 
			
				2611
			 | 
			
			
				
				 	type = xhci_port_slot_type ( xhci, usb->port->address ); 
			 | 
		
		
	
		
			
			| 
				2610
			 | 
			
				2612
			 | 
			
			
				
				 	if ( type < 0 ) { 
			 | 
		
		
	
		
			
			| 
				2611
			 | 
			
				2613
			 | 
			
			
				
				 		rc = type; 
			 | 
		
		
	
		
			
			| 
				2612
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p port %d has no slot type\n", 
			 | 
		
		
	
		
			
			| 
				2613
			 | 
			
				
			 | 
			
			
				
				-		       xhci, usb->port->address ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2614
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s-%d has no slot type\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2615
			 | 
			
			
				
				+		       xhci->name, usb->port->address ); 
			 | 
		
		
	
		
			
			| 
				2614
			 | 
			
				2616
			 | 
			
			
				
				 		goto err_type; 
			 | 
		
		
	
		
			
			| 
				2615
			 | 
			
				2617
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				2616
			 | 
			
				2618
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2652,8 +2654,8 @@ static int xhci_device_open ( struct usb_device *usb ) { 
			 | 
		
		
	
		
			
			| 
				2652
			 | 
			
				2654
			 | 
			
			
				
				 	assert ( xhci->dcbaa[id] == 0 ); 
			 | 
		
		
	
		
			
			| 
				2653
			 | 
			
				2655
			 | 
			
			
				
				 	xhci->dcbaa[id] = cpu_to_le64 ( virt_to_phys ( slot->context ) ); 
			 | 
		
		
	
		
			
			| 
				2654
			 | 
			
				2656
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2655
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p slot %d device context [%08lx,%08lx) for %s\n", 
			 | 
		
		
	
		
			
			| 
				2656
			 | 
			
				
			 | 
			
			
				
				-		xhci, slot->id, virt_to_phys ( slot->context ), 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2657
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s slot %d device context [%08lx,%08lx) for %s\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2658
			 | 
			
			
				
				+		xhci->name, slot->id, virt_to_phys ( slot->context ), 
			 | 
		
		
	
		
			
			| 
				2657
			 | 
			
				2659
			 | 
			
			
				
				 		( virt_to_phys ( slot->context ) + len ), usb->name ); 
			 | 
		
		
	
		
			
			| 
				2658
			 | 
			
				2660
			 | 
			
			
				
				 	return 0; 
			 | 
		
		
	
		
			
			| 
				2659
			 | 
			
				2661
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2691,8 +2693,8 @@ static void xhci_device_close ( struct usb_device *usb ) { 
			 | 
		
		
	
		
			
			| 
				2691
			 | 
			
				2693
			 | 
			
			
				
				 		 * has been re-enabled, then some assertions will be 
			 | 
		
		
	
		
			
			| 
				2692
			 | 
			
				2694
			 | 
			
			
				
				 		 * triggered. 
			 | 
		
		
	
		
			
			| 
				2693
			 | 
			
				2695
			 | 
			
			
				
				 		 */ 
			 | 
		
		
	
		
			
			| 
				2694
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p slot %d leaking context memory\n", 
			 | 
		
		
	
		
			
			| 
				2695
			 | 
			
				
			 | 
			
			
				
				-		      xhci, slot->id ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2696
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s slot %d leaking context memory\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2697
			 | 
			
			
				
				+		       xhci->name, slot->id ); 
			 | 
		
		
	
		
			
			| 
				2696
			 | 
			
				2698
			 | 
			
			
				
				 		slot->context = NULL; 
			 | 
		
		
	
		
			
			| 
				2697
			 | 
			
				2699
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				2698
			 | 
			
				2700
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -2978,8 +2980,8 @@ static int xhci_root_enable ( struct usb_hub *hub, struct usb_port *port ) { 
			 | 
		
		
	
		
			
			| 
				2978
			 | 
			
				2980
			 | 
			
			
				
				 		mdelay ( 1 ); 
			 | 
		
		
	
		
			
			| 
				2979
			 | 
			
				2981
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				2980
			 | 
			
				2982
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				2981
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( xhci, "XHCI %p timed out waiting for port %d to enable\n", 
			 | 
		
		
	
		
			
			| 
				2982
			 | 
			
				
			 | 
			
			
				
				-	       xhci, port->address ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2983
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s-%d timed out waiting for port to enable\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				2984
			 | 
			
			
				
				+	       xhci->name, port->address ); 
			 | 
		
		
	
		
			
			| 
				2983
			 | 
			
				2985
			 | 
			
			
				
				 	return -ETIMEDOUT; 
			 | 
		
		
	
		
			
			| 
				2984
			 | 
			
				2986
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				2985
			 | 
			
				2987
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -3022,8 +3024,8 @@ static int xhci_root_speed ( struct usb_hub *hub, struct usb_port *port ) { 
			 | 
		
		
	
		
			
			| 
				3022
			 | 
			
				3024
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				3023
			 | 
			
				3025
			 | 
			
			
				
				 	/* Read port status */ 
			 | 
		
		
	
		
			
			| 
				3024
			 | 
			
				3026
			 | 
			
			
				
				 	portsc = readl ( xhci->op + XHCI_OP_PORTSC ( port->address ) ); 
			 | 
		
		
	
		
			
			| 
				3025
			 | 
			
				
			 | 
			
			
				
				-	DBGC2 ( xhci, "XHCI %p port %d status is %08x\n", 
			 | 
		
		
	
		
			
			| 
				3026
			 | 
			
				
			 | 
			
			
				
				-		xhci, port->address, portsc ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3027
			 | 
			
			
				
				+	DBGC2 ( xhci, "XHCI %s-%d status is %08x\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3028
			 | 
			
			
				
				+		xhci->name, port->address, portsc ); 
			 | 
		
		
	
		
			
			| 
				3027
			 | 
			
				3029
			 | 
			
			
				
				 	ccs = ( portsc & XHCI_PORTSC_CCS ); 
			 | 
		
		
	
		
			
			| 
				3028
			 | 
			
				3030
			 | 
			
			
				
				 	ped = ( portsc & XHCI_PORTSC_PED ); 
			 | 
		
		
	
		
			
			| 
				3029
			 | 
			
				3031
			 | 
			
			
				
				 	csc = ( portsc & XHCI_PORTSC_CSC ); 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -3069,11 +3071,11 @@ static int xhci_root_speed ( struct usb_hub *hub, struct usb_port *port ) { 
			 | 
		
		
	
		
			
			| 
				3069
			 | 
			
				3071
			 | 
			
			
				
				  */ 
			 | 
		
		
	
		
			
			| 
				3070
			 | 
			
				3072
			 | 
			
			
				
				 static int xhci_root_clear_tt ( struct usb_hub *hub, struct usb_port *port, 
			 | 
		
		
	
		
			
			| 
				3071
			 | 
			
				3073
			 | 
			
			
				
				 				struct usb_endpoint *ep ) { 
			 | 
		
		
	
		
			
			| 
				3072
			 | 
			
				
			 | 
			
			
				
				-	struct ehci_device *ehci = usb_hub_get_drvdata ( hub ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3074
			 | 
			
			
				
				+	struct xhci_device *xhci = usb_hub_get_drvdata ( hub ); 
			 | 
		
		
	
		
			
			| 
				3073
			 | 
			
				3075
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				3074
			 | 
			
				3076
			 | 
			
			
				
				 	/* Should never be called; this is a root hub */ 
			 | 
		
		
	
		
			
			| 
				3075
			 | 
			
				
			 | 
			
			
				
				-	DBGC ( ehci, "XHCI %p port %d nonsensical CLEAR_TT for %s endpoint " 
			 | 
		
		
	
		
			
			| 
				3076
			 | 
			
				
			 | 
			
			
				
				-	       "%02x\n", ehci, port->address, ep->usb->name, ep->address ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3077
			 | 
			
			
				
				+	DBGC ( xhci, "XHCI %s-%d nonsensical CLEAR_TT for %s %s\n", xhci->name, 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3078
			 | 
			
			
				
				+	       port->address, ep->usb->name, usb_endpoint_name ( ep ) ); 
			 | 
		
		
	
		
			
			| 
				3077
			 | 
			
				3079
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				3078
			 | 
			
				3080
			 | 
			
			
				
				 	return -ENOTSUP; 
			 | 
		
		
	
		
			
			| 
				3079
			 | 
			
				3081
			 | 
			
			
				
				 } 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -3138,8 +3140,8 @@ static void xhci_pch_fix ( struct xhci_device *xhci, struct pci_device *pci ) { 
			 | 
		
		
	
		
			
			| 
				3138
			 | 
			
				3140
			 | 
			
			
				
				 	pci_read_config_dword ( pci, XHCI_PCH_USB3PSSEN, &usb3pssen ); 
			 | 
		
		
	
		
			
			| 
				3139
			 | 
			
				3141
			 | 
			
			
				
				 	pci_read_config_dword ( pci, XHCI_PCH_USB3PRM, &usb3prm ); 
			 | 
		
		
	
		
			
			| 
				3140
			 | 
			
				3142
			 | 
			
			
				
				 	if ( usb3prm & ~usb3pssen ) { 
			 | 
		
		
	
		
			
			| 
				3141
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p enabling SuperSpeed on ports %08x\n", 
			 | 
		
		
	
		
			
			| 
				3142
			 | 
			
				
			 | 
			
			
				
				-		       xhci, ( usb3prm & ~usb3pssen ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3143
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s enabling SuperSpeed on ports %08x\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3144
			 | 
			
			
				
				+		       xhci->name, ( usb3prm & ~usb3pssen ) ); 
			 | 
		
		
	
		
			
			| 
				3143
			 | 
			
				3145
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				3144
			 | 
			
				3146
			 | 
			
			
				
				 	pch->usb3pssen = usb3pssen; 
			 | 
		
		
	
		
			
			| 
				3145
			 | 
			
				3147
			 | 
			
			
				
				 	usb3pssen |= usb3prm; 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -3149,8 +3151,8 @@ static void xhci_pch_fix ( struct xhci_device *xhci, struct pci_device *pci ) { 
			 | 
		
		
	
		
			
			| 
				3149
			 | 
			
				3151
			 | 
			
			
				
				 	pci_read_config_dword ( pci, XHCI_PCH_XUSB2PR, &xusb2pr ); 
			 | 
		
		
	
		
			
			| 
				3150
			 | 
			
				3152
			 | 
			
			
				
				 	pci_read_config_dword ( pci, XHCI_PCH_XUSB2PRM, &xusb2prm ); 
			 | 
		
		
	
		
			
			| 
				3151
			 | 
			
				3153
			 | 
			
			
				
				 	if ( xusb2prm & ~xusb2pr ) { 
			 | 
		
		
	
		
			
			| 
				3152
			 | 
			
				
			 | 
			
			
				
				-		DBGC ( xhci, "XHCI %p routing ports %08x from EHCI to xHCI\n", 
			 | 
		
		
	
		
			
			| 
				3153
			 | 
			
				
			 | 
			
			
				
				-		       xhci, ( xusb2prm & ~xusb2pr ) ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3154
			 | 
			
			
				
				+		DBGC ( xhci, "XHCI %s routing ports %08x from EHCI to xHCI\n", 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3155
			 | 
			
			
				
				+		       xhci->name, ( xusb2prm & ~xusb2pr ) ); 
			 | 
		
		
	
		
			
			| 
				3154
			 | 
			
				3156
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				3155
			 | 
			
				3157
			 | 
			
			
				
				 	pch->xusb2pr = xusb2pr; 
			 | 
		
		
	
		
			
			| 
				3156
			 | 
			
				3158
			 | 
			
			
				
				 	xusb2pr |= xusb2prm; 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -3193,6 +3195,7 @@ static int xhci_probe ( struct pci_device *pci ) { 
			 | 
		
		
	
		
			
			| 
				3193
			 | 
			
				3195
			 | 
			
			
				
				 		rc = -ENOMEM; 
			 | 
		
		
	
		
			
			| 
				3194
			 | 
			
				3196
			 | 
			
			
				
				 		goto err_alloc; 
			 | 
		
		
	
		
			
			| 
				3195
			 | 
			
				3197
			 | 
			
			
				
				 	} 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				3198
			 | 
			
			
				
				+	xhci->name = pci->dev.name; 
			 | 
		
		
	
		
			
			| 
				3196
			 | 
			
				3199
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				3197
			 | 
			
				3200
			 | 
			
			
				
				 	/* Fix up PCI device */ 
			 | 
		
		
	
		
			
			| 
				3198
			 | 
			
				3201
			 | 
			
			
				
				 	adjust_pci_device ( pci ); 
			 |