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

Commit a1e74464 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull staging / iio fixes from Greg KH:
 "Here are some small IIO driver fixes for 3.15-rc4 that resolve some
  reported issues"

* tag 'staging-3.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  iio: adc: Nothing in ADC should be a bool CONFIG
  iio: exynos_adc: use indio_dev->dev structure to handle child nodes
  iio:imu:mpu6050: Fixed segfault in Invensens MPU driver due to null dereference
  staging:iio:ad2s1200 fix missing parenthesis in a for statment.
parents 03787ff6 86281966
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -106,7 +106,7 @@ config AT91_ADC
	  Say yes here to build support for Atmel AT91 ADC.

config EXYNOS_ADC
	bool "Exynos ADC driver support"
	tristate "Exynos ADC driver support"
	depends on OF
	help
	  Core support for the ADC block found in the Samsung EXYNOS series
@@ -114,7 +114,7 @@ config EXYNOS_ADC
	  this resource.

config LP8788_ADC
	bool "LP8788 ADC driver"
	tristate "LP8788 ADC driver"
	depends on MFD_LP8788
	help
	  Say yes here to build support for TI LP8788 ADC.
+3 −3
Original line number Diff line number Diff line
@@ -344,7 +344,7 @@ static int exynos_adc_probe(struct platform_device *pdev)

	exynos_adc_hw_init(info);

	ret = of_platform_populate(np, exynos_adc_match, NULL, &pdev->dev);
	ret = of_platform_populate(np, exynos_adc_match, NULL, &indio_dev->dev);
	if (ret < 0) {
		dev_err(&pdev->dev, "failed adding child nodes\n");
		goto err_of_populate;
@@ -353,7 +353,7 @@ static int exynos_adc_probe(struct platform_device *pdev)
	return 0;

err_of_populate:
	device_for_each_child(&pdev->dev, NULL,
	device_for_each_child(&indio_dev->dev, NULL,
				exynos_adc_remove_devices);
	regulator_disable(info->vdd);
	clk_disable_unprepare(info->clk);
@@ -369,7 +369,7 @@ static int exynos_adc_remove(struct platform_device *pdev)
	struct iio_dev *indio_dev = platform_get_drvdata(pdev);
	struct exynos_adc *info = iio_priv(indio_dev);

	device_for_each_child(&pdev->dev, NULL,
	device_for_each_child(&indio_dev->dev, NULL,
				exynos_adc_remove_devices);
	regulator_disable(info->vdd);
	clk_disable_unprepare(info->clk);
+5 −2
Original line number Diff line number Diff line
@@ -660,6 +660,7 @@ static int inv_mpu_probe(struct i2c_client *client,
{
	struct inv_mpu6050_state *st;
	struct iio_dev *indio_dev;
	struct inv_mpu6050_platform_data *pdata;
	int result;

	if (!i2c_check_functionality(client->adapter,
@@ -672,8 +673,10 @@ static int inv_mpu_probe(struct i2c_client *client,

	st = iio_priv(indio_dev);
	st->client = client;
	st->plat_data = *(struct inv_mpu6050_platform_data
	pdata = (struct inv_mpu6050_platform_data
			*)dev_get_platdata(&client->dev);
	if (pdata)
		st->plat_data = *pdata;
	/* power is turned on inside check chip type*/
	result = inv_check_and_setup_chip(st, id);
	if (result)
+2 −1
Original line number Diff line number Diff line
@@ -107,7 +107,7 @@ static int ad2s1200_probe(struct spi_device *spi)
	int pn, ret = 0;
	unsigned short *pins = spi->dev.platform_data;

	for (pn = 0; pn < AD2S1200_PN; pn++)
	for (pn = 0; pn < AD2S1200_PN; pn++) {
		ret = devm_gpio_request_one(&spi->dev, pins[pn], GPIOF_DIR_OUT,
					    DRV_NAME);
		if (ret) {
@@ -115,6 +115,7 @@ static int ad2s1200_probe(struct spi_device *spi)
							pins[pn]);
			return ret;
		}
	}
	indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
	if (!indio_dev)
		return -ENOMEM;