On Tue, Feb 08, 2011 at 10:54:52AM -0500, Eibach, Dirk wrote: > > Dear Guenter, > > > Chip id is already detected in lm63_detect. You don't need to > > detect it again. > > The more common approach would be something along the line of > > data->kind = id->driver_data; > > You would then use > > if (data->kind == lm64) > > throughout the code. In addition to that, you could define > > data->kind = id->driver_data; > > if (data->kind == lm64) > > data->offset = 16000; > > which would save you the repeated recalculation of offset > > as mentioned before. > > I don't understand, what structures "data" and "id" you are referring to > here and where the fields driver_data and kind come from. I remember to > have seen such in older kernels, but wasn't that replaced sometime ago? > static int lm63_probe(struct i2c_client *new_client, const struct i2c_device_id *id) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ { struct lm63_data *data; ^^^^^^^^^^^^^^^^^^^^^^ ... /* Set the device type */ data->kind = id->driver_data; with struct lm63_data { ... int kind; // instead of is_lm64 ... }; id is from static const struct i2c_device_id lm63_id[] = { { "lm63", lm63 }, { "lm64", lm64 }, { } }; id->driver_data is thus either lm63 or lm64, depending on the chip type detected in lm63_detect(). Thanks, Guenter _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors