Commit | Line | Data |
---|---|---|
7f15b664 M |
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 | |
553515e5 JD |
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. |