diff options
Diffstat (limited to 'drivers/hwmon/adm1275.c')
| -rw-r--r-- | drivers/hwmon/adm1275.c | 26 | 
1 files changed, 18 insertions, 8 deletions
diff --git a/drivers/hwmon/adm1275.c b/drivers/hwmon/adm1275.c index c2ee2048ab9..8bc1bd66372 100644 --- a/drivers/hwmon/adm1275.c +++ b/drivers/hwmon/adm1275.c @@ -32,6 +32,7 @@ static int adm1275_probe(struct i2c_client *client,  			 const struct i2c_device_id *id)  {  	int config; +	int ret;  	struct pmbus_driver_info *info;  	if (!i2c_check_functionality(client->adapter, @@ -43,30 +44,32 @@ static int adm1275_probe(struct i2c_client *client,  		return -ENOMEM;  	config = i2c_smbus_read_byte_data(client, ADM1275_PMON_CONFIG); -	if (config < 0) -		return config; +	if (config < 0) { +		ret = config; +		goto err_mem; +	}  	info->pages = 1;  	info->direct[PSC_VOLTAGE_IN] = true;  	info->direct[PSC_VOLTAGE_OUT] = true;  	info->direct[PSC_CURRENT_OUT] = true; -	info->m[PSC_CURRENT_OUT] = 800; +	info->m[PSC_CURRENT_OUT] = 807;  	info->b[PSC_CURRENT_OUT] = 20475;  	info->R[PSC_CURRENT_OUT] = -1;  	info->func[0] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT;  	if (config & ADM1275_VRANGE) { -		info->m[PSC_VOLTAGE_IN] = 19045; +		info->m[PSC_VOLTAGE_IN] = 19199;  		info->b[PSC_VOLTAGE_IN] = 0;  		info->R[PSC_VOLTAGE_IN] = -2; -		info->m[PSC_VOLTAGE_OUT] = 19045; +		info->m[PSC_VOLTAGE_OUT] = 19199;  		info->b[PSC_VOLTAGE_OUT] = 0;  		info->R[PSC_VOLTAGE_OUT] = -2;  	} else { -		info->m[PSC_VOLTAGE_IN] = 6666; +		info->m[PSC_VOLTAGE_IN] = 6720;  		info->b[PSC_VOLTAGE_IN] = 0;  		info->R[PSC_VOLTAGE_IN] = -1; -		info->m[PSC_VOLTAGE_OUT] = 6666; +		info->m[PSC_VOLTAGE_OUT] = 6720;  		info->b[PSC_VOLTAGE_OUT] = 0;  		info->R[PSC_VOLTAGE_OUT] = -1;  	} @@ -76,7 +79,14 @@ static int adm1275_probe(struct i2c_client *client,  	else  		info->func[0] |= PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT; -	return pmbus_do_probe(client, id, info); +	ret = pmbus_do_probe(client, id, info); +	if (ret) +		goto err_mem; +	return 0; + +err_mem: +	kfree(info); +	return ret;  }  static int adm1275_remove(struct i2c_client *client)  |