Kernel driver pcf8591
=====================

Supported chips:
  * Philips/NXP PCF8591
    Prefix: 'pcf8591'
    Addresses scanned: none
    Datasheet: Publicly available at the NXP website
               http://www.nxp.com/pip/PCF8591_6.html

Authors:
        Aurelien Jarno <aurelien@aurel32.net>
        valuable contributions by Jan M. Sendler <sendler@sendler.de>,
        Jean Delvare <khali@linux-fr.org>


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

The PCF8591 is an 8-bit A/D and D/A converter (4 analog inputs and one
analog output) for the I2C bus produced by Philips Semiconductors (now NXP).
It is designed to provide a byte I2C interface to up to 4 separate devices.

The PCF8591 has 4 analog inputs programmable as single-ended or
differential inputs :
- mode 0 : four single ended inputs
        Pins AIN0 to AIN3 are single ended inputs for channels 0 to 3

- mode 1 : three differential inputs
        Pins AIN3 is the common negative differential input
        Pins AIN0 to AIN2 are positive differential inputs for channels 0 to 2

- mode 2 : single ended and differential mixed
        Pins AIN0 and AIN1 are single ended inputs for channels 0 and 1
        Pins AIN2 is the positive differential input for channel 3
        Pins AIN3 is the negative differential input for channel 3

- mode 3 : two differential inputs
        Pins AIN0 is the positive differential input for channel 0
        Pins AIN1 is the negative differential input for channel 0
        Pins AIN2 is the positive differential input for channel 1
        Pins AIN3 is the negative differential input for channel 1

See the datasheet for details.

Module parameters
-----------------

* input_mode int

    Analog input mode:
         0 = four single ended inputs
         1 = three differential inputs
         2 = single ended and differential mixed
         3 = two differential inputs


Accessing PCF8591 via /sys interface
-------------------------------------

The PCF8591 is plainly impossible to detect! Thus the driver won't even
try. You have to explicitly instantiate the device at the relevant
address (in the interval [0x48..0x4f]) either through platform data, or
using the sysfs interface. See Documentation/i2c/instantiating-devices
for details.

Directories are being created for each instantiated PCF8591:

/sys/bus/i2c/devices/<0>-<1>/
where <0> is the bus the chip is connected to (e. g. i2c-0)
and <1> the chip address ([48..4f])

Inside these directories, there are such files:
in0_input, in1_input, in2_input, in3_input, out0_enable, out0_output, name

Name contains chip name.

The in0_input, in1_input, in2_input and in3_input files are RO. Reading gives
the value of the corresponding channel. Depending on the current analog inputs
configuration, files in2_input and in3_input may not exist. Values range
from 0 to 255 for single ended inputs and -128 to +127 for differential inputs
(8-bit ADC).

The out0_enable file is RW. Reading gives "1" for analog output enabled and
"0" for analog output disabled. Writing accepts "0" and "1" accordingly.

The out0_output file is RW. Writing a number between 0 and 255 (8-bit DAC), send
the value to the digital-to-analog converter. Note that a voltage will
only appears on AOUT pin if aout0_enable equals 1. Reading returns the last
value written.
