If probed as platform device, the i2c_client.dev is the parent device (eg. MFD) and not the actual amc6821 device. Use the latter to log errors instead. Signed-off-by: Farouk Bouabid <farouk.bouabid@xxxxxxxxx> --- drivers/hwmon/amc6821.c | 62 +++++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c index 464991fd7fc9..17456d7c7cfe 100644 --- a/drivers/hwmon/amc6821.c +++ b/drivers/hwmon/amc6821.c @@ -290,7 +290,7 @@ static ssize_t temp_store(struct device *dev, struct device_attribute *attr, mutex_lock(&data->update_lock); data->temp[ix] = val; if (i2c_smbus_write_byte_data(client, temp_reg[ix], data->temp[ix])) { - dev_err(&client->dev, "Register write error, aborting.\n"); + dev_err(dev, "Register write error, aborting.\n"); count = -EIO; } mutex_unlock(&data->update_lock); @@ -389,10 +389,10 @@ static ssize_t pwm1_enable_store(struct device *dev, mutex_lock(&data->update_lock); config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF1); if (config < 0) { - dev_err(&client->dev, + dev_err(dev, "Error reading configuration register, aborting.\n"); - count = config; - goto unlock; + count = config; + goto unlock; } switch (val) { @@ -413,9 +413,9 @@ static ssize_t pwm1_enable_store(struct device *dev, goto unlock; } if (i2c_smbus_write_byte_data(client, AMC6821_REG_CONF1, config)) { - dev_err(&client->dev, + dev_err(dev, "Configuration register write error, aborting.\n"); - count = -EIO; + count = -EIO; } unlock: mutex_unlock(&data->update_lock); @@ -459,11 +459,13 @@ static ssize_t pwm1_auto_point_pwm_show(struct device *dev, return sprintf(buf, "%d\n", data->pwm1_auto_point_pwm[ix]); } -static inline ssize_t set_slope_register(struct i2c_client *client, +static inline ssize_t set_slope_register(struct device *dev, u8 reg, u8 dpwm, u8 *ptemp) { + struct amc6821_data *data = dev_get_drvdata(dev); + struct i2c_client *client = data->client; int dt; u8 tmp; @@ -475,7 +477,7 @@ static inline ssize_t set_slope_register(struct i2c_client *client, tmp |= (ptemp[1] & 0x7C) << 1; if (i2c_smbus_write_byte_data(client, reg, tmp)) { - dev_err(&client->dev, "Register write error, aborting.\n"); + dev_err(dev, "Register write error, aborting.\n"); return -EIO; } return 0; @@ -525,7 +527,7 @@ static ssize_t temp_auto_point_temp_store(struct device *dev, client, AMC6821_REG_PSV_TEMP, ptemp[0])) { - dev_err(&client->dev, + dev_err(dev, "Register write error, aborting.\n"); count = -EIO; } @@ -544,7 +546,7 @@ static ssize_t temp_auto_point_temp_store(struct device *dev, goto EXIT; } dpwm = data->pwm1_auto_point_pwm[2] - data->pwm1_auto_point_pwm[1]; - if (set_slope_register(client, reg, dpwm, ptemp)) + if (set_slope_register(dev, reg, dpwm, ptemp)) count = -EIO; EXIT: @@ -568,17 +570,17 @@ static ssize_t pwm1_auto_point_pwm_store(struct device *dev, data->pwm1_auto_point_pwm[1] = clamp_val(val, 0, 254); if (i2c_smbus_write_byte_data(client, AMC6821_REG_DCY_LOW_TEMP, data->pwm1_auto_point_pwm[1])) { - dev_err(&client->dev, "Register write error, aborting.\n"); + dev_err(dev, "Register write error, aborting.\n"); count = -EIO; goto EXIT; } dpwm = data->pwm1_auto_point_pwm[2] - data->pwm1_auto_point_pwm[1]; - if (set_slope_register(client, AMC6821_REG_LTEMP_FAN_CTRL, dpwm, + if (set_slope_register(dev, AMC6821_REG_LTEMP_FAN_CTRL, dpwm, data->temp1_auto_point_temp)) { count = -EIO; goto EXIT; } - if (set_slope_register(client, AMC6821_REG_RTEMP_FAN_CTRL, dpwm, + if (set_slope_register(dev, AMC6821_REG_RTEMP_FAN_CTRL, dpwm, data->temp2_auto_point_temp)) { count = -EIO; goto EXIT; @@ -626,13 +628,13 @@ static ssize_t fan_store(struct device *dev, struct device_attribute *attr, data->fan[ix] = (u16) clamp_val(val, 1, 0xFFFF); if (i2c_smbus_write_byte_data(client, fan_reg_low[ix], data->fan[ix] & 0xFF)) { - dev_err(&client->dev, "Register write error, aborting.\n"); + dev_err(dev, "Register write error, aborting.\n"); count = -EIO; goto EXIT; } if (i2c_smbus_write_byte_data(client, fan_reg_hi[ix], data->fan[ix] >> 8)) { - dev_err(&client->dev, "Register write error, aborting.\n"); + dev_err(dev, "Register write error, aborting.\n"); count = -EIO; } EXIT: @@ -661,7 +663,7 @@ static ssize_t fan1_div_store(struct device *dev, mutex_lock(&data->update_lock); config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF4); if (config < 0) { - dev_err(&client->dev, + dev_err(dev, "Error reading configuration register, aborting.\n"); count = config; goto EXIT; @@ -680,7 +682,7 @@ static ssize_t fan1_div_store(struct device *dev, goto EXIT; } if (i2c_smbus_write_byte_data(client, AMC6821_REG_CONF4, config)) { - dev_err(&client->dev, + dev_err(dev, "Configuration register write error, aborting.\n"); count = -EIO; } @@ -815,7 +817,7 @@ static int amc6821_detect( return 0; } -static int amc6821_init_client(struct i2c_client *client) +static int amc6821_init_client(struct device *dev, struct i2c_client *client) { int config; int err = -EIO; @@ -824,16 +826,16 @@ static int amc6821_init_client(struct i2c_client *client) config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF4); if (config < 0) { - dev_err(&client->dev, - "Error reading configuration register, aborting.\n"); - return err; + dev_err(dev, + "Error reading configuration register, aborting.\n"); + return err; } config |= AMC6821_CONF4_MODE; if (i2c_smbus_write_byte_data(client, AMC6821_REG_CONF4, config)) { - dev_err(&client->dev, + dev_err(dev, "Configuration register write error, aborting.\n"); return err; } @@ -841,18 +843,18 @@ static int amc6821_init_client(struct i2c_client *client) config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF3); if (config < 0) { - dev_err(&client->dev, + dev_err(dev, "Error reading configuration register, aborting.\n"); return err; } - dev_info(&client->dev, "Revision %d\n", config & 0x0f); + dev_info(dev, "Revision %d\n", config & 0x0f); config &= ~AMC6821_CONF3_THERM_FAN_EN; if (i2c_smbus_write_byte_data(client, AMC6821_REG_CONF3, config)) { - dev_err(&client->dev, + dev_err(dev, "Configuration register write error, aborting.\n"); return err; } @@ -860,7 +862,7 @@ static int amc6821_init_client(struct i2c_client *client) config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF2); if (config < 0) { - dev_err(&client->dev, + dev_err(dev, "Error reading configuration register, aborting.\n"); return err; } @@ -870,7 +872,7 @@ static int amc6821_init_client(struct i2c_client *client) config &= ~AMC6821_CONF2_RTOIE; if (i2c_smbus_write_byte_data(client, AMC6821_REG_CONF2, config)) { - dev_err(&client->dev, + dev_err(dev, "Configuration register write error, aborting.\n"); return err; } @@ -878,7 +880,7 @@ static int amc6821_init_client(struct i2c_client *client) config = i2c_smbus_read_byte_data(client, AMC6821_REG_CONF1); if (config < 0) { - dev_err(&client->dev, + dev_err(dev, "Error reading configuration register, aborting.\n"); return err; } @@ -893,7 +895,7 @@ static int amc6821_init_client(struct i2c_client *client) if (i2c_smbus_write_byte_data( client, AMC6821_REG_CONF1, config)) { - dev_err(&client->dev, + dev_err(dev, "Configuration register write error, aborting.\n"); return err; } @@ -917,7 +919,7 @@ static int probe(struct device *dev, struct i2c_client *client) /* * Initialize the amc6821 chip */ - err = amc6821_init_client(client); + err = amc6821_init_client(dev, client); if (err) return err; -- 2.34.1