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' |
Jean Delvare | 833bedb | 2008-07-16 19:30:06 +0200 | [diff] [blame] | 7 | Addresses scanned: none |
R.Marek@sh.cvut.cz | 7f15b66 | 2005-05-26 12:42:19 +0000 | [diff] [blame] | 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' |
Jean Delvare | 833bedb | 2008-07-16 19:30:06 +0200 | [diff] [blame] | 13 | Addresses scanned: none |
R.Marek@sh.cvut.cz | 7f15b66 | 2005-05-26 12:42:19 +0000 | [diff] [blame] | 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 | |
R.Marek@sh.cvut.cz | 7f15b66 | 2005-05-26 12:42:19 +0000 | [diff] [blame] | 41 | The PCF8574(A) is plainly impossible to detect ! Stupid chip. |
Jean Delvare | 833bedb | 2008-07-16 19:30:06 +0200 | [diff] [blame] | 42 | So, you have to pass the I2C bus and address of the installed PCF857A |
| 43 | and PCF8574A devices explicitly to the driver at load time via the |
| 44 | force=... parameter. |
R.Marek@sh.cvut.cz | 7f15b66 | 2005-05-26 12:42:19 +0000 | [diff] [blame] | 45 | |
| 46 | On detection (i.e. insmod, modprobe et al.), directories are being |
| 47 | created for each detected PCF8574(A): |
| 48 | |
| 49 | /sys/bus/i2c/devices/<0>-<1>/ |
| 50 | where <0> is the bus the chip was detected on (e. g. i2c-0) |
| 51 | and <1> the chip address ([20..27] or [38..3f]): |
| 52 | |
| 53 | (example: /sys/bus/i2c/devices/1-0020/) |
| 54 | |
| 55 | Inside these directories, there are two files each: |
| 56 | read and write (and one file with chip name). |
| 57 | |
| 58 | The read file is read-only. Reading gives you the current I/O input |
| 59 | if the corresponding output is set as 1, otherwise the current output |
| 60 | value, that is to say 0. |
| 61 | |
| 62 | 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] | 63 | port. Reading returns the last written value. As it is not possible |
| 64 | to read this value from the chip, you need to write at least once to |
| 65 | this file before you can read back from it. |