Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1372194 > unrolled thread

[PATCH 0/9] iio: use regmap to retrieve struct device

Started byAlison Schofield <amsfield22@gmail.com>
First post2016-04-06 07:20 +0200
Last post2016-04-10 21:10 +0200
Articles 15 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 0/9] iio: use regmap to retrieve struct device Alison Schofield <amsfield22@gmail.com> - 2016-04-06 07:20 +0200
    [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct  device Alison Schofield <amsfield22@gmail.com> - 2016-04-06 07:20 +0200
      Re: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct  device Marek Szyprowski <m.szyprowski@samsung.com> - 2016-04-06 09:10 +0200
        Re: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct  device Alison Schofield <amsfield22@gmail.com> - 2016-04-06 22:40 +0200
          Re: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct  device Marek Szyprowski <m.szyprowski@samsung.com> - 2016-04-07 07:40 +0200
            Re: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct  device Jonathan Cameron <jic23@kernel.org> - 2016-04-10 15:50 +0200
    [PATCH 3/9] iio: adc: qcom-spmi-vadc: use regmap to retrieve struct  device Alison Schofield <amsfield22@gmail.com> - 2016-04-06 07:20 +0200
      Re: [PATCH 3/9] iio: adc: qcom-spmi-vadc: use regmap to retrieve  struct device Jonathan Cameron <jic23@kernel.org> - 2016-04-10 16:00 +0200
    [PATCH 6/9] iio: accel: mxc4005: use regmap to retrieve struct device Alison Schofield <amsfield22@gmail.com> - 2016-04-06 07:20 +0200
    [PATCH 4/9] iio: accel: bmc150: use regmap to retrieve struct device Alison Schofield <amsfield22@gmail.com> - 2016-04-06 07:20 +0200
    [PATCH 8/9] iio: health: afe4404: use regmap to retrieve struct  device Alison Schofield <amsfield22@gmail.com> - 2016-04-06 07:30 +0200
    [PATCH 7/9] iio: health: afe4403: use regmap to retrieve struct  device Alison Schofield <amsfield22@gmail.com> - 2016-04-06 07:30 +0200
    [PATCH 9/9] iio: gyro: bmg160_core: use regmap to retrieve struct  device Alison Schofield <amsfield22@gmail.com> - 2016-04-06 07:30 +0200
    [PATCH v2 0/5] iio: use regmap to retrieve struct device Alison Schofield <amsfield22@gmail.com> - 2016-04-10 21:10 +0200
      [PATCH v2 2/5] iio: accel: mxc4005: use regmap to retrieve struct device Alison Schofield <amsfield22@gmail.com> - 2016-04-10 21:10 +0200

#1372194 — [PATCH 0/9] iio: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-06 07:20 +0200
Subject[PATCH 0/9] iio: use regmap to retrieve struct device
Message-ID<rkO2K-7uk-9@gated-at.bofh.it>
These drivers include both struct regmap and struct device in their
global data.  Remove the redundant copy by deleting struct device 
from the drivers global data and using regmap API to retrieve when
needed.

This patchset removes all such redundancies in drivers/iio/.

Patches created using Coccinelle plus hand edits for whitespace and
one local var naming collision.

Alison Schofield (9):
  iio: adc: exynos_adc: use regmap to retrieve struct device
  iio: adc: qcom-spmi-iadc: use regmap to retrieve struct device
  iio: adc: qcom-spmi-vadc: use regmap to retrieve struct device
  iio: accel: bmc150: use regmap to retrieve struct device
  iio: accel: mma7455: use regmap to retrieve struct device
  iio: accel: mxc4005: use regmap to retrieve struct device
  iio: health: afe4403: use regmap to retrieve struct device
  iio: health: afe4404: use regmap to retrieve struct device
  iio: gyro: bmg160_core: use regmap to retrieve struct device

 drivers/iio/accel/bmc150-accel-core.c | 99 +++++++++++++++++++----------------
 drivers/iio/accel/mma7455_core.c      |  5 +-
 drivers/iio/accel/mxc4005.c           | 26 +++++----
 drivers/iio/adc/exynos_adc.c          | 18 +++----
 drivers/iio/adc/qcom-spmi-iadc.c      | 32 +++++------
 drivers/iio/adc/qcom-spmi-vadc.c      | 37 +++++++------
 drivers/iio/gyro/bmg160_core.c        | 86 +++++++++++++++---------------
 drivers/iio/health/afe4403.c          | 36 ++++++-------
 drivers/iio/health/afe4404.c          | 38 +++++++-------
 9 files changed, 197 insertions(+), 180 deletions(-)

-- 
2.1.4

[toc] | [next] | [standalone]


#1372195 — [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-06 07:20 +0200
Subject[PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct device
Message-ID<rkO2K-7uk-19@gated-at.bofh.it>
In reply to#1372194
Driver includes struct regmap and struct device in its global data.
Remove the struct device and use regmap API to retrieve device info.

Patch created using Coccinelle plus manual edits.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
---
 drivers/iio/adc/exynos_adc.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/iio/adc/exynos_adc.c b/drivers/iio/adc/exynos_adc.c
index c15756d..0313e0f 100644
--- a/drivers/iio/adc/exynos_adc.c
+++ b/drivers/iio/adc/exynos_adc.c
@@ -130,7 +130,6 @@
 
 struct exynos_adc {
 	struct exynos_adc_data	*data;
-	struct device		*dev;
 	struct input_dev	*input;
 	void __iomem		*regs;
 	struct regmap		*pmu_map;
@@ -173,11 +172,12 @@ static void exynos_adc_unprepare_clk(struct exynos_adc *info)
 
 static int exynos_adc_prepare_clk(struct exynos_adc *info)
 {
+	struct device *dev = regmap_get_device(info->pmu_map);
 	int ret;
 
 	ret = clk_prepare(info->clk);
 	if (ret) {
-		dev_err(info->dev, "failed preparing adc clock: %d\n", ret);
+		dev_err(dev, "failed preparing adc clock: %d\n", ret);
 		return ret;
 	}
 
@@ -185,7 +185,7 @@ static int exynos_adc_prepare_clk(struct exynos_adc *info)
 		ret = clk_prepare(info->sclk);
 		if (ret) {
 			clk_unprepare(info->clk);
-			dev_err(info->dev,
+			dev_err(dev,
 				"failed preparing sclk_adc clock: %d\n", ret);
 			return ret;
 		}
@@ -203,11 +203,12 @@ static void exynos_adc_disable_clk(struct exynos_adc *info)
 
 static int exynos_adc_enable_clk(struct exynos_adc *info)
 {
+	struct device *dev = regmap_get_device(info->pmu_map);
 	int ret;
 
 	ret = clk_enable(info->clk);
 	if (ret) {
-		dev_err(info->dev, "failed enabling adc clock: %d\n", ret);
+		dev_err(dev, "failed enabling adc clock: %d\n", ret);
 		return ret;
 	}
 
@@ -215,7 +216,7 @@ static int exynos_adc_enable_clk(struct exynos_adc *info)
 		ret = clk_enable(info->sclk);
 		if (ret) {
 			clk_disable(info->clk);
-			dev_err(info->dev,
+			dev_err(dev,
 				"failed enabling sclk_adc clock: %d\n", ret);
 			return ret;
 		}
@@ -610,13 +611,14 @@ static irqreturn_t exynos_adc_isr(int irq, void *dev_id)
 static irqreturn_t exynos_ts_isr(int irq, void *dev_id)
 {
 	struct exynos_adc *info = dev_id;
-	struct iio_dev *dev = dev_get_drvdata(info->dev);
+	struct device *dev = regmap_get_device(info->pmu_map);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
 	u32 x, y;
 	bool pressed;
 	int ret;
 
 	while (info->input->users) {
-		ret = exynos_read_s3c64xx_ts(dev, &x, &y);
+		ret = exynos_read_s3c64xx_ts(indio_dev, &x, &y);
 		if (ret == -ETIMEDOUT)
 			break;
 
@@ -800,8 +802,6 @@ static int exynos_adc_probe(struct platform_device *pdev)
 
 	info->tsirq = irq;
 
-	info->dev = &pdev->dev;
-
 	init_completion(&info->completion);
 
 	info->clk = devm_clk_get(&pdev->dev, "adc");
-- 
2.1.4

[toc] | [prev] | [next] | [standalone]


#1372244 — Re: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct device

FromMarek Szyprowski <m.szyprowski@samsung.com>
Date2016-04-06 09:10 +0200
SubjectRe: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct device
Message-ID<rkPLc-gu-15@gated-at.bofh.it>
In reply to#1372195
Hello,

On 2016-04-06 07:15, Alison Schofield wrote:
> Driver includes struct regmap and struct device in its global data.
> Remove the struct device and use regmap API to retrieve device info.
>
> Patch created using Coccinelle plus manual edits.
>
> Signed-off-by: Alison Schofield <amsfield22@gmail.com>

This patch changes the struct device which is used by the driver to 
report errors. The driver used correctly the struct device associated 
with its device tree node, while after the patch it will use device 
which is associated with PMU regmap, which is a different device. PMU 
regmap is there only to enable/disable the ADC block and it is not the 
regmap used to access registers of the ADC device.

I would prefer to drop this patch.

> ---
>   drivers/iio/adc/exynos_adc.c | 18 +++++++++---------
>   1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/iio/adc/exynos_adc.c b/drivers/iio/adc/exynos_adc.c
> index c15756d..0313e0f 100644
> --- a/drivers/iio/adc/exynos_adc.c
> +++ b/drivers/iio/adc/exynos_adc.c
> @@ -130,7 +130,6 @@
>   
>   struct exynos_adc {
>   	struct exynos_adc_data	*data;
> -	struct device		*dev;
>   	struct input_dev	*input;
>   	void __iomem		*regs;
>   	struct regmap		*pmu_map;
> @@ -173,11 +172,12 @@ static void exynos_adc_unprepare_clk(struct exynos_adc *info)
>   
>   static int exynos_adc_prepare_clk(struct exynos_adc *info)
>   {
> +	struct device *dev = regmap_get_device(info->pmu_map);
>   	int ret;
>   
>   	ret = clk_prepare(info->clk);
>   	if (ret) {
> -		dev_err(info->dev, "failed preparing adc clock: %d\n", ret);
> +		dev_err(dev, "failed preparing adc clock: %d\n", ret);
>   		return ret;
>   	}
>   
> @@ -185,7 +185,7 @@ static int exynos_adc_prepare_clk(struct exynos_adc *info)
>   		ret = clk_prepare(info->sclk);
>   		if (ret) {
>   			clk_unprepare(info->clk);
> -			dev_err(info->dev,
> +			dev_err(dev,
>   				"failed preparing sclk_adc clock: %d\n", ret);
>   			return ret;
>   		}
> @@ -203,11 +203,12 @@ static void exynos_adc_disable_clk(struct exynos_adc *info)
>   
>   static int exynos_adc_enable_clk(struct exynos_adc *info)
>   {
> +	struct device *dev = regmap_get_device(info->pmu_map);
>   	int ret;
>   
>   	ret = clk_enable(info->clk);
>   	if (ret) {
> -		dev_err(info->dev, "failed enabling adc clock: %d\n", ret);
> +		dev_err(dev, "failed enabling adc clock: %d\n", ret);
>   		return ret;
>   	}
>   
> @@ -215,7 +216,7 @@ static int exynos_adc_enable_clk(struct exynos_adc *info)
>   		ret = clk_enable(info->sclk);
>   		if (ret) {
>   			clk_disable(info->clk);
> -			dev_err(info->dev,
> +			dev_err(dev,
>   				"failed enabling sclk_adc clock: %d\n", ret);
>   			return ret;
>   		}
> @@ -610,13 +611,14 @@ static irqreturn_t exynos_adc_isr(int irq, void *dev_id)
>   static irqreturn_t exynos_ts_isr(int irq, void *dev_id)
>   {
>   	struct exynos_adc *info = dev_id;
> -	struct iio_dev *dev = dev_get_drvdata(info->dev);
> +	struct device *dev = regmap_get_device(info->pmu_map);
> +	struct iio_dev *indio_dev = dev_get_drvdata(dev);
>   	u32 x, y;
>   	bool pressed;
>   	int ret;
>   
>   	while (info->input->users) {
> -		ret = exynos_read_s3c64xx_ts(dev, &x, &y);
> +		ret = exynos_read_s3c64xx_ts(indio_dev, &x, &y);
>   		if (ret == -ETIMEDOUT)
>   			break;
>   
> @@ -800,8 +802,6 @@ static int exynos_adc_probe(struct platform_device *pdev)
>   
>   	info->tsirq = irq;
>   
> -	info->dev = &pdev->dev;
> -
>   	init_completion(&info->completion);
>   
>   	info->clk = devm_clk_get(&pdev->dev, "adc");

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

[toc] | [prev] | [next] | [standalone]


#1372804 — Re: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-06 22:40 +0200
SubjectRe: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct device
Message-ID<rl2p5-13c-23@gated-at.bofh.it>
In reply to#1372244
On Wed, Apr 06, 2016 at 09:03:00AM +0200, Marek Szyprowski wrote:
> Hello,
> 
> On 2016-04-06 07:15, Alison Schofield wrote:
> >Driver includes struct regmap and struct device in its global data.
> >Remove the struct device and use regmap API to retrieve device info.
> >
> >Patch created using Coccinelle plus manual edits.
> >
> >Signed-off-by: Alison Schofield <amsfield22@gmail.com>
> 
> This patch changes the struct device which is used by the driver to report
> errors. The driver used correctly the struct device associated with its
> device tree node, while after the patch it will use device which is
> associated with PMU regmap, which is a different device. PMU regmap is there
> only to enable/disable the ADC block and it is not the regmap used to access
> registers of the ADC device.
> 
> I would prefer to drop this patch.
> 

Thanks Marek!  Please check my understanding.  Driver is not carrying
a duplicate struct device. The regmap in exynos_adc is *not* this
devices regmap. It belongs to the PMU, (power mgmt unit?) 

It seemed excessive to carry around a struct device just for the
dev_err messages, but, we need that struct to extract the correct
iio_dev struct. Without a regmap belonging to this actual device,
no efficiencies can be gained in exynos, and the patch will be
dropped from set v2.

Now I need to be able to recognize such cases elsewhere. I'm going
back though other patches in this set looking for that, but I'm not
so sure I would recognize it.

Jonathan & all, Any hints on the rule of regmap?

Thanks,
alisons



> >---
> >  drivers/iio/adc/exynos_adc.c | 18 +++++++++---------
> >  1 file changed, 9 insertions(+), 9 deletions(-)
> >
> >diff --git a/drivers/iio/adc/exynos_adc.c b/drivers/iio/adc/exynos_adc.c
> >index c15756d..0313e0f 100644
> >--- a/drivers/iio/adc/exynos_adc.c
> >+++ b/drivers/iio/adc/exynos_adc.c
> >@@ -130,7 +130,6 @@
> >  struct exynos_adc {
> >  	struct exynos_adc_data	*data;
> >-	struct device		*dev;
> >  	struct input_dev	*input;
> >  	void __iomem		*regs;
> >  	struct regmap		*pmu_map;
> >@@ -173,11 +172,12 @@ static void exynos_adc_unprepare_clk(struct exynos_adc *info)
> >  static int exynos_adc_prepare_clk(struct exynos_adc *info)
> >  {
> >+	struct device *dev = regmap_get_device(info->pmu_map);
> >  	int ret;
> >  	ret = clk_prepare(info->clk);
> >  	if (ret) {
> >-		dev_err(info->dev, "failed preparing adc clock: %d\n", ret);
> >+		dev_err(dev, "failed preparing adc clock: %d\n", ret);
> >  		return ret;
> >  	}
> >@@ -185,7 +185,7 @@ static int exynos_adc_prepare_clk(struct exynos_adc *info)
> >  		ret = clk_prepare(info->sclk);
> >  		if (ret) {
> >  			clk_unprepare(info->clk);
> >-			dev_err(info->dev,
> >+			dev_err(dev,
> >  				"failed preparing sclk_adc clock: %d\n", ret);
> >  			return ret;
> >  		}
> >@@ -203,11 +203,12 @@ static void exynos_adc_disable_clk(struct exynos_adc *info)
> >  static int exynos_adc_enable_clk(struct exynos_adc *info)
> >  {
> >+	struct device *dev = regmap_get_device(info->pmu_map);
> >  	int ret;
> >  	ret = clk_enable(info->clk);
> >  	if (ret) {
> >-		dev_err(info->dev, "failed enabling adc clock: %d\n", ret);
> >+		dev_err(dev, "failed enabling adc clock: %d\n", ret);
> >  		return ret;
> >  	}
> >@@ -215,7 +216,7 @@ static int exynos_adc_enable_clk(struct exynos_adc *info)
> >  		ret = clk_enable(info->sclk);
> >  		if (ret) {
> >  			clk_disable(info->clk);
> >-			dev_err(info->dev,
> >+			dev_err(dev,
> >  				"failed enabling sclk_adc clock: %d\n", ret);
> >  			return ret;
> >  		}
> >@@ -610,13 +611,14 @@ static irqreturn_t exynos_adc_isr(int irq, void *dev_id)
> >  static irqreturn_t exynos_ts_isr(int irq, void *dev_id)
> >  {
> >  	struct exynos_adc *info = dev_id;
> >-	struct iio_dev *dev = dev_get_drvdata(info->dev);
> >+	struct device *dev = regmap_get_device(info->pmu_map);
> >+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
> >  	u32 x, y;
> >  	bool pressed;
> >  	int ret;
> >  	while (info->input->users) {
> >-		ret = exynos_read_s3c64xx_ts(dev, &x, &y);
> >+		ret = exynos_read_s3c64xx_ts(indio_dev, &x, &y);
> >  		if (ret == -ETIMEDOUT)
> >  			break;
> >@@ -800,8 +802,6 @@ static int exynos_adc_probe(struct platform_device *pdev)
> >  	info->tsirq = irq;
> >-	info->dev = &pdev->dev;
> >-
> >  	init_completion(&info->completion);
> >  	info->clk = devm_clk_get(&pdev->dev, "adc");
> 
> Best regards
> -- 
> Marek Szyprowski, PhD
> Samsung R&D Institute Poland
> 

[toc] | [prev] | [next] | [standalone]


#1373096 — Re: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct device

FromMarek Szyprowski <m.szyprowski@samsung.com>
Date2016-04-07 07:40 +0200
SubjectRe: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct device
Message-ID<rlaPF-7AE-29@gated-at.bofh.it>
In reply to#1372804
Hello,

On 2016-04-06 22:33, Alison Schofield wrote:
> On Wed, Apr 06, 2016 at 09:03:00AM +0200, Marek Szyprowski wrote:
>> Hello,
>>
>> On 2016-04-06 07:15, Alison Schofield wrote:
>>> Driver includes struct regmap and struct device in its global data.
>>> Remove the struct device and use regmap API to retrieve device info.
>>>
>>> Patch created using Coccinelle plus manual edits.
>>>
>>> Signed-off-by: Alison Schofield <amsfield22@gmail.com>
>> This patch changes the struct device which is used by the driver to report
>> errors. The driver used correctly the struct device associated with its
>> device tree node, while after the patch it will use device which is
>> associated with PMU regmap, which is a different device. PMU regmap is there
>> only to enable/disable the ADC block and it is not the regmap used to access
>> registers of the ADC device.
>>
>> I would prefer to drop this patch.
> Thanks Marek!  Please check my understanding.  Driver is not carrying
> a duplicate struct device. The regmap in exynos_adc is *not* this
> devices regmap. It belongs to the PMU, (power mgmt unit?)

Exactly.

> It seemed excessive to carry around a struct device just for the
> dev_err messages, but, we need that struct to extract the correct
> iio_dev struct. Without a regmap belonging to this actual device,
> no efficiencies can be gained in exynos, and the patch will be
> dropped from set v2.

Thanks.

> Now I need to be able to recognize such cases elsewhere. I'm going
> back though other patches in this set looking for that, but I'm not
> so sure I would recognize it.
>
> Jonathan & all, Any hints on the rule of regmap?

You may check how the regmap is initialized. When it is retrieved by
phandle from device tree, then you might be almost sure that it refers
to the different device.

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

[toc] | [prev] | [next] | [standalone]


#1374775 — Re: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct device

FromJonathan Cameron <jic23@kernel.org>
Date2016-04-10 15:50 +0200
SubjectRe: [PATCH 1/9] iio: adc: exynos_adc: use regmap to retrieve struct device
Message-ID<rmnUu-5P1-1@gated-at.bofh.it>
In reply to#1373096
On 07/04/16 06:33, Marek Szyprowski wrote:
> Hello,
> 
> On 2016-04-06 22:33, Alison Schofield wrote:
>> On Wed, Apr 06, 2016 at 09:03:00AM +0200, Marek Szyprowski wrote:
>>> Hello,
>>>
>>> On 2016-04-06 07:15, Alison Schofield wrote:
>>>> Driver includes struct regmap and struct device in its global data.
>>>> Remove the struct device and use regmap API to retrieve device info.
>>>>
>>>> Patch created using Coccinelle plus manual edits.
>>>>
>>>> Signed-off-by: Alison Schofield <amsfield22@gmail.com>
>>> This patch changes the struct device which is used by the driver to report
>>> errors. The driver used correctly the struct device associated with its
>>> device tree node, while after the patch it will use device which is
>>> associated with PMU regmap, which is a different device. PMU regmap is there
>>> only to enable/disable the ADC block and it is not the regmap used to access
>>> registers of the ADC device.
>>>
>>> I would prefer to drop this patch.
>> Thanks Marek!  Please check my understanding.  Driver is not carrying
>> a duplicate struct device. The regmap in exynos_adc is *not* this
>> devices regmap. It belongs to the PMU, (power mgmt unit?)
> 
> Exactly.
> 
>> It seemed excessive to carry around a struct device just for the
>> dev_err messages, but, we need that struct to extract the correct
>> iio_dev struct. Without a regmap belonging to this actual device,
>> no efficiencies can be gained in exynos, and the patch will be
>> dropped from set v2.
> 
> Thanks.
> 
>> Now I need to be able to recognize such cases elsewhere. I'm going
>> back though other patches in this set looking for that, but I'm not
>> so sure I would recognize it.
>>
>> Jonathan & all, Any hints on the rule of regmap?
> 
> You may check how the regmap is initialized. When it is retrieved by
> phandle from device tree, then you might be almost sure that it refers
> to the different device.
True enough.  Most simple devices that stand alone should be fine for
this sort of cleanup as the regmap is typically initiated directly for them.

Jonathan
> 
> Best regards

[toc] | [prev] | [next] | [standalone]


#1372197 — [PATCH 3/9] iio: adc: qcom-spmi-vadc: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-06 07:20 +0200
Subject[PATCH 3/9] iio: adc: qcom-spmi-vadc: use regmap to retrieve struct device
Message-ID<rkO2L-7uk-25@gated-at.bofh.it>
In reply to#1372194
Driver includes struct regmap and struct device in its global data.
Remove the struct device and use regmap API to retrieve device info.

Patch created using Coccinelle plus manual edits.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
---
 drivers/iio/adc/qcom-spmi-vadc.c | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/drivers/iio/adc/qcom-spmi-vadc.c b/drivers/iio/adc/qcom-spmi-vadc.c
index c2babe5..9e7aeca 100644
--- a/drivers/iio/adc/qcom-spmi-vadc.c
+++ b/drivers/iio/adc/qcom-spmi-vadc.c
@@ -161,7 +161,6 @@ struct vadc_channel_prop {
 /**
  * struct vadc_priv - VADC private structure.
  * @regmap: pointer to struct regmap.
- * @dev: pointer to struct device.
  * @base: base address for the ADC peripheral.
  * @nchannels: number of VADC channels.
  * @chan_props: array of VADC channel properties.
@@ -174,7 +173,6 @@ struct vadc_channel_prop {
  */
 struct vadc_priv {
 	struct regmap		 *regmap;
-	struct device		 *dev;
 	u16			 base;
 	unsigned int		 nchannels;
 	struct vadc_channel_prop *chan_props;
@@ -236,6 +234,7 @@ static int vadc_set_state(struct vadc_priv *vadc, bool state)
 
 static void vadc_show_status(struct vadc_priv *vadc)
 {
+	struct device *dev = regmap_get_device(vadc->regmap);
 	u8 mode, sta1, chan, dig, en, req;
 	int ret;
 
@@ -263,7 +262,7 @@ static void vadc_show_status(struct vadc_priv *vadc)
 	if (ret)
 		return;
 
-	dev_err(vadc->dev,
+	dev_err(dev,
 		"mode:%02x en:%02x chan:%02x dig:%02x req:%02x sta1:%02x\n",
 		mode, en, chan, dig, req, sta1);
 }
@@ -350,13 +349,14 @@ static int vadc_read_result(struct vadc_priv *vadc, u16 *data)
 static struct vadc_channel_prop *vadc_get_channel(struct vadc_priv *vadc,
 						  unsigned int num)
 {
+	struct device *dev = regmap_get_device(vadc->regmap);
 	unsigned int i;
 
 	for (i = 0; i < vadc->nchannels; i++)
 		if (vadc->chan_props[i].channel == num)
 			return &vadc->chan_props[i];
 
-	dev_dbg(vadc->dev, "no such channel %02x\n", num);
+	dev_dbg(dev, "no such channel %02x\n", num);
 
 	return NULL;
 }
@@ -364,6 +364,7 @@ static struct vadc_channel_prop *vadc_get_channel(struct vadc_priv *vadc,
 static int vadc_do_conversion(struct vadc_priv *vadc,
 			      struct vadc_channel_prop *prop, u16 *data)
 {
+	struct device *dev = regmap_get_device(vadc->regmap);
 	unsigned int timeout;
 	int ret;
 
@@ -406,7 +407,7 @@ static int vadc_do_conversion(struct vadc_priv *vadc,
 err_disable:
 	vadc_set_state(vadc, false);
 	if (ret)
-		dev_err(vadc->dev, "conversion failed\n");
+		dev_err(dev, "conversion failed\n");
 unlock:
 	mutex_unlock(&vadc->lock);
 	return ret;
@@ -414,6 +415,7 @@ unlock:
 
 static int vadc_measure_ref_points(struct vadc_priv *vadc)
 {
+	struct device *dev = regmap_get_device(vadc->regmap);
 	struct vadc_channel_prop *prop;
 	u16 read_1, read_2;
 	int ret;
@@ -463,7 +465,7 @@ static int vadc_measure_ref_points(struct vadc_priv *vadc)
 	vadc->graph[VADC_CALIB_RATIOMETRIC].gnd = read_2;
 err:
 	if (ret)
-		dev_err(vadc->dev, "measure reference points failed\n");
+		dev_err(dev, "measure reference points failed\n");
 
 	return ret;
 }
@@ -814,6 +816,7 @@ static int vadc_get_dt_channel_data(struct device *dev,
 
 static int vadc_get_dt_data(struct vadc_priv *vadc, struct device_node *node)
 {
+	struct device *dev = regmap_get_device(vadc->regmap);
 	const struct vadc_channels *vadc_chan;
 	struct iio_chan_spec *iio_chan;
 	struct vadc_channel_prop prop;
@@ -825,12 +828,12 @@ static int vadc_get_dt_data(struct vadc_priv *vadc, struct device_node *node)
 	if (!vadc->nchannels)
 		return -EINVAL;
 
-	vadc->iio_chans = devm_kcalloc(vadc->dev, vadc->nchannels,
+	vadc->iio_chans = devm_kcalloc(dev, vadc->nchannels,
 				       sizeof(*vadc->iio_chans), GFP_KERNEL);
 	if (!vadc->iio_chans)
 		return -ENOMEM;
 
-	vadc->chan_props = devm_kcalloc(vadc->dev, vadc->nchannels,
+	vadc->chan_props = devm_kcalloc(dev, vadc->nchannels,
 					sizeof(*vadc->chan_props), GFP_KERNEL);
 	if (!vadc->chan_props)
 		return -ENOMEM;
@@ -838,7 +841,7 @@ static int vadc_get_dt_data(struct vadc_priv *vadc, struct device_node *node)
 	iio_chan = vadc->iio_chans;
 
 	for_each_available_child_of_node(node, child) {
-		ret = vadc_get_dt_channel_data(vadc->dev, &prop, child);
+		ret = vadc_get_dt_channel_data(dev, &prop, child);
 		if (ret) {
 			of_node_put(child);
 			return ret;
@@ -860,22 +863,22 @@ static int vadc_get_dt_data(struct vadc_priv *vadc, struct device_node *node)
 
 	/* These channels are mandatory, they are used as reference points */
 	if (!vadc_get_channel(vadc, VADC_REF_1250MV)) {
-		dev_err(vadc->dev, "Please define 1.25V channel\n");
+		dev_err(dev, "Please define 1.25V channel\n");
 		return -ENODEV;
 	}
 
 	if (!vadc_get_channel(vadc, VADC_REF_625MV)) {
-		dev_err(vadc->dev, "Please define 0.625V channel\n");
+		dev_err(dev, "Please define 0.625V channel\n");
 		return -ENODEV;
 	}
 
 	if (!vadc_get_channel(vadc, VADC_VDD_VADC)) {
-		dev_err(vadc->dev, "Please define VDD channel\n");
+		dev_err(dev, "Please define VDD channel\n");
 		return -ENODEV;
 	}
 
 	if (!vadc_get_channel(vadc, VADC_GND_REF)) {
-		dev_err(vadc->dev, "Please define GND channel\n");
+		dev_err(dev, "Please define GND channel\n");
 		return -ENODEV;
 	}
 
@@ -893,6 +896,7 @@ static irqreturn_t vadc_isr(int irq, void *dev_id)
 
 static int vadc_check_revision(struct vadc_priv *vadc)
 {
+	struct device *dev = regmap_get_device(vadc->regmap);
 	u8 val;
 	int ret;
 
@@ -901,7 +905,7 @@ static int vadc_check_revision(struct vadc_priv *vadc)
 		return ret;
 
 	if (val < VADC_PERPH_TYPE_ADC) {
-		dev_err(vadc->dev, "%d is not ADC\n", val);
+		dev_err(dev, "%d is not ADC\n", val);
 		return -ENODEV;
 	}
 
@@ -910,7 +914,7 @@ static int vadc_check_revision(struct vadc_priv *vadc)
 		return ret;
 
 	if (val < VADC_PERPH_SUBTYPE_VADC) {
-		dev_err(vadc->dev, "%d is not VADC\n", val);
+		dev_err(dev, "%d is not VADC\n", val);
 		return -ENODEV;
 	}
 
@@ -919,7 +923,7 @@ static int vadc_check_revision(struct vadc_priv *vadc)
 		return ret;
 
 	if (val < VADC_REVISION2_SUPPORTED_VADC) {
-		dev_err(vadc->dev, "revision %d not supported\n", val);
+		dev_err(dev, "revision %d not supported\n", val);
 		return -ENODEV;
 	}
 
@@ -950,7 +954,6 @@ static int vadc_probe(struct platform_device *pdev)
 
 	vadc = iio_priv(indio_dev);
 	vadc->regmap = regmap;
-	vadc->dev = dev;
 	vadc->base = reg;
 	vadc->are_ref_measured = false;
 	init_completion(&vadc->complete);
-- 
2.1.4

[toc] | [prev] | [next] | [standalone]


#1374781 — Re: [PATCH 3/9] iio: adc: qcom-spmi-vadc: use regmap to retrieve struct device

FromJonathan Cameron <jic23@kernel.org>
Date2016-04-10 16:00 +0200
SubjectRe: [PATCH 3/9] iio: adc: qcom-spmi-vadc: use regmap to retrieve struct device
Message-ID<rmo4a-5TB-11@gated-at.bofh.it>
In reply to#1372197
On 06/04/16 06:17, Alison Schofield wrote:
> Driver includes struct regmap and struct device in its global data.
> Remove the struct device and use regmap API to retrieve device info.
> 
> Patch created using Coccinelle plus manual edits.
> 
> Signed-off-by: Alison Schofield <amsfield22@gmail.com>
Another one where the regmap belongs to the wrong device... (parent)
> ---
>  drivers/iio/adc/qcom-spmi-vadc.c | 37 ++++++++++++++++++++-----------------
>  1 file changed, 20 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/iio/adc/qcom-spmi-vadc.c b/drivers/iio/adc/qcom-spmi-vadc.c
> index c2babe5..9e7aeca 100644
> --- a/drivers/iio/adc/qcom-spmi-vadc.c
> +++ b/drivers/iio/adc/qcom-spmi-vadc.c
> @@ -161,7 +161,6 @@ struct vadc_channel_prop {
>  /**
>   * struct vadc_priv - VADC private structure.
>   * @regmap: pointer to struct regmap.
> - * @dev: pointer to struct device.
>   * @base: base address for the ADC peripheral.
>   * @nchannels: number of VADC channels.
>   * @chan_props: array of VADC channel properties.
> @@ -174,7 +173,6 @@ struct vadc_channel_prop {
>   */
>  struct vadc_priv {
>  	struct regmap		 *regmap;
> -	struct device		 *dev;
>  	u16			 base;
>  	unsigned int		 nchannels;
>  	struct vadc_channel_prop *chan_props;
> @@ -236,6 +234,7 @@ static int vadc_set_state(struct vadc_priv *vadc, bool state)
>  
>  static void vadc_show_status(struct vadc_priv *vadc)
>  {
> +	struct device *dev = regmap_get_device(vadc->regmap);
>  	u8 mode, sta1, chan, dig, en, req;
>  	int ret;
>  
> @@ -263,7 +262,7 @@ static void vadc_show_status(struct vadc_priv *vadc)
>  	if (ret)
>  		return;
>  
> -	dev_err(vadc->dev,
> +	dev_err(dev,
>  		"mode:%02x en:%02x chan:%02x dig:%02x req:%02x sta1:%02x\n",
>  		mode, en, chan, dig, req, sta1);
>  }
> @@ -350,13 +349,14 @@ static int vadc_read_result(struct vadc_priv *vadc, u16 *data)
>  static struct vadc_channel_prop *vadc_get_channel(struct vadc_priv *vadc,
>  						  unsigned int num)
>  {
> +	struct device *dev = regmap_get_device(vadc->regmap);
>  	unsigned int i;
>  
>  	for (i = 0; i < vadc->nchannels; i++)
>  		if (vadc->chan_props[i].channel == num)
>  			return &vadc->chan_props[i];
>  
> -	dev_dbg(vadc->dev, "no such channel %02x\n", num);
> +	dev_dbg(dev, "no such channel %02x\n", num);
>  
>  	return NULL;
>  }
> @@ -364,6 +364,7 @@ static struct vadc_channel_prop *vadc_get_channel(struct vadc_priv *vadc,
>  static int vadc_do_conversion(struct vadc_priv *vadc,
>  			      struct vadc_channel_prop *prop, u16 *data)
>  {
> +	struct device *dev = regmap_get_device(vadc->regmap);
>  	unsigned int timeout;
>  	int ret;
>  
> @@ -406,7 +407,7 @@ static int vadc_do_conversion(struct vadc_priv *vadc,
>  err_disable:
>  	vadc_set_state(vadc, false);
>  	if (ret)
> -		dev_err(vadc->dev, "conversion failed\n");
> +		dev_err(dev, "conversion failed\n");
>  unlock:
>  	mutex_unlock(&vadc->lock);
>  	return ret;
> @@ -414,6 +415,7 @@ unlock:
>  
>  static int vadc_measure_ref_points(struct vadc_priv *vadc)
>  {
> +	struct device *dev = regmap_get_device(vadc->regmap);
>  	struct vadc_channel_prop *prop;
>  	u16 read_1, read_2;
>  	int ret;
> @@ -463,7 +465,7 @@ static int vadc_measure_ref_points(struct vadc_priv *vadc)
>  	vadc->graph[VADC_CALIB_RATIOMETRIC].gnd = read_2;
>  err:
>  	if (ret)
> -		dev_err(vadc->dev, "measure reference points failed\n");
> +		dev_err(dev, "measure reference points failed\n");
>  
>  	return ret;
>  }
> @@ -814,6 +816,7 @@ static int vadc_get_dt_channel_data(struct device *dev,
>  
>  static int vadc_get_dt_data(struct vadc_priv *vadc, struct device_node *node)
>  {
> +	struct device *dev = regmap_get_device(vadc->regmap);
>  	const struct vadc_channels *vadc_chan;
>  	struct iio_chan_spec *iio_chan;
>  	struct vadc_channel_prop prop;
> @@ -825,12 +828,12 @@ static int vadc_get_dt_data(struct vadc_priv *vadc, struct device_node *node)
>  	if (!vadc->nchannels)
>  		return -EINVAL;
>  
> -	vadc->iio_chans = devm_kcalloc(vadc->dev, vadc->nchannels,
> +	vadc->iio_chans = devm_kcalloc(dev, vadc->nchannels,
>  				       sizeof(*vadc->iio_chans), GFP_KERNEL);
>  	if (!vadc->iio_chans)
>  		return -ENOMEM;
>  
> -	vadc->chan_props = devm_kcalloc(vadc->dev, vadc->nchannels,
> +	vadc->chan_props = devm_kcalloc(dev, vadc->nchannels,
>  					sizeof(*vadc->chan_props), GFP_KERNEL);
>  	if (!vadc->chan_props)
>  		return -ENOMEM;
> @@ -838,7 +841,7 @@ static int vadc_get_dt_data(struct vadc_priv *vadc, struct device_node *node)
>  	iio_chan = vadc->iio_chans;
>  
>  	for_each_available_child_of_node(node, child) {
> -		ret = vadc_get_dt_channel_data(vadc->dev, &prop, child);
> +		ret = vadc_get_dt_channel_data(dev, &prop, child);
>  		if (ret) {
>  			of_node_put(child);
>  			return ret;
> @@ -860,22 +863,22 @@ static int vadc_get_dt_data(struct vadc_priv *vadc, struct device_node *node)
>  
>  	/* These channels are mandatory, they are used as reference points */
>  	if (!vadc_get_channel(vadc, VADC_REF_1250MV)) {
> -		dev_err(vadc->dev, "Please define 1.25V channel\n");
> +		dev_err(dev, "Please define 1.25V channel\n");
>  		return -ENODEV;
>  	}
>  
>  	if (!vadc_get_channel(vadc, VADC_REF_625MV)) {
> -		dev_err(vadc->dev, "Please define 0.625V channel\n");
> +		dev_err(dev, "Please define 0.625V channel\n");
>  		return -ENODEV;
>  	}
>  
>  	if (!vadc_get_channel(vadc, VADC_VDD_VADC)) {
> -		dev_err(vadc->dev, "Please define VDD channel\n");
> +		dev_err(dev, "Please define VDD channel\n");
>  		return -ENODEV;
>  	}
>  
>  	if (!vadc_get_channel(vadc, VADC_GND_REF)) {
> -		dev_err(vadc->dev, "Please define GND channel\n");
> +		dev_err(dev, "Please define GND channel\n");
>  		return -ENODEV;
>  	}
>  
> @@ -893,6 +896,7 @@ static irqreturn_t vadc_isr(int irq, void *dev_id)
>  
>  static int vadc_check_revision(struct vadc_priv *vadc)
>  {
> +	struct device *dev = regmap_get_device(vadc->regmap);
>  	u8 val;
>  	int ret;
>  
> @@ -901,7 +905,7 @@ static int vadc_check_revision(struct vadc_priv *vadc)
>  		return ret;
>  
>  	if (val < VADC_PERPH_TYPE_ADC) {
> -		dev_err(vadc->dev, "%d is not ADC\n", val);
> +		dev_err(dev, "%d is not ADC\n", val);
>  		return -ENODEV;
>  	}
>  
> @@ -910,7 +914,7 @@ static int vadc_check_revision(struct vadc_priv *vadc)
>  		return ret;
>  
>  	if (val < VADC_PERPH_SUBTYPE_VADC) {
> -		dev_err(vadc->dev, "%d is not VADC\n", val);
> +		dev_err(dev, "%d is not VADC\n", val);
>  		return -ENODEV;
>  	}
>  
> @@ -919,7 +923,7 @@ static int vadc_check_revision(struct vadc_priv *vadc)
>  		return ret;
>  
>  	if (val < VADC_REVISION2_SUPPORTED_VADC) {
> -		dev_err(vadc->dev, "revision %d not supported\n", val);
> +		dev_err(dev, "revision %d not supported\n", val);
>  		return -ENODEV;
>  	}
>  
> @@ -950,7 +954,6 @@ static int vadc_probe(struct platform_device *pdev)
>  
>  	vadc = iio_priv(indio_dev);
>  	vadc->regmap = regmap;
> -	vadc->dev = dev;
>  	vadc->base = reg;
>  	vadc->are_ref_measured = false;
>  	init_completion(&vadc->complete);
> 

[toc] | [prev] | [next] | [standalone]


#1372200 — [PATCH 6/9] iio: accel: mxc4005: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-06 07:20 +0200
Subject[PATCH 6/9] iio: accel: mxc4005: use regmap to retrieve struct device
Message-ID<rkO2L-7uk-29@gated-at.bofh.it>
In reply to#1372194
Driver includes struct regmap and struct device in its global data.
Remove the struct device and use regmap API to retrieve device info.

Patch created using Coccinelle plus manual edits.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
---
 drivers/iio/accel/mxc4005.c | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/drivers/iio/accel/mxc4005.c b/drivers/iio/accel/mxc4005.c
index c23f47a..013d511 100644
--- a/drivers/iio/accel/mxc4005.c
+++ b/drivers/iio/accel/mxc4005.c
@@ -60,7 +60,6 @@ enum mxc4005_range {
 };
 
 struct mxc4005_data {
-	struct device *dev;
 	struct mutex mutex;
 	struct regmap *regmap;
 	struct iio_trigger *dready_trig;
@@ -140,12 +139,13 @@ static const struct regmap_config mxc4005_regmap_config = {
 
 static int mxc4005_read_xyz(struct mxc4005_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	ret = regmap_bulk_read(data->regmap, MXC4005_REG_XOUT_UPPER,
 			       (u8 *) data->buffer, sizeof(data->buffer));
 	if (ret < 0) {
-		dev_err(data->dev, "failed to read axes\n");
+		dev_err(dev, "failed to read axes\n");
 		return ret;
 	}
 
@@ -155,12 +155,13 @@ static int mxc4005_read_xyz(struct mxc4005_data *data)
 static int mxc4005_read_axis(struct mxc4005_data *data,
 			     unsigned int addr)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	__be16 reg;
 	int ret;
 
 	ret = regmap_bulk_read(data->regmap, addr, (u8 *) &reg, sizeof(reg));
 	if (ret < 0) {
-		dev_err(data->dev, "failed to read reg %02x\n", addr);
+		dev_err(dev, "failed to read reg %02x\n", addr);
 		return ret;
 	}
 
@@ -169,13 +170,14 @@ static int mxc4005_read_axis(struct mxc4005_data *data,
 
 static int mxc4005_read_scale(struct mxc4005_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	unsigned int reg;
 	int ret;
 	int i;
 
 	ret = regmap_read(data->regmap, MXC4005_REG_CONTROL, &reg);
 	if (ret < 0) {
-		dev_err(data->dev, "failed to read reg_control\n");
+		dev_err(dev, "failed to read reg_control\n");
 		return ret;
 	}
 
@@ -189,6 +191,7 @@ static int mxc4005_read_scale(struct mxc4005_data *data)
 
 static int mxc4005_set_scale(struct mxc4005_data *data, int val)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	unsigned int reg;
 	int i;
 	int ret;
@@ -201,8 +204,7 @@ static int mxc4005_set_scale(struct mxc4005_data *data, int val)
 						 MXC4005_REG_CONTROL_MASK_FSR,
 						 reg);
 			if (ret < 0)
-				dev_err(data->dev,
-					"failed to write reg_control\n");
+				dev_err(dev, "failed to write reg_control\n");
 			return ret;
 		}
 	}
@@ -321,13 +323,14 @@ err:
 
 static int mxc4005_clr_intr(struct mxc4005_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	/* clear interrupt */
 	ret = regmap_write(data->regmap, MXC4005_REG_INT_CLR1,
 			   MXC4005_REG_INT_CLR1_BIT_DRDYC);
 	if (ret < 0) {
-		dev_err(data->dev, "failed to write to reg_int_clr1\n");
+		dev_err(dev, "failed to write to reg_int_clr1\n");
 		return ret;
 	}
 
@@ -339,6 +342,7 @@ static int mxc4005_set_trigger_state(struct iio_trigger *trig,
 {
 	struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
 	struct mxc4005_data *data = iio_priv(indio_dev);
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	mutex_lock(&data->mutex);
@@ -352,7 +356,7 @@ static int mxc4005_set_trigger_state(struct iio_trigger *trig,
 
 	if (ret < 0) {
 		mutex_unlock(&data->mutex);
-		dev_err(data->dev, "failed to update reg_int_mask1");
+		dev_err(dev, "failed to update reg_int_mask1");
 		return ret;
 	}
 
@@ -381,16 +385,17 @@ static const struct iio_trigger_ops mxc4005_trigger_ops = {
 
 static int mxc4005_chip_init(struct mxc4005_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 	unsigned int reg;
 
 	ret = regmap_read(data->regmap, MXC4005_REG_DEVICE_ID, &reg);
 	if (ret < 0) {
-		dev_err(data->dev, "failed to read chip id\n");
+		dev_err(dev, "failed to read chip id\n");
 		return ret;
 	}
 
-	dev_dbg(data->dev, "MXC4005 chip id %02x\n", reg);
+	dev_dbg(dev, "MXC4005 chip id %02x\n", reg);
 
 	return 0;
 }
@@ -415,7 +420,6 @@ static int mxc4005_probe(struct i2c_client *client,
 
 	data = iio_priv(indio_dev);
 	i2c_set_clientdata(client, indio_dev);
-	data->dev = &client->dev;
 	data->regmap = regmap;
 
 	ret = mxc4005_chip_init(data);
-- 
2.1.4

[toc] | [prev] | [next] | [standalone]


#1372201 — [PATCH 4/9] iio: accel: bmc150: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-06 07:20 +0200
Subject[PATCH 4/9] iio: accel: bmc150: use regmap to retrieve struct device
Message-ID<rkO2L-7uk-33@gated-at.bofh.it>
In reply to#1372194
Driver includes struct regmap and struct device in its global data.
Remove the struct device and use regmap API to retrieve device info.

Patch created using Coccinelle plus manual edits.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
---
 drivers/iio/accel/bmc150-accel-core.c | 99 +++++++++++++++++++----------------
 1 file changed, 54 insertions(+), 45 deletions(-)

diff --git a/drivers/iio/accel/bmc150-accel-core.c b/drivers/iio/accel/bmc150-accel-core.c
index f3d096f..ad5310b 100644
--- a/drivers/iio/accel/bmc150-accel-core.c
+++ b/drivers/iio/accel/bmc150-accel-core.c
@@ -188,7 +188,6 @@ enum bmc150_accel_trigger_id {
 
 struct bmc150_accel_data {
 	struct regmap *regmap;
-	struct device *dev;
 	int irq;
 	struct bmc150_accel_interrupt interrupts[BMC150_ACCEL_INTERRUPTS];
 	atomic_t active_intr;
@@ -256,6 +255,7 @@ static int bmc150_accel_set_mode(struct bmc150_accel_data *data,
 				 enum bmc150_power_modes mode,
 				 int dur_us)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int i;
 	int ret;
 	u8 lpw_bits;
@@ -279,11 +279,11 @@ static int bmc150_accel_set_mode(struct bmc150_accel_data *data,
 	lpw_bits = mode << BMC150_ACCEL_PMU_MODE_SHIFT;
 	lpw_bits |= (dur_val << BMC150_ACCEL_PMU_BIT_SLEEP_DUR_SHIFT);
 
-	dev_dbg(data->dev, "Set Mode bits %x\n", lpw_bits);
+	dev_dbg(dev, "Set Mode bits %x\n", lpw_bits);
 
 	ret = regmap_write(data->regmap, BMC150_ACCEL_REG_PMU_LPW, lpw_bits);
 	if (ret < 0) {
-		dev_err(data->dev, "Error writing reg_pmu_lpw\n");
+		dev_err(dev, "Error writing reg_pmu_lpw\n");
 		return ret;
 	}
 
@@ -316,23 +316,24 @@ static int bmc150_accel_set_bw(struct bmc150_accel_data *data, int val,
 
 static int bmc150_accel_update_slope(struct bmc150_accel_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	ret = regmap_write(data->regmap, BMC150_ACCEL_REG_INT_6,
 					data->slope_thres);
 	if (ret < 0) {
-		dev_err(data->dev, "Error writing reg_int_6\n");
+		dev_err(dev, "Error writing reg_int_6\n");
 		return ret;
 	}
 
 	ret = regmap_update_bits(data->regmap, BMC150_ACCEL_REG_INT_5,
 				 BMC150_ACCEL_SLOPE_DUR_MASK, data->slope_dur);
 	if (ret < 0) {
-		dev_err(data->dev, "Error updating reg_int_5\n");
+		dev_err(dev, "Error updating reg_int_5\n");
 		return ret;
 	}
 
-	dev_dbg(data->dev, "%s: %x %x\n", __func__, data->slope_thres,
+	dev_dbg(dev, "%s: %x %x\n", __func__, data->slope_thres,
 		data->slope_dur);
 
 	return ret;
@@ -378,20 +379,21 @@ static int bmc150_accel_get_startup_times(struct bmc150_accel_data *data)
 
 static int bmc150_accel_set_power_state(struct bmc150_accel_data *data, bool on)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	if (on) {
-		ret = pm_runtime_get_sync(data->dev);
+		ret = pm_runtime_get_sync(dev);
 	} else {
-		pm_runtime_mark_last_busy(data->dev);
-		ret = pm_runtime_put_autosuspend(data->dev);
+		pm_runtime_mark_last_busy(dev);
+		ret = pm_runtime_put_autosuspend(dev);
 	}
 
 	if (ret < 0) {
-		dev_err(data->dev,
+		dev_err(dev,
 			"Failed: bmc150_accel_set_power_state for %d\n", on);
 		if (on)
-			pm_runtime_put_noidle(data->dev);
+			pm_runtime_put_noidle(dev);
 
 		return ret;
 	}
@@ -445,6 +447,7 @@ static void bmc150_accel_interrupts_setup(struct iio_dev *indio_dev,
 static int bmc150_accel_set_interrupt(struct bmc150_accel_data *data, int i,
 				      bool state)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	struct bmc150_accel_interrupt *intr = &data->interrupts[i];
 	const struct bmc150_accel_interrupt_info *info = intr->info;
 	int ret;
@@ -474,7 +477,7 @@ static int bmc150_accel_set_interrupt(struct bmc150_accel_data *data, int i,
 	ret = regmap_update_bits(data->regmap, info->map_reg, info->map_bitmask,
 				 (state ? info->map_bitmask : 0));
 	if (ret < 0) {
-		dev_err(data->dev, "Error updating reg_int_map\n");
+		dev_err(dev, "Error updating reg_int_map\n");
 		goto out_fix_power_state;
 	}
 
@@ -482,7 +485,7 @@ static int bmc150_accel_set_interrupt(struct bmc150_accel_data *data, int i,
 	ret = regmap_update_bits(data->regmap, info->en_reg, info->en_bitmask,
 				 (state ? info->en_bitmask : 0));
 	if (ret < 0) {
-		dev_err(data->dev, "Error updating reg_int_en\n");
+		dev_err(dev, "Error updating reg_int_en\n");
 		goto out_fix_power_state;
 	}
 
@@ -500,6 +503,7 @@ out_fix_power_state:
 
 static int bmc150_accel_set_scale(struct bmc150_accel_data *data, int val)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret, i;
 
 	for (i = 0; i < ARRAY_SIZE(data->chip_info->scale_table); ++i) {
@@ -508,8 +512,7 @@ static int bmc150_accel_set_scale(struct bmc150_accel_data *data, int val)
 				     BMC150_ACCEL_REG_PMU_RANGE,
 				     data->chip_info->scale_table[i].reg_range);
 			if (ret < 0) {
-				dev_err(data->dev,
-					"Error writing pmu_range\n");
+				dev_err(dev, "Error writing pmu_range\n");
 				return ret;
 			}
 
@@ -523,6 +526,7 @@ static int bmc150_accel_set_scale(struct bmc150_accel_data *data, int val)
 
 static int bmc150_accel_get_temp(struct bmc150_accel_data *data, int *val)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 	unsigned int value;
 
@@ -530,7 +534,7 @@ static int bmc150_accel_get_temp(struct bmc150_accel_data *data, int *val)
 
 	ret = regmap_read(data->regmap, BMC150_ACCEL_REG_TEMP, &value);
 	if (ret < 0) {
-		dev_err(data->dev, "Error reading reg_temp\n");
+		dev_err(dev, "Error reading reg_temp\n");
 		mutex_unlock(&data->mutex);
 		return ret;
 	}
@@ -545,6 +549,7 @@ static int bmc150_accel_get_axis(struct bmc150_accel_data *data,
 				 struct iio_chan_spec const *chan,
 				 int *val)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 	int axis = chan->scan_index;
 	unsigned int raw_val;
@@ -559,7 +564,7 @@ static int bmc150_accel_get_axis(struct bmc150_accel_data *data,
 	ret = regmap_bulk_read(data->regmap, BMC150_ACCEL_AXIS_TO_REG(axis),
 			       &raw_val, 2);
 	if (ret < 0) {
-		dev_err(data->dev, "Error reading axis %d\n", axis);
+		dev_err(dev, "Error reading axis %d\n", axis);
 		bmc150_accel_set_power_state(data, false);
 		mutex_unlock(&data->mutex);
 		return ret;
@@ -831,6 +836,7 @@ static int bmc150_accel_set_watermark(struct iio_dev *indio_dev, unsigned val)
 static int bmc150_accel_fifo_transfer(struct bmc150_accel_data *data,
 				      char *buffer, int samples)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int sample_length = 3 * 2;
 	int ret;
 	int total_length = samples * sample_length;
@@ -854,7 +860,8 @@ static int bmc150_accel_fifo_transfer(struct bmc150_accel_data *data,
 	}
 
 	if (ret)
-		dev_err(data->dev, "Error transferring data from fifo in single steps of %zu\n",
+		dev_err(dev,
+			"Error transferring data from fifo in single steps of %zu\n",
 			step);
 
 	return ret;
@@ -864,6 +871,7 @@ static int __bmc150_accel_fifo_flush(struct iio_dev *indio_dev,
 				     unsigned samples, bool irq)
 {
 	struct bmc150_accel_data *data = iio_priv(indio_dev);
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret, i;
 	u8 count;
 	u16 buffer[BMC150_ACCEL_FIFO_LENGTH * 3];
@@ -873,7 +881,7 @@ static int __bmc150_accel_fifo_flush(struct iio_dev *indio_dev,
 
 	ret = regmap_read(data->regmap, BMC150_ACCEL_REG_FIFO_STATUS, &val);
 	if (ret < 0) {
-		dev_err(data->dev, "Error reading reg_fifo_status\n");
+		dev_err(dev, "Error reading reg_fifo_status\n");
 		return ret;
 	}
 
@@ -1135,6 +1143,7 @@ static int bmc150_accel_trig_try_reen(struct iio_trigger *trig)
 {
 	struct bmc150_accel_trigger *t = iio_trigger_get_drvdata(trig);
 	struct bmc150_accel_data *data = t->data;
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	/* new data interrupts don't need ack */
@@ -1148,8 +1157,7 @@ static int bmc150_accel_trig_try_reen(struct iio_trigger *trig)
 			   BMC150_ACCEL_INT_MODE_LATCH_RESET);
 	mutex_unlock(&data->mutex);
 	if (ret < 0) {
-		dev_err(data->dev,
-			"Error writing reg_int_rst_latch\n");
+		dev_err(dev, "Error writing reg_int_rst_latch\n");
 		return ret;
 	}
 
@@ -1200,13 +1208,14 @@ static const struct iio_trigger_ops bmc150_accel_trigger_ops = {
 static int bmc150_accel_handle_roc_event(struct iio_dev *indio_dev)
 {
 	struct bmc150_accel_data *data = iio_priv(indio_dev);
+	struct device *dev = regmap_get_device(data->regmap);
 	int dir;
 	int ret;
 	unsigned int val;
 
 	ret = regmap_read(data->regmap, BMC150_ACCEL_REG_INT_STATUS_2, &val);
 	if (ret < 0) {
-		dev_err(data->dev, "Error reading reg_int_status_2\n");
+		dev_err(dev, "Error reading reg_int_status_2\n");
 		return ret;
 	}
 
@@ -1249,6 +1258,7 @@ static irqreturn_t bmc150_accel_irq_thread_handler(int irq, void *private)
 {
 	struct iio_dev *indio_dev = private;
 	struct bmc150_accel_data *data = iio_priv(indio_dev);
+	struct device *dev = regmap_get_device(data->regmap);
 	bool ack = false;
 	int ret;
 
@@ -1272,7 +1282,7 @@ static irqreturn_t bmc150_accel_irq_thread_handler(int irq, void *private)
 				   BMC150_ACCEL_INT_MODE_LATCH_INT |
 				   BMC150_ACCEL_INT_MODE_LATCH_RESET);
 		if (ret)
-			dev_err(data->dev, "Error writing reg_int_rst_latch\n");
+			dev_err(dev, "Error writing reg_int_rst_latch\n");
 
 		ret = IRQ_HANDLED;
 	} else {
@@ -1343,13 +1353,14 @@ static void bmc150_accel_unregister_triggers(struct bmc150_accel_data *data,
 static int bmc150_accel_triggers_setup(struct iio_dev *indio_dev,
 				       struct bmc150_accel_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int i, ret;
 
 	for (i = 0; i < BMC150_ACCEL_TRIGGERS; i++) {
 		struct bmc150_accel_trigger *t = &data->triggers[i];
 
-		t->indio_trig = devm_iio_trigger_alloc(data->dev,
-					       bmc150_accel_triggers[i].name,
+		t->indio_trig = devm_iio_trigger_alloc(dev,
+					bmc150_accel_triggers[i].name,
 						       indio_dev->name,
 						       indio_dev->id);
 		if (!t->indio_trig) {
@@ -1357,7 +1368,7 @@ static int bmc150_accel_triggers_setup(struct iio_dev *indio_dev,
 			break;
 		}
 
-		t->indio_trig->dev.parent = data->dev;
+		t->indio_trig->dev.parent = dev;
 		t->indio_trig->ops = &bmc150_accel_trigger_ops;
 		t->intr = bmc150_accel_triggers[i].intr;
 		t->data = data;
@@ -1381,12 +1392,13 @@ static int bmc150_accel_triggers_setup(struct iio_dev *indio_dev,
 
 static int bmc150_accel_fifo_set_mode(struct bmc150_accel_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	u8 reg = BMC150_ACCEL_REG_FIFO_CONFIG1;
 	int ret;
 
 	ret = regmap_write(data->regmap, reg, data->fifo_mode);
 	if (ret < 0) {
-		dev_err(data->dev, "Error writing reg_fifo_config1\n");
+		dev_err(dev, "Error writing reg_fifo_config1\n");
 		return ret;
 	}
 
@@ -1396,7 +1408,7 @@ static int bmc150_accel_fifo_set_mode(struct bmc150_accel_data *data)
 	ret = regmap_write(data->regmap, BMC150_ACCEL_REG_FIFO_CONFIG0,
 			   data->watermark);
 	if (ret < 0)
-		dev_err(data->dev, "Error writing reg_fifo_config0\n");
+		dev_err(dev, "Error writing reg_fifo_config0\n");
 
 	return ret;
 }
@@ -1480,17 +1492,17 @@ static const struct iio_buffer_setup_ops bmc150_accel_buffer_ops = {
 
 static int bmc150_accel_chip_init(struct bmc150_accel_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret, i;
 	unsigned int val;
 
 	ret = regmap_read(data->regmap, BMC150_ACCEL_REG_CHIP_ID, &val);
 	if (ret < 0) {
-		dev_err(data->dev,
-			"Error: Reading chip id\n");
+		dev_err(dev, "Error: Reading chip id\n");
 		return ret;
 	}
 
-	dev_dbg(data->dev, "Chip Id %x\n", val);
+	dev_dbg(dev, "Chip Id %x\n", val);
 	for (i = 0; i < ARRAY_SIZE(bmc150_accel_chip_info_tbl); i++) {
 		if (bmc150_accel_chip_info_tbl[i].chip_id == val) {
 			data->chip_info = &bmc150_accel_chip_info_tbl[i];
@@ -1499,7 +1511,7 @@ static int bmc150_accel_chip_init(struct bmc150_accel_data *data)
 	}
 
 	if (!data->chip_info) {
-		dev_err(data->dev, "Invalid chip %x\n", val);
+		dev_err(dev, "Invalid chip %x\n", val);
 		return -ENODEV;
 	}
 
@@ -1516,8 +1528,7 @@ static int bmc150_accel_chip_init(struct bmc150_accel_data *data)
 	ret = regmap_write(data->regmap, BMC150_ACCEL_REG_PMU_RANGE,
 			   BMC150_ACCEL_DEF_RANGE_4G);
 	if (ret < 0) {
-		dev_err(data->dev,
-					"Error writing reg_pmu_range\n");
+		dev_err(dev, "Error writing reg_pmu_range\n");
 		return ret;
 	}
 
@@ -1535,8 +1546,7 @@ static int bmc150_accel_chip_init(struct bmc150_accel_data *data)
 			   BMC150_ACCEL_INT_MODE_LATCH_INT |
 			   BMC150_ACCEL_INT_MODE_LATCH_RESET);
 	if (ret < 0) {
-		dev_err(data->dev,
-			"Error writing reg_int_rst_latch\n");
+		dev_err(dev, "Error writing reg_int_rst_latch\n");
 		return ret;
 	}
 
@@ -1556,7 +1566,6 @@ int bmc150_accel_core_probe(struct device *dev, struct regmap *regmap, int irq,
 
 	data = iio_priv(indio_dev);
 	dev_set_drvdata(dev, indio_dev);
-	data->dev = dev;
 	data->irq = irq;
 
 	data->regmap = regmap;
@@ -1580,13 +1589,13 @@ int bmc150_accel_core_probe(struct device *dev, struct regmap *regmap, int irq,
 					 bmc150_accel_trigger_handler,
 					 &bmc150_accel_buffer_ops);
 	if (ret < 0) {
-		dev_err(data->dev, "Failed: iio triggered buffer setup\n");
+		dev_err(dev, "Failed: iio triggered buffer setup\n");
 		return ret;
 	}
 
 	if (data->irq > 0) {
 		ret = devm_request_threaded_irq(
-						data->dev, data->irq,
+						dev, data->irq,
 						bmc150_accel_irq_handler,
 						bmc150_accel_irq_thread_handler,
 						IRQF_TRIGGER_RISING,
@@ -1604,7 +1613,7 @@ int bmc150_accel_core_probe(struct device *dev, struct regmap *regmap, int irq,
 		ret = regmap_write(data->regmap, BMC150_ACCEL_REG_INT_RST_LATCH,
 				   BMC150_ACCEL_INT_MODE_LATCH_RESET);
 		if (ret < 0) {
-			dev_err(data->dev, "Error writing reg_int_rst_latch\n");
+			dev_err(dev, "Error writing reg_int_rst_latch\n");
 			goto err_buffer_cleanup;
 		}
 
@@ -1653,9 +1662,9 @@ int bmc150_accel_core_remove(struct device *dev)
 
 	iio_device_unregister(indio_dev);
 
-	pm_runtime_disable(data->dev);
-	pm_runtime_set_suspended(data->dev);
-	pm_runtime_put_noidle(data->dev);
+	pm_runtime_disable(dev);
+	pm_runtime_set_suspended(dev);
+	pm_runtime_put_noidle(dev);
 
 	bmc150_accel_unregister_triggers(data, BMC150_ACCEL_TRIGGERS - 1);
 
@@ -1704,7 +1713,7 @@ static int bmc150_accel_runtime_suspend(struct device *dev)
 	struct bmc150_accel_data *data = iio_priv(indio_dev);
 	int ret;
 
-	dev_dbg(data->dev,  __func__);
+	dev_dbg(dev,  __func__);
 	ret = bmc150_accel_set_mode(data, BMC150_ACCEL_SLEEP_MODE_SUSPEND, 0);
 	if (ret < 0)
 		return -EAGAIN;
@@ -1719,7 +1728,7 @@ static int bmc150_accel_runtime_resume(struct device *dev)
 	int ret;
 	int sleep_val;
 
-	dev_dbg(data->dev,  __func__);
+	dev_dbg(dev,  __func__);
 
 	ret = bmc150_accel_set_mode(data, BMC150_ACCEL_SLEEP_MODE_NORMAL, 0);
 	if (ret < 0)
-- 
2.1.4

[toc] | [prev] | [next] | [standalone]


#1372202 — [PATCH 8/9] iio: health: afe4404: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-06 07:30 +0200
Subject[PATCH 8/9] iio: health: afe4404: use regmap to retrieve struct device
Message-ID<rkOcp-7z8-1@gated-at.bofh.it>
In reply to#1372194
Driver includes struct regmap and struct device in its global data.
Remove the struct device and use regmap API to retrieve device info.

Patch created using Coccinelle plus manual edits.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
---
 drivers/iio/health/afe4404.c | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/drivers/iio/health/afe4404.c b/drivers/iio/health/afe4404.c
index 5096a46..9cd8590 100644
--- a/drivers/iio/health/afe4404.c
+++ b/drivers/iio/health/afe4404.c
@@ -107,14 +107,12 @@
 
 /**
  * struct afe4404_data
- * @dev - Device structure
  * @regmap - Register map of the device
  * @regulator - Pointer to the regulator for the IC
  * @trig - IIO trigger for this device
  * @irq - ADC_RDY line interrupt number
  */
 struct afe4404_data {
-	struct device *dev;
 	struct regmap *regmap;
 	struct regulator *regulator;
 	struct iio_trigger *trig;
@@ -534,54 +532,54 @@ static int afe4404_probe(struct i2c_client *client,
 	afe = iio_priv(indio_dev);
 	i2c_set_clientdata(client, indio_dev);
 
-	afe->dev = &client->dev;
 	afe->irq = client->irq;
 
 	afe->regmap = devm_regmap_init_i2c(client, &afe4404_regmap_config);
 	if (IS_ERR(afe->regmap)) {
-		dev_err(afe->dev, "Unable to allocate register map\n");
+		dev_err(&client->dev, "Unable to allocate register map\n");
 		return PTR_ERR(afe->regmap);
 	}
 
-	afe->regulator = devm_regulator_get(afe->dev, "tx_sup");
+	afe->regulator = devm_regulator_get(&client->dev, "tx_sup");
 	if (IS_ERR(afe->regulator)) {
-		dev_err(afe->dev, "Unable to get regulator\n");
+		dev_err(&client->dev, "Unable to get regulator\n");
 		return PTR_ERR(afe->regulator);
 	}
 	ret = regulator_enable(afe->regulator);
 	if (ret) {
-		dev_err(afe->dev, "Unable to enable regulator\n");
+		dev_err(&client->dev, "Unable to enable regulator\n");
 		return ret;
 	}
 
 	ret = regmap_write(afe->regmap, AFE440X_CONTROL0,
 			   AFE440X_CONTROL0_SW_RESET);
 	if (ret) {
-		dev_err(afe->dev, "Unable to reset device\n");
+		dev_err(&client->dev, "Unable to reset device\n");
 		goto disable_reg;
 	}
 
 	ret = regmap_multi_reg_write(afe->regmap, afe4404_reg_sequences,
 				     ARRAY_SIZE(afe4404_reg_sequences));
 	if (ret) {
-		dev_err(afe->dev, "Unable to set register defaults\n");
+		dev_err(&client->dev, "Unable to set register defaults\n");
 		goto disable_reg;
 	}
 
 	indio_dev->modes = INDIO_DIRECT_MODE;
-	indio_dev->dev.parent = afe->dev;
+	indio_dev->dev.parent = &client->dev;
 	indio_dev->channels = afe4404_channels;
 	indio_dev->num_channels = ARRAY_SIZE(afe4404_channels);
 	indio_dev->name = AFE4404_DRIVER_NAME;
 	indio_dev->info = &afe4404_iio_info;
 
 	if (afe->irq > 0) {
-		afe->trig = devm_iio_trigger_alloc(afe->dev,
+		afe->trig = devm_iio_trigger_alloc(&client->dev,
 						   "%s-dev%d",
 						   indio_dev->name,
 						   indio_dev->id);
 		if (!afe->trig) {
-			dev_err(afe->dev, "Unable to allocate IIO trigger\n");
+			dev_err(&client->dev,
+				"Unable to allocate IIO trigger\n");
 			ret = -ENOMEM;
 			goto disable_reg;
 		}
@@ -589,21 +587,22 @@ static int afe4404_probe(struct i2c_client *client,
 		iio_trigger_set_drvdata(afe->trig, indio_dev);
 
 		afe->trig->ops = &afe4404_trigger_ops;
-		afe->trig->dev.parent = afe->dev;
+		afe->trig->dev.parent = &client->dev;
 
 		ret = iio_trigger_register(afe->trig);
 		if (ret) {
-			dev_err(afe->dev, "Unable to register IIO trigger\n");
+			dev_err(&client->dev,
+				"Unable to register IIO trigger\n");
 			goto disable_reg;
 		}
 
-		ret = devm_request_threaded_irq(afe->dev, afe->irq,
+		ret = devm_request_threaded_irq(&client->dev, afe->irq,
 						iio_trigger_generic_data_rdy_poll,
 						NULL, IRQF_ONESHOT,
 						AFE4404_DRIVER_NAME,
 						afe->trig);
 		if (ret) {
-			dev_err(afe->dev, "Unable to request IRQ\n");
+			dev_err(&client->dev, "Unable to request IRQ\n");
 			goto disable_reg;
 		}
 	}
@@ -611,13 +610,13 @@ static int afe4404_probe(struct i2c_client *client,
 	ret = iio_triggered_buffer_setup(indio_dev, &iio_pollfunc_store_time,
 					 afe4404_trigger_handler, NULL);
 	if (ret) {
-		dev_err(afe->dev, "Unable to setup buffer\n");
+		dev_err(&client->dev, "Unable to setup buffer\n");
 		goto unregister_trigger;
 	}
 
 	ret = iio_device_register(indio_dev);
 	if (ret) {
-		dev_err(afe->dev, "Unable to register IIO device\n");
+		dev_err(&client->dev, "Unable to register IIO device\n");
 		goto unregister_triggered_buffer;
 	}
 
@@ -638,6 +637,7 @@ static int afe4404_remove(struct i2c_client *client)
 {
 	struct iio_dev *indio_dev = i2c_get_clientdata(client);
 	struct afe4404_data *afe = iio_priv(indio_dev);
+	struct device *dev = regmap_get_device(afe->regmap);
 	int ret;
 
 	iio_device_unregister(indio_dev);
@@ -649,7 +649,7 @@ static int afe4404_remove(struct i2c_client *client)
 
 	ret = regulator_disable(afe->regulator);
 	if (ret) {
-		dev_err(afe->dev, "Unable to disable regulator\n");
+		dev_err(dev, "Unable to disable regulator\n");
 		return ret;
 	}
 
-- 
2.1.4

[toc] | [prev] | [next] | [standalone]


#1372204 — [PATCH 7/9] iio: health: afe4403: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-06 07:30 +0200
Subject[PATCH 7/9] iio: health: afe4403: use regmap to retrieve struct device
Message-ID<rkOcq-7z8-9@gated-at.bofh.it>
In reply to#1372194
Driver includes struct regmap and struct device in its global data.
Remove the struct device and use regmap API to retrieve device info.

Patch created using Coccinelle plus manual edits.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
---
 drivers/iio/health/afe4403.c | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/drivers/iio/health/afe4403.c b/drivers/iio/health/afe4403.c
index 88e43f8..71b8f70 100644
--- a/drivers/iio/health/afe4403.c
+++ b/drivers/iio/health/afe4403.c
@@ -104,7 +104,6 @@
 
 /**
  * struct afe4403_data
- * @dev - Device structure
  * @spi - SPI device handle
  * @regmap - Register map of the device
  * @regulator - Pointer to the regulator for the IC
@@ -112,7 +111,6 @@
  * @irq - ADC_RDY line interrupt number
  */
 struct afe4403_data {
-	struct device *dev;
 	struct spi_device *spi;
 	struct regmap *regmap;
 	struct regulator *regulator;
@@ -562,55 +560,54 @@ static int afe4403_probe(struct spi_device *spi)
 	afe = iio_priv(indio_dev);
 	spi_set_drvdata(spi, indio_dev);
 
-	afe->dev = &spi->dev;
 	afe->spi = spi;
 	afe->irq = spi->irq;
 
 	afe->regmap = devm_regmap_init_spi(spi, &afe4403_regmap_config);
 	if (IS_ERR(afe->regmap)) {
-		dev_err(afe->dev, "Unable to allocate register map\n");
+		dev_err(&spi->dev, "Unable to allocate register map\n");
 		return PTR_ERR(afe->regmap);
 	}
 
-	afe->regulator = devm_regulator_get(afe->dev, "tx_sup");
+	afe->regulator = devm_regulator_get(&spi->dev, "tx_sup");
 	if (IS_ERR(afe->regulator)) {
-		dev_err(afe->dev, "Unable to get regulator\n");
+		dev_err(&spi->dev, "Unable to get regulator\n");
 		return PTR_ERR(afe->regulator);
 	}
 	ret = regulator_enable(afe->regulator);
 	if (ret) {
-		dev_err(afe->dev, "Unable to enable regulator\n");
+		dev_err(&spi->dev, "Unable to enable regulator\n");
 		return ret;
 	}
 
 	ret = regmap_write(afe->regmap, AFE440X_CONTROL0,
 			   AFE440X_CONTROL0_SW_RESET);
 	if (ret) {
-		dev_err(afe->dev, "Unable to reset device\n");
+		dev_err(&spi->dev, "Unable to reset device\n");
 		goto err_disable_reg;
 	}
 
 	ret = regmap_multi_reg_write(afe->regmap, afe4403_reg_sequences,
 				     ARRAY_SIZE(afe4403_reg_sequences));
 	if (ret) {
-		dev_err(afe->dev, "Unable to set register defaults\n");
+		dev_err(&spi->dev, "Unable to set register defaults\n");
 		goto err_disable_reg;
 	}
 
 	indio_dev->modes = INDIO_DIRECT_MODE;
-	indio_dev->dev.parent = afe->dev;
+	indio_dev->dev.parent = &spi->dev;
 	indio_dev->channels = afe4403_channels;
 	indio_dev->num_channels = ARRAY_SIZE(afe4403_channels);
 	indio_dev->name = AFE4403_DRIVER_NAME;
 	indio_dev->info = &afe4403_iio_info;
 
 	if (afe->irq > 0) {
-		afe->trig = devm_iio_trigger_alloc(afe->dev,
+		afe->trig = devm_iio_trigger_alloc(&spi->dev,
 						   "%s-dev%d",
 						   indio_dev->name,
 						   indio_dev->id);
 		if (!afe->trig) {
-			dev_err(afe->dev, "Unable to allocate IIO trigger\n");
+			dev_err(&spi->dev, "Unable to allocate IIO trigger\n");
 			ret = -ENOMEM;
 			goto err_disable_reg;
 		}
@@ -618,21 +615,21 @@ static int afe4403_probe(struct spi_device *spi)
 		iio_trigger_set_drvdata(afe->trig, indio_dev);
 
 		afe->trig->ops = &afe4403_trigger_ops;
-		afe->trig->dev.parent = afe->dev;
+		afe->trig->dev.parent = &spi->dev;
 
 		ret = iio_trigger_register(afe->trig);
 		if (ret) {
-			dev_err(afe->dev, "Unable to register IIO trigger\n");
+			dev_err(&spi->dev, "Unable to register IIO trigger\n");
 			goto err_disable_reg;
 		}
 
-		ret = devm_request_threaded_irq(afe->dev, afe->irq,
+		ret = devm_request_threaded_irq(&spi->dev, afe->irq,
 						iio_trigger_generic_data_rdy_poll,
 						NULL, IRQF_ONESHOT,
 						AFE4403_DRIVER_NAME,
 						afe->trig);
 		if (ret) {
-			dev_err(afe->dev, "Unable to request IRQ\n");
+			dev_err(&spi->dev, "Unable to request IRQ\n");
 			goto err_trig;
 		}
 	}
@@ -640,13 +637,13 @@ static int afe4403_probe(struct spi_device *spi)
 	ret = iio_triggered_buffer_setup(indio_dev, &iio_pollfunc_store_time,
 					 afe4403_trigger_handler, NULL);
 	if (ret) {
-		dev_err(afe->dev, "Unable to setup buffer\n");
+		dev_err(&spi->dev, "Unable to setup buffer\n");
 		goto err_trig;
 	}
 
 	ret = iio_device_register(indio_dev);
 	if (ret) {
-		dev_err(afe->dev, "Unable to register IIO device\n");
+		dev_err(&spi->dev, "Unable to register IIO device\n");
 		goto err_buff;
 	}
 
@@ -667,6 +664,7 @@ static int afe4403_remove(struct spi_device *spi)
 {
 	struct iio_dev *indio_dev = spi_get_drvdata(spi);
 	struct afe4403_data *afe = iio_priv(indio_dev);
+	struct device *dev = regmap_get_device(afe->regmap);
 	int ret;
 
 	iio_device_unregister(indio_dev);
@@ -678,7 +676,7 @@ static int afe4403_remove(struct spi_device *spi)
 
 	ret = regulator_disable(afe->regulator);
 	if (ret) {
-		dev_err(afe->dev, "Unable to disable regulator\n");
+		dev_err(dev, "Unable to disable regulator\n");
 		return ret;
 	}
 
-- 
2.1.4

[toc] | [prev] | [next] | [standalone]


#1372206 — [PATCH 9/9] iio: gyro: bmg160_core: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-06 07:30 +0200
Subject[PATCH 9/9] iio: gyro: bmg160_core: use regmap to retrieve struct device
Message-ID<rkOcr-7z8-17@gated-at.bofh.it>
In reply to#1372194
Driver includes struct regmap and struct device in its global data.
Remove the struct device and use regmap API to retrieve device info.

Patch created using Coccinelle plus manual edits.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
---
 drivers/iio/gyro/bmg160_core.c | 86 +++++++++++++++++++++---------------------
 1 file changed, 44 insertions(+), 42 deletions(-)

diff --git a/drivers/iio/gyro/bmg160_core.c b/drivers/iio/gyro/bmg160_core.c
index 2493bb1..b2b1071 100644
--- a/drivers/iio/gyro/bmg160_core.c
+++ b/drivers/iio/gyro/bmg160_core.c
@@ -95,7 +95,6 @@
 #define BMG160_AUTO_SUSPEND_DELAY_MS	2000
 
 struct bmg160_data {
-	struct device *dev;
 	struct regmap *regmap;
 	struct iio_trigger *dready_trig;
 	struct iio_trigger *motion_trig;
@@ -137,11 +136,12 @@ static const struct {
 
 static int bmg160_set_mode(struct bmg160_data *data, u8 mode)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	ret = regmap_write(data->regmap, BMG160_REG_PMU_LPW, mode);
 	if (ret < 0) {
-		dev_err(data->dev, "Error writing reg_pmu_lpw\n");
+		dev_err(dev, "Error writing reg_pmu_lpw\n");
 		return ret;
 	}
 
@@ -162,6 +162,7 @@ static int bmg160_convert_freq_to_bit(int val)
 
 static int bmg160_set_bw(struct bmg160_data *data, int val)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 	int bw_bits;
 
@@ -171,7 +172,7 @@ static int bmg160_set_bw(struct bmg160_data *data, int val)
 
 	ret = regmap_write(data->regmap, BMG160_REG_PMU_BW, bw_bits);
 	if (ret < 0) {
-		dev_err(data->dev, "Error writing reg_pmu_bw\n");
+		dev_err(dev, "Error writing reg_pmu_bw\n");
 		return ret;
 	}
 
@@ -182,18 +183,19 @@ static int bmg160_set_bw(struct bmg160_data *data, int val)
 
 static int bmg160_chip_init(struct bmg160_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 	unsigned int val;
 
 	ret = regmap_read(data->regmap, BMG160_REG_CHIP_ID, &val);
 	if (ret < 0) {
-		dev_err(data->dev, "Error reading reg_chip_id\n");
+		dev_err(dev, "Error reading reg_chip_id\n");
 		return ret;
 	}
 
-	dev_dbg(data->dev, "Chip Id %x\n", val);
+	dev_dbg(dev, "Chip Id %x\n", val);
 	if (val != BMG160_CHIP_ID_VAL) {
-		dev_err(data->dev, "invalid chip %x\n", val);
+		dev_err(dev, "invalid chip %x\n", val);
 		return -ENODEV;
 	}
 
@@ -212,14 +214,14 @@ static int bmg160_chip_init(struct bmg160_data *data)
 	/* Set Default Range */
 	ret = regmap_write(data->regmap, BMG160_REG_RANGE, BMG160_RANGE_500DPS);
 	if (ret < 0) {
-		dev_err(data->dev, "Error writing reg_range\n");
+		dev_err(dev, "Error writing reg_range\n");
 		return ret;
 	}
 	data->dps_range = BMG160_RANGE_500DPS;
 
 	ret = regmap_read(data->regmap, BMG160_REG_SLOPE_THRES, &val);
 	if (ret < 0) {
-		dev_err(data->dev, "Error reading reg_slope_thres\n");
+		dev_err(dev, "Error reading reg_slope_thres\n");
 		return ret;
 	}
 	data->slope_thres = val;
@@ -228,7 +230,7 @@ static int bmg160_chip_init(struct bmg160_data *data)
 	ret = regmap_update_bits(data->regmap, BMG160_REG_INT_EN_1,
 				 BMG160_INT1_BIT_OD, 0);
 	if (ret < 0) {
-		dev_err(data->dev, "Error updating bits in reg_int_en_1\n");
+		dev_err(dev, "Error updating bits in reg_int_en_1\n");
 		return ret;
 	}
 
@@ -236,7 +238,7 @@ static int bmg160_chip_init(struct bmg160_data *data)
 			   BMG160_INT_MODE_LATCH_INT |
 			   BMG160_INT_MODE_LATCH_RESET);
 	if (ret < 0) {
-		dev_err(data->dev,
+		dev_err(dev,
 			"Error writing reg_motion_intr\n");
 		return ret;
 	}
@@ -247,20 +249,21 @@ static int bmg160_chip_init(struct bmg160_data *data)
 static int bmg160_set_power_state(struct bmg160_data *data, bool on)
 {
 #ifdef CONFIG_PM
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	if (on)
-		ret = pm_runtime_get_sync(data->dev);
+		ret = pm_runtime_get_sync(dev);
 	else {
-		pm_runtime_mark_last_busy(data->dev);
-		ret = pm_runtime_put_autosuspend(data->dev);
+		pm_runtime_mark_last_busy(dev);
+		ret = pm_runtime_put_autosuspend(dev);
 	}
 
 	if (ret < 0) {
-		dev_err(data->dev,
-			"Failed: bmg160_set_power_state for %d\n", on);
+		dev_err(dev, "Failed: bmg160_set_power_state for %d\n", on);
+
 		if (on)
-			pm_runtime_put_noidle(data->dev);
+			pm_runtime_put_noidle(dev);
 
 		return ret;
 	}
@@ -272,6 +275,7 @@ static int bmg160_set_power_state(struct bmg160_data *data, bool on)
 static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
 					     bool status)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	/* Enable/Disable INT_MAP0 mapping */
@@ -279,7 +283,7 @@ static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
 				 BMG160_INT_MAP_0_BIT_ANY,
 				 (status ? BMG160_INT_MAP_0_BIT_ANY : 0));
 	if (ret < 0) {
-		dev_err(data->dev, "Error updating bits reg_int_map0\n");
+		dev_err(dev, "Error updating bits reg_int_map0\n");
 		return ret;
 	}
 
@@ -289,8 +293,7 @@ static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
 		ret = regmap_write(data->regmap, BMG160_REG_SLOPE_THRES,
 				   data->slope_thres);
 		if (ret < 0) {
-			dev_err(data->dev,
-				"Error writing reg_slope_thres\n");
+			dev_err(dev, "Error writing reg_slope_thres\n");
 			return ret;
 		}
 
@@ -298,8 +301,7 @@ static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
 				   BMG160_INT_MOTION_X | BMG160_INT_MOTION_Y |
 				   BMG160_INT_MOTION_Z);
 		if (ret < 0) {
-			dev_err(data->dev,
-				"Error writing reg_motion_intr\n");
+			dev_err(dev, "Error writing reg_motion_intr\n");
 			return ret;
 		}
 
@@ -314,8 +316,7 @@ static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
 					   BMG160_INT_MODE_LATCH_INT |
 					   BMG160_INT_MODE_LATCH_RESET);
 			if (ret < 0) {
-				dev_err(data->dev,
-					"Error writing reg_rst_latch\n");
+				dev_err(dev, "Error writing reg_rst_latch\n");
 				return ret;
 			}
 		}
@@ -328,7 +329,7 @@ static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
 	}
 
 	if (ret < 0) {
-		dev_err(data->dev, "Error writing reg_int_en0\n");
+		dev_err(dev, "Error writing reg_int_en0\n");
 		return ret;
 	}
 
@@ -338,6 +339,7 @@ static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
 static int bmg160_setup_new_data_interrupt(struct bmg160_data *data,
 					   bool status)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	/* Enable/Disable INT_MAP1 mapping */
@@ -345,7 +347,7 @@ static int bmg160_setup_new_data_interrupt(struct bmg160_data *data,
 				 BMG160_INT_MAP_1_BIT_NEW_DATA,
 				 (status ? BMG160_INT_MAP_1_BIT_NEW_DATA : 0));
 	if (ret < 0) {
-		dev_err(data->dev, "Error updating bits in reg_int_map1\n");
+		dev_err(dev, "Error updating bits in reg_int_map1\n");
 		return ret;
 	}
 
@@ -354,9 +356,8 @@ static int bmg160_setup_new_data_interrupt(struct bmg160_data *data,
 				   BMG160_INT_MODE_NON_LATCH_INT |
 				   BMG160_INT_MODE_LATCH_RESET);
 		if (ret < 0) {
-			dev_err(data->dev,
-				"Error writing reg_rst_latch\n");
-				return ret;
+			dev_err(dev, "Error writing reg_rst_latch\n");
+			return ret;
 		}
 
 		ret = regmap_write(data->regmap, BMG160_REG_INT_EN_0,
@@ -368,16 +369,15 @@ static int bmg160_setup_new_data_interrupt(struct bmg160_data *data,
 				   BMG160_INT_MODE_LATCH_INT |
 				   BMG160_INT_MODE_LATCH_RESET);
 		if (ret < 0) {
-			dev_err(data->dev,
-				"Error writing reg_rst_latch\n");
-				return ret;
+			dev_err(dev, "Error writing reg_rst_latch\n");
+			return ret;
 		}
 
 		ret = regmap_write(data->regmap, BMG160_REG_INT_EN_0, 0);
 	}
 
 	if (ret < 0) {
-		dev_err(data->dev, "Error writing reg_int_en0\n");
+		dev_err(dev, "Error writing reg_int_en0\n");
 		return ret;
 	}
 
@@ -400,6 +400,7 @@ static int bmg160_get_bw(struct bmg160_data *data, int *val)
 
 static int bmg160_set_scale(struct bmg160_data *data, int val)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret, i;
 
 	for (i = 0; i < ARRAY_SIZE(bmg160_scale_table); ++i) {
@@ -407,8 +408,7 @@ static int bmg160_set_scale(struct bmg160_data *data, int val)
 			ret = regmap_write(data->regmap, BMG160_REG_RANGE,
 					   bmg160_scale_table[i].dps_range);
 			if (ret < 0) {
-				dev_err(data->dev,
-					"Error writing reg_range\n");
+				dev_err(dev, "Error writing reg_range\n");
 				return ret;
 			}
 			data->dps_range = bmg160_scale_table[i].dps_range;
@@ -421,6 +421,7 @@ static int bmg160_set_scale(struct bmg160_data *data, int val)
 
 static int bmg160_get_temp(struct bmg160_data *data, int *val)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 	unsigned int raw_val;
 
@@ -433,7 +434,7 @@ static int bmg160_get_temp(struct bmg160_data *data, int *val)
 
 	ret = regmap_read(data->regmap, BMG160_REG_TEMP, &raw_val);
 	if (ret < 0) {
-		dev_err(data->dev, "Error reading reg_temp\n");
+		dev_err(dev, "Error reading reg_temp\n");
 		bmg160_set_power_state(data, false);
 		mutex_unlock(&data->mutex);
 		return ret;
@@ -450,6 +451,7 @@ static int bmg160_get_temp(struct bmg160_data *data, int *val)
 
 static int bmg160_get_axis(struct bmg160_data *data, int axis, int *val)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 	unsigned int raw_val;
 
@@ -463,7 +465,7 @@ static int bmg160_get_axis(struct bmg160_data *data, int axis, int *val)
 	ret = regmap_bulk_read(data->regmap, BMG160_AXIS_TO_REG(axis), &raw_val,
 			       2);
 	if (ret < 0) {
-		dev_err(data->dev, "Error reading axis %d\n", axis);
+		dev_err(dev, "Error reading axis %d\n", axis);
 		bmg160_set_power_state(data, false);
 		mutex_unlock(&data->mutex);
 		return ret;
@@ -793,6 +795,7 @@ static int bmg160_trig_try_reen(struct iio_trigger *trig)
 {
 	struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
 	struct bmg160_data *data = iio_priv(indio_dev);
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	/* new data interrupts don't need ack */
@@ -804,7 +807,7 @@ static int bmg160_trig_try_reen(struct iio_trigger *trig)
 			   BMG160_INT_MODE_LATCH_INT |
 			   BMG160_INT_MODE_LATCH_RESET);
 	if (ret < 0) {
-		dev_err(data->dev, "Error writing reg_rst_latch\n");
+		dev_err(dev, "Error writing reg_rst_latch\n");
 		return ret;
 	}
 
@@ -864,13 +867,14 @@ static irqreturn_t bmg160_event_handler(int irq, void *private)
 {
 	struct iio_dev *indio_dev = private;
 	struct bmg160_data *data = iio_priv(indio_dev);
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 	int dir;
 	unsigned int val;
 
 	ret = regmap_read(data->regmap, BMG160_REG_INT_STATUS_2, &val);
 	if (ret < 0) {
-		dev_err(data->dev, "Error reading reg_int_status2\n");
+		dev_err(dev, "Error reading reg_int_status2\n");
 		goto ack_intr_status;
 	}
 
@@ -907,8 +911,7 @@ ack_intr_status:
 				   BMG160_INT_MODE_LATCH_INT |
 				   BMG160_INT_MODE_LATCH_RESET);
 		if (ret < 0)
-			dev_err(data->dev,
-				"Error writing reg_rst_latch\n");
+			dev_err(dev, "Error writing reg_rst_latch\n");
 	}
 
 	return IRQ_HANDLED;
@@ -976,7 +979,6 @@ int bmg160_core_probe(struct device *dev, struct regmap *regmap, int irq,
 
 	data = iio_priv(indio_dev);
 	dev_set_drvdata(dev, indio_dev);
-	data->dev = dev;
 	data->irq = irq;
 	data->regmap = regmap;
 
@@ -1139,7 +1141,7 @@ static int bmg160_runtime_suspend(struct device *dev)
 
 	ret = bmg160_set_mode(data, BMG160_MODE_SUSPEND);
 	if (ret < 0) {
-		dev_err(data->dev, "set mode failed\n");
+		dev_err(dev, "set mode failed\n");
 		return -EAGAIN;
 	}
 
-- 
2.1.4

[toc] | [prev] | [next] | [standalone]


#1374953 — [PATCH v2 0/5] iio: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-10 21:10 +0200
Subject[PATCH v2 0/5] iio: use regmap to retrieve struct device
Message-ID<rmsUa-1i2-13@gated-at.bofh.it>
In reply to#1372194
These drivers include both struct regmap and struct device in their
global data.  Remove the redundant copy by deleting struct device 
from the drivers global data and using regmap API to retrieve when
needed.

This patchset removes all such redundancies in drivers/iio/.

Patches created using Coccinelle plus hand edits for whitespace.

Changes v1->v2:
	This set is updated following reviews teaching me that not
	all regmaps in global data will be of that device.  Discards
	and keepers are noted below.  No actual code changes just a
	remake of the patchset.

	Jonathan - I saw you want to let it simmer, just want to
	let it simmer cleaner ;)

  accel: mma7455
	Removing: Joachim ack'd, Jonathan took v1 

  adc: exynos_adc
	Discard: regmap is of PMU parent

  adc: qcom-spmi-iadc
  adc: qcom-spmi-vadc
	Discard: first line of _probe gets regmap from parent

  accel: bmc150
  gyro: bmg160
	Keep: regmap passed into _probe from i2c,spi_probe where
	it was initialized for this device

  accel: mxc4005
  health: afe4403
  health: afe4404
	Keep: regmap initialized in _probe for this device


Alison Schofield (5):
  iio: accel: bmc150: use regmap to retrieve struct device
  iio: accel: mxc4005: use regmap to retrieve struct device
  iio: health: afe4403: use regmap to retrieve struct device
  iio: health: afe4404: use regmap to retrieve struct device
  iio: gyro: bmg160: use regmap to retrieve struct device

 drivers/iio/accel/bmc150-accel-core.c | 99 +++++++++++++++++++----------------
 drivers/iio/accel/mxc4005.c           | 26 +++++----
 drivers/iio/gyro/bmg160_core.c        | 86 +++++++++++++++---------------
 drivers/iio/health/afe4403.c          | 36 ++++++-------
 drivers/iio/health/afe4404.c          | 38 +++++++-------
 5 files changed, 149 insertions(+), 136 deletions(-)

-- 
2.1.4

[toc] | [prev] | [next] | [standalone]


#1374955 — [PATCH v2 2/5] iio: accel: mxc4005: use regmap to retrieve struct device

FromAlison Schofield <amsfield22@gmail.com>
Date2016-04-10 21:10 +0200
Subject[PATCH v2 2/5] iio: accel: mxc4005: use regmap to retrieve struct device
Message-ID<rmsUc-1i2-83@gated-at.bofh.it>
In reply to#1374953
Driver includes struct regmap and struct device in its global data.
Remove the struct device and use regmap API to retrieve device info.

Patch created using Coccinelle plus manual edits.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
---
 drivers/iio/accel/mxc4005.c | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/drivers/iio/accel/mxc4005.c b/drivers/iio/accel/mxc4005.c
index c23f47a..013d511 100644
--- a/drivers/iio/accel/mxc4005.c
+++ b/drivers/iio/accel/mxc4005.c
@@ -60,7 +60,6 @@ enum mxc4005_range {
 };
 
 struct mxc4005_data {
-	struct device *dev;
 	struct mutex mutex;
 	struct regmap *regmap;
 	struct iio_trigger *dready_trig;
@@ -140,12 +139,13 @@ static const struct regmap_config mxc4005_regmap_config = {
 
 static int mxc4005_read_xyz(struct mxc4005_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	ret = regmap_bulk_read(data->regmap, MXC4005_REG_XOUT_UPPER,
 			       (u8 *) data->buffer, sizeof(data->buffer));
 	if (ret < 0) {
-		dev_err(data->dev, "failed to read axes\n");
+		dev_err(dev, "failed to read axes\n");
 		return ret;
 	}
 
@@ -155,12 +155,13 @@ static int mxc4005_read_xyz(struct mxc4005_data *data)
 static int mxc4005_read_axis(struct mxc4005_data *data,
 			     unsigned int addr)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	__be16 reg;
 	int ret;
 
 	ret = regmap_bulk_read(data->regmap, addr, (u8 *) &reg, sizeof(reg));
 	if (ret < 0) {
-		dev_err(data->dev, "failed to read reg %02x\n", addr);
+		dev_err(dev, "failed to read reg %02x\n", addr);
 		return ret;
 	}
 
@@ -169,13 +170,14 @@ static int mxc4005_read_axis(struct mxc4005_data *data,
 
 static int mxc4005_read_scale(struct mxc4005_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	unsigned int reg;
 	int ret;
 	int i;
 
 	ret = regmap_read(data->regmap, MXC4005_REG_CONTROL, &reg);
 	if (ret < 0) {
-		dev_err(data->dev, "failed to read reg_control\n");
+		dev_err(dev, "failed to read reg_control\n");
 		return ret;
 	}
 
@@ -189,6 +191,7 @@ static int mxc4005_read_scale(struct mxc4005_data *data)
 
 static int mxc4005_set_scale(struct mxc4005_data *data, int val)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	unsigned int reg;
 	int i;
 	int ret;
@@ -201,8 +204,7 @@ static int mxc4005_set_scale(struct mxc4005_data *data, int val)
 						 MXC4005_REG_CONTROL_MASK_FSR,
 						 reg);
 			if (ret < 0)
-				dev_err(data->dev,
-					"failed to write reg_control\n");
+				dev_err(dev, "failed to write reg_control\n");
 			return ret;
 		}
 	}
@@ -321,13 +323,14 @@ err:
 
 static int mxc4005_clr_intr(struct mxc4005_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	/* clear interrupt */
 	ret = regmap_write(data->regmap, MXC4005_REG_INT_CLR1,
 			   MXC4005_REG_INT_CLR1_BIT_DRDYC);
 	if (ret < 0) {
-		dev_err(data->dev, "failed to write to reg_int_clr1\n");
+		dev_err(dev, "failed to write to reg_int_clr1\n");
 		return ret;
 	}
 
@@ -339,6 +342,7 @@ static int mxc4005_set_trigger_state(struct iio_trigger *trig,
 {
 	struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
 	struct mxc4005_data *data = iio_priv(indio_dev);
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 
 	mutex_lock(&data->mutex);
@@ -352,7 +356,7 @@ static int mxc4005_set_trigger_state(struct iio_trigger *trig,
 
 	if (ret < 0) {
 		mutex_unlock(&data->mutex);
-		dev_err(data->dev, "failed to update reg_int_mask1");
+		dev_err(dev, "failed to update reg_int_mask1");
 		return ret;
 	}
 
@@ -381,16 +385,17 @@ static const struct iio_trigger_ops mxc4005_trigger_ops = {
 
 static int mxc4005_chip_init(struct mxc4005_data *data)
 {
+	struct device *dev = regmap_get_device(data->regmap);
 	int ret;
 	unsigned int reg;
 
 	ret = regmap_read(data->regmap, MXC4005_REG_DEVICE_ID, &reg);
 	if (ret < 0) {
-		dev_err(data->dev, "failed to read chip id\n");
+		dev_err(dev, "failed to read chip id\n");
 		return ret;
 	}
 
-	dev_dbg(data->dev, "MXC4005 chip id %02x\n", reg);
+	dev_dbg(dev, "MXC4005 chip id %02x\n", reg);
 
 	return 0;
 }
@@ -415,7 +420,6 @@ static int mxc4005_probe(struct i2c_client *client,
 
 	data = iio_priv(indio_dev);
 	i2c_set_clientdata(client, indio_dev);
-	data->dev = &client->dev;
 	data->regmap = regmap;
 
 	ret = mxc4005_chip_init(data);
-- 
2.1.4

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web