diff options
Diffstat (limited to 'drivers/acpi/cppc_acpi.c')
| -rw-r--r-- | drivers/acpi/cppc_acpi.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c index a9d2de403c0c..866560cbb082 100644 --- a/drivers/acpi/cppc_acpi.c +++ b/drivers/acpi/cppc_acpi.c @@ -915,30 +915,31 @@ int __weak cpc_write_ffh(int cpunum, struct cpc_reg *reg, u64 val)  static int cpc_read(int cpu, struct cpc_register_resource *reg_res, u64 *val)  { -	int ret_val = 0;  	void __iomem *vaddr = NULL;  	int pcc_ss_id = per_cpu(cpu_pcc_subspace_idx, cpu);  	struct cpc_reg *reg = ®_res->cpc_entry.reg;  	if (reg_res->type == ACPI_TYPE_INTEGER) {  		*val = reg_res->cpc_entry.int_value; -		return ret_val; +		return 0;  	}  	*val = 0;  	if (reg->space_id == ACPI_ADR_SPACE_SYSTEM_IO) {  		u32 width = 8 << (reg->access_width - 1); +		u32 val_u32;  		acpi_status status;  		status = acpi_os_read_port((acpi_io_address)reg->address, -					   (u32 *)val, width); +					   &val_u32, width);  		if (ACPI_FAILURE(status)) {  			pr_debug("Error: Failed to read SystemIO port %llx\n",  				 reg->address);  			return -EFAULT;  		} +		*val = val_u32;  		return 0;  	} else if (reg->space_id == ACPI_ADR_SPACE_PLATFORM_COMM && pcc_ss_id >= 0)  		vaddr = GET_PCC_VADDR(reg->address, pcc_ss_id); @@ -966,10 +967,10 @@ static int cpc_read(int cpu, struct cpc_register_resource *reg_res, u64 *val)  	default:  		pr_debug("Error: Cannot read %u bit width from PCC for ss: %d\n",  			 reg->bit_width, pcc_ss_id); -		ret_val = -EFAULT; +		return -EFAULT;  	} -	return ret_val; +	return 0;  }  static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)  |