diff options
| author | bgardner@wabtec.com <bgardner@wabtec.com> | 2005-07-12 14:21:50 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-09-05 12:14:03 -0400 |
| commit | 93ffa435147abd47ebd7d7d24176b3c653aef940 (patch) | |
| tree | 451f9bdfa2ec7e2c4399dd6ca3cc3c97f12c27b9 /Documentation/i2c/chips | |
| parent | bc769ff8f5f6e3d249bfde082653e5bf1c2b5698 (diff) | |
[PATCH] I2C: update max6875 documentation
Updates to the max6875 driver documentation.
This brings the documentation in sync with the code, which was recently
simplified.
This patch is based off 2.6.13-rc2-mm2.
Signed-off-by: Ben Gardner <bgardner@wabtec.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'Documentation/i2c/chips')
| -rw-r--r-- | Documentation/i2c/chips/max6875 | 94 |
1 files changed, 68 insertions, 26 deletions
diff --git a/Documentation/i2c/chips/max6875 b/Documentation/i2c/chips/max6875 index b02002898a09..46b8dc34c971 100644 --- a/Documentation/i2c/chips/max6875 +++ b/Documentation/i2c/chips/max6875 | |||
| @@ -4,22 +4,13 @@ Kernel driver max6875 | |||
| 4 | Supported chips: | 4 | Supported chips: |
| 5 | * Maxim MAX6874, MAX6875 | 5 | * Maxim MAX6874, MAX6875 |
| 6 | Prefix: 'max6875' | 6 | Prefix: 'max6875' |
| 7 | Addresses scanned: 0x50, 0x52 | 7 | Addresses scanned: None (see below) |
| 8 | Datasheet: | 8 | Datasheet: |
| 9 | http://pdfserv.maxim-ic.com/en/ds/MAX6874-MAX6875.pdf | 9 | http://pdfserv.maxim-ic.com/en/ds/MAX6874-MAX6875.pdf |
| 10 | 10 | ||
| 11 | Author: Ben Gardner <bgardner@wabtec.com> | 11 | Author: Ben Gardner <bgardner@wabtec.com> |
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | Module Parameters | ||
| 15 | ----------------- | ||
| 16 | |||
| 17 | * allow_write int | ||
| 18 | Set to non-zero to enable write permission: | ||
| 19 | *0: Read only | ||
| 20 | 1: Read and write | ||
| 21 | |||
| 22 | |||
| 23 | Description | 14 | Description |
| 24 | ----------- | 15 | ----------- |
| 25 | 16 | ||
| @@ -33,34 +24,85 @@ registers. | |||
| 33 | 24 | ||
| 34 | The Maxim MAX6874 is a similar, mostly compatible device, with more intputs | 25 | The Maxim MAX6874 is a similar, mostly compatible device, with more intputs |
| 35 | and outputs: | 26 | and outputs: |
| 36 | |||
| 37 | vin gpi vout | 27 | vin gpi vout |
| 38 | MAX6874 6 4 8 | 28 | MAX6874 6 4 8 |
| 39 | MAX6875 4 3 5 | 29 | MAX6875 4 3 5 |
| 40 | 30 | ||
| 41 | MAX6874 chips can have four different addresses (as opposed to only two for | 31 | See the datasheet for more information. |
| 42 | the MAX6875). The additional addresses (0x54 and 0x56) are not probed by | ||
| 43 | this driver by default, but the probe module parameter can be used if | ||
| 44 | needed. | ||
| 45 | |||
| 46 | See the datasheet for details on how to program the EEPROM. | ||
| 47 | 32 | ||
| 48 | 33 | ||
| 49 | Sysfs entries | 34 | Sysfs entries |
| 50 | ------------- | 35 | ------------- |
| 51 | 36 | ||
| 52 | eeprom_user - 512 bytes of user-defined EEPROM space. Only writable if | 37 | eeprom - 512 bytes of user-defined EEPROM space. |
| 53 | allow_write was set and register 0x43 is 0. | ||
| 54 | |||
| 55 | eeprom_config - 70 bytes of config EEPROM. Note that changes will not get | ||
| 56 | loaded into register space until a power cycle or device reset. | ||
| 57 | |||
| 58 | reg_config - 70 bytes of register space. Any changes take affect immediately. | ||
| 59 | 38 | ||
| 60 | 39 | ||
| 61 | General Remarks | 40 | General Remarks |
| 62 | --------------- | 41 | --------------- |
| 63 | 42 | ||
| 64 | A typical application will require that the EEPROMs be programmed once and | 43 | Valid addresses for the MAX6875 are 0x50 and 0x52. |
| 65 | never altered afterwards. | 44 | Valid addresses for the MAX6874 are 0x50, 0x52, 0x54 and 0x56. |
| 45 | The driver does not probe any address, so you must force the address. | ||
| 46 | |||
| 47 | Example: | ||
| 48 | $ modprobe max6875 force=0,0x50 | ||
| 49 | |||
| 50 | The MAX6874/MAX6875 ignores address bit 0, so this driver attaches to multiple | ||
| 51 | addresses. For example, for address 0x50, it also reserves 0x51. | ||
| 52 | The even-address instance is called 'max6875', the odd one is 'max6875-dummy'. | ||
| 53 | |||
| 54 | |||
| 55 | Programming the chip using i2c-dev | ||
| 56 | ---------------------------------- | ||
| 57 | |||
| 58 | Use the i2c-dev interface to access and program the chips. | ||
| 59 | Reads and write are performed differently depending on the address range. | ||
| 60 | |||
| 61 | The configuration registers are at addresses 0x00 - 0x45. | ||
| 62 | Use i2c_smbus_write_byte_data() to write a register and | ||
| 63 | i2c_smbus_read_byte_data() to read a register. | ||
| 64 | The command is the register number. | ||
| 65 | |||
| 66 | Examples: | ||
| 67 | To write a 1 to register 0x45: | ||
| 68 | i2c_smbus_write_byte_data(fd, 0x45, 1); | ||
| 69 | |||
| 70 | To read register 0x45: | ||
| 71 | value = i2c_smbus_read_byte_data(fd, 0x45); | ||
| 72 | |||
| 73 | |||
| 74 | The configuration EEPROM is at addresses 0x8000 - 0x8045. | ||
| 75 | The user EEPROM is at addresses 0x8100 - 0x82ff. | ||
| 76 | |||
| 77 | Use i2c_smbus_write_word_data() to write a byte to EEPROM. | ||
| 78 | |||
| 79 | The command is the upper byte of the address: 0x80, 0x81, or 0x82. | ||
| 80 | The data word is the lower part of the address or'd with data << 8. | ||
| 81 | cmd = address >> 8; | ||
| 82 | val = (address & 0xff) | (data << 8); | ||
| 83 | |||
| 84 | Example: | ||
| 85 | To write 0x5a to address 0x8003: | ||
| 86 | i2c_smbus_write_word_data(fd, 0x80, 0x5a03); | ||
| 87 | |||
| 88 | |||
| 89 | Reading data from the EEPROM is a little more complicated. | ||
| 90 | Use i2c_smbus_write_byte_data() to set the read address and then | ||
| 91 | i2c_smbus_read_byte() or i2c_smbus_read_i2c_block_data() to read the data. | ||
| 92 | |||
| 93 | Example: | ||
| 94 | To read data starting at offset 0x8100, first set the address: | ||
| 95 | i2c_smbus_write_byte_data(fd, 0x81, 0x00); | ||
| 96 | |||
| 97 | And then read the data | ||
| 98 | value = i2c_smbus_read_byte(fd); | ||
| 99 | |||
| 100 | or | ||
| 101 | |||
| 102 | count = i2c_smbus_read_i2c_block_data(fd, 0x84, buffer); | ||
| 103 | |||
| 104 | The block read should read 16 bytes. | ||
| 105 | 0x84 is the block read command. | ||
| 106 | |||
| 107 | See the datasheet for more details. | ||
| 66 | 108 | ||
