[PATCH v4 2/9] hwmon: (amc6821) dev_err using amc6821 device struct
Farouk Bouabid
farouk.bouabid at cherry.de
Tue Jun 18 09:06:44 PDT 2024
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 at cherry.de>
---
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
More information about the Linux-rockchip
mailing list