linux/Documentation/ABI
Greg Kroah-Hartman 5a45e01d41 2nd set of new device support, features and cleanup for IIO in the 4.7 cycle.
Bit of a bumper set for new drivers but plenty of other stuff here as well!
 
 New device support
 * ad5592R ADC/DAC
   - new driver supporting ad5592r and ad5593r combined ADC/DAC and gpio chips.
 * Aosong am2315 relative humidity
   - new driver with triggered buffer support in follow up patch.
 * bmi160 imu
   - new driver
 * bmp280
   - bmp180 support - note there is support in the misc/bmp085 driver. Intent
     is to remove that driver long term.
 * invensense mpu6050
   - cleanup leading to explicit support of mpu9150 with a good few cleanups
     along the way.
 * Hope RF hp03 pressure and temperature sensor.
   - new driver
 * maxim DS1803 potentiometer
   - new driver
 * maxim max44000 light and proximity sensor
   - new driver built in a series of steps to support pretty much everything.
 * ROHM BH1780 light sensor
   - new driver. There is an existing driver in misc that this is pretty much
     intended to replace.  The discussion on whether to support the non standard
     interface of that driver is some way is continuing.
 * st-gyro
   - lsm9ds0-gyro.  The accel/magn side of this will take a while longer as
     extensions to the st library are needed for cases where two types of sensor
     share a single i2c address.
 * ti-adc081c
   - support the adc101c and adc121c
 * Vishay VEML6070 UV sensor
   - new driver.
 
 New features
 * core
   - devm_ APIs for channel_get and channel_get_all.  The first user of these
     is the generic ADC based thermal driver.  As it is going through the
     thermal tree these will be picked up as a patch to that next cycle as that
     is how the author preferred to do it.
   - mounting matrix support.  This new core support allows devices to provide
     to userspace (typically from the device tree) allowing compensation for how
     the sensor is mounted on the device.  First examples are on UAVs but it
     has a more mundane use on typical phone where the chip may be on the front
     or the back of the circuit board and soldered at any angle. Includes
     support for this ABI in ak8975 (which has an older interface, now
     deprecated) and mpu6050.
 * tools
   - add a -a option to enable all available channels in generic_buffer sample.
     Makes it somewhat easier to use.
 * adis library and drivers
   - support manual self test flag clearing.  This has technically been broken
     for a very long time - result is an offset on readings as the applied field
     is on all the time.
 * ak8975
   - triggered buffer support
 * bmc150
   - spi support (including splitting the driver into core and i2c parts)
 * bmp280
   - oversampling support.
 * dht11
   - improved logging - useful to debug timing issues on this quirky device.
 * st-sensors
   - read each channel invidivually as not all support the optimization of
   reading in bulk.  This is technically a fix, but will need to be backported
   if desired.
   - support open drain and shared interrupts.
 * ti-adc081c
   - triggered buffer support.
 
 Cleanups
 * inkern
   - white space fix.
 * ad7606
   - use the iio_device_claim_direct_mode call rather than open coding equiv.
 * ad799x
   - white space fix.
 * ad9523
   - unsigned -> unsigned int
 * apds9660
   - brace location tidying up.
   - silence an uninitialized variable warning.
 * ak8975
   - else and brace on same line fix.
 * at91_adc
   - white space fixes.
 * bmc150
   - use regmap stored copy of the device pointer rather than having an
     additional copy.
 * bmg160
   - use regmap stored copy of the device pointer rather than having an
     additional copy.
 * hid-sensors
   - white space fixes.
 * mcp3422
   - white space fix.
 * mma7455
   - use regmap to retrieve the device struct rather than carrying another copy
     in the private data.
 * ms_sensors
   - white space fix.
 * mxs-lradc
   - move current bindings out of staging - some will be shortly deprecated but
     the reality is that we have device trees out there using them so they will
     need to be supported for some time.  They accidentally got left behind
     when the driver graduated from staging.
   - white space cleanup.
   - set INPUT_PROP_DIRECT.
   - move ts config into a better function.
   - move the STMP reset out of the ADC init.
 * vf610_adc
   - case label indenting fix.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABCAAGBQJXHnw8AAoJEFSFNJnE9BaIDsIP/jbvOSDgOyvh4iNqV3ppAfvL
 yw/CWfKB5oMiqq/ENBNyMcD7kpGoh6ad/2JV1eXRnZsKArTwX6iN0Nu3yPxa+ySn
 xYc/BoGFwnNei+FqnFEqvK9RFZ3okQEkTW+OJg6eDMGDdL9HojZnALX4BE66QF3E
 W699vd3nA9SXqQ1UkQ+ozWdybBh2ksOfXknyN/S0sioIeG4MopCIyLMZzBGcDOCN
 EjdBudZla8VGTWcrp1ofOap6gJ7wKpbtlTPXuAEXtAypnDvuRdH7loTxtzSovNYd
 u6r9bujc1KUE4ilkYqODd5de4HvKm7aCR2ojlXeKlj+BNaF/uxQoYV/Al5e9CwR8
 nnz7c0rVAWIGc2tCiejJOMXB0t4TjVdzXZG9G/maKk1PNFOdUPb9Ul9BsjM28q5s
 yUneBuKlGFj2K/+E1AmTDRMhStMCMgrXZgyh0GSI07UZsVRnJR7ikUw7tly+J4ki
 21qKvTgXMKU+Fzh1HeqVcocq2AHsjlnKWuaB4/YiQzG5V0oGM4rvt78ewSMkmVkR
 IcIF9yI5XUfDAFdQUtvRlLP6p+qHylMH72aYq8pkMZ43Dq6hukyfx4vkc0Ztw7yS
 A655/frXiGeU2MFVSM2PYVloLQ5sftL5jDSBiDunzXHAl2WoXppu5Rjc7QvLnzLr
 vxvvN7MyGvi1GnKxcnYw
 =zzV9
 -----END PGP SIGNATURE-----

Merge tag 'iio-for-4.7b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-testing

Jonathan writes:

2nd set of new device support, features and cleanup for IIO in the 4.7 cycle.

Bit of a bumper set for new drivers but plenty of other stuff here as well!

New device support
* ad5592R ADC/DAC
  - new driver supporting ad5592r and ad5593r combined ADC/DAC and gpio chips.
* Aosong am2315 relative humidity
  - new driver with triggered buffer support in follow up patch.
* bmi160 imu
  - new driver
* bmp280
  - bmp180 support - note there is support in the misc/bmp085 driver. Intent
    is to remove that driver long term.
* invensense mpu6050
  - cleanup leading to explicit support of mpu9150 with a good few cleanups
    along the way.
* Hope RF hp03 pressure and temperature sensor.
  - new driver
* maxim DS1803 potentiometer
  - new driver
* maxim max44000 light and proximity sensor
  - new driver built in a series of steps to support pretty much everything.
* ROHM BH1780 light sensor
  - new driver. There is an existing driver in misc that this is pretty much
    intended to replace.  The discussion on whether to support the non standard
    interface of that driver is some way is continuing.
* st-gyro
  - lsm9ds0-gyro.  The accel/magn side of this will take a while longer as
    extensions to the st library are needed for cases where two types of sensor
    share a single i2c address.
* ti-adc081c
  - support the adc101c and adc121c
* Vishay VEML6070 UV sensor
  - new driver.

New features
* core
  - devm_ APIs for channel_get and channel_get_all.  The first user of these
    is the generic ADC based thermal driver.  As it is going through the
    thermal tree these will be picked up as a patch to that next cycle as that
    is how the author preferred to do it.
  - mounting matrix support.  This new core support allows devices to provide
    to userspace (typically from the device tree) allowing compensation for how
    the sensor is mounted on the device.  First examples are on UAVs but it
    has a more mundane use on typical phone where the chip may be on the front
    or the back of the circuit board and soldered at any angle. Includes
    support for this ABI in ak8975 (which has an older interface, now
    deprecated) and mpu6050.
* tools
  - add a -a option to enable all available channels in generic_buffer sample.
    Makes it somewhat easier to use.
* adis library and drivers
  - support manual self test flag clearing.  This has technically been broken
    for a very long time - result is an offset on readings as the applied field
    is on all the time.
* ak8975
  - triggered buffer support
* bmc150
  - spi support (including splitting the driver into core and i2c parts)
* bmp280
  - oversampling support.
* dht11
  - improved logging - useful to debug timing issues on this quirky device.
* st-sensors
  - read each channel invidivually as not all support the optimization of
  reading in bulk.  This is technically a fix, but will need to be backported
  if desired.
  - support open drain and shared interrupts.
* ti-adc081c
  - triggered buffer support.

Cleanups
* inkern
  - white space fix.
* ad7606
  - use the iio_device_claim_direct_mode call rather than open coding equiv.
* ad799x
  - white space fix.
* ad9523
  - unsigned -> unsigned int
* apds9660
  - brace location tidying up.
  - silence an uninitialized variable warning.
* ak8975
  - else and brace on same line fix.
* at91_adc
  - white space fixes.
* bmc150
  - use regmap stored copy of the device pointer rather than having an
    additional copy.
* bmg160
  - use regmap stored copy of the device pointer rather than having an
    additional copy.
* hid-sensors
  - white space fixes.
* mcp3422
  - white space fix.
* mma7455
  - use regmap to retrieve the device struct rather than carrying another copy
    in the private data.
* ms_sensors
  - white space fix.
* mxs-lradc
  - move current bindings out of staging - some will be shortly deprecated but
    the reality is that we have device trees out there using them so they will
    need to be supported for some time.  They accidentally got left behind
    when the driver graduated from staging.
  - white space cleanup.
  - set INPUT_PROP_DIRECT.
  - move ts config into a better function.
  - move the STMP reset out of the ADC init.
* vf610_adc
  - case label indenting fix.
2016-04-26 15:07:23 -07:00
..
obsolete Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-03-19 10:05:34 -07:00
removed rfkill: Remove obsolete "claim" sysfs interface 2016-02-24 09:04:24 +01:00
stable Merge tag 'ofs-pull-tag-1' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux 2016-03-26 12:59:04 -07:00
testing 2nd set of new device support, features and cleanup for IIO in the 4.7 cycle. 2016-04-26 15:07:23 -07:00
README Documentation/ABI: document the non-ABI status of Kconfig and symbols 2013-11-13 12:09:32 +09:00

This directory attempts to document the ABI between the Linux kernel and
userspace, and the relative stability of these interfaces.  Due to the
everchanging nature of Linux, and the differing maturity levels, these
interfaces should be used by userspace programs in different ways.

We have four different levels of ABI stability, as shown by the four
different subdirectories in this location.  Interfaces may change levels
of stability according to the rules described below.

The different levels of stability are:

  stable/
	This directory documents the interfaces that the developer has
	defined to be stable.  Userspace programs are free to use these
	interfaces with no restrictions, and backward compatibility for
	them will be guaranteed for at least 2 years.  Most interfaces
	(like syscalls) are expected to never change and always be
	available.

  testing/
	This directory documents interfaces that are felt to be stable,
	as the main development of this interface has been completed.
	The interface can be changed to add new features, but the
	current interface will not break by doing this, unless grave
	errors or security problems are found in them.  Userspace
	programs can start to rely on these interfaces, but they must be
	aware of changes that can occur before these interfaces move to
	be marked stable.  Programs that use these interfaces are
	strongly encouraged to add their name to the description of
	these interfaces, so that the kernel developers can easily
	notify them if any changes occur (see the description of the
	layout of the files below for details on how to do this.)

  obsolete/
  	This directory documents interfaces that are still remaining in
	the kernel, but are marked to be removed at some later point in
	time.  The description of the interface will document the reason
	why it is obsolete and when it can be expected to be removed.

  removed/
	This directory contains a list of the old interfaces that have
	been removed from the kernel.

Every file in these directories will contain the following information:

What:		Short description of the interface
Date:		Date created
KernelVersion:	Kernel version this feature first showed up in.
Contact:	Primary contact for this interface (may be a mailing list)
Description:	Long description of the interface and how to use it.
Users:		All users of this interface who wish to be notified when
		it changes.  This is very important for interfaces in
		the "testing" stage, so that kernel developers can work
		with userspace developers to ensure that things do not
		break in ways that are unacceptable.  It is also
		important to get feedback for these interfaces to make
		sure they are working in a proper way and do not need to
		be changed further.


How things move between levels:

Interfaces in stable may move to obsolete, as long as the proper
notification is given.

Interfaces may be removed from obsolete and the kernel as long as the
documented amount of time has gone by.

Interfaces in the testing state can move to the stable state when the
developers feel they are finished.  They cannot be removed from the
kernel tree without going through the obsolete state first.

It's up to the developer to place their interfaces in the category they
wish for it to start out in.


Notable bits of non-ABI, which should not under any circumstances be considered
stable:

- Kconfig.  Userspace should not rely on the presence or absence of any
  particular Kconfig symbol, in /proc/config.gz, in the copy of .config
  commonly installed to /boot, or in any invocation of the kernel build
  process.

- Kernel-internal symbols.  Do not rely on the presence, absence, location, or
  type of any kernel symbol, either in System.map files or the kernel binary
  itself.  See Documentation/stable_api_nonsense.txt.