ACPI: Handle I/O access width requestst that are not a multiple of 8 bits.
We've run into BIOS that hand us 4-bit access width requests for T-state control when the code expected only multipls of 8-bits. Round up. Signed-off-by: Zhao Yakui <yakui.zhao@intel.com> Signed-off-by: Li Shaohua <shaohua.li@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
		
					parent
					
						
							
								ef54d5ad2f
							
						
					
				
			
			
				commit
				
					
						49fbabf56d
					
				
			
		
					 1 changed files with 9 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -387,17 +387,14 @@ acpi_status acpi_os_read_port(acpi_io_address port, u32 * value, u32 width)
 | 
			
		|||
	if (!value)
 | 
			
		||||
		value = &dummy;
 | 
			
		||||
 | 
			
		||||
	switch (width) {
 | 
			
		||||
	case 8:
 | 
			
		||||
	*value = 0;
 | 
			
		||||
	if (width <= 8) {
 | 
			
		||||
		*(u8 *) value = inb(port);
 | 
			
		||||
		break;
 | 
			
		||||
	case 16:
 | 
			
		||||
	} else if (width <= 16) {
 | 
			
		||||
		*(u16 *) value = inw(port);
 | 
			
		||||
		break;
 | 
			
		||||
	case 32:
 | 
			
		||||
	} else if (width <= 32) {
 | 
			
		||||
		*(u32 *) value = inl(port);
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
	} else {
 | 
			
		||||
		BUG();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -408,17 +405,13 @@ EXPORT_SYMBOL(acpi_os_read_port);
 | 
			
		|||
 | 
			
		||||
acpi_status acpi_os_write_port(acpi_io_address port, u32 value, u32 width)
 | 
			
		||||
{
 | 
			
		||||
	switch (width) {
 | 
			
		||||
	case 8:
 | 
			
		||||
	if (width <= 8) {
 | 
			
		||||
		outb(value, port);
 | 
			
		||||
		break;
 | 
			
		||||
	case 16:
 | 
			
		||||
	} else if (width <= 16) {
 | 
			
		||||
		outw(value, port);
 | 
			
		||||
		break;
 | 
			
		||||
	case 32:
 | 
			
		||||
	} else if (width <= 32) {
 | 
			
		||||
		outl(value, port);
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
	} else {
 | 
			
		||||
		BUG();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue