From 6329ff500fcbdae61745b0b8c7494bad6a20d739 Mon Sep 17 00:00:00 2001 From: Guenter Roeck Date: Thu, 28 Oct 2010 20:31:43 +0200 Subject: [PATCH] --- yaml --- r: 220463 b: refs/heads/master c: 4667bcb8d8fc081a804a798df70dc91241946e0a h: refs/heads/master i: 220461: 9db56597789a206f6d3fe92dfa2cbd8677bf7978 220459: 75888f5fa830e8cf52f59d3eb5761e550027d042 220455: 226a4d6ac2758dfa9c0c292c818c6b6ca4596125 220447: 00061937836a301957e9a14a7a868ca13b5b0ea2 v: v3 --- [refs] | 2 +- trunk/drivers/hwmon/lm90.c | 92 +++++++++++++++++++++++++------------- 2 files changed, 61 insertions(+), 33 deletions(-) diff --git a/[refs] b/[refs] index 2aa69fa85ff5..05b1e0973971 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 15b66ab69051c014d0ba9f46f7081a8a7e6ad1c3 +refs/heads/master: 4667bcb8d8fc081a804a798df70dc91241946e0a diff --git a/trunk/drivers/hwmon/lm90.c b/trunk/drivers/hwmon/lm90.c index 302d9eb9f275..9df08e1cc518 100644 --- a/trunk/drivers/hwmon/lm90.c +++ b/trunk/drivers/hwmon/lm90.c @@ -189,6 +189,63 @@ static const struct i2c_device_id lm90_id[] = { }; MODULE_DEVICE_TABLE(i2c, lm90_id); +/* + * chip type specific parameters + */ +struct lm90_params { + u32 flags; /* Capabilities */ + u16 alert_alarms; /* Which alarm bits trigger ALERT# */ + /* Upper 8 bits for max6695/96 */ +}; + +static const struct lm90_params lm90_params[] = { + [adm1032] = { + .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT, + .alert_alarms = 0x7c, + }, + [adt7461] = { + .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT, + .alert_alarms = 0x7c, + }, + [lm86] = { + .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT, + .alert_alarms = 0x7b, + }, + [lm90] = { + .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT, + .alert_alarms = 0x7b, + }, + [lm99] = { + .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT, + .alert_alarms = 0x7b, + }, + [max6646] = { + .flags = LM90_HAVE_LOCAL_EXT, + .alert_alarms = 0x7c, + }, + [max6657] = { + .flags = LM90_HAVE_LOCAL_EXT, + .alert_alarms = 0x7c, + }, + [max6659] = { + .flags = LM90_HAVE_LOCAL_EXT | LM90_HAVE_EMERGENCY, + .alert_alarms = 0x7c, + }, + [max6680] = { + .flags = LM90_HAVE_OFFSET, + .alert_alarms = 0x7c, + }, + [max6696] = { + .flags = LM90_HAVE_LOCAL_EXT | LM90_HAVE_EMERGENCY + | LM90_HAVE_EMERGENCY_ALARM | LM90_HAVE_TEMP3, + .alert_alarms = 0x187c, + }, + [w83l771] = { + .flags = LM90_HAVE_OFFSET | LM90_HAVE_REM_LIMIT_EXT, + .alert_alarms = 0x7c, + }, +}; + /* * Client data (each client gets its own) */ @@ -199,7 +256,7 @@ struct lm90_data { char valid; /* zero until following fields are valid */ unsigned long last_updated; /* in jiffies */ int kind; - int flags; + u32 flags; u8 config_orig; /* Original configuration register value */ u16 alert_alarms; /* Which alarm bits trigger ALERT# */ @@ -1201,39 +1258,10 @@ static int lm90_probe(struct i2c_client *new_client, /* Different devices have different alarm bits triggering the * ALERT# output */ - switch (data->kind) { - case lm90: - case lm99: - case lm86: - data->alert_alarms = 0x7b; - break; - case max6696: - data->alert_alarms = 0x187c; - break; - default: - data->alert_alarms = 0x7c; - break; - } + data->alert_alarms = lm90_params[data->kind].alert_alarms; /* Set chip capabilities */ - if (data->kind != max6657 && data->kind != max6659 - && data->kind != max6646 && data->kind != max6696) - data->flags |= LM90_HAVE_OFFSET; - - if (data->kind == max6657 || data->kind == max6659 - || data->kind == max6646 || data->kind == max6696) - data->flags |= LM90_HAVE_LOCAL_EXT; - - if (data->kind != max6657 && data->kind != max6659 - && data->kind != max6646 && data->kind != max6680 - && data->kind != max6696) - data->flags |= LM90_HAVE_REM_LIMIT_EXT; - - if (data->kind == max6659 || data->kind == max6696) - data->flags |= LM90_HAVE_EMERGENCY; - - if (data->kind == max6696) - data->flags |= LM90_HAVE_EMERGENCY_ALARM | LM90_HAVE_TEMP3; + data->flags = lm90_params[data->kind].flags; /* Initialize the LM90 chip */ lm90_init_client(new_client);