Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 39bdc958 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'iio-for-3.18a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into work-next

Jonathan writes:

1st round of new IIO drivers, functionality and cleanups for the 3.18 cycle.

Maintainer Updates

* Add 3 designated reviewers for IIO.  Lars, Peter and Hartmut have been
  actively reviewing a lot of patches for a while now so this reflects
  the status quo.  These three are probably the only reason I keep
  my head above the water!

New drivers and device support

* max5821 DAC
* Rockchip SARADC
* TI ADC128S052 ADC
* BMC150 Accelerometer
* exynos ADC driver gains support for s3c24xx and s3c64xx parts.
* kxcjk-1013 gainst range control and runtime PM support to drive
  down it's power usage.

Driver removals

* Drop ad5930, ad99850, ad9852, ad9910 and ad9951 drivers on the simple
  basis that they drivers just provided a register write function with
  no compliant user space ABI whatsoever.  Much better to drop them and
  start again for these in the fullness of time.

Core Enhancements

* Join together neighbouring elements in the demux units that feeds
  the binary interfaces.  This cuts down on the number of individual
  copies needed  when splitting out individual channels from the incoming
  channel scans.
* Other demux related cleanups such as using roundup instead of a local
  implementation.

Cleanups

* Drop an unnecessary double setting of the owner field in xilinx adc.
* Some more patches to use managed (devm) interfaces to cut down on
  complexity of removal code.
* adis16060 coding style fixlets.
* Fix some incorrect error returns in the Xilinx ADC driver.
* Coding style fixlets for various accelerometer drivers.
* Some sparse warning fixes to do with endianness and sign of variables.
* Fix an incorrect and entirely pointless use of sizeof on a dynamic pointer
  in hid-sensor-magn-3d by dropping the relevant code.
parents ed7f92da ff9e7621
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
What:		/sys/bus/iio/devices/triggerX/name = "bmc150_accel-any-motion-devX"
KernelVersion:	3.17
Contact:	linux-iio@vger.kernel.org
Description:
		The BMC150 accelerometer kernel module provides an additional trigger,
		which sets driver in a mode, where data is pushed to the buffer
		only when there is any motion.
+15 −3
Original line number Original line Diff line number Diff line
@@ -11,13 +11,25 @@ New driver handles the following


Required properties:
Required properties:
- compatible:		Must be "samsung,exynos-adc-v1"
- compatible:		Must be "samsung,exynos-adc-v1"
				for exynos4412/5250 controllers.
				for exynos4412/5250 and s5pv210 controllers.
			Must be "samsung,exynos-adc-v2" for
			Must be "samsung,exynos-adc-v2" for
				future controllers.
				future controllers.
			Must be "samsung,exynos3250-adc" for
			Must be "samsung,exynos3250-adc" for
				controllers compatible with ADC of Exynos3250.
				controllers compatible with ADC of Exynos3250.
- reg:			Contains ADC register address range (base address and
			Must be "samsung,s3c2410-adc" for
			length) and the address of the phy enable register.
				the ADC in s3c2410 and compatibles
			Must be "samsung,s3c2416-adc" for
				the ADC in s3c2416 and compatibles
			Must be "samsung,s3c2440-adc" for
				the ADC in s3c2440 and compatibles
			Must be "samsung,s3c2443-adc" for
				the ADC in s3c2443 and compatibles
			Must be "samsung,s3c6410-adc" for
				the ADC in s3c6410 and compatibles
- reg:			List of ADC register address range
			- The base address and range of ADC register
			- The base address and range of ADC_PHY register (every
			  SoC except for s3c24xx/s3c64xx ADC)
- interrupts: 		Contains the interrupt information for the timer. The
- interrupts: 		Contains the interrupt information for the timer. The
			format is being dependent on which interrupt controller
			format is being dependent on which interrupt controller
			the Samsung device uses.
			the Samsung device uses.
+14 −0
Original line number Original line Diff line number Diff line
Maxim max5821 DAC device driver

Required properties:
	- compatible: Must be "maxim,max5821"
	- reg: Should contain the DAC I2C address
	- vref-supply: Phandle to the vref power supply

Example:

	max5821@38 {
		compatible = "maxim,max5821";
		reg = <0x38>;
		vref-supply = <&reg_max5821>;
	};
+14 −0
Original line number Original line Diff line number Diff line
@@ -686,6 +686,17 @@ W: http://blackfin.uclinux.org/
S:	Supported
S:	Supported
F:	sound/soc/blackfin/*
F:	sound/soc/blackfin/*
 
 
ANALOG DEVICES INC IIO DRIVERS
M:	Lars-Peter Clausen <lars@metafoo.de>
M:	Michael Hennerich <Michael.Hennerich@analog.com>
W:	http://wiki.analog.com/
W:	http://ez.analog.com/community/linux-device-drivers
S:	Supported
F:	drivers/iio/*/ad*
X:	drivers/iio/*/adjd*
F:	drivers/staging/iio/*/ad*
F:	staging/iio/trigger/iio-trig-bfin-timer.c

AOA (Apple Onboard Audio) ALSA DRIVER
AOA (Apple Onboard Audio) ALSA DRIVER
M:	Johannes Berg <johannes@sipsolutions.net>
M:	Johannes Berg <johannes@sipsolutions.net>
L:	linuxppc-dev@lists.ozlabs.org
L:	linuxppc-dev@lists.ozlabs.org
@@ -4580,6 +4591,9 @@ F: drivers/media/rc/iguanair.c


IIO SUBSYSTEM AND DRIVERS
IIO SUBSYSTEM AND DRIVERS
M:	Jonathan Cameron <jic23@kernel.org>
M:	Jonathan Cameron <jic23@kernel.org>
R:	Hartmut Knaack <knaack.h@gmx.de>
R:	Lars-Peter Clausen <lars@metafoo.de>
R:	Peter Meerwald <pmeerw@pmeerw.net>
L:	linux-iio@vger.kernel.org
L:	linux-iio@vger.kernel.org
S:	Maintained
S:	Maintained
F:	drivers/iio/
F:	drivers/iio/
+11 −22
Original line number Original line Diff line number Diff line
@@ -604,7 +604,7 @@ static int sensor_hub_probe(struct hid_device *hdev,
		ret = -EINVAL;
		ret = -EINVAL;
		goto err_stop_hw;
		goto err_stop_hw;
	}
	}
	sd->hid_sensor_hub_client_devs = kzalloc(dev_cnt *
	sd->hid_sensor_hub_client_devs = devm_kzalloc(&hdev->dev, dev_cnt *
						      sizeof(struct mfd_cell),
						      sizeof(struct mfd_cell),
						      GFP_KERNEL);
						      GFP_KERNEL);
	if (sd->hid_sensor_hub_client_devs == NULL) {
	if (sd->hid_sensor_hub_client_devs == NULL) {
@@ -618,11 +618,12 @@ static int sensor_hub_probe(struct hid_device *hdev,


		if (collection->type == HID_COLLECTION_PHYSICAL) {
		if (collection->type == HID_COLLECTION_PHYSICAL) {


			hsdev = kzalloc(sizeof(*hsdev), GFP_KERNEL);
			hsdev = devm_kzalloc(&hdev->dev, sizeof(*hsdev),
					     GFP_KERNEL);
			if (!hsdev) {
			if (!hsdev) {
				hid_err(hdev, "cannot allocate hid_sensor_hub_device\n");
				hid_err(hdev, "cannot allocate hid_sensor_hub_device\n");
				ret = -ENOMEM;
				ret = -ENOMEM;
				goto err_no_mem;
				goto err_stop_hw;
			}
			}
			hsdev->hdev = hdev;
			hsdev->hdev = hdev;
			hsdev->vendor_id = hdev->vendor;
			hsdev->vendor_id = hdev->vendor;
@@ -631,13 +632,13 @@ static int sensor_hub_probe(struct hid_device *hdev,
			if (last_hsdev)
			if (last_hsdev)
				last_hsdev->end_collection_index = i;
				last_hsdev->end_collection_index = i;
			last_hsdev = hsdev;
			last_hsdev = hsdev;
			name = kasprintf(GFP_KERNEL, "HID-SENSOR-%x",
			name = devm_kasprintf(&hdev->dev, GFP_KERNEL,
					      "HID-SENSOR-%x",
					      collection->usage);
					      collection->usage);
			if (name == NULL) {
			if (name == NULL) {
				hid_err(hdev, "Failed MFD device name\n");
				hid_err(hdev, "Failed MFD device name\n");
					ret = -ENOMEM;
					ret = -ENOMEM;
					kfree(hsdev);
					goto err_stop_hw;
					goto err_no_mem;
			}
			}
			sd->hid_sensor_hub_client_devs[
			sd->hid_sensor_hub_client_devs[
				sd->hid_sensor_client_cnt].id =
				sd->hid_sensor_client_cnt].id =
@@ -661,16 +662,10 @@ static int sensor_hub_probe(struct hid_device *hdev,
	ret = mfd_add_devices(&hdev->dev, 0, sd->hid_sensor_hub_client_devs,
	ret = mfd_add_devices(&hdev->dev, 0, sd->hid_sensor_hub_client_devs,
		sd->hid_sensor_client_cnt, NULL, 0, NULL);
		sd->hid_sensor_client_cnt, NULL, 0, NULL);
	if (ret < 0)
	if (ret < 0)
		goto err_no_mem;
		goto err_stop_hw;


	return ret;
	return ret;


err_no_mem:
	for (i = 0; i < sd->hid_sensor_client_cnt; ++i) {
		kfree(sd->hid_sensor_hub_client_devs[i].name);
		kfree(sd->hid_sensor_hub_client_devs[i].platform_data);
	}
	kfree(sd->hid_sensor_hub_client_devs);
err_stop_hw:
err_stop_hw:
	hid_hw_stop(hdev);
	hid_hw_stop(hdev);


@@ -681,7 +676,6 @@ static void sensor_hub_remove(struct hid_device *hdev)
{
{
	struct sensor_hub_data *data = hid_get_drvdata(hdev);
	struct sensor_hub_data *data = hid_get_drvdata(hdev);
	unsigned long flags;
	unsigned long flags;
	int i;


	hid_dbg(hdev, " hardware removed\n");
	hid_dbg(hdev, " hardware removed\n");
	hid_hw_close(hdev);
	hid_hw_close(hdev);
@@ -691,11 +685,6 @@ static void sensor_hub_remove(struct hid_device *hdev)
		complete(&data->pending.ready);
		complete(&data->pending.ready);
	spin_unlock_irqrestore(&data->lock, flags);
	spin_unlock_irqrestore(&data->lock, flags);
	mfd_remove_devices(&hdev->dev);
	mfd_remove_devices(&hdev->dev);
	for (i = 0; i < data->hid_sensor_client_cnt; ++i) {
		kfree(data->hid_sensor_hub_client_devs[i].name);
		kfree(data->hid_sensor_hub_client_devs[i].platform_data);
	}
	kfree(data->hid_sensor_hub_client_devs);
	hid_set_drvdata(hdev, NULL);
	hid_set_drvdata(hdev, NULL);
	mutex_destroy(&data->mutex);
	mutex_destroy(&data->mutex);
}
}
Loading