Loading drivers/hwmon/max1619.c +69 −89 Original line number Diff line number Diff line Loading @@ -71,40 +71,6 @@ static int temp_to_reg(int val) return (val < 0 ? val+0x100*1000 : val) / 1000; } /* * Functions declaration */ static int max1619_probe(struct i2c_client *client, const struct i2c_device_id *id); static int max1619_detect(struct i2c_client *client, struct i2c_board_info *info); static void max1619_init_client(struct i2c_client *client); static int max1619_remove(struct i2c_client *client); static struct max1619_data *max1619_update_device(struct device *dev); /* * Driver data (common to all clients) */ static const struct i2c_device_id max1619_id[] = { { "max1619", 0 }, { } }; MODULE_DEVICE_TABLE(i2c, max1619_id); static struct i2c_driver max1619_driver = { .class = I2C_CLASS_HWMON, .driver = { .name = "max1619", }, .probe = max1619_probe, .remove = max1619_remove, .id_table = max1619_id, .detect = max1619_detect, .address_list = normal_i2c, }; /* * Client data (each client gets its own) */ Loading @@ -123,6 +89,44 @@ struct max1619_data { u8 alarms; }; static struct max1619_data *max1619_update_device(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct max1619_data *data = i2c_get_clientdata(client); int config; mutex_lock(&data->update_lock); if (time_after(jiffies, data->last_updated + HZ * 2) || !data->valid) { dev_dbg(&client->dev, "Updating max1619 data.\n"); data->temp_input1 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_LOCAL_TEMP); data->temp_input2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_TEMP); data->temp_high2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_HIGH); data->temp_low2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_LOW); data->temp_crit2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_CRIT); data->temp_hyst2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_TCRIT_HYST); data->alarms = i2c_smbus_read_byte_data(client, MAX1619_REG_R_STATUS); /* If OVERT polarity is low, reverse alarm bit */ config = i2c_smbus_read_byte_data(client, MAX1619_REG_R_CONFIG); if (!(config & 0x20)) data->alarms ^= 0x02; data->last_updated = jiffies; data->valid = 1; } mutex_unlock(&data->update_lock); return data; } /* * Sysfs stuff */ Loading Loading @@ -216,10 +220,6 @@ static const struct attribute_group max1619_group = { .attrs = max1619_attributes, }; /* * Real code */ /* Return 0 if detection is successful, -ENODEV otherwise */ static int max1619_detect(struct i2c_client *client, struct i2c_board_info *info) Loading Loading @@ -256,6 +256,21 @@ static int max1619_detect(struct i2c_client *client, return 0; } static void max1619_init_client(struct i2c_client *client) { u8 config; /* * Start the conversions. */ i2c_smbus_write_byte_data(client, MAX1619_REG_W_CONVRATE, 5); /* 2 Hz */ config = i2c_smbus_read_byte_data(client, MAX1619_REG_R_CONFIG); if (config & 0x40) i2c_smbus_write_byte_data(client, MAX1619_REG_W_CONFIG, config & 0xBF); /* run */ } static int max1619_probe(struct i2c_client *new_client, const struct i2c_device_id *id) { Loading Loading @@ -291,21 +306,6 @@ exit_remove_files: return err; } static void max1619_init_client(struct i2c_client *client) { u8 config; /* * Start the conversions. */ i2c_smbus_write_byte_data(client, MAX1619_REG_W_CONVRATE, 5); /* 2 Hz */ config = i2c_smbus_read_byte_data(client, MAX1619_REG_R_CONFIG); if (config & 0x40) i2c_smbus_write_byte_data(client, MAX1619_REG_W_CONFIG, config & 0xBF); /* run */ } static int max1619_remove(struct i2c_client *client) { struct max1619_data *data = i2c_get_clientdata(client); Loading @@ -316,43 +316,23 @@ static int max1619_remove(struct i2c_client *client) return 0; } static struct max1619_data *max1619_update_device(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct max1619_data *data = i2c_get_clientdata(client); int config; mutex_lock(&data->update_lock); if (time_after(jiffies, data->last_updated + HZ * 2) || !data->valid) { dev_dbg(&client->dev, "Updating max1619 data.\n"); data->temp_input1 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_LOCAL_TEMP); data->temp_input2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_TEMP); data->temp_high2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_HIGH); data->temp_low2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_LOW); data->temp_crit2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_CRIT); data->temp_hyst2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_TCRIT_HYST); data->alarms = i2c_smbus_read_byte_data(client, MAX1619_REG_R_STATUS); /* If OVERT polarity is low, reverse alarm bit */ config = i2c_smbus_read_byte_data(client, MAX1619_REG_R_CONFIG); if (!(config & 0x20)) data->alarms ^= 0x02; data->last_updated = jiffies; data->valid = 1; } mutex_unlock(&data->update_lock); static const struct i2c_device_id max1619_id[] = { { "max1619", 0 }, { } }; MODULE_DEVICE_TABLE(i2c, max1619_id); return data; } static struct i2c_driver max1619_driver = { .class = I2C_CLASS_HWMON, .driver = { .name = "max1619", }, .probe = max1619_probe, .remove = max1619_remove, .id_table = max1619_id, .detect = max1619_detect, .address_list = normal_i2c, }; module_i2c_driver(max1619_driver); Loading Loading
drivers/hwmon/max1619.c +69 −89 Original line number Diff line number Diff line Loading @@ -71,40 +71,6 @@ static int temp_to_reg(int val) return (val < 0 ? val+0x100*1000 : val) / 1000; } /* * Functions declaration */ static int max1619_probe(struct i2c_client *client, const struct i2c_device_id *id); static int max1619_detect(struct i2c_client *client, struct i2c_board_info *info); static void max1619_init_client(struct i2c_client *client); static int max1619_remove(struct i2c_client *client); static struct max1619_data *max1619_update_device(struct device *dev); /* * Driver data (common to all clients) */ static const struct i2c_device_id max1619_id[] = { { "max1619", 0 }, { } }; MODULE_DEVICE_TABLE(i2c, max1619_id); static struct i2c_driver max1619_driver = { .class = I2C_CLASS_HWMON, .driver = { .name = "max1619", }, .probe = max1619_probe, .remove = max1619_remove, .id_table = max1619_id, .detect = max1619_detect, .address_list = normal_i2c, }; /* * Client data (each client gets its own) */ Loading @@ -123,6 +89,44 @@ struct max1619_data { u8 alarms; }; static struct max1619_data *max1619_update_device(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct max1619_data *data = i2c_get_clientdata(client); int config; mutex_lock(&data->update_lock); if (time_after(jiffies, data->last_updated + HZ * 2) || !data->valid) { dev_dbg(&client->dev, "Updating max1619 data.\n"); data->temp_input1 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_LOCAL_TEMP); data->temp_input2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_TEMP); data->temp_high2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_HIGH); data->temp_low2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_LOW); data->temp_crit2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_CRIT); data->temp_hyst2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_TCRIT_HYST); data->alarms = i2c_smbus_read_byte_data(client, MAX1619_REG_R_STATUS); /* If OVERT polarity is low, reverse alarm bit */ config = i2c_smbus_read_byte_data(client, MAX1619_REG_R_CONFIG); if (!(config & 0x20)) data->alarms ^= 0x02; data->last_updated = jiffies; data->valid = 1; } mutex_unlock(&data->update_lock); return data; } /* * Sysfs stuff */ Loading Loading @@ -216,10 +220,6 @@ static const struct attribute_group max1619_group = { .attrs = max1619_attributes, }; /* * Real code */ /* Return 0 if detection is successful, -ENODEV otherwise */ static int max1619_detect(struct i2c_client *client, struct i2c_board_info *info) Loading Loading @@ -256,6 +256,21 @@ static int max1619_detect(struct i2c_client *client, return 0; } static void max1619_init_client(struct i2c_client *client) { u8 config; /* * Start the conversions. */ i2c_smbus_write_byte_data(client, MAX1619_REG_W_CONVRATE, 5); /* 2 Hz */ config = i2c_smbus_read_byte_data(client, MAX1619_REG_R_CONFIG); if (config & 0x40) i2c_smbus_write_byte_data(client, MAX1619_REG_W_CONFIG, config & 0xBF); /* run */ } static int max1619_probe(struct i2c_client *new_client, const struct i2c_device_id *id) { Loading Loading @@ -291,21 +306,6 @@ exit_remove_files: return err; } static void max1619_init_client(struct i2c_client *client) { u8 config; /* * Start the conversions. */ i2c_smbus_write_byte_data(client, MAX1619_REG_W_CONVRATE, 5); /* 2 Hz */ config = i2c_smbus_read_byte_data(client, MAX1619_REG_R_CONFIG); if (config & 0x40) i2c_smbus_write_byte_data(client, MAX1619_REG_W_CONFIG, config & 0xBF); /* run */ } static int max1619_remove(struct i2c_client *client) { struct max1619_data *data = i2c_get_clientdata(client); Loading @@ -316,43 +316,23 @@ static int max1619_remove(struct i2c_client *client) return 0; } static struct max1619_data *max1619_update_device(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct max1619_data *data = i2c_get_clientdata(client); int config; mutex_lock(&data->update_lock); if (time_after(jiffies, data->last_updated + HZ * 2) || !data->valid) { dev_dbg(&client->dev, "Updating max1619 data.\n"); data->temp_input1 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_LOCAL_TEMP); data->temp_input2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_TEMP); data->temp_high2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_HIGH); data->temp_low2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_LOW); data->temp_crit2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_REMOTE_CRIT); data->temp_hyst2 = i2c_smbus_read_byte_data(client, MAX1619_REG_R_TCRIT_HYST); data->alarms = i2c_smbus_read_byte_data(client, MAX1619_REG_R_STATUS); /* If OVERT polarity is low, reverse alarm bit */ config = i2c_smbus_read_byte_data(client, MAX1619_REG_R_CONFIG); if (!(config & 0x20)) data->alarms ^= 0x02; data->last_updated = jiffies; data->valid = 1; } mutex_unlock(&data->update_lock); static const struct i2c_device_id max1619_id[] = { { "max1619", 0 }, { } }; MODULE_DEVICE_TABLE(i2c, max1619_id); return data; } static struct i2c_driver max1619_driver = { .class = I2C_CLASS_HWMON, .driver = { .name = "max1619", }, .probe = max1619_probe, .remove = max1619_remove, .id_table = max1619_id, .detect = max1619_detect, .address_list = normal_i2c, }; module_i2c_driver(max1619_driver); Loading