Kernel driver max197
====================

Author:

  * Vivien Didelot <vivien.didelot@savoirfairelinux.com>

Supported chips:

  * Maxim MAX197

    Prefix: 'max197'

    Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/MAX197.pdf

  * Maxim MAX199

    Prefix: 'max199'

    Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/MAX199.pdf

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

The A/D converters MAX197, and MAX199 are both 8-Channel, Multi-Range, 5V,
12-Bit DAS with 8+4 Bus Interface and Fault Protection.

The available ranges for the MAX197 are {0,-5V} to 5V, and {0,-10V} to 10V,
while they are {0,-2V} to 2V, and {0,-4V} to 4V on the MAX199.

Platform data
-------------

The MAX197 platform data (defined in linux/platform_data/max197.h) should be
filled with a pointer to a conversion function, defined like::

    int convert(u8 ctrl);

ctrl is the control byte to write to start a new conversion.
On success, the function must return the 12-bit raw value read from the chip,
or a negative error code otherwise.

Control byte format:

======= ========== ============================================
Bit     Name       Description
7,6     PD1,PD0    Clock and Power-Down modes
5       ACQMOD     Internal or External Controlled Acquisition
4       RNG        Full-scale voltage magnitude at the input
3       BIP        Unipolar or Bipolar conversion mode
2,1,0   A2,A1,A0   Channel
======= ========== ============================================

Sysfs interface
---------------

  ============== ==============================================================
  in[0-7]_input  The conversion value for the corresponding channel.
		 RO

  in[0-7]_min    The lower limit (in mV) for the corresponding channel.
		 For the MAX197, it will be adjusted to -10000, -5000, or 0.
		 For the MAX199, it will be adjusted to -4000, -2000, or 0.
		 RW

  in[0-7]_max    The higher limit (in mV) for the corresponding channel.
		 For the MAX197, it will be adjusted to 0, 5000, or 10000.
		 For the MAX199, it will be adjusted to 0, 2000, or 4000.
		 RW
  ============== ==============================================================
