From: Greg KH <greg@kroah.com>
To: linux-kernel@vger.kernel.org, sensors@Stimpy.netroedge.com
Subject: [PATCH] I2C fixes for 2.6.10-rc2
Date: Fri, 19 Nov 2004 14:00:01 -0800 [thread overview]
Message-ID: <20041119220001.GB15956@kroah.com> (raw)
In-Reply-To: <20041119215935.GA15956@kroah.com>
ChangeSet 1.2164, 2004/11/19 09:12:35-08:00, khali@linux-fr.org
[PATCH] I2C: Do not register useless smsc47m1
While verifying my stack of patches against what you sent to Linus last
week, I noticed this one. Looks like I simply forgot to send it to you,
as I cannot find any trace of it in the lm_sensors mailing-list
archives.
The patch prevents an smsc47m1 device from being registered when no
monitoring function is actually active within the chip. See this ticket
for background:
http://secure.netroedge.com/~lm78/readticket.cgi?ticket=1801
This is certainly better to explicitely fail in this case than leave the
user with an empty sysfs directory (except for alarms), which tends to
make him/her think of a driver bug, which it isn't (what it really is is
a BIOS brokenness).
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
drivers/i2c/chips/smsc47m1.c | 29 +++++++++++++++++++++--------
1 files changed, 21 insertions(+), 8 deletions(-)
diff -Nru a/drivers/i2c/chips/smsc47m1.c b/drivers/i2c/chips/smsc47m1.c
--- a/drivers/i2c/chips/smsc47m1.c 2004-11-19 11:40:54 -08:00
+++ b/drivers/i2c/chips/smsc47m1.c 2004-11-19 11:40:54 -08:00
@@ -394,6 +394,7 @@
struct i2c_client *new_client;
struct smsc47m1_data *data;
int err = 0;
+ int fan1, fan2, pwm1, pwm2;
if (!i2c_is_isa_adapter(adapter)) {
return 0;
@@ -423,6 +424,22 @@
new_client->id = smsc47m1_id++;
init_MUTEX(&data->update_lock);
+ /* If no function is properly configured, there's no point in
+ actually registering the chip. */
+ fan1 = (smsc47m1_read_value(new_client, SMSC47M1_REG_TPIN(0)) & 0x05)
+ == 0x05;
+ fan2 = (smsc47m1_read_value(new_client, SMSC47M1_REG_TPIN(1)) & 0x05)
+ == 0x05;
+ pwm1 = (smsc47m1_read_value(new_client, SMSC47M1_REG_PPIN(0)) & 0x05)
+ == 0x04;
+ pwm2 = (smsc47m1_read_value(new_client, SMSC47M1_REG_PPIN(1)) & 0x05)
+ == 0x04;
+ if (!(fan1 || fan2 || pwm1 || pwm2)) {
+ dev_warn(&new_client->dev, "Device is not configured, will not use\n");
+ err = -ENODEV;
+ goto error_free;
+ }
+
if ((err = i2c_attach_client(new_client)))
goto error_free;
@@ -434,8 +451,7 @@
function. */
smsc47m1_update_device(&new_client->dev, 1);
- if ((smsc47m1_read_value(new_client, SMSC47M1_REG_TPIN(0)) & 0x05)
- == 0x05) {
+ if (fan1) {
device_create_file(&new_client->dev, &dev_attr_fan1_input);
device_create_file(&new_client->dev, &dev_attr_fan1_min);
device_create_file(&new_client->dev, &dev_attr_fan1_div);
@@ -443,8 +459,7 @@
dev_dbg(&new_client->dev, "Fan 1 not enabled by hardware, "
"skipping\n");
- if ((smsc47m1_read_value(new_client, SMSC47M1_REG_TPIN(1)) & 0x05)
- == 0x05) {
+ if (fan2) {
device_create_file(&new_client->dev, &dev_attr_fan2_input);
device_create_file(&new_client->dev, &dev_attr_fan2_min);
device_create_file(&new_client->dev, &dev_attr_fan2_div);
@@ -452,15 +467,13 @@
dev_dbg(&new_client->dev, "Fan 2 not enabled by hardware, "
"skipping\n");
- if ((smsc47m1_read_value(new_client, SMSC47M1_REG_PPIN(0)) & 0x05)
- == 0x04) {
+ if (pwm1) {
device_create_file(&new_client->dev, &dev_attr_pwm1);
device_create_file(&new_client->dev, &dev_attr_pwm1_enable);
} else
dev_dbg(&new_client->dev, "PWM 1 not enabled by hardware, "
"skipping\n");
- if ((smsc47m1_read_value(new_client, SMSC47M1_REG_PPIN(1)) & 0x05)
- == 0x04) {
+ if (pwm2) {
device_create_file(&new_client->dev, &dev_attr_pwm2);
device_create_file(&new_client->dev, &dev_attr_pwm2_enable);
} else
next prev parent reply other threads:[~2004-11-19 22:21 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-19 21:59 [BK PATCH] " Greg KH
2004-11-19 22:00 ` Greg KH [this message]
2004-11-19 22:00 ` [PATCH] " Greg KH
2004-11-19 22:00 ` Greg KH
2004-11-19 22:00 ` Greg KH
2004-11-19 22:01 ` Greg KH
2004-12-01 0:12 [BK PATCH] " Greg KH
2004-12-01 0:13 ` [PATCH] " Greg KH
2004-12-01 0:13 ` Greg KH
2004-12-01 0:13 ` Greg KH
2004-12-01 0:13 ` Greg KH
2004-12-01 0:13 ` Greg KH
2004-12-01 0:13 ` Greg KH
2004-12-01 0:13 ` Greg KH
2004-12-01 0:13 ` Greg KH
2004-12-01 0:13 ` Greg KH
2004-12-01 0:13 ` Greg KH
2004-12-01 0:13 ` Greg KH
2004-12-01 0:13 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20041119220001.GB15956@kroah.com \
--to=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sensors@Stimpy.netroedge.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®