diff options
Diffstat (limited to 'Documentation')
| -rw-r--r-- | Documentation/Changes | 2 | ||||
| -rw-r--r-- | Documentation/DocBook/writing_usb_driver.tmpl | 3 | ||||
| -rw-r--r-- | Documentation/driver-model/driver.txt | 68 | ||||
| -rw-r--r-- | Documentation/driver-model/porting.txt | 2 | ||||
| -rw-r--r-- | Documentation/hwmon/it87 | 8 | ||||
| -rw-r--r-- | Documentation/hwmon/lm90 | 47 | ||||
| -rw-r--r-- | Documentation/hwmon/smsc47b397 | 8 | ||||
| -rw-r--r-- | Documentation/hwmon/smsc47m1 | 7 | ||||
| -rw-r--r-- | Documentation/hwmon/sysfs-interface | 3 | ||||
| -rw-r--r-- | Documentation/hwmon/via686a | 17 | ||||
| -rw-r--r-- | Documentation/i2c/busses/i2c-i810 | 1 | ||||
| -rw-r--r-- | Documentation/i2c/busses/i2c-viapro | 27 | ||||
| -rw-r--r-- | Documentation/i2c/chips/x1205 | 38 | ||||
| -rw-r--r-- | Documentation/i2c/functionality | 7 | ||||
| -rw-r--r-- | Documentation/i2c/porting-clients | 2 | ||||
| -rw-r--r-- | Documentation/i2c/writing-clients | 27 |
16 files changed, 153 insertions, 114 deletions
diff --git a/Documentation/Changes b/Documentation/Changes index 27232be26e1a..783ddc3ce4e8 100644 --- a/Documentation/Changes +++ b/Documentation/Changes | |||
| @@ -65,7 +65,7 @@ o isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version | |||
| 65 | o nfs-utils 1.0.5 # showmount --version | 65 | o nfs-utils 1.0.5 # showmount --version |
| 66 | o procps 3.2.0 # ps --version | 66 | o procps 3.2.0 # ps --version |
| 67 | o oprofile 0.9 # oprofiled --version | 67 | o oprofile 0.9 # oprofiled --version |
| 68 | o udev 058 # udevinfo -V | 68 | o udev 071 # udevinfo -V |
| 69 | 69 | ||
| 70 | Kernel compilation | 70 | Kernel compilation |
| 71 | ================== | 71 | ================== |
diff --git a/Documentation/DocBook/writing_usb_driver.tmpl b/Documentation/DocBook/writing_usb_driver.tmpl index 51f3bfb6fb6e..008a341234d0 100644 --- a/Documentation/DocBook/writing_usb_driver.tmpl +++ b/Documentation/DocBook/writing_usb_driver.tmpl | |||
| @@ -345,8 +345,7 @@ if (!retval) { | |||
| 345 | <programlisting> | 345 | <programlisting> |
| 346 | static inline void skel_delete (struct usb_skel *dev) | 346 | static inline void skel_delete (struct usb_skel *dev) |
| 347 | { | 347 | { |
| 348 | if (dev->bulk_in_buffer != NULL) | 348 | kfree (dev->bulk_in_buffer); |
| 349 | kfree (dev->bulk_in_buffer); | ||
| 350 | if (dev->bulk_out_buffer != NULL) | 349 | if (dev->bulk_out_buffer != NULL) |
| 351 | usb_buffer_free (dev->udev, dev->bulk_out_size, | 350 | usb_buffer_free (dev->udev, dev->bulk_out_size, |
| 352 | dev->bulk_out_buffer, | 351 | dev->bulk_out_buffer, |
diff --git a/Documentation/driver-model/driver.txt b/Documentation/driver-model/driver.txt index fabaca1ab1b0..59806c9761f7 100644 --- a/Documentation/driver-model/driver.txt +++ b/Documentation/driver-model/driver.txt | |||
| @@ -14,8 +14,8 @@ struct device_driver { | |||
| 14 | int (*probe) (struct device * dev); | 14 | int (*probe) (struct device * dev); |
| 15 | int (*remove) (struct device * dev); | 15 | int (*remove) (struct device * dev); |
| 16 | 16 | ||
| 17 | int (*suspend) (struct device * dev, pm_message_t state, u32 level); | 17 | int (*suspend) (struct device * dev, pm_message_t state); |
| 18 | int (*resume) (struct device * dev, u32 level); | 18 | int (*resume) (struct device * dev); |
| 19 | }; | 19 | }; |
| 20 | 20 | ||
| 21 | 21 | ||
| @@ -194,69 +194,13 @@ device; i.e. anything in the device's driver_data field. | |||
| 194 | If the device is still present, it should quiesce the device and place | 194 | If the device is still present, it should quiesce the device and place |
| 195 | it into a supported low-power state. | 195 | it into a supported low-power state. |
| 196 | 196 | ||
| 197 | int (*suspend) (struct device * dev, pm_message_t state, u32 level); | 197 | int (*suspend) (struct device * dev, pm_message_t state); |
| 198 | 198 | ||
| 199 | suspend is called to put the device in a low power state. There are | 199 | suspend is called to put the device in a low power state. |
| 200 | several stages to successfully suspending a device, which is denoted in | ||
| 201 | the @level parameter. Breaking the suspend transition into several | ||
| 202 | stages affords the platform flexibility in performing device power | ||
| 203 | management based on the requirements of the system and the | ||
| 204 | user-defined policy. | ||
| 205 | 200 | ||
| 206 | SUSPEND_NOTIFY notifies the device that a suspend transition is about | 201 | int (*resume) (struct device * dev); |
| 207 | to happen. This happens on system power state transitions to verify | ||
| 208 | that all devices can successfully suspend. | ||
| 209 | 202 | ||
| 210 | A driver may choose to fail on this call, which should cause the | 203 | Resume is used to bring a device back from a low power state. |
| 211 | entire suspend transition to fail. A driver should fail only if it | ||
| 212 | knows that the device will not be able to be resumed properly when the | ||
| 213 | system wakes up again. It could also fail if it somehow determines it | ||
| 214 | is in the middle of an operation too important to stop. | ||
| 215 | |||
| 216 | SUSPEND_DISABLE tells the device to stop I/O transactions. When it | ||
| 217 | stops transactions, or what it should do with unfinished transactions | ||
| 218 | is a policy of the driver. After this call, the driver should not | ||
| 219 | accept any other I/O requests. | ||
| 220 | |||
| 221 | SUSPEND_SAVE_STATE tells the device to save the context of the | ||
| 222 | hardware. This includes any bus-specific hardware state and | ||
| 223 | device-specific hardware state. A pointer to this saved state can be | ||
| 224 | stored in the device's saved_state field. | ||
| 225 | |||
| 226 | SUSPEND_POWER_DOWN tells the driver to place the device in the low | ||
| 227 | power state requested. | ||
| 228 | |||
| 229 | Whether suspend is called with a given level is a policy of the | ||
| 230 | platform. Some levels may be omitted; drivers must not assume the | ||
| 231 | reception of any level. However, all levels must be called in the | ||
| 232 | order above; i.e. notification will always come before disabling; | ||
| 233 | disabling the device will come before suspending the device. | ||
| 234 | |||
| 235 | All calls are made with interrupts enabled, except for the | ||
| 236 | SUSPEND_POWER_DOWN level. | ||
| 237 | |||
| 238 | int (*resume) (struct device * dev, u32 level); | ||
| 239 | |||
| 240 | Resume is used to bring a device back from a low power state. Like the | ||
| 241 | suspend transition, it happens in several stages. | ||
| 242 | |||
| 243 | RESUME_POWER_ON tells the driver to set the power state to the state | ||
| 244 | before the suspend call (The device could have already been in a low | ||
| 245 | power state before the suspend call to put in a lower power state). | ||
| 246 | |||
| 247 | RESUME_RESTORE_STATE tells the driver to restore the state saved by | ||
| 248 | the SUSPEND_SAVE_STATE suspend call. | ||
| 249 | |||
| 250 | RESUME_ENABLE tells the driver to start accepting I/O transactions | ||
| 251 | again. Depending on driver policy, the device may already have pending | ||
| 252 | I/O requests. | ||
| 253 | |||
| 254 | RESUME_POWER_ON is called with interrupts disabled. The other resume | ||
| 255 | levels are called with interrupts enabled. | ||
| 256 | |||
| 257 | As with the various suspend stages, the driver must not assume that | ||
| 258 | any other resume calls have been or will be made. Each call should be | ||
| 259 | self-contained and not dependent on any external state. | ||
| 260 | 204 | ||
| 261 | 205 | ||
| 262 | Attributes | 206 | Attributes |
diff --git a/Documentation/driver-model/porting.txt b/Documentation/driver-model/porting.txt index ff2fef2107f0..98b233cb8b36 100644 --- a/Documentation/driver-model/porting.txt +++ b/Documentation/driver-model/porting.txt | |||
| @@ -350,7 +350,7 @@ When a driver is registered, the bus's list of devices is iterated | |||
| 350 | over. bus->match() is called for each device that is not already | 350 | over. bus->match() is called for each device that is not already |
| 351 | claimed by a driver. | 351 | claimed by a driver. |
| 352 | 352 | ||
| 353 | When a device is successfully bound to a device, device->driver is | 353 | When a device is successfully bound to a driver, device->driver is |
| 354 | set, the device is added to a per-driver list of devices, and a | 354 | set, the device is added to a per-driver list of devices, and a |
| 355 | symlink is created in the driver's sysfs directory that points to the | 355 | symlink is created in the driver's sysfs directory that points to the |
| 356 | device's physical directory: | 356 | device's physical directory: |
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87 index 0d0195040d88..7f42e441c645 100644 --- a/Documentation/hwmon/it87 +++ b/Documentation/hwmon/it87 | |||
| @@ -4,18 +4,18 @@ Kernel driver it87 | |||
| 4 | Supported chips: | 4 | Supported chips: |
| 5 | * IT8705F | 5 | * IT8705F |
| 6 | Prefix: 'it87' | 6 | Prefix: 'it87' |
| 7 | Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports) | 7 | Addresses scanned: from Super I/O config space (8 I/O ports) |
| 8 | Datasheet: Publicly available at the ITE website | 8 | Datasheet: Publicly available at the ITE website |
| 9 | http://www.ite.com.tw/ | 9 | http://www.ite.com.tw/ |
| 10 | * IT8712F | 10 | * IT8712F |
| 11 | Prefix: 'it8712' | 11 | Prefix: 'it8712' |
| 12 | Addresses scanned: I2C 0x28 - 0x2f | 12 | Addresses scanned: I2C 0x28 - 0x2f |
| 13 | from Super I/O config space, or default ISA 0x290 (8 I/O ports) | 13 | from Super I/O config space (8 I/O ports) |
| 14 | Datasheet: Publicly available at the ITE website | 14 | Datasheet: Publicly available at the ITE website |
| 15 | http://www.ite.com.tw/ | 15 | http://www.ite.com.tw/ |
| 16 | * SiS950 [clone of IT8705F] | 16 | * SiS950 [clone of IT8705F] |
| 17 | Prefix: 'sis950' | 17 | Prefix: 'it87' |
| 18 | Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports) | 18 | Addresses scanned: from Super I/O config space (8 I/O ports) |
| 19 | Datasheet: No longer be available | 19 | Datasheet: No longer be available |
| 20 | 20 | ||
| 21 | Author: Christophe Gauthron <chrisg@0-in.com> | 21 | Author: Christophe Gauthron <chrisg@0-in.com> |
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90 index 2c4cf39471f4..438cb24cee5b 100644 --- a/Documentation/hwmon/lm90 +++ b/Documentation/hwmon/lm90 | |||
| @@ -24,14 +24,14 @@ Supported chips: | |||
| 24 | http://www.national.com/pf/LM/LM86.html | 24 | http://www.national.com/pf/LM/LM86.html |
| 25 | * Analog Devices ADM1032 | 25 | * Analog Devices ADM1032 |
| 26 | Prefix: 'adm1032' | 26 | Prefix: 'adm1032' |
| 27 | Addresses scanned: I2C 0x4c | 27 | Addresses scanned: I2C 0x4c and 0x4d |
| 28 | Datasheet: Publicly available at the Analog Devices website | 28 | Datasheet: Publicly available at the Analog Devices website |
| 29 | http://products.analog.com/products/info.asp?product=ADM1032 | 29 | http://www.analog.com/en/prod/0,2877,ADM1032,00.html |
| 30 | * Analog Devices ADT7461 | 30 | * Analog Devices ADT7461 |
| 31 | Prefix: 'adt7461' | 31 | Prefix: 'adt7461' |
| 32 | Addresses scanned: I2C 0x4c | 32 | Addresses scanned: I2C 0x4c and 0x4d |
| 33 | Datasheet: Publicly available at the Analog Devices website | 33 | Datasheet: Publicly available at the Analog Devices website |
| 34 | http://products.analog.com/products/info.asp?product=ADT7461 | 34 | http://www.analog.com/en/prod/0,2877,ADT7461,00.html |
| 35 | Note: Only if in ADM1032 compatibility mode | 35 | Note: Only if in ADM1032 compatibility mode |
| 36 | * Maxim MAX6657 | 36 | * Maxim MAX6657 |
| 37 | Prefix: 'max6657' | 37 | Prefix: 'max6657' |
| @@ -71,8 +71,8 @@ increased resolution of the remote temperature measurement. | |||
| 71 | 71 | ||
| 72 | The different chipsets of the family are not strictly identical, although | 72 | The different chipsets of the family are not strictly identical, although |
| 73 | very similar. This driver doesn't handle any specific feature for now, | 73 | very similar. This driver doesn't handle any specific feature for now, |
| 74 | but could if there ever was a need for it. For reference, here comes a | 74 | with the exception of SMBus PEC. For reference, here comes a non-exhaustive |
| 75 | non-exhaustive list of specific features: | 75 | list of specific features: |
| 76 | 76 | ||
| 77 | LM90: | 77 | LM90: |
| 78 | * Filter and alert configuration register at 0xBF. | 78 | * Filter and alert configuration register at 0xBF. |
| @@ -91,6 +91,7 @@ ADM1032: | |||
| 91 | * Conversion averaging. | 91 | * Conversion averaging. |
| 92 | * Up to 64 conversions/s. | 92 | * Up to 64 conversions/s. |
| 93 | * ALERT is triggered by open remote sensor. | 93 | * ALERT is triggered by open remote sensor. |
| 94 | * SMBus PEC support for Write Byte and Receive Byte transactions. | ||
| 94 | 95 | ||
| 95 | ADT7461 | 96 | ADT7461 |
| 96 | * Extended temperature range (breaks compatibility) | 97 | * Extended temperature range (breaks compatibility) |
| @@ -119,3 +120,37 @@ The lm90 driver will not update its values more frequently than every | |||
| 119 | other second; reading them more often will do no harm, but will return | 120 | other second; reading them more often will do no harm, but will return |
| 120 | 'old' values. | 121 | 'old' values. |
| 121 | 122 | ||
| 123 | PEC Support | ||
| 124 | ----------- | ||
| 125 | |||
| 126 | The ADM1032 is the only chip of the family which supports PEC. It does | ||
| 127 | not support PEC on all transactions though, so some care must be taken. | ||
| 128 | |||
| 129 | When reading a register value, the PEC byte is computed and sent by the | ||
| 130 | ADM1032 chip. However, in the case of a combined transaction (SMBus Read | ||
| 131 | Byte), the ADM1032 computes the CRC value over only the second half of | ||
| 132 | the message rather than its entirety, because it thinks the first half | ||
| 133 | of the message belongs to a different transaction. As a result, the CRC | ||
| 134 | value differs from what the SMBus master expects, and all reads fail. | ||
| 135 | |||
| 136 | For this reason, the lm90 driver will enable PEC for the ADM1032 only if | ||
| 137 | the bus supports the SMBus Send Byte and Receive Byte transaction types. | ||
| 138 | These transactions will be used to read register values, instead of | ||
| 139 | SMBus Read Byte, and PEC will work properly. | ||
| 140 | |||
| 141 | Additionally, the ADM1032 doesn't support SMBus Send Byte with PEC. | ||
| 142 | Instead, it will try to write the PEC value to the register (because the | ||
| 143 | SMBus Send Byte transaction with PEC is similar to a Write Byte transaction | ||
| 144 | without PEC), which is not what we want. Thus, PEC is explicitely disabled | ||
| 145 | on SMBus Send Byte transactions in the lm90 driver. | ||
| 146 | |||
| 147 | PEC on byte data transactions represents a significant increase in bandwidth | ||
| 148 | usage (+33% for writes, +25% for reads) in normal conditions. With the need | ||
| 149 | to use two SMBus transaction for reads, this overhead jumps to +50%. Worse, | ||
| 150 | two transactions will typically mean twice as much delay waiting for | ||
| 151 | transaction completion, effectively doubling the register cache refresh time. | ||
| 152 | I guess reliability comes at a price, but it's quite expensive this time. | ||
| 153 | |||
| 154 | So, as not everyone might enjoy the slowdown, PEC can be disabled through | ||
| 155 | sysfs. Just write 0 to the "pec" file and PEC will be disabled. Write 1 | ||
| 156 | to that file to enable PEC again. | ||
diff --git a/Documentation/hwmon/smsc47b397 b/Documentation/hwmon/smsc47b397 index da9d80c96432..20682f15ae41 100644 --- a/Documentation/hwmon/smsc47b397 +++ b/Documentation/hwmon/smsc47b397 | |||
| @@ -3,6 +3,7 @@ Kernel driver smsc47b397 | |||
| 3 | 3 | ||
| 4 | Supported chips: | 4 | Supported chips: |
| 5 | * SMSC LPC47B397-NC | 5 | * SMSC LPC47B397-NC |
| 6 | * SMSC SCH5307-NS | ||
| 6 | Prefix: 'smsc47b397' | 7 | Prefix: 'smsc47b397' |
| 7 | Addresses scanned: none, address read from Super I/O config space | 8 | Addresses scanned: none, address read from Super I/O config space |
| 8 | Datasheet: In this file | 9 | Datasheet: In this file |
| @@ -12,11 +13,14 @@ Authors: Mark M. Hoffman <mhoffman@lightlink.com> | |||
| 12 | 13 | ||
| 13 | November 23, 2004 | 14 | November 23, 2004 |
| 14 | 15 | ||
| 15 | The following specification describes the SMSC LPC47B397-NC sensor chip | 16 | The following specification describes the SMSC LPC47B397-NC[1] sensor chip |
| 16 | (for which there is no public datasheet available). This document was | 17 | (for which there is no public datasheet available). This document was |
| 17 | provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected | 18 | provided by Craig Kelly (In-Store Broadcast Network) and edited/corrected |
| 18 | by Mark M. Hoffman <mhoffman@lightlink.com>. | 19 | by Mark M. Hoffman <mhoffman@lightlink.com>. |
| 19 | 20 | ||
| 21 | [1] And SMSC SCH5307-NS, which has a different device ID but is otherwise | ||
| 22 | compatible. | ||
| 23 | |||
| 20 | * * * * * | 24 | * * * * * |
| 21 | 25 | ||
| 22 | Methods for detecting the HP SIO and reading the thermal data on a dc7100. | 26 | Methods for detecting the HP SIO and reading the thermal data on a dc7100. |
| @@ -127,7 +131,7 @@ OUT DX,AL | |||
| 127 | The registers of interest for identifying the SIO on the dc7100 are Device ID | 131 | The registers of interest for identifying the SIO on the dc7100 are Device ID |
| 128 | (0x20) and Device Rev (0x21). | 132 | (0x20) and Device Rev (0x21). |
| 129 | 133 | ||
| 130 | The Device ID will read 0X6F | 134 | The Device ID will read 0x6F (for SCH5307-NS, 0x81) |
| 131 | The Device Rev currently reads 0x01 | 135 | The Device Rev currently reads 0x01 |
| 132 | 136 | ||
| 133 | Obtaining the HWM Base Address. | 137 | Obtaining the HWM Base Address. |
diff --git a/Documentation/hwmon/smsc47m1 b/Documentation/hwmon/smsc47m1 index 34e6478c1425..c15bbe68264e 100644 --- a/Documentation/hwmon/smsc47m1 +++ b/Documentation/hwmon/smsc47m1 | |||
| @@ -12,6 +12,10 @@ Supported chips: | |||
| 12 | http://www.smsc.com/main/datasheets/47m14x.pdf | 12 | http://www.smsc.com/main/datasheets/47m14x.pdf |
| 13 | http://www.smsc.com/main/tools/discontinued/47m15x.pdf | 13 | http://www.smsc.com/main/tools/discontinued/47m15x.pdf |
| 14 | http://www.smsc.com/main/datasheets/47m192.pdf | 14 | http://www.smsc.com/main/datasheets/47m192.pdf |
| 15 | * SMSC LPC47M997 | ||
| 16 | Addresses scanned: none, address read from Super I/O config space | ||
| 17 | Prefix: 'smsc47m1' | ||
| 18 | Datasheet: none | ||
| 15 | 19 | ||
| 16 | Authors: | 20 | Authors: |
| 17 | Mark D. Studebaker <mdsxyz123@yahoo.com>, | 21 | Mark D. Studebaker <mdsxyz123@yahoo.com>, |
| @@ -30,6 +34,9 @@ The 47M15x and 47M192 chips contain a full 'hardware monitoring block' | |||
| 30 | in addition to the fan monitoring and control. The hardware monitoring | 34 | in addition to the fan monitoring and control. The hardware monitoring |
| 31 | block is not supported by the driver. | 35 | block is not supported by the driver. |
| 32 | 36 | ||
| 37 | No documentation is available for the 47M997, but it has the same device | ||
| 38 | ID as the 47M15x and 47M192 chips and seems to be compatible. | ||
| 39 | |||
| 33 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | 40 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is |
| 34 | triggered if the rotation speed has dropped below a programmable limit. Fan | 41 | triggered if the rotation speed has dropped below a programmable limit. Fan |
| 35 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give | 42 | readings can be divided by a programmable divider (1, 2, 4 or 8) to give |
diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface index 346400519d0d..764cdc5480e7 100644 --- a/Documentation/hwmon/sysfs-interface +++ b/Documentation/hwmon/sysfs-interface | |||
| @@ -272,3 +272,6 @@ beep_mask Bitmask for beep. | |||
| 272 | 272 | ||
| 273 | eeprom Raw EEPROM data in binary form. | 273 | eeprom Raw EEPROM data in binary form. |
| 274 | Read only. | 274 | Read only. |
| 275 | |||
| 276 | pec Enable or disable PEC (SMBus only) | ||
| 277 | Read/Write | ||
diff --git a/Documentation/hwmon/via686a b/Documentation/hwmon/via686a index b82014cb7c53..a936fb3824b2 100644 --- a/Documentation/hwmon/via686a +++ b/Documentation/hwmon/via686a | |||
| @@ -18,8 +18,9 @@ Authors: | |||
| 18 | Module Parameters | 18 | Module Parameters |
| 19 | ----------------- | 19 | ----------------- |
| 20 | 20 | ||
| 21 | force_addr=0xaddr Set the I/O base address. Useful for Asus A7V boards | 21 | force_addr=0xaddr Set the I/O base address. Useful for boards that |
| 22 | that don't set the address in the BIOS. Does not do a | 22 | don't set the address in the BIOS. Look for a BIOS |
| 23 | upgrade before resorting to this. Does not do a | ||
| 23 | PCI force; the via686a must still be present in lspci. | 24 | PCI force; the via686a must still be present in lspci. |
| 24 | Don't use this unless the driver complains that the | 25 | Don't use this unless the driver complains that the |
| 25 | base address is not set. | 26 | base address is not set. |
| @@ -63,3 +64,15 @@ miss once-only alarms. | |||
| 63 | 64 | ||
| 64 | The driver only updates its values each 1.5 seconds; reading it more often | 65 | The driver only updates its values each 1.5 seconds; reading it more often |
| 65 | will do no harm, but will return 'old' values. | 66 | will do no harm, but will return 'old' values. |
| 67 | |||
| 68 | Known Issues | ||
| 69 | ------------ | ||
| 70 | |||
| 71 | This driver handles sensors integrated in some VIA south bridges. It is | ||
| 72 | possible that a motherboard maker used a VT82C686A/B chip as part of a | ||
| 73 | product design but was not interested in its hardware monitoring features, | ||
| 74 | in which case the sensor inputs will not be wired. This is the case of | ||
| 75 | the Asus K7V, A7V and A7V133 motherboards, to name only a few of them. | ||
| 76 | So, if you need the force_addr parameter, and end up with values which | ||
| 77 | don't seem to make any sense, don't look any further: your chip is simply | ||
| 78 | not wired for hardware monitoring. | ||
diff --git a/Documentation/i2c/busses/i2c-i810 b/Documentation/i2c/busses/i2c-i810 index 0544eb332887..83c3b9743c3c 100644 --- a/Documentation/i2c/busses/i2c-i810 +++ b/Documentation/i2c/busses/i2c-i810 | |||
| @@ -2,6 +2,7 @@ Kernel driver i2c-i810 | |||
| 2 | 2 | ||
| 3 | Supported adapters: | 3 | Supported adapters: |
| 4 | * Intel 82810, 82810-DC100, 82810E, and 82815 (GMCH) | 4 | * Intel 82810, 82810-DC100, 82810E, and 82815 (GMCH) |
| 5 | * Intel 82845G (GMCH) | ||
| 5 | 6 | ||
| 6 | Authors: | 7 | Authors: |
| 7 | Frodo Looijaard <frodol@dds.nl>, | 8 | Frodo Looijaard <frodol@dds.nl>, |
diff --git a/Documentation/i2c/busses/i2c-viapro b/Documentation/i2c/busses/i2c-viapro index 702f5ac68c09..9363b8bd6109 100644 --- a/Documentation/i2c/busses/i2c-viapro +++ b/Documentation/i2c/busses/i2c-viapro | |||
| @@ -4,17 +4,18 @@ Supported adapters: | |||
| 4 | * VIA Technologies, Inc. VT82C596A/B | 4 | * VIA Technologies, Inc. VT82C596A/B |
| 5 | Datasheet: Sometimes available at the VIA website | 5 | Datasheet: Sometimes available at the VIA website |
| 6 | 6 | ||
| 7 | * VIA Technologies, Inc. VT82C686A/B | 7 | * VIA Technologies, Inc. VT82C686A/B |
| 8 | Datasheet: Sometimes available at the VIA website | 8 | Datasheet: Sometimes available at the VIA website |
| 9 | 9 | ||
| 10 | * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237 | 10 | * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237 |
| 11 | Datasheet: available on request from Via | 11 | Datasheet: available on request from Via |
| 12 | 12 | ||
| 13 | Authors: | 13 | Authors: |
| 14 | Frodo Looijaard <frodol@dds.nl>, | 14 | Frodo Looijaard <frodol@dds.nl>, |
| 15 | Philip Edelbrock <phil@netroedge.com>, | 15 | Philip Edelbrock <phil@netroedge.com>, |
| 16 | Kyösti Mälkki <kmalkki@cc.hut.fi>, | 16 | Kyösti Mälkki <kmalkki@cc.hut.fi>, |
| 17 | Mark D. Studebaker <mdsxyz123@yahoo.com> | 17 | Mark D. Studebaker <mdsxyz123@yahoo.com>, |
| 18 | Jean Delvare <khali@linux-fr.org> | ||
| 18 | 19 | ||
| 19 | Module Parameters | 20 | Module Parameters |
| 20 | ----------------- | 21 | ----------------- |
| @@ -28,20 +29,22 @@ Description | |||
| 28 | ----------- | 29 | ----------- |
| 29 | 30 | ||
| 30 | i2c-viapro is a true SMBus host driver for motherboards with one of the | 31 | i2c-viapro is a true SMBus host driver for motherboards with one of the |
| 31 | supported VIA southbridges. | 32 | supported VIA south bridges. |
| 32 | 33 | ||
| 33 | Your lspci -n listing must show one of these : | 34 | Your lspci -n listing must show one of these : |
| 34 | 35 | ||
| 35 | device 1106:3050 (VT82C596 function 3) | 36 | device 1106:3050 (VT82C596A function 3) |
| 36 | device 1106:3051 (VT82C596 function 3) | 37 | device 1106:3051 (VT82C596B function 3) |
| 37 | device 1106:3057 (VT82C686 function 4) | 38 | device 1106:3057 (VT82C686 function 4) |
| 38 | device 1106:3074 (VT8233) | 39 | device 1106:3074 (VT8233) |
| 39 | device 1106:3147 (VT8233A) | 40 | device 1106:3147 (VT8233A) |
| 40 | device 1106:8235 (VT8231) | 41 | device 1106:8235 (VT8231 function 4) |
| 41 | devide 1106:3177 (VT8235) | 42 | device 1106:3177 (VT8235) |
| 42 | devide 1106:3227 (VT8237) | 43 | device 1106:3227 (VT8237R) |
| 43 | 44 | ||
| 44 | If none of these show up, you should look in the BIOS for settings like | 45 | If none of these show up, you should look in the BIOS for settings like |
| 45 | enable ACPI / SMBus or even USB. | 46 | enable ACPI / SMBus or even USB. |
| 46 | 47 | ||
| 47 | 48 | Except for the oldest chips (VT82C596A/B, VT82C686A and most probably | |
| 49 | VT8231), this driver supports I2C block transactions. Such transactions | ||
| 50 | are mainly useful to read from and write to EEPROMs. | ||
diff --git a/Documentation/i2c/chips/x1205 b/Documentation/i2c/chips/x1205 new file mode 100644 index 000000000000..09407c991fe5 --- /dev/null +++ b/Documentation/i2c/chips/x1205 | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | Kernel driver x1205 | ||
| 2 | =================== | ||
| 3 | |||
| 4 | Supported chips: | ||
| 5 | * Xicor X1205 RTC | ||
| 6 | Prefix: 'x1205' | ||
| 7 | Addresses scanned: none | ||
| 8 | Datasheet: http://www.intersil.com/cda/deviceinfo/0,1477,X1205,00.html | ||
| 9 | |||
| 10 | Authors: | ||
| 11 | Karen Spearel <kas11@tampabay.rr.com>, | ||
| 12 | Alessandro Zummo <a.zummo@towertech.it> | ||
| 13 | |||
| 14 | Description | ||
| 15 | ----------- | ||
| 16 | |||
| 17 | This module aims to provide complete access to the Xicor X1205 RTC. | ||
| 18 | Recently Xicor has merged with Intersil, but the chip is | ||
| 19 | still sold under the Xicor brand. | ||
| 20 | |||
| 21 | This chip is located at address 0x6f and uses a 2-byte register addressing. | ||
| 22 | Two bytes need to be written to read a single register, while most | ||
| 23 | other chips just require one and take the second one as the data | ||
| 24 | to be written. To prevent corrupting unknown chips, the user must | ||
| 25 | explicitely set the probe parameter. | ||
| 26 | |||
| 27 | example: | ||
| 28 | |||
| 29 | modprobe x1205 probe=0,0x6f | ||
| 30 | |||
| 31 | The module supports one more option, hctosys, which is used to set the | ||
| 32 | software clock from the x1205. On systems where the x1205 is the | ||
| 33 | only hardware rtc, this parameter could be used to achieve a correct | ||
| 34 | date/time earlier in the system boot sequence. | ||
| 35 | |||
| 36 | example: | ||
| 37 | |||
| 38 | modprobe x1205 probe=0,0x6f hctosys=1 | ||
diff --git a/Documentation/i2c/functionality b/Documentation/i2c/functionality index 41ffefbdc60c..60cca249e452 100644 --- a/Documentation/i2c/functionality +++ b/Documentation/i2c/functionality | |||
| @@ -17,9 +17,10 @@ For the most up-to-date list of functionality constants, please check | |||
| 17 | I2C_FUNC_I2C Plain i2c-level commands (Pure SMBus | 17 | I2C_FUNC_I2C Plain i2c-level commands (Pure SMBus |
| 18 | adapters typically can not do these) | 18 | adapters typically can not do these) |
| 19 | I2C_FUNC_10BIT_ADDR Handles the 10-bit address extensions | 19 | I2C_FUNC_10BIT_ADDR Handles the 10-bit address extensions |
| 20 | I2C_FUNC_PROTOCOL_MANGLING Knows about the I2C_M_REV_DIR_ADDR, | 20 | I2C_FUNC_PROTOCOL_MANGLING Knows about the I2C_M_IGNORE_NAK, |
| 21 | I2C_M_REV_DIR_ADDR and I2C_M_REV_DIR_NOSTART | 21 | I2C_M_REV_DIR_ADDR, I2C_M_NOSTART and |
| 22 | flags (which modify the i2c protocol!) | 22 | I2C_M_NO_RD_ACK flags (which modify the |
| 23 | I2C protocol!) | ||
| 23 | I2C_FUNC_SMBUS_QUICK Handles the SMBus write_quick command | 24 | I2C_FUNC_SMBUS_QUICK Handles the SMBus write_quick command |
| 24 | I2C_FUNC_SMBUS_READ_BYTE Handles the SMBus read_byte command | 25 | I2C_FUNC_SMBUS_READ_BYTE Handles the SMBus read_byte command |
| 25 | I2C_FUNC_SMBUS_WRITE_BYTE Handles the SMBus write_byte command | 26 | I2C_FUNC_SMBUS_WRITE_BYTE Handles the SMBus write_byte command |
diff --git a/Documentation/i2c/porting-clients b/Documentation/i2c/porting-clients index 4849dfd6961c..184fac2377aa 100644 --- a/Documentation/i2c/porting-clients +++ b/Documentation/i2c/porting-clients | |||
| @@ -82,7 +82,7 @@ Technical changes: | |||
| 82 | exit and exit_free. For i2c+isa drivers, labels should be named | 82 | exit and exit_free. For i2c+isa drivers, labels should be named |
| 83 | ERROR0, ERROR1 and ERROR2. Don't forget to properly set err before | 83 | ERROR0, ERROR1 and ERROR2. Don't forget to properly set err before |
| 84 | jumping to error labels. By the way, labels should be left-aligned. | 84 | jumping to error labels. By the way, labels should be left-aligned. |
| 85 | Use memset to fill the client and data area with 0x00. | 85 | Use kzalloc instead of kmalloc. |
| 86 | Use i2c_set_clientdata to set the client data (as opposed to | 86 | Use i2c_set_clientdata to set the client data (as opposed to |
| 87 | a direct access to client->data). | 87 | a direct access to client->data). |
| 88 | Use strlcpy instead of strcpy to copy the client name. | 88 | Use strlcpy instead of strcpy to copy the client name. |
diff --git a/Documentation/i2c/writing-clients b/Documentation/i2c/writing-clients index 077275722a7c..e94d9c6cc522 100644 --- a/Documentation/i2c/writing-clients +++ b/Documentation/i2c/writing-clients | |||
| @@ -33,8 +33,8 @@ static struct i2c_driver foo_driver = { | |||
| 33 | .command = &foo_command /* may be NULL */ | 33 | .command = &foo_command /* may be NULL */ |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | The name can be chosen freely, and may be upto 40 characters long. Please | 36 | The name field must match the driver name, including the case. It must not |
| 37 | use something descriptive here. | 37 | contain spaces, and may be up to 31 characters long. |
| 38 | 38 | ||
| 39 | Don't worry about the flags field; just put I2C_DF_NOTIFY into it. This | 39 | Don't worry about the flags field; just put I2C_DF_NOTIFY into it. This |
| 40 | means that your driver will be notified when new adapters are found. | 40 | means that your driver will be notified when new adapters are found. |
| @@ -43,9 +43,6 @@ This is almost always what you want. | |||
| 43 | All other fields are for call-back functions which will be explained | 43 | All other fields are for call-back functions which will be explained |
| 44 | below. | 44 | below. |
| 45 | 45 | ||
| 46 | There use to be two additional fields in this structure, inc_use et dec_use, | ||
| 47 | for module usage count, but these fields were obsoleted and removed. | ||
| 48 | |||
| 49 | 46 | ||
| 50 | Extra client data | 47 | Extra client data |
| 51 | ================= | 48 | ================= |
| @@ -58,6 +55,7 @@ be very useful. | |||
| 58 | An example structure is below. | 55 | An example structure is below. |
| 59 | 56 | ||
| 60 | struct foo_data { | 57 | struct foo_data { |
| 58 | struct i2c_client client; | ||
| 61 | struct semaphore lock; /* For ISA access in `sensors' drivers. */ | 59 | struct semaphore lock; /* For ISA access in `sensors' drivers. */ |
| 62 | int sysctl_id; /* To keep the /proc directory entry for | 60 | int sysctl_id; /* To keep the /proc directory entry for |
| 63 | `sensors' drivers. */ | 61 | `sensors' drivers. */ |
| @@ -310,22 +308,15 @@ For now, you can ignore the `flags' parameter. It is there for future use. | |||
| 310 | client structure, even though we cannot fill it completely yet. | 308 | client structure, even though we cannot fill it completely yet. |
| 311 | But it allows us to access several i2c functions safely */ | 309 | But it allows us to access several i2c functions safely */ |
| 312 | 310 | ||
| 313 | /* Note that we reserve some space for foo_data too. If you don't | 311 | if (!(data = kzalloc(sizeof(struct foo_data), GFP_KERNEL))) { |
| 314 | need it, remove it. We do it here to help to lessen memory | ||
| 315 | fragmentation. */ | ||
| 316 | if (! (new_client = kmalloc(sizeof(struct i2c_client) + | ||
| 317 | sizeof(struct foo_data), | ||
| 318 | GFP_KERNEL))) { | ||
| 319 | err = -ENOMEM; | 312 | err = -ENOMEM; |
| 320 | goto ERROR0; | 313 | goto ERROR0; |
| 321 | } | 314 | } |
| 322 | 315 | ||
| 323 | /* This is tricky, but it will set the data to the right value. */ | 316 | new_client = &data->client; |
| 324 | client->data = new_client + 1; | 317 | i2c_set_clientdata(new_client, data); |
| 325 | data = (struct foo_data *) (client->data); | ||
| 326 | 318 | ||
| 327 | new_client->addr = address; | 319 | new_client->addr = address; |
| 328 | new_client->data = data; | ||
| 329 | new_client->adapter = adapter; | 320 | new_client->adapter = adapter; |
| 330 | new_client->driver = &foo_driver; | 321 | new_client->driver = &foo_driver; |
| 331 | new_client->flags = 0; | 322 | new_client->flags = 0; |
| @@ -451,7 +442,7 @@ much simpler than the attachment code, fortunately! | |||
| 451 | release_region(client->addr,LM78_EXTENT); | 442 | release_region(client->addr,LM78_EXTENT); |
| 452 | /* HYBRID SENSORS CHIP ONLY END */ | 443 | /* HYBRID SENSORS CHIP ONLY END */ |
| 453 | 444 | ||
| 454 | kfree(client); /* Frees client data too, if allocated at the same time */ | 445 | kfree(data); |
| 455 | return 0; | 446 | return 0; |
| 456 | } | 447 | } |
| 457 | 448 | ||
| @@ -576,12 +567,12 @@ SMBus communication | |||
| 576 | extern s32 i2c_smbus_write_block_data(struct i2c_client * client, | 567 | extern s32 i2c_smbus_write_block_data(struct i2c_client * client, |
| 577 | u8 command, u8 length, | 568 | u8 command, u8 length, |
| 578 | u8 *values); | 569 | u8 *values); |
| 570 | extern s32 i2c_smbus_read_i2c_block_data(struct i2c_client * client, | ||
| 571 | u8 command, u8 *values); | ||
| 579 | 572 | ||
| 580 | These ones were removed in Linux 2.6.10 because they had no users, but could | 573 | These ones were removed in Linux 2.6.10 because they had no users, but could |
| 581 | be added back later if needed: | 574 | be added back later if needed: |
| 582 | 575 | ||
| 583 | extern s32 i2c_smbus_read_i2c_block_data(struct i2c_client * client, | ||
| 584 | u8 command, u8 *values); | ||
| 585 | extern s32 i2c_smbus_read_block_data(struct i2c_client * client, | 576 | extern s32 i2c_smbus_read_block_data(struct i2c_client * client, |
| 586 | u8 command, u8 *values); | 577 | u8 command, u8 *values); |
| 587 | extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client * client, | 578 | extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client * client, |
