|  | Kernel driver pca9539 | 
|  | ===================== | 
|  |  | 
|  | Supported chips: | 
|  | * Philips PCA9539 | 
|  | Prefix: 'pca9539' | 
|  | Addresses scanned: 0x74 - 0x77 | 
|  | 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. | 
|  |  | 
|  |  | 
|  | 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 | 
|  |  |