* [BK PATCH] I2C fixes for 2.6.10-rc2 @ 2004-11-19 21:59 Greg KH 2004-11-19 22:00 ` [PATCH] " Greg KH 0 siblings, 1 reply; 7+ messages in thread From: Greg KH @ 2004-11-19 21:59 UTC (permalink / raw) To: torvalds, akpm; +Cc: linux-kernel, sensors Hi, Here are some i2c driver fixes for 2.6.10-rc2. Please pull from: bk://kernel.bkbits.net/gregkh/linux/i2c-2.6 Individual patches will follow, sent to the sensors and linux-kernel lists. thanks, greg k-h Documentation/i2c/writing-clients | 20 ++++++++++++++++---- drivers/i2c/busses/Kconfig | 1 + drivers/i2c/busses/i2c-amd756-s4882.c | 7 +++++-- drivers/i2c/busses/i2c-nforce2.c | 9 ++++----- drivers/i2c/chips/smsc47m1.c | 29 +++++++++++++++++++++-------- drivers/i2c/i2c-core.c | 20 -------------------- include/linux/pci_ids.h | 2 ++ 7 files changed, 49 insertions(+), 39 deletions(-) ----- <thomas:plx.com>: o I2C: i2c-nforce2.c add support for nForce3 Pro 150 MCP Gabriel Paubert: o I2C: minor comment fix Jean Delvare: o I2C: Cleanups to the recent smbus functions removal o I2C: Fixes to the i2c-amd756-s4882 driver o I2C: Do not register useless smsc47m1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] I2C fixes for 2.6.10-rc2 2004-11-19 21:59 [BK PATCH] I2C fixes for 2.6.10-rc2 Greg KH @ 2004-11-19 22:00 ` Greg KH 2004-11-19 22:00 ` Greg KH 0 siblings, 1 reply; 7+ messages in thread From: Greg KH @ 2004-11-19 22:00 UTC (permalink / raw) To: linux-kernel, sensors 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 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] I2C fixes for 2.6.10-rc2 2004-11-19 22:00 ` [PATCH] " Greg KH @ 2004-11-19 22:00 ` Greg KH 2004-11-19 22:00 ` Greg KH 0 siblings, 1 reply; 7+ messages in thread From: Greg KH @ 2004-11-19 22:00 UTC (permalink / raw) To: linux-kernel, sensors ChangeSet 1.2165, 2004/11/19 09:13:08-08:00, khali@linux-fr.org [PATCH] I2C: Fixes to the i2c-amd756-s4882 driver While working on the 2.4 version of the i2c-amd756-s4882 driver, I noticed a few quirks on the 2.6 version I sent to you. The following patch attempts to fix them. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com> drivers/i2c/busses/i2c-amd756-s4882.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff -Nru a/drivers/i2c/busses/i2c-amd756-s4882.c b/drivers/i2c/busses/i2c-amd756-s4882.c --- a/drivers/i2c/busses/i2c-amd756-s4882.c 2004-11-19 11:40:48 -08:00 +++ b/drivers/i2c/busses/i2c-amd756-s4882.c 2004-11-19 11:40:48 -08:00 @@ -35,6 +35,7 @@ #include <linux/module.h> #include <linux/kernel.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/i2c.h> @@ -156,7 +157,9 @@ /* Unregister physical bus */ error = i2c_del_adapter(&amd756_smbus); if (error) { - if (error != -EINVAL) + if (error == -EINVAL) + error = -ENODEV; + else dev_err(&amd756_smbus.dev, "Physical bus removal " "failed\n"); goto ERROR0; @@ -200,7 +203,7 @@ I2C_SMBUS_WRITE, 0x03, I2C_SMBUS_BYTE_DATA, &ioconfig); if (error) { - dev_dbg(&amd756_smbus.dev, "PCA9556 configuration failed\n"); + dev_err(&amd756_smbus.dev, "PCA9556 configuration failed\n"); error = -EIO; goto ERROR3; } ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] I2C fixes for 2.6.10-rc2 2004-11-19 22:00 ` Greg KH @ 2004-11-19 22:00 ` Greg KH 2004-11-19 22:00 ` Greg KH 0 siblings, 1 reply; 7+ messages in thread From: Greg KH @ 2004-11-19 22:00 UTC (permalink / raw) To: linux-kernel, sensors ChangeSet 1.2166, 2004/11/19 09:13:45-08:00, khali@linux-fr.org [PATCH] I2C: Cleanups to the recent smbus functions removal This patch cleans up the recent removal of smbus functions proposed by Arjan and then fixed by Gabriel. Changes are as follow: 1* Discard i2c_smbus_block_process_call, as it isn't used anywhere either. I guess that Arjan missed it because it wasn't exported. 2* Document the functions removal, so that people have at least an idea that the functions can be restored later if needed. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com> Documentation/i2c/writing-clients | 20 ++++++++++++++++---- drivers/i2c/i2c-core.c | 19 ------------------- 2 files changed, 16 insertions(+), 23 deletions(-) diff -Nru a/Documentation/i2c/writing-clients b/Documentation/i2c/writing-clients --- a/Documentation/i2c/writing-clients 2004-11-19 11:40:43 -08:00 +++ b/Documentation/i2c/writing-clients 2004-11-19 11:40:43 -08:00 @@ -676,13 +676,25 @@ extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command); extern s32 i2c_smbus_write_word_data(struct i2c_client * client, u8 command, u16 value); - extern s32 i2c_smbus_process_call(struct i2c_client * client, - u8 command, u16 value); - extern s32 i2c_smbus_read_block_data(struct i2c_client * client, - u8 command, u8 *values); extern s32 i2c_smbus_write_block_data(struct i2c_client * client, u8 command, u8 length, u8 *values); + +These ones were removed in Linux 2.6.10 because they had no users, but could +be added back later if needed: + + extern s32 i2c_smbus_read_i2c_block_data(struct i2c_client * client, + u8 command, u8 *values); + extern s32 i2c_smbus_read_block_data(struct i2c_client * client, + u8 command, u8 *values); + extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client * client, + u8 command, u8 length, + u8 *values); + extern s32 i2c_smbus_process_call(struct i2c_client * client, + u8 command, u16 value); + extern s32 i2c_smbus_block_process_call(struct i2c_client *client, + u8 command, u8 length, + u8 *values) All these transactions return -1 on failure. The 'write' transactions return 0 on success; the 'read' transactions return the read value, except diff -Nru a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c --- a/drivers/i2c/i2c-core.c 2004-11-19 11:40:43 -08:00 +++ b/drivers/i2c/i2c-core.c 2004-11-19 11:40:43 -08:00 @@ -1038,25 +1038,6 @@ } /* Returns the number of read bytes */ -s32 i2c_smbus_block_process_call(struct i2c_client *client, u8 command, u8 length, u8 *values) -{ - union i2c_smbus_data data; - int i; - if (length > I2C_SMBUS_BLOCK_MAX - 1) - return -1; - data.block[0] = length; - for (i = 1; i <= length; i++) - data.block[i] = values[i-1]; - if(i2c_smbus_xfer(client->adapter,client->addr,client->flags, - I2C_SMBUS_WRITE, command, - I2C_SMBUS_BLOCK_PROC_CALL, &data)) - return -1; - for (i = 1; i <= data.block[0]; i++) - values[i-1] = data.block[i]; - return data.block[0]; -} - -/* Returns the number of read bytes */ s32 i2c_smbus_read_i2c_block_data(struct i2c_client *client, u8 command, u8 *values) { union i2c_smbus_data data; ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] I2C fixes for 2.6.10-rc2 2004-11-19 22:00 ` Greg KH @ 2004-11-19 22:00 ` Greg KH 2004-11-19 22:01 ` Greg KH 0 siblings, 1 reply; 7+ messages in thread From: Greg KH @ 2004-11-19 22:00 UTC (permalink / raw) To: linux-kernel, sensors ChangeSet 1.2167, 2004/11/19 09:14:15-08:00, paubert@iram.es [PATCH] I2C: minor comment fix It seems so. BTW I hate wrong comments and happened to add one in my patch. To fix my blunder, can you apply the appended one line removal on top of Jean's patch. Signed-off-by: Gabriel Paubert <paubert@iram.es> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com> drivers/i2c/i2c-core.c | 1 - 1 files changed, 1 deletion(-) diff -Nru a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c --- a/drivers/i2c/i2c-core.c 2004-11-19 11:40:37 -08:00 +++ b/drivers/i2c/i2c-core.c 2004-11-19 11:40:37 -08:00 @@ -1021,7 +1021,6 @@ I2C_SMBUS_WORD_DATA,&data); } -/* Returns the number of bytes transferred */ s32 i2c_smbus_write_block_data(struct i2c_client *client, u8 command, u8 length, u8 *values) { ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] I2C fixes for 2.6.10-rc2 2004-11-19 22:00 ` Greg KH @ 2004-11-19 22:01 ` Greg KH 0 siblings, 0 replies; 7+ messages in thread From: Greg KH @ 2004-11-19 22:01 UTC (permalink / raw) To: linux-kernel, sensors ChangeSet 1.2168, 2004/11/19 09:14:38-08:00, thomas@plx.com [PATCH] I2C: i2c-nforce2.c add support for nForce3 Pro 150 MCP This is the all new and improved version of the patch: - following the advise from Jean Delvare I removed the redundant definition of the PCI IDs from the driver and just add them to the pci_ids.h file. - the patch is now created against linux 2.6.10-RC2. Signed-off-by: Thomas Leibold <thomas@plx.com> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com> drivers/i2c/busses/Kconfig | 1 + drivers/i2c/busses/i2c-nforce2.c | 9 ++++----- include/linux/pci_ids.h | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) diff -Nru a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig --- a/drivers/i2c/busses/Kconfig 2004-11-19 11:40:32 -08:00 +++ b/drivers/i2c/busses/Kconfig 2004-11-19 11:40:32 -08:00 @@ -218,6 +218,7 @@ help If you say yes to this option, support will be included for the Nvidia Nforce2 family of mainboard I2C interfaces. + This driver also supports the nForce3 Pro 150 MCP. This driver can also be built as a module. If so, the module will be called i2c-nforce2. diff -Nru a/drivers/i2c/busses/i2c-nforce2.c b/drivers/i2c/busses/i2c-nforce2.c --- a/drivers/i2c/busses/i2c-nforce2.c 2004-11-19 11:40:32 -08:00 +++ b/drivers/i2c/busses/i2c-nforce2.c 2004-11-19 11:40:32 -08:00 @@ -1,6 +1,7 @@ /* SMBus driver for nVidia nForce2 MCP + Added nForce3 Pro 150 Thomas Leibold <thomas@plx.com>, Ported to 2.5 Patrick Dreker <patrick@dreker.de>, Copyright (c) 2003 Hans-Frieder Vogt <hfvogt@arcor.de>, Based on @@ -25,6 +26,7 @@ /* SUPPORTED DEVICES PCI ID nForce2 MCP 0064 + nForce3 Pro150 MCP 00D4 This driver supports the 2 SMBuses that are included in the MCP2 of the nForce2 chipset. @@ -49,11 +51,6 @@ MODULE_DESCRIPTION("nForce2 SMBus driver"); -#ifndef PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS -#define PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS 0x0064 -#endif - - struct nforce2_smbus { struct pci_dev *dev; struct i2c_adapter adapter; @@ -293,6 +290,8 @@ static struct pci_device_id nforce2_ids[] = { { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3_SMBUS, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, { 0 } }; diff -Nru a/include/linux/pci_ids.h b/include/linux/pci_ids.h --- a/include/linux/pci_ids.h 2004-11-19 11:40:32 -08:00 +++ b/include/linux/pci_ids.h 2004-11-19 11:40:32 -08:00 @@ -1082,6 +1082,7 @@ #define PCI_DEVICE_ID_NVIDIA_NVENET_8 0x0056 #define PCI_DEVICE_ID_NVIDIA_NVENET_9 0x0057 #define PCI_DEVICE_ID_NVIDIA_CK804_AUDIO 0x0059 +#define PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS 0x0064 #define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE 0x0065 #define PCI_DEVICE_ID_NVIDIA_NVENET_2 0x0066 #define PCI_DEVICE_ID_NVIDIA_MCP2_AUDIO 0x006a @@ -1093,6 +1094,7 @@ #define PCI_DEVICE_ID_NVIDIA_NFORCE3 0x00d1 #define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO 0x00da #define PCI_DEVICE_ID_NVIDIA_NFORCE3S 0x00e1 +#define PCI_DEVICE_ID_NVIDIA_NFORCE3_SMBUS 0x00d4 #define PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE 0x00d5 #define PCI_DEVICE_ID_NVIDIA_NVENET_3 0x00d6 #define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO 0x00da ^ permalink raw reply [flat|nested] 7+ messages in thread
* [BK PATCH] I2C fixes for 2.6.10-rc2 @ 2004-12-01 0:12 Greg KH 0 siblings, 0 replies; 7+ messages in thread From: Greg KH @ 2004-12-01 0:12 UTC (permalink / raw) To: torvalds, akpm; +Cc: linux-kernel, sensors Hi, Here are some i2c driver fixes and the addition of a new chip driver for 2.6.10-rc2 (it is self-contained) for 2.6.10-rc2 Please pull from: bk://kernel.bkbits.net/gregkh/linux/i2c-2.6 Individual patches will follow, sent to the sensors and linux-kernel lists. thanks, greg k-h drivers/i2c/busses/i2c-elektor.c | 28 drivers/i2c/busses/i2c-ite.c | 31 drivers/i2c/busses/i2c-nforce2.c | 9 drivers/i2c/chips/Kconfig | 9 drivers/i2c/chips/Makefile | 1 drivers/i2c/chips/adm1026.c | 1781 ++++++++++++++++++++++++++++++++++- drivers/i2c/chips/w83l785ts.c | 9 drivers/macintosh/therm_adt746x.c | 11 drivers/macintosh/therm_pm72.c | 3 drivers/macintosh/therm_windtunnel.c | 8 drivers/w1/Kconfig | 2 drivers/w1/dscore.c | 40 drivers/w1/dscore.h | 34 drivers/w1/w1_int.c | 11 drivers/w1/w1_netlink.c | 3 include/linux/pci_ids.h | 1 16 files changed, 1902 insertions(+), 79 deletions(-) ----- <jthiessen:penguincomputing.com>: o I2C: add adm1026 chip driver Aristeu Sergio Rozanski Filho: o i2c-ite: get rid of cli()/sti() o [2/2] i2c-elektor: adding missing casts o i2c-elektor: get rid of cli/sti Evgeniy Polyakov: o W1: check nls in return path o drivers/w1/dscore: fix the inline mess o w1: make W1_DS9490_BRIDGE available o w1: do not stop and oops if netlink socket was not allocated Greg Kroah-Hartman: o I2C: make fixup_fan_min static in adm1026 driver Jean Delvare: o I2C: macintoch/therm_* drivers cleanups o I2C: Add support for the nForce2 Ultra 400 to i2c-nforce2 o I2C: More verbose w83l785ts driver ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2004-12-01 0:18 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2004-11-19 21:59 [BK PATCH] I2C fixes for 2.6.10-rc2 Greg KH 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:00 ` Greg KH 2004-11-19 22:01 ` Greg KH -- strict thread matches above, loose matches on Subject: below -- 2004-12-01 0:12 [BK PATCH] " Greg KH
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox