| R.Marek@sh.cvut.cz | 7f15b66 | 2005-05-26 12:42:19 +0000 | [diff] [blame] | 1 | Kernel driver pcf8574 | 
|  | 2 | ===================== | 
|  | 3 |  | 
|  | 4 | Supported chips: | 
|  | 5 | * Philips PCF8574 | 
|  | 6 | Prefix: 'pcf8574' | 
|  | 7 | Addresses scanned: I2C 0x20 - 0x27 | 
|  | 8 | Datasheet: Publicly available at the Philips Semiconductors website | 
|  | 9 | http://www.semiconductors.philips.com/pip/PCF8574P.html | 
|  | 10 |  | 
|  | 11 | * Philips PCF8574A | 
|  | 12 | Prefix: 'pcf8574a' | 
|  | 13 | Addresses scanned: I2C 0x38 - 0x3f | 
|  | 14 | Datasheet: Publicly available at the Philips Semiconductors website | 
|  | 15 | http://www.semiconductors.philips.com/pip/PCF8574P.html | 
|  | 16 |  | 
|  | 17 | Authors: | 
|  | 18 | Frodo Looijaard <frodol@dds.nl>, | 
|  | 19 | Philip Edelbrock <phil@netroedge.com>, | 
|  | 20 | Dan Eaton <dan.eaton@rocketlogix.com>, | 
|  | 21 | Aurelien Jarno <aurelien@aurel32.net>, | 
|  | 22 | Jean Delvare <khali@linux-fr.org>, | 
|  | 23 |  | 
|  | 24 |  | 
|  | 25 | Description | 
|  | 26 | ----------- | 
|  | 27 | The PCF8574(A) is an 8-bit I/O expander for the I2C bus produced by Philips | 
|  | 28 | Semiconductors. It is designed to provide a byte I2C interface to up to 16 | 
|  | 29 | separate devices (8 x PCF8574 and 8 x PCF8574A). | 
|  | 30 |  | 
|  | 31 | This device consists of a quasi-bidirectional port. Each of the eight I/Os | 
|  | 32 | can be independently used as an input or output. To setup an I/O as an | 
|  | 33 | input, you have to write a 1 to the corresponding output. | 
|  | 34 |  | 
|  | 35 | For more informations see the datasheet. | 
|  | 36 |  | 
|  | 37 |  | 
|  | 38 | Accessing PCF8574(A) via /sys interface | 
|  | 39 | ------------------------------------- | 
|  | 40 |  | 
|  | 41 | ! Be careful ! | 
|  | 42 | The PCF8574(A) is plainly impossible to detect ! Stupid chip. | 
|  | 43 | So every chip with address in the interval [20..27] and [38..3f] are | 
|  | 44 | detected as PCF8574(A). If you have other chips in this address | 
|  | 45 | range, the workaround is to load this module after the one | 
|  | 46 | for your others chips. | 
|  | 47 |  | 
|  | 48 | On detection (i.e. insmod, modprobe et al.), directories are being | 
|  | 49 | created for each detected PCF8574(A): | 
|  | 50 |  | 
|  | 51 | /sys/bus/i2c/devices/<0>-<1>/ | 
|  | 52 | where <0> is the bus the chip was detected on (e. g. i2c-0) | 
|  | 53 | and <1> the chip address ([20..27] or [38..3f]): | 
|  | 54 |  | 
|  | 55 | (example: /sys/bus/i2c/devices/1-0020/) | 
|  | 56 |  | 
|  | 57 | Inside these directories, there are two files each: | 
|  | 58 | read and write (and one file with chip name). | 
|  | 59 |  | 
|  | 60 | The read file is read-only. Reading gives you the current I/O input | 
|  | 61 | if the corresponding output is set as 1, otherwise the current output | 
|  | 62 | value, that is to say 0. | 
|  | 63 |  | 
|  | 64 | The write file is read/write. Writing a value outputs it on the I/O | 
| Jean Delvare | 553515e | 2007-10-13 23:56:31 +0200 | [diff] [blame] | 65 | port. Reading returns the last written value. As it is not possible | 
|  | 66 | to read this value from the chip, you need to write at least once to | 
|  | 67 | this file before you can read back from it. |