Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa9cd547 authored by Luming Yu's avatar Luming Yu Committed by Len Brown
Browse files

[ACPI] fix EC access width

http://bugzilla.kernel.org/show_bug.cgi?id=4346



Written-by: David Shaohua Li and Luming Yu
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 451566f4
Loading
Loading
Loading
Loading
+14 −18
Original line number Diff line number Diff line
@@ -600,7 +600,7 @@ acpi_ec_space_handler (
{
	int			result = 0;
	struct acpi_ec		*ec = NULL;
	u32			temp = 0;
	u64			temp = *value;
	acpi_integer		f_v = 0;
	int 			i = 0;

@@ -609,9 +609,8 @@ acpi_ec_space_handler (
	if ((address > 0xFF) || !value || !handler_context)
		return_VALUE(AE_BAD_PARAMETER);

	if(bit_width != 8) {
	if (bit_width != 8 && acpi_strict) {
		printk(KERN_WARNING PREFIX "acpi_ec_space_handler: bit_width should be 8\n");
		if (acpi_strict)
		return_VALUE(AE_BAD_PARAMETER);
	}

@@ -620,11 +619,11 @@ acpi_ec_space_handler (
next_byte:
	switch (function) {
	case ACPI_READ:
		result = acpi_ec_read(ec, (u8) address, &temp);
		*value = (acpi_integer) temp;
		temp = 0;
		result = acpi_ec_read(ec, (u8) address, (u32 *)&temp);
		break;
	case ACPI_WRITE:
		result = acpi_ec_write(ec, (u8) address, (u8) *value);
		result = acpi_ec_write(ec, (u8) address, (u8) temp);
		break;
	default:
		result = -EINVAL;
@@ -634,18 +633,17 @@ acpi_ec_space_handler (

	bit_width -= 8;
	if (bit_width) {

		if (function == ACPI_READ)
			f_v |= (acpi_integer) (*value) << 8*i;
			f_v |= temp << 8 * i;
		if (function == ACPI_WRITE)
			(*value) >>=8; 
			temp >>= 8;
		i++;
		(u8)address ++;
		goto next_byte;
	}


	if (function == ACPI_READ) {
		f_v |= (acpi_integer) (*value) << 8*i;
		f_v |= temp << 8 * i;
		*value = f_v;
	}

@@ -664,8 +662,6 @@ acpi_ec_space_handler (
	default:
		return_VALUE(AE_OK);
	}
	

}