aboutsummaryrefslogtreecommitdiff
path: root/Documentation/i2c/chips/pca9539
blob: 6aff890088b15d74d08119ecf97f8e250fac9605 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Kernel driver pca9539
=====================

NOTE: this driver is deprecated and will be dropped soon, use
drivers/gpio/pca9539.c instead.

Supported chips:
  * Philips PCA9539
    Prefix: 'pca9539'
    Addresses scanned: none
    Datasheet:
        http://www.semiconductors.philips.com/acrobat/datasheets/PCA9539_2.pdf

Author: Ben Gardner <bgardner@wabtec.com>


Description
-----------

The Philips PCA9539 is a 16 bit low power I/O device.
All 16 lines can be individually configured as an input or output.
The input sense can also be inverted.
The 16 lines are split between two bytes.


Detection
---------

The PCA9539 is difficult to detect and not commonly found in PC machines,
so you have to pass the I2C bus and address of the installed PCA9539
devices explicitly to the driver at load time via the force=... parameter.


Sysfs entries
-------------

Each is a byte that maps to the 8 I/O bits.
A '0' suffix is for bits 0-7, while '1' is for bits 8-15.

input[01]     - read the current value
output[01]    - sets the output value
direction[01] - direction of each bit: 1=input, 0=output
invert[01]    - toggle the input bit sense

input reads the actual state of the line and is always available.
The direction defaults to input for all channels.


General Remarks
---------------

Note that each output, direction, and invert entry controls 8 lines.
You should use the read, modify, write sequence.
For example. to set output bit 0 of 1.
  val=$(cat output0)
  val=$(( $val | 1 ))
  echo $val > output0