From khali@linux-fr.org Sun Jul 31 12:53:44 2005 Date: Sun, 31 Jul 2005 21:49:03 +0200 From: Jean Delvare Cc: Greg KH Subject: hwmon: hwmon vs i2c, second round (06/11) Message-Id: <20050731214903.20146711.khali@linux-fr.org> The only thing left in i2c-sensor.h are module parameter definition macros. It's only an extension of what i2c.h offers, and this extension is not sensors-specific. As a matter of fact, a few non-sensors drivers use them. So we better merge them in i2c.h, and get rid of i2c-sensor.h altogether. Signed-off-by: Jean Delvare Signed-off-by: Greg Kroah-Hartman --- Documentation/i2c/porting-clients | 8 - Documentation/i2c/writing-clients | 68 ++---------- drivers/hwmon/adm1021.c | 3 drivers/hwmon/adm1025.c | 3 drivers/hwmon/adm1026.c | 3 drivers/hwmon/adm1031.c | 3 drivers/hwmon/adm9240.c | 3 drivers/hwmon/asb100.c | 3 drivers/hwmon/atxp1.c | 3 drivers/hwmon/ds1621.c | 3 drivers/hwmon/fscher.c | 3 drivers/hwmon/fscpos.c | 3 drivers/hwmon/gl518sm.c | 3 drivers/hwmon/gl520sm.c | 3 drivers/hwmon/it87.c | 3 drivers/hwmon/lm63.c | 3 drivers/hwmon/lm75.c | 3 drivers/hwmon/lm77.c | 3 drivers/hwmon/lm78.c | 3 drivers/hwmon/lm80.c | 3 drivers/hwmon/lm83.c | 3 drivers/hwmon/lm85.c | 3 drivers/hwmon/lm87.c | 3 drivers/hwmon/lm90.c | 3 drivers/hwmon/lm92.c | 3 drivers/hwmon/max1619.c | 3 drivers/hwmon/sis5595.c | 1 drivers/hwmon/smsc47m1.c | 1 drivers/hwmon/via686a.c | 1 drivers/hwmon/w83627hf.c | 1 drivers/hwmon/w83781d.c | 3 drivers/hwmon/w83792d.c | 3 drivers/hwmon/w83l785ts.c | 3 drivers/i2c/chips/ds1337.c | 3 drivers/i2c/chips/eeprom.c | 3 drivers/i2c/chips/max6875.c | 3 drivers/i2c/chips/pca9539.c | 3 drivers/i2c/chips/pcf8574.c | 3 drivers/i2c/chips/pcf8591.c | 3 include/linux/i2c-sensor.h | 203 -------------------------------------- include/linux/i2c.h | 148 +++++++++++++++++++++++++-- 41 files changed, 188 insertions(+), 342 deletions(-) --- gregkh-2.6.orig/Documentation/i2c/porting-clients 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/Documentation/i2c/porting-clients 2005-08-08 15:02:20.000000000 -0700 @@ -1,4 +1,4 @@ -Revision 4, 2004-03-30 +Revision 5, 2005-07-29 Jean Delvare Greg KH @@ -17,13 +17,12 @@ Technical changes: -* [Includes] Get rid of "version.h". Replace with - . Includes typically look like that: +* [Includes] Get rid of "version.h" and . + Includes typically look like that: #include #include #include #include - #include #include /* if you need VRM support */ #include /* if you have I/O operations */ Please respect this inclusion order. Some extra headers may be @@ -31,6 +30,7 @@ * [Addresses] SENSORS_I2C_END becomes I2C_CLIENT_END, ISA addresses are no more handled by the i2c core. + SENSORS_INSMOD_ becomes I2C_CLIENT_INSMOD_. * [Client data] Get rid of sysctl_id. Try using standard names for register values (for example, temp_os becomes temp_max). You're --- gregkh-2.6.orig/Documentation/i2c/writing-clients 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/Documentation/i2c/writing-clients 2005-08-08 15:02:20.000000000 -0700 @@ -155,8 +155,8 @@ -Probing classes (i2c) ---------------------- +Probing classes +--------------- All parameters are given as lists of unsigned 16-bit integers. Lists are terminated by I2C_CLIENT_END. @@ -171,12 +171,18 @@ ignore: insmod parameter. A list of pairs. The first value is a bus number (-1 for any I2C bus), the second is the I2C address. These addresses are never probed. - This parameter overrules 'normal' and 'probe', but not the 'force' lists. + This parameter overrules the 'normal_i2c' list only. force: insmod parameter. A list of pairs. The first value is a bus number (-1 for any I2C bus), the second is the I2C address. A device is blindly assumed to be on the given address, no probing is done. +Additionally, kind-specific force lists may optionally be defined if +the driver supports several chip kinds. They are grouped in a +NULL-terminated list of pointers named forces, those first element if the +generic force list mentioned above. Each additional list correspond to an +insmod parameter of the form force_. + Fortunately, as a module writer, you just have to define the `normal_i2c' parameter. The complete declaration could look like this: @@ -186,61 +192,17 @@ /* Magic definition of all other variables and things */ I2C_CLIENT_INSMOD; + /* Or, if your driver supports, say, 2 kind of devices: */ + I2C_CLIENT_INSMOD_2(foo, bar); + +If you use the multi-kind form, an enum will be defined for you: + enum chips { any_chip, foo, bar, ... } +You can then (and certainly should) use it in the driver code. Note that you *have* to call the defined variable `normal_i2c', without any prefix! -Probing classes (sensors) -------------------------- - -If you write a `sensors' driver, you use a slightly different interface. -Also, we use a enum of chip types. Don't forget to include `sensors.h'. - -The following lists are used internally. They are all lists of integers. - - normal_i2c: filled in by the module writer. Terminated by I2C_CLIENT_END. - A list of I2C addresses which should normally be examined. - probe: insmod parameter. Initialize this list with I2C_CLIENT_END values. - A list of pairs. The first value is a bus number (ANY_I2C_BUS for any - I2C bus), the second is the address. These addresses are also probed, - as if they were in the 'normal' list. - ignore: insmod parameter. Initialize this list with I2C_CLIENT_END values. - A list of pairs. The first value is a bus number (ANY_I2C_BUS for any - I2C bus), the second is the I2C address. These addresses are never - probed. This parameter overrules 'normal' and 'probe', but not the - 'force' lists. - -Also used is a list of pointers to sensors_force_data structures: - force_data: insmod parameters. A list, ending with an element of which - the force field is NULL. - Each element contains the type of chip and a list of pairs. - The first value is a bus number (ANY_I2C_BUS for any I2C bus), the - second is the address. - These are automatically translated to insmod variables of the form - force_foo. - -So we have a generic insmod variabled `force', and chip-specific variables -`force_CHIPNAME'. - -Fortunately, as a module writer, you just have to define the `normal_i2c' -parameter, and define what chip names are used. The complete declaration -could look like this: - /* Scan i2c addresses 0x37, and 0x48 to 0x4f */ - static unsigned short normal_i2c[] = { 0x37, 0x48, 0x49, 0x4a, 0x4b, 0x4c, - 0x4d, 0x4e, 0x4f, I2C_CLIENT_END }; - - /* Define chips foo and bar, as well as all module parameters and things */ - SENSORS_INSMOD_2(foo,bar); - -If you have one chip, you use macro SENSORS_INSMOD_1(chip), if you have 2 -you use macro SENSORS_INSMOD_2(chip1,chip2), etc. If you do not want to -bother with chip types, you can use SENSORS_INSMOD_0. - -A enum is automatically defined as follows: - enum chips { any_chip, chip1, chip2, ... } - - Attaching to an adapter ----------------------- --- gregkh-2.6.orig/drivers/hwmon/adm1021.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/adm1021.c 2005-08-08 15:02:20.000000000 -0700 @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -36,7 +35,7 @@ I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_8(adm1021, adm1023, max1617, max1617a, thmc10, lm84, gl523sm, mc1066); +I2C_CLIENT_INSMOD_8(adm1021, adm1023, max1617, max1617a, thmc10, lm84, gl523sm, mc1066); /* adm1021 constants specified below */ --- gregkh-2.6.orig/drivers/hwmon/adm1025.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/adm1025.c 2005-08-08 15:02:20.000000000 -0700 @@ -50,7 +50,6 @@ #include #include #include -#include #include #include #include @@ -67,7 +66,7 @@ * Insmod parameters */ -SENSORS_INSMOD_2(adm1025, ne1619); +I2C_CLIENT_INSMOD_2(adm1025, ne1619); /* * The ADM1025 registers --- gregkh-2.6.orig/drivers/hwmon/adm1026.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/adm1026.c 2005-08-08 15:02:20.000000000 -0700 @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -38,7 +37,7 @@ static unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(adm1026); +I2C_CLIENT_INSMOD_1(adm1026); static int gpio_input[17] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; --- gregkh-2.6.orig/drivers/hwmon/adm1031.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/adm1031.c 2005-08-08 15:02:20.000000000 -0700 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include @@ -63,7 +62,7 @@ static unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_2(adm1030, adm1031); +I2C_CLIENT_INSMOD_2(adm1030, adm1031); typedef u8 auto_chan_table_t[8][2]; --- gregkh-2.6.orig/drivers/hwmon/adm9240.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/adm9240.c 2005-08-08 15:02:20.000000000 -0700 @@ -45,7 +45,6 @@ #include #include #include -#include #include #include #include @@ -55,7 +54,7 @@ I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_3(adm9240, ds1780, lm81); +I2C_CLIENT_INSMOD_3(adm9240, ds1780, lm81); /* ADM9240 registers */ #define ADM9240_REG_MAN_ID 0x3e --- gregkh-2.6.orig/drivers/hwmon/asb100.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/asb100.c 2005-08-08 15:02:20.000000000 -0700 @@ -39,7 +39,6 @@ #include #include #include -#include #include #include #include @@ -57,7 +56,7 @@ static unsigned short normal_i2c[] = { 0x2d, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(asb100); +I2C_CLIENT_INSMOD_1(asb100); I2C_CLIENT_MODULE_PARM(force_subclients, "List of subclient addresses: " "{bus, clientaddr, subclientaddr1, subclientaddr2}"); --- gregkh-2.6.orig/drivers/hwmon/atxp1.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/atxp1.c 2005-08-08 15:02:20.000000000 -0700 @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -43,7 +42,7 @@ static unsigned short normal_i2c[] = { 0x37, 0x4e, I2C_CLIENT_END }; -SENSORS_INSMOD_1(atxp1); +I2C_CLIENT_INSMOD_1(atxp1); static int atxp1_attach_adapter(struct i2c_adapter * adapter); static int atxp1_detach_client(struct i2c_client * client); --- gregkh-2.6.orig/drivers/hwmon/ds1621.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/ds1621.c 2005-08-08 15:02:20.000000000 -0700 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include "lm75.h" @@ -36,7 +35,7 @@ 0x4d, 0x4e, 0x4f, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(ds1621); +I2C_CLIENT_INSMOD_1(ds1621); static int polarity = -1; module_param(polarity, int, 0); MODULE_PARM_DESC(polarity, "Output's polarity: 0 = active high, 1 = active low"); --- gregkh-2.6.orig/drivers/hwmon/fscher.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/fscher.c 2005-08-08 15:02:20.000000000 -0700 @@ -31,7 +31,6 @@ #include #include #include -#include #include #include @@ -45,7 +44,7 @@ * Insmod parameters */ -SENSORS_INSMOD_1(fscher); +I2C_CLIENT_INSMOD_1(fscher); /* * The FSCHER registers --- gregkh-2.6.orig/drivers/hwmon/fscpos.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/fscpos.c 2005-08-08 15:02:20.000000000 -0700 @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -47,7 +46,7 @@ /* * Insmod parameters */ -SENSORS_INSMOD_1(fscpos); +I2C_CLIENT_INSMOD_1(fscpos); /* * The FSCPOS registers --- gregkh-2.6.orig/drivers/hwmon/gl518sm.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/gl518sm.c 2005-08-08 15:02:20.000000000 -0700 @@ -41,7 +41,6 @@ #include #include #include -#include #include #include @@ -49,7 +48,7 @@ static unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_2(gl518sm_r00, gl518sm_r80); +I2C_CLIENT_INSMOD_2(gl518sm_r00, gl518sm_r80); /* Many GL518 constants specified below */ --- gregkh-2.6.orig/drivers/hwmon/gl520sm.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/gl520sm.c 2005-08-08 15:02:20.000000000 -0700 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include @@ -40,7 +39,7 @@ static unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(gl520sm); +I2C_CLIENT_INSMOD_1(gl520sm); /* Many GL520 constants specified below One of the inputs can be configured as either temp or voltage. --- gregkh-2.6.orig/drivers/hwmon/it87.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/it87.c 2005-08-08 15:02:20.000000000 -0700 @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -51,7 +50,7 @@ static unsigned short isa_address = 0x290; /* Insmod parameters */ -SENSORS_INSMOD_2(it87, it8712); +I2C_CLIENT_INSMOD_2(it87, it8712); #define REG 0x2e /* The register to read/write */ #define DEV 0x07 /* Register: Logical device select */ --- gregkh-2.6.orig/drivers/hwmon/lm63.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/lm63.c 2005-08-08 15:02:20.000000000 -0700 @@ -42,7 +42,6 @@ #include #include #include -#include #include #include #include @@ -58,7 +57,7 @@ * Insmod parameters */ -SENSORS_INSMOD_1(lm63); +I2C_CLIENT_INSMOD_1(lm63); /* * The LM63 registers --- gregkh-2.6.orig/drivers/hwmon/lm75.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/lm75.c 2005-08-08 15:02:20.000000000 -0700 @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include "lm75.h" @@ -34,7 +33,7 @@ 0x4d, 0x4e, 0x4f, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(lm75); +I2C_CLIENT_INSMOD_1(lm75); /* Many LM75 constants specified below */ --- gregkh-2.6.orig/drivers/hwmon/lm77.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/lm77.c 2005-08-08 15:02:20.000000000 -0700 @@ -30,7 +30,6 @@ #include #include #include -#include #include #include @@ -38,7 +37,7 @@ static unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(lm77); +I2C_CLIENT_INSMOD_1(lm77); /* The LM77 registers */ #define LM77_REG_TEMP 0x00 --- gregkh-2.6.orig/drivers/hwmon/lm78.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/lm78.c 2005-08-08 15:02:20.000000000 -0700 @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -37,7 +36,7 @@ static unsigned short isa_address = 0x290; /* Insmod parameters */ -SENSORS_INSMOD_2(lm78, lm79); +I2C_CLIENT_INSMOD_2(lm78, lm79); /* Many LM78 constants specified below */ --- gregkh-2.6.orig/drivers/hwmon/lm80.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/lm80.c 2005-08-08 15:02:20.000000000 -0700 @@ -26,7 +26,6 @@ #include #include #include -#include #include #include @@ -35,7 +34,7 @@ 0x2d, 0x2e, 0x2f, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(lm80); +I2C_CLIENT_INSMOD_1(lm80); /* Many LM80 constants specified below */ --- gregkh-2.6.orig/drivers/hwmon/lm83.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/lm83.c 2005-08-08 15:02:20.000000000 -0700 @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -52,7 +51,7 @@ * Insmod parameters */ -SENSORS_INSMOD_1(lm83); +I2C_CLIENT_INSMOD_1(lm83); /* * The LM83 registers --- gregkh-2.6.orig/drivers/hwmon/lm85.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/lm85.c 2005-08-08 15:02:20.000000000 -0700 @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -37,7 +36,7 @@ static unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_6(lm85b, lm85c, adm1027, adt7463, emc6d100, emc6d102); +I2C_CLIENT_INSMOD_6(lm85b, lm85c, adm1027, adt7463, emc6d100, emc6d102); /* The LM85 registers */ --- gregkh-2.6.orig/drivers/hwmon/lm87.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/lm87.c 2005-08-08 15:02:20.000000000 -0700 @@ -57,7 +57,6 @@ #include #include #include -#include #include #include #include @@ -73,7 +72,7 @@ * Insmod parameters */ -SENSORS_INSMOD_1(lm87); +I2C_CLIENT_INSMOD_1(lm87); /* * The LM87 registers --- gregkh-2.6.orig/drivers/hwmon/lm90.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/lm90.c 2005-08-08 15:02:20.000000000 -0700 @@ -75,7 +75,6 @@ #include #include #include -#include #include #include #include @@ -96,7 +95,7 @@ * Insmod parameters */ -SENSORS_INSMOD_6(lm90, adm1032, lm99, lm86, max6657, adt7461); +I2C_CLIENT_INSMOD_6(lm90, adm1032, lm99, lm86, max6657, adt7461); /* * The LM90 registers --- gregkh-2.6.orig/drivers/hwmon/lm92.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/lm92.c 2005-08-08 15:02:20.000000000 -0700 @@ -44,7 +44,6 @@ #include #include #include -#include #include #include @@ -54,7 +53,7 @@ I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(lm92); +I2C_CLIENT_INSMOD_1(lm92); /* The LM92 registers */ #define LM92_REG_CONFIG 0x01 /* 8-bit, RW */ --- gregkh-2.6.orig/drivers/hwmon/max1619.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/max1619.c 2005-08-08 15:02:20.000000000 -0700 @@ -31,7 +31,6 @@ #include #include #include -#include #include #include @@ -44,7 +43,7 @@ * Insmod parameters */ -SENSORS_INSMOD_1(max1619); +I2C_CLIENT_INSMOD_1(max1619); /* * The MAX1619 registers --- gregkh-2.6.orig/drivers/hwmon/sis5595.c 2005-08-08 09:58:22.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/sis5595.c 2005-08-08 15:02:20.000000000 -0700 @@ -56,7 +56,6 @@ #include #include #include -#include #include #include #include --- gregkh-2.6.orig/drivers/hwmon/smsc47m1.c 2005-08-08 09:58:22.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/smsc47m1.c 2005-08-08 15:02:20.000000000 -0700 @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include --- gregkh-2.6.orig/drivers/hwmon/via686a.c 2005-08-08 09:58:22.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/via686a.c 2005-08-08 15:02:20.000000000 -0700 @@ -36,7 +36,6 @@ #include #include #include -#include #include #include #include --- gregkh-2.6.orig/drivers/hwmon/w83627hf.c 2005-08-08 09:58:22.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/w83627hf.c 2005-08-08 15:02:20.000000000 -0700 @@ -43,7 +43,6 @@ #include #include #include -#include #include #include #include --- gregkh-2.6.orig/drivers/hwmon/w83781d.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/w83781d.c 2005-08-08 15:02:20.000000000 -0700 @@ -39,7 +39,6 @@ #include #include #include -#include #include #include #include @@ -53,7 +52,7 @@ static unsigned short isa_address = 0x290; /* Insmod parameters */ -SENSORS_INSMOD_5(w83781d, w83782d, w83783s, w83627hf, as99127f); +I2C_CLIENT_INSMOD_5(w83781d, w83782d, w83783s, w83627hf, as99127f); I2C_CLIENT_MODULE_PARM(force_subclients, "List of subclient addresses: " "{bus, clientaddr, subclientaddr1, subclientaddr2}"); --- gregkh-2.6.orig/drivers/hwmon/w83792d.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/w83792d.c 2005-08-08 15:02:20.000000000 -0700 @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include @@ -50,7 +49,7 @@ static unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, 0x2f, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(w83792d); +I2C_CLIENT_INSMOD_1(w83792d); I2C_CLIENT_MODULE_PARM(force_subclients, "List of subclient addresses: " "{bus, clientaddr, subclientaddr1, subclientaddr2}"); --- gregkh-2.6.orig/drivers/hwmon/w83l785ts.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/hwmon/w83l785ts.c 2005-08-08 15:02:20.000000000 -0700 @@ -36,7 +36,6 @@ #include #include #include -#include #include #include @@ -54,7 +53,7 @@ * Insmod parameters */ -SENSORS_INSMOD_1(w83l785ts); +I2C_CLIENT_INSMOD_1(w83l785ts); /* * The W83L785TS-S registers --- gregkh-2.6.orig/drivers/i2c/chips/ds1337.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/i2c/chips/ds1337.c 2005-08-08 15:02:20.000000000 -0700 @@ -17,7 +17,6 @@ #include #include #include -#include #include #include /* get the user-level API */ #include @@ -40,7 +39,7 @@ */ static unsigned short normal_i2c[] = { 0x68, I2C_CLIENT_END }; -SENSORS_INSMOD_1(ds1337); +I2C_CLIENT_INSMOD_1(ds1337); static int ds1337_attach_adapter(struct i2c_adapter *adapter); static int ds1337_detect(struct i2c_adapter *adapter, int address, int kind); --- gregkh-2.6.orig/drivers/i2c/chips/eeprom.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/i2c/chips/eeprom.c 2005-08-08 15:02:20.000000000 -0700 @@ -33,14 +33,13 @@ #include #include #include -#include /* Addresses to scan */ static unsigned short normal_i2c[] = { 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(eeprom); +I2C_CLIENT_INSMOD_1(eeprom); /* Size of EEPROM in bytes */ --- gregkh-2.6.orig/drivers/i2c/chips/max6875.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/i2c/chips/max6875.c 2005-08-08 15:02:20.000000000 -0700 @@ -31,14 +31,13 @@ #include #include #include -#include #include /* Do not scan - the MAX6875 access method will write to some EEPROM chips */ static unsigned short normal_i2c[] = {I2C_CLIENT_END}; /* Insmod parameters */ -SENSORS_INSMOD_1(max6875); +I2C_CLIENT_INSMOD_1(max6875); /* The MAX6875 can only read/write 16 bytes at a time */ #define SLICE_SIZE 16 --- gregkh-2.6.orig/drivers/i2c/chips/pca9539.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/i2c/chips/pca9539.c 2005-08-08 15:02:20.000000000 -0700 @@ -13,13 +13,12 @@ #include #include #include -#include /* Addresses to scan */ static unsigned short normal_i2c[] = {0x74, 0x75, 0x76, 0x77, I2C_CLIENT_END}; /* Insmod parameters */ -SENSORS_INSMOD_1(pca9539); +I2C_CLIENT_INSMOD_1(pca9539); enum pca9539_cmd { --- gregkh-2.6.orig/drivers/i2c/chips/pcf8574.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/i2c/chips/pcf8574.c 2005-08-08 15:02:20.000000000 -0700 @@ -39,7 +39,6 @@ #include #include #include -#include /* Addresses to scan */ static unsigned short normal_i2c[] = { 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, @@ -47,7 +46,7 @@ I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_2(pcf8574, pcf8574a); +I2C_CLIENT_INSMOD_2(pcf8574, pcf8574a); /* Initial values */ #define PCF8574_INIT 255 /* All outputs on (input mode) */ --- gregkh-2.6.orig/drivers/i2c/chips/pcf8591.c 2005-08-08 15:02:17.000000000 -0700 +++ gregkh-2.6/drivers/i2c/chips/pcf8591.c 2005-08-08 15:02:20.000000000 -0700 @@ -24,14 +24,13 @@ #include #include #include -#include /* Addresses to scan */ static unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, I2C_CLIENT_END }; /* Insmod parameters */ -SENSORS_INSMOD_1(pcf8591); +I2C_CLIENT_INSMOD_1(pcf8591); static int input_mode; module_param(input_mode, int, 0); --- gregkh-2.6.orig/include/linux/i2c-sensor.h 2005-08-08 15:02:19.000000000 -0700 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,203 +0,0 @@ -/* - i2c-sensor.h - Part of the i2c package - was originally sensors.h - Part of lm_sensors, Linux kernel modules - for hardware monitoring - Copyright (c) 1998, 1999 Frodo Looijaard - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef _LINUX_I2C_SENSOR_H -#define _LINUX_I2C_SENSOR_H - -#include - -#define SENSORS_MODULE_PARM_FORCE(name) \ - I2C_CLIENT_MODULE_PARM(force_ ## name, \ - "List of adapter,address pairs which are unquestionably" \ - " assumed to contain a `" # name "' chip") - - -/* This defines several insmod variables, and the addr_data structure */ -#define SENSORS_INSMOD \ - I2C_CLIENT_MODULE_PARM(probe, \ - "List of adapter,address pairs to scan additionally"); \ - I2C_CLIENT_MODULE_PARM(ignore, \ - "List of adapter,address pairs not to scan"); \ - static struct i2c_client_address_data addr_data = { \ - .normal_i2c = normal_i2c, \ - .probe = probe, \ - .ignore = ignore, \ - .forces = forces, \ - } - -/* The following functions create an enum with the chip names as elements. - The first element of the enum is any_chip. These are the only macros - a module will want to use. */ - -#define SENSORS_INSMOD_0 \ - enum chips { any_chip }; \ - I2C_CLIENT_MODULE_PARM(force, \ - "List of adapter,address pairs to boldly assume " \ - "to be present"); \ - static unsigned short *forces[] = { force, \ - NULL }; \ - SENSORS_INSMOD - -#define SENSORS_INSMOD_1(chip1) \ - enum chips { any_chip, chip1 }; \ - I2C_CLIENT_MODULE_PARM(force, \ - "List of adapter,address pairs to boldly assume " \ - "to be present"); \ - SENSORS_MODULE_PARM_FORCE(chip1); \ - static unsigned short *forces[] = { force, \ - force_##chip1, \ - NULL }; \ - SENSORS_INSMOD - -#define SENSORS_INSMOD_2(chip1,chip2) \ - enum chips { any_chip, chip1, chip2 }; \ - I2C_CLIENT_MODULE_PARM(force, \ - "List of adapter,address pairs to boldly assume " \ - "to be present"); \ - SENSORS_MODULE_PARM_FORCE(chip1); \ - SENSORS_MODULE_PARM_FORCE(chip2); \ - static unsigned short *forces[] = { force, \ - force_##chip1, \ - force_##chip2, \ - NULL }; \ - SENSORS_INSMOD - -#define SENSORS_INSMOD_3(chip1,chip2,chip3) \ - enum chips { any_chip, chip1, chip2, chip3 }; \ - I2C_CLIENT_MODULE_PARM(force, \ - "List of adapter,address pairs to boldly assume " \ - "to be present"); \ - SENSORS_MODULE_PARM_FORCE(chip1); \ - SENSORS_MODULE_PARM_FORCE(chip2); \ - SENSORS_MODULE_PARM_FORCE(chip3); \ - static unsigned short *forces[] = { force, \ - force_##chip1, \ - force_##chip2, \ - force_##chip3, \ - NULL }; \ - SENSORS_INSMOD - -#define SENSORS_INSMOD_4(chip1,chip2,chip3,chip4) \ - enum chips { any_chip, chip1, chip2, chip3, chip4 }; \ - I2C_CLIENT_MODULE_PARM(force, \ - "List of adapter,address pairs to boldly assume " \ - "to be present"); \ - SENSORS_MODULE_PARM_FORCE(chip1); \ - SENSORS_MODULE_PARM_FORCE(chip2); \ - SENSORS_MODULE_PARM_FORCE(chip3); \ - SENSORS_MODULE_PARM_FORCE(chip4); \ - static unsigned short *forces[] = { force, \ - force_##chip1, \ - force_##chip2, \ - force_##chip3, \ - force_##chip4, \ - NULL}; \ - SENSORS_INSMOD - -#define SENSORS_INSMOD_5(chip1,chip2,chip3,chip4,chip5) \ - enum chips { any_chip, chip1, chip2, chip3, chip4, chip5 }; \ - I2C_CLIENT_MODULE_PARM(force, \ - "List of adapter,address pairs to boldly assume " \ - "to be present"); \ - SENSORS_MODULE_PARM_FORCE(chip1); \ - SENSORS_MODULE_PARM_FORCE(chip2); \ - SENSORS_MODULE_PARM_FORCE(chip3); \ - SENSORS_MODULE_PARM_FORCE(chip4); \ - SENSORS_MODULE_PARM_FORCE(chip5); \ - static unsigned short *forces[] = { force, \ - force_##chip1, \ - force_##chip2, \ - force_##chip3, \ - force_##chip4, \ - force_##chip5, \ - NULL }; \ - SENSORS_INSMOD - -#define SENSORS_INSMOD_6(chip1,chip2,chip3,chip4,chip5,chip6) \ - enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6 }; \ - I2C_CLIENT_MODULE_PARM(force, \ - "List of adapter,address pairs to boldly assume " \ - "to be present"); \ - SENSORS_MODULE_PARM_FORCE(chip1); \ - SENSORS_MODULE_PARM_FORCE(chip2); \ - SENSORS_MODULE_PARM_FORCE(chip3); \ - SENSORS_MODULE_PARM_FORCE(chip4); \ - SENSORS_MODULE_PARM_FORCE(chip5); \ - SENSORS_MODULE_PARM_FORCE(chip6); \ - static unsigned short *forces[] = { force, \ - force_##chip1, \ - force_##chip2, \ - force_##chip3, \ - force_##chip4, \ - force_##chip5, \ - force_##chip6, \ - NULL }; \ - SENSORS_INSMOD - -#define SENSORS_INSMOD_7(chip1,chip2,chip3,chip4,chip5,chip6,chip7) \ - enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, chip7 }; \ - I2C_CLIENT_MODULE_PARM(force, \ - "List of adapter,address pairs to boldly assume " \ - "to be present"); \ - SENSORS_MODULE_PARM_FORCE(chip1); \ - SENSORS_MODULE_PARM_FORCE(chip2); \ - SENSORS_MODULE_PARM_FORCE(chip3); \ - SENSORS_MODULE_PARM_FORCE(chip4); \ - SENSORS_MODULE_PARM_FORCE(chip5); \ - SENSORS_MODULE_PARM_FORCE(chip6); \ - SENSORS_MODULE_PARM_FORCE(chip7); \ - static unsigned short *forces[] = { force, \ - force_##chip1, \ - force_##chip2, \ - force_##chip3, \ - force_##chip4, \ - force_##chip5, \ - force_##chip6, \ - force_##chip7, \ - NULL }; \ - SENSORS_INSMOD - -#define SENSORS_INSMOD_8(chip1,chip2,chip3,chip4,chip5,chip6,chip7,chip8) \ - enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, chip7, chip8 }; \ - I2C_CLIENT_MODULE_PARM(force, \ - "List of adapter,address pairs to boldly assume " \ - "to be present"); \ - SENSORS_MODULE_PARM_FORCE(chip1); \ - SENSORS_MODULE_PARM_FORCE(chip2); \ - SENSORS_MODULE_PARM_FORCE(chip3); \ - SENSORS_MODULE_PARM_FORCE(chip4); \ - SENSORS_MODULE_PARM_FORCE(chip5); \ - SENSORS_MODULE_PARM_FORCE(chip6); \ - SENSORS_MODULE_PARM_FORCE(chip7); \ - SENSORS_MODULE_PARM_FORCE(chip8); \ - static unsigned short *forces[] = { force, \ - force_##chip1, \ - force_##chip2, \ - force_##chip3, \ - force_##chip4, \ - force_##chip5, \ - force_##chip6, \ - force_##chip7, \ - force_##chip8, \ - NULL }; \ - SENSORS_INSMOD - -#endif /* def _LINUX_I2C_SENSOR_H */ --- gregkh-2.6.orig/include/linux/i2c.h 2005-08-08 15:02:13.000000000 -0700 +++ gregkh-2.6/include/linux/i2c.h 2005-08-08 15:02:20.000000000 -0700 @@ -565,24 +565,148 @@ module_param_array(var, short, &var##_num, 0); \ MODULE_PARM_DESC(var,desc) -/* This is the one you want to use in your own modules */ +#define I2C_CLIENT_MODULE_PARM_FORCE(name) \ +I2C_CLIENT_MODULE_PARM(force_##name, \ + "List of adapter,address pairs which are " \ + "unquestionably assumed to contain a `" \ + # name "' chip") + + +#define I2C_CLIENT_INSMOD_COMMON \ +I2C_CLIENT_MODULE_PARM(probe, "List of adapter,address pairs to scan " \ + "additionally"); \ +I2C_CLIENT_MODULE_PARM(ignore, "List of adapter,address pairs not to " \ + "scan"); \ +static struct i2c_client_address_data addr_data = { \ + .normal_i2c = normal_i2c, \ + .probe = probe, \ + .ignore = ignore, \ + .forces = forces, \ +} + +/* These are the ones you want to use in your own drivers. Pick the one + which matches the number of devices the driver differenciates between. */ #define I2C_CLIENT_INSMOD \ - I2C_CLIENT_MODULE_PARM(probe, \ - "List of adapter,address pairs to scan additionally"); \ - I2C_CLIENT_MODULE_PARM(ignore, \ - "List of adapter,address pairs not to scan"); \ I2C_CLIENT_MODULE_PARM(force, \ "List of adapter,address pairs to boldly assume " \ "to be present"); \ - static unsigned short *addr_forces[] = { \ + static unsigned short *forces[] = { \ force, \ NULL \ }; \ - static struct i2c_client_address_data addr_data = { \ - .normal_i2c = normal_i2c, \ - .probe = probe, \ - .ignore = ignore, \ - .forces = addr_forces, \ - } +I2C_CLIENT_INSMOD_COMMON + +#define I2C_CLIENT_INSMOD_1(chip1) \ +enum chips { any_chip, chip1 }; \ +I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ + "boldly assume to be present"); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ +static unsigned short *forces[] = { force, force_##chip1, NULL }; \ +I2C_CLIENT_INSMOD_COMMON + +#define I2C_CLIENT_INSMOD_2(chip1, chip2) \ +enum chips { any_chip, chip1, chip2 }; \ +I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ + "boldly assume to be present"); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ +static unsigned short *forces[] = { force, force_##chip1, \ + force_##chip2, NULL }; \ +I2C_CLIENT_INSMOD_COMMON + +#define I2C_CLIENT_INSMOD_3(chip1, chip2, chip3) \ +enum chips { any_chip, chip1, chip2, chip3 }; \ +I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ + "boldly assume to be present"); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ +static unsigned short *forces[] = { force, force_##chip1, \ + force_##chip2, force_##chip3, \ + NULL }; \ +I2C_CLIENT_INSMOD_COMMON + +#define I2C_CLIENT_INSMOD_4(chip1, chip2, chip3, chip4) \ +enum chips { any_chip, chip1, chip2, chip3, chip4 }; \ +I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ + "boldly assume to be present"); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip4); \ +static unsigned short *forces[] = { force, force_##chip1, \ + force_##chip2, force_##chip3, \ + force_##chip4, NULL}; \ +I2C_CLIENT_INSMOD_COMMON + +#define I2C_CLIENT_INSMOD_5(chip1, chip2, chip3, chip4, chip5) \ +enum chips { any_chip, chip1, chip2, chip3, chip4, chip5 }; \ +I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ + "boldly assume to be present"); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip4); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip5); \ +static unsigned short *forces[] = { force, force_##chip1, \ + force_##chip2, force_##chip3, \ + force_##chip4, force_##chip5, \ + NULL }; \ +I2C_CLIENT_INSMOD_COMMON + +#define I2C_CLIENT_INSMOD_6(chip1, chip2, chip3, chip4, chip5, chip6) \ +enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6 }; \ +I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ + "boldly assume to be present"); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip4); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip5); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip6); \ +static unsigned short *forces[] = { force, force_##chip1, \ + force_##chip2, force_##chip3, \ + force_##chip4, force_##chip5, \ + force_##chip6, NULL }; \ +I2C_CLIENT_INSMOD_COMMON + +#define I2C_CLIENT_INSMOD_7(chip1, chip2, chip3, chip4, chip5, chip6, chip7) \ +enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \ + chip7 }; \ +I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ + "boldly assume to be present"); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip4); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip5); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip6); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip7); \ +static unsigned short *forces[] = { force, force_##chip1, \ + force_##chip2, force_##chip3, \ + force_##chip4, force_##chip5, \ + force_##chip6, force_##chip7, \ + NULL }; \ +I2C_CLIENT_INSMOD_COMMON + +#define I2C_CLIENT_INSMOD_8(chip1, chip2, chip3, chip4, chip5, chip6, chip7, chip8) \ +enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \ + chip7, chip8 }; \ +I2C_CLIENT_MODULE_PARM(force, "List of adapter,address pairs to " \ + "boldly assume to be present"); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip1); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip2); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip3); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip4); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip5); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip6); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip7); \ +I2C_CLIENT_MODULE_PARM_FORCE(chip8); \ +static unsigned short *forces[] = { force, force_##chip1, \ + force_##chip2, force_##chip3, \ + force_##chip4, force_##chip5, \ + force_##chip6, force_##chip7, \ + force_##chip8, NULL }; \ +I2C_CLIENT_INSMOD_COMMON #endif /* _LINUX_I2C_H */