Fixed error in the pipe unordered allocation algorithm for the AVR8 devices breaking compatibility with some devices.
This commit is contained in:
		
							parent
							
								
									04287b76c5
								
							
						
					
					
						commit
						fdb82cd1e8
					
				
					 4 changed files with 6 additions and 13 deletions
				
			
		| 
						 | 
				
			
			@ -78,7 +78,7 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
 | 
			
		|||
		  continue;
 | 
			
		||||
 | 
			
		||||
		Endpoint_DisableEndpoint();
 | 
			
		||||
		UECFG1X &= (1 << ALLOC);
 | 
			
		||||
		UECFG1X &= ~(1 << ALLOC);
 | 
			
		||||
 | 
			
		||||
		Endpoint_EnableEndpoint();
 | 
			
		||||
		UECFG0X = UECFG0XTemp;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,8 +62,6 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
 | 
			
		|||
		uint8_t UPCFG0XTemp;
 | 
			
		||||
		uint8_t UPCFG1XTemp;
 | 
			
		||||
		uint8_t UPCFG2XTemp;
 | 
			
		||||
		uint8_t UPCONXTemp;
 | 
			
		||||
		uint8_t UPINRQXTemp;
 | 
			
		||||
		uint8_t UPIENXTemp;
 | 
			
		||||
 | 
			
		||||
		Pipe_SelectPipe(PNum);
 | 
			
		||||
| 
						 | 
				
			
			@ -73,8 +71,6 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
 | 
			
		|||
			UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
 | 
			
		||||
			UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));
 | 
			
		||||
			UPCFG2XTemp = 0;
 | 
			
		||||
			UPCONXTemp  = ((1 << PEN) | (1 << INMODE));
 | 
			
		||||
			UPINRQXTemp = 0;
 | 
			
		||||
			UPIENXTemp  = 0;
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
| 
						 | 
				
			
			@ -82,27 +78,23 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
 | 
			
		|||
			UPCFG0XTemp = UPCFG0X;
 | 
			
		||||
			UPCFG1XTemp = UPCFG1X;
 | 
			
		||||
			UPCFG2XTemp = UPCFG2X;
 | 
			
		||||
			UPCONXTemp  = UPCONX;
 | 
			
		||||
			UPINRQXTemp = UPINRQX;
 | 
			
		||||
			UPIENXTemp  = UPIENX;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		Pipe_SetInfiniteINRequests();
 | 
			
		||||
	
 | 
			
		||||
		if (!(UPCFG1XTemp & (1 << ALLOC)))
 | 
			
		||||
		  continue;
 | 
			
		||||
		  
 | 
			
		||||
		Pipe_DisablePipe();
 | 
			
		||||
		UPCFG1X &= (1 << ALLOC);
 | 
			
		||||
		UPCFG1X &= ~(1 << ALLOC);
 | 
			
		||||
 | 
			
		||||
		Pipe_EnablePipe();
 | 
			
		||||
		UPCFG0X = UPCFG0XTemp;
 | 
			
		||||
		UPCFG1X = UPCFG1XTemp;
 | 
			
		||||
		UPCFG2X = UPCFG2XTemp;
 | 
			
		||||
		UPCONX  = UPCONXTemp;
 | 
			
		||||
		UPINRQX = UPINRQXTemp;
 | 
			
		||||
		UPIENX  = UPIENXTemp;
 | 
			
		||||
 | 
			
		||||
		Pipe_SetInfiniteINRequests();
 | 
			
		||||
	
 | 
			
		||||
		if (!(Pipe_IsConfigured()))
 | 
			
		||||
		  return false;		
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue