tree a4a14499819cc861ac8939935883c2840b0ba216
parent d1db0eea852497762cab43b905b879dfcd3b8987
parent bbc28134e915d2e2e8cac0254d1d056db0ae3247
author Greg Kroah-Hartman <gregkh@linuxfoundation.org> 1398892763 -0700
committer Greg Kroah-Hartman <gregkh@linuxfoundation.org> 1398892763 -0700
mergetag object bbc28134e915d2e2e8cac0254d1d056db0ae3247
 type commit
 tag iio-fixes-for-3.15b
 tagger Jonathan Cameron <jic23@kernel.org> 1398524010 +0100
 
 Second set of fixes for IIO in the 3.15 cycle.
 
 * ad2s1200 - Fix some missing parenthesis in a for statement that could have
   led to an error being missed when getting gpios.
 * Fix a null derefference issue in the mpu6050 when platform data is not
   provided (or is provided via the device tree for example).
 * exynos_adc bug on remove due to child devices having been added to the
   parent of the IIO device rather than the IIO device itself.  This caused an
   issue with the IIO device removing itself in it's remove function.
 * Make all ADC drivers buildable as modules to avoid dependency issues if
   the IIO core is itself built as a module.  The exynos adc bug became
   apparently whilst this fix was being tested.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.22 (GNU/Linux)
 
 iQIcBAABAgAGBQJTW8mSAAoJEFSFNJnE9BaI9jsP/AlX5/G8f5jynM1C0WNQ3WaA
 EigVPSWbZgIUaPoMCULNTFoKCB/o76ecR83t+q8+b/2i/wyTdvI+5nmDhR5kH/mN
 m5nRHjYT3mv2u8WnXQgoY7LtcaGDPFEG8TgykXCq4e6OeEa5rpCjeDcVWe6ogT2i
 jtrgOLvbW+y99GY8nGng5B3vqPyQoQQxiZBVvHstRlSFJbyRD2PaCsoWlu5ap1c1
 xbuVf2T48rfTskqZK8gzlGeXszZsrGeU4UZBCBMxIfG3Q5KtOtMj1FgfNBr/Dwgp
 AgYwY7x5V7CV3pucMBB7ZES8NPjXh3POQhrx9ZWWHZzMAMDjlbTDjUQFSZHiT1MO
 tfh9B3aGNxpWJ/wv23wPlyFSQ8/ffTWA6v8VlxkItrwJa5123FdDPRsHvn4cTAJe
 LHNeERlRYJbOZd+iPyojObwpU7le4f/yk2heb45TlRmb5vAuJd7VWDXkjO3XRZJB
 ya1gYUEbC+XF8gnFSrEOLI7RTYUcBIB216PPODP3jh4Ui32lfDgGvqr2QSy5XMZF
 JK8SChrVw/OhC8th+/qOKGmSnjxfVx1IndpzdnrCD5c6B3YeFKkk7dzwBLIMXubW
 MOcVguVOZawgtodff48uoCQ9EJlvVpSWf6ps/oWdYDIp0zur50lFokixIggUYQc0
 WYiQk6D+Lovmb9x9BYms
 =qTIz
 -----END PGP SIGNATURE-----

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

Jonathan writes:

Second set of fixes for IIO in the 3.15 cycle.

* ad2s1200 - Fix some missing parenthesis in a for statement that could have
  led to an error being missed when getting gpios.
* Fix a null derefference issue in the mpu6050 when platform data is not
  provided (or is provided via the device tree for example).
* exynos_adc bug on remove due to child devices having been added to the
  parent of the IIO device rather than the IIO device itself.  This caused an
  issue with the IIO device removing itself in it's remove function.
* Make all ADC drivers buildable as modules to avoid dependency issues if
  the IIO core is itself built as a module.  The exynos adc bug became
  apparently whilst this fix was being tested.
