dt-binding: iio: add NPCM ADC reset support
Subsystems (3)
Tomer Maimon
maintainerPATCH 1/2 dt-binding: iio: add NPCM ADC reset support
Add NPCM ADC reset binding documentation.
--- Documentation/devicetree/bindings/iio/adc/nuvoton,npcm-adc.txt | 2 ++ 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/iio/adc/nuvoton,npcm-adc.txt +2 -0
@@ -6,6 +6,7 @@ Required properties: - compatible: "nuvoton,npcm750-adc" for the NPCM7XX BMC. - reg: specifies physical base address and size of the registers. - interrupts: Contain the ADC interrupt with flags for falling edge. +- resets : phandle to the reset control for this device. Optional properties: - clocks: phandle of ADC reference clock, in case the clock is not
@@ -21,4 +22,5 @@ adc: adc@f000c000 { reg = <0xf000c000 0x8>; interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clk NPCM7XX_CLK_ADC>; + resets = <&rstc NPCM7XX_RESET_IPSRST1 NPCM7XX_RESET_ADC>; };
Signature · 1 line
2.22.0
Tomer Maimon
maintainerPATCH 2/2 iio: adc: modify NPCM reset support
Modify NPCM ADC reset support from
direct register access to reset controller support.
--- drivers/iio/adc/npcm_adc.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-)
drivers/iio/adc/npcm_adc.c +9 -21
@@ -14,6 +14,7 @@#include <linux/regulator/consumer.h> #include <linux/spinlock.h> #include <linux/uaccess.h> +#include <linux/reset.h> struct npcm_adc {bool int_status;
@@ -23,13 +24,9 @@ struct npcm_adc {struct clk *adc_clk;wait_queue_head_t wq;struct regulator *vref; -struct regmap *rst_regmap; +struct reset_control *reset; }; -/* NPCM7xx reset module */ -#define NPCM7XX_IPSRST1_OFFSET 0x020 -#define NPCM7XX_IPSRST1_ADC_RST BIT(27) -/* ADC registers */ #define NPCM_ADCCON 0x00#define NPCM_ADCDATA 0x04
@@ -106,13 +103,11 @@ static int npcm_adc_read(struct npcm_adc *info, int *val, u8 channel) msecs_to_jiffies(10));if (ret ==0 ) { regtemp =ioread32 (info->regs +NPCM_ADCCON ); -if ((regtemp &NPCM_ADCCON_ADC_CONV ) && info->rst_regmap) { +if (regtemp &NPCM_ADCCON_ADC_CONV ) {/* if conversion failed - reset ADC module */ -regmap_write (info->rst_regmap,NPCM7XX_IPSRST1_OFFSET , -NPCM7XX_IPSRST1_ADC_RST ); +reset_control_assert (info->reset);msleep (100 ); -regmap_write (info->rst_regmap,NPCM7XX_IPSRST1_OFFSET , -0x0 ); +reset_control_deassert (info->reset);msleep (100 );/* Enable ADC and start conversion module */
@@ -186,7 +181,6 @@ static int npcm_adc_probe(struct platform_device *pdev)struct npcm_adc *info;struct iio_dev *indio_dev;struct device *dev = &pdev->dev; -struct device_node *np = pdev->dev.of_node; indio_dev =devm_iio_device_alloc (&pdev->dev,sizeof (*info));if (!indio_dev)
@@ -199,6 +193,10 @@ static int npcm_adc_probe(struct platform_device *pdev)if (IS_ERR (info->regs))return PTR_ERR (info->regs); + info->reset =devm_reset_control_get (&pdev->dev,NULL ); +if (IS_ERR (info->reset)) +return PTR_ERR (info->reset); + info->adc_clk =devm_clk_get (&pdev->dev,NULL );if (IS_ERR (info->adc_clk)) {dev_warn (&pdev->dev,"ADC clock failed: can't read clk\n" );
@@ -211,16 +209,6 @@ static int npcm_adc_probe(struct platform_device *pdev) div = div >>NPCM_ADCCON_DIV_SHIFT ; info->adc_sample_hz =clk_get_rate (info->adc_clk) / ((div +1 ) *2 ); -if (of_device_is_compatible (np,"nuvoton,npcm750-adc" )) { - info->rst_regmap =syscon_regmap_lookup_by_compatible - ("nuvoton,npcm750-rst" ); -if (IS_ERR (info->rst_regmap)) { -dev_err (&pdev->dev,"Failed to find nuvoton,npcm750-rst\n" ); - ret =PTR_ERR (info->rst_regmap); - goto err_disable_clk; - } - } - irq =platform_get_irq (pdev,0 );if (irq <=0 ) { ret = -EINVAL ;
Signature · 1 line
2.22.0
Jonathan Cameron
maintainerRe: [PATCH v1 2/2] iio: adc: modify NPCM reset support
Quoted 4 lines · On Sun, 19 Jan 2020 13:00:32 +0200 Tomer Maimon <[email protected]> wrote:
Modify NPCM ADC reset support from
direct register access to reset controller support.Signed-off-by Tomer Maimon <[email protected]>
Hmm. This presumably breaks all old DT.
If that's not a problem please say why.
Jonathan
Quoted 84 lines
--- drivers/iio/adc/npcm_adc.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-)drivers/iio/adc/npcm_adc.c +9
-21@@ -14,6 +14,7 @@#include <linux/regulator/consumer.h> #include <linux/spinlock.h> #include <linux/uaccess.h> +#include <linux/reset.h> struct npcm_adc {bool int_status;@@ -23,13 +24,9 @@ struct npcm_adc {struct clk *adc_clk;wait_queue_head_t wq;struct regulator *vref; -struct regmap *rst_regmap; +struct reset_control *reset; }; -/* NPCM7xx reset module */ -#define NPCM7XX_IPSRST1_OFFSET 0x020 -#define NPCM7XX_IPSRST1_ADC_RST BIT(27) -/* ADC registers */ #define NPCM_ADCCON 0x00#define NPCM_ADCDATA 0x04@@ -106,13 +103,11 @@ static int npcm_adc_read(struct npcm_adc *info, int *val, u8 channel) msecs_to_jiffies(10));if (ret ==0 ) { regtemp =ioread32 (info->regs +NPCM_ADCCON ); -if ((regtemp &NPCM_ADCCON_ADC_CONV ) && info->rst_regmap) { +if (regtemp &NPCM_ADCCON_ADC_CONV ) {/* if conversion failed - reset ADC module */ -regmap_write (info->rst_regmap,NPCM7XX_IPSRST1_OFFSET , -NPCM7XX_IPSRST1_ADC_RST ); +reset_control_assert (info->reset);msleep (100 ); -regmap_write (info->rst_regmap,NPCM7XX_IPSRST1_OFFSET , -0x0 ); +reset_control_deassert (info->reset);msleep (100 );/* Enable ADC and start conversion module */ @@ -186,7 +181,6 @@ static int npcm_adc_probe(struct platform_device *pdev)struct npcm_adc *info;struct iio_dev *indio_dev;struct device *dev = &pdev->dev; -struct device_node *np = pdev->dev.of_node; indio_dev =devm_iio_device_alloc (&pdev->dev,sizeof (*info));if (!indio_dev)@@ -199,6 +193,10 @@ static int npcm_adc_probe(struct platform_device *pdev)if (IS_ERR (info->regs))return PTR_ERR (info->regs); + info->reset =devm_reset_control_get (&pdev->dev,NULL ); +if (IS_ERR (info->reset)) +return PTR_ERR (info->reset); + info->adc_clk =devm_clk_get (&pdev->dev,NULL );if (IS_ERR (info->adc_clk)) {dev_warn (&pdev->dev,"ADC clock failed: can't read clk\n" );@@ -211,16 +209,6 @@ static int npcm_adc_probe(struct platform_device *pdev) div = div >>NPCM_ADCCON_DIV_SHIFT ; info->adc_sample_hz =clk_get_rate (info->adc_clk) / ((div +1 ) *2 ); -if (of_device_is_compatible (np,"nuvoton,npcm750-adc" )) { - info->rst_regmap =syscon_regmap_lookup_by_compatible - ("nuvoton,npcm750-rst" ); -if (IS_ERR (info->rst_regmap)) { -dev_err (&pdev->dev,"Failed to find nuvoton,npcm750-rst\n" ); - ret =PTR_ERR (info->rst_regmap); - goto err_disable_clk; - } - } - irq =platform_get_irq (pdev,0 );if (irq <=0 ) { ret = -EINVAL ;
Tomer Maimon
maintainerRe: [PATCH v1 2/2] iio: adc: modify NPCM reset support
Hi Jonathan,
The patch replace reset ADC method from direct register access to using reset driver (will applied next Linux version).
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next-history.git/commit/?h=next-20200130&id=9c81b2ccf82da6e995b63e945afa882cfaa03ca9
The ADC dt-binding modified as well to use the new reset method (approved by Rob Herring)
https://www.spinics.net/lists/devicetree/msg331327.html
Indeed the this modification require DT modification as it described in the ADC dt-binding commit, is it an issue? Do you thnk I should describe it in the commit?
Thanks,
Tomer
Quoted 108 lines · Jonathan Cameron
Quoted 4 lines · On Sun, 19 Jan 2020 13:00:32 +0200 Tomer Maimon <[email protected]> wrote:
Modify NPCM ADC reset support from
direct register access to reset controller support.Signed-off-by Tomer Maimon <[email protected]>Hmm. This presumably breaks all old DT.
If that's not a problem please say why.
Jonathan
drivers/iio/adc/npcm_adc.c static int npcm_adc_read(struct npcm_adc *info,
Quoted 32 lines
--- drivers/iio/adc/npcm_adc.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-)drivers/iio/adc/npcm_adc.c +2
-5@@ -14,6 +14,7 @@#include <linux/regulator/consumer.h> #include <linux/spinlock.h> #include <linux/uaccess.h> +#include <linux/reset.h> struct npcm_adc {bool int_status;@@ -23,13 +24,9 @@ struct npcm_adc {struct clk *adc_clk;wait_queue_head_t wq;struct regulator *vref; -struct regmap *rst_regmap; +struct reset_control *reset; }; -/* NPCM7xx reset module */ -#define NPCM7XX_IPSRST1_OFFSET 0x020 -#define NPCM7XX_IPSRST1_ADC_RST BIT(27) -/* ADC registers */ #define NPCM_ADCCON 0x00#define NPCM_ADCDATA 0x04@@ -106,13 +103,11 @@ static int npcm_adc_read(struct npcm_adc *info,int *val, u8 channel)
drivers/iio/adc/npcm_adc.c static int npcm_adc_read(struct npcm_adc *info, int *val, u8 channel)
Quoted 7 lines
drivers/iio/adc/npcm_adc.c +1
-2msecs_to_jiffies(10));if (ret ==0 ) { regtemp =ioread32 (info->regs +NPCM_ADCCON ); -if ((regtemp &NPCM_ADCCON_ADC_CONV ) && info->rst_regmap) { +if (regtemp &NPCM_ADCCON_ADC_CONV ) {/* if conversion failed - reset ADC module */ - regmap_write(info->rst_regmap,
NPCM7XX_IPSRST1_OFFSET,drivers/iio/adc/npcm_adc.c static int npcm_adc_read(struct npcm_adc *info, int *val, u8 channel)
Quoted 4 lines
drivers/iio/adc/npcm_adc.c +1
-2- NPCM7XX_IPSRST1_ADC_RST); +reset_control_assert (info->reset);msleep (100 ); - regmap_write(info->rst_regmap,
NPCM7XX_IPSRST1_OFFSET,drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device
Quoted 6 lines
drivers/iio/adc/npcm_adc.c +1
-1- 0x0); +reset_control_deassert (info->reset);msleep (100 );/* Enable ADC and start conversion module */ @@ -186,7 +181,6 @@ static int npcm_adc_probe(struct platform_device*pdev)
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device
Quoted 8 lines
drivers/iio/adc/npcm_adc.c +0
-1struct npcm_adc *info;struct iio_dev *indio_dev;struct device *dev = &pdev->dev; -struct device_node *np = pdev->dev.of_node; indio_dev =devm_iio_device_alloc (&pdev->dev,sizeof (*info));if (!indio_dev)@@ -199,6 +193,10 @@ static int npcm_adc_probe(struct platform_device*pdev)
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device
Quoted 11 lines
drivers/iio/adc/npcm_adc.c +4
-0if (IS_ERR (info->regs))return PTR_ERR (info->regs); + info->reset =devm_reset_control_get (&pdev->dev,NULL ); +if (IS_ERR (info->reset)) +return PTR_ERR (info->reset); + info->adc_clk =devm_clk_get (&pdev->dev,NULL );if (IS_ERR (info->adc_clk)) {dev_warn (&pdev->dev,"ADC clock failed: can't read clk\n" );@@ -211,16 +209,6 @@ static int npcm_adc_probe(struct platform_device*pdev)
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device · line 210
Quoted 2 lines
drivers/iio/adc/npcm_adc.c +0
-0div = div >>NPCM_ADCCON_DIV_SHIFT ; info->adc_sample_hz = clk_get_rate(info->adc_clk) / ((div + 1) *2);
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device *pdev)
Quoted 6 lines
drivers/iio/adc/npcm_adc.c +0
-5-if (of_device_is_compatible (np,"nuvoton,npcm750-adc" )) { - info->rst_regmap =syscon_regmap_lookup_by_compatible - ("nuvoton,npcm750-rst" ); -if (IS_ERR (info->rst_regmap)) { - dev_err(&pdev->dev, "Failed to findnuvoton,npcm750-rst\n");
Quoted 8 lines
drivers/iio/adc/npcm_adc.c +0
-5- ret =PTR_ERR (info->rst_regmap); - goto err_disable_clk; - } - } - irq =platform_get_irq (pdev,0 );if (irq <=0 ) { ret = -EINVAL ;
Jonathan Cameron
maintainerRe: [PATCH v1 2/2] iio: adc: modify NPCM reset support
Quoted 7 lines · On Thu, 30 Jan 2020 10:20:30 +0200 Tomer Maimon <[email protected]> wrote:
Hi Jonathan,
The patch replace reset ADC method from direct register access to using reset driver (will applied next Linux version).
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next-history.git/commit/?h=next-20200130&id=9c81b2ccf82da6e995b63e945afa882cfaa03ca9
Quoted 7 lines
The ADC dt-binding modified as well to use the new reset method (approved by Rob Herring)
https://www.spinics.net/lists/devicetree/msg331327.htmlIndeed the this modification require DT modification as it described in the ADC dt-binding commit, is it an issue? Do you thnk I should describe it in the commit?
Whether it is an issue depends on nuvoton business model. Can they ensure that all places the kernel is changed will also have appropriate dt updates?
If not, you need to make the code continue to function without the change (fall back to old methods). If they do have enough control to ensure it won't break any systems out in the wild, then just add a note to say that is the case to the commit message.
Reasons this sort of thing is sometimes safe include:
* preproduction part so no users outside of people who will expect potential breakage
* dt and new kernel images only distributed in a firmware package, or where build script used to build the firmware package will ensure they match (this is a bmc chip I think, so I guess not many people build their own kernels except via scripting to package everything up as a firmware image of some type?)
Thanks,
Jonathan
Quoted 117 lines
Thanks,
Tomer
Quoted 108 lines · Jonathan Cameron
Quoted 4 lines · On Sun, 19 Jan 2020 13:00:32 +0200 Tomer Maimon <[email protected]> wrote:
Modify NPCM ADC reset support from
direct register access to reset controller support.Signed-off-by Tomer Maimon <[email protected]>Hmm. This presumably breaks all old DT.
If that's not a problem please say why.
Jonathan
drivers/iio/adc/npcm_adc.c static int npcm_adc_read(struct npcm_adc *info,
Quoted 32 lines
--- drivers/iio/adc/npcm_adc.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-)drivers/iio/adc/npcm_adc.c +2
-5@@ -14,6 +14,7 @@#include <linux/regulator/consumer.h> #include <linux/spinlock.h> #include <linux/uaccess.h> +#include <linux/reset.h> struct npcm_adc {bool int_status;@@ -23,13 +24,9 @@ struct npcm_adc {struct clk *adc_clk;wait_queue_head_t wq;struct regulator *vref; -struct regmap *rst_regmap; +struct reset_control *reset; }; -/* NPCM7xx reset module */ -#define NPCM7XX_IPSRST1_OFFSET 0x020 -#define NPCM7XX_IPSRST1_ADC_RST BIT(27) -/* ADC registers */ #define NPCM_ADCCON 0x00#define NPCM_ADCDATA 0x04@@ -106,13 +103,11 @@ static int npcm_adc_read(struct npcm_adc *info,int *val, u8 channel)
drivers/iio/adc/npcm_adc.c static int npcm_adc_read(struct npcm_adc *info, int *val, u8 channel)
Quoted 7 lines
drivers/iio/adc/npcm_adc.c +1
-2msecs_to_jiffies(10));if (ret ==0 ) { regtemp =ioread32 (info->regs +NPCM_ADCCON ); -if ((regtemp &NPCM_ADCCON_ADC_CONV ) && info->rst_regmap) { +if (regtemp &NPCM_ADCCON_ADC_CONV ) {/* if conversion failed - reset ADC module */ - regmap_write(info->rst_regmap,
NPCM7XX_IPSRST1_OFFSET,drivers/iio/adc/npcm_adc.c static int npcm_adc_read(struct npcm_adc *info, int *val, u8 channel)
Quoted 4 lines
drivers/iio/adc/npcm_adc.c +1
-2- NPCM7XX_IPSRST1_ADC_RST); +reset_control_assert (info->reset);msleep (100 ); - regmap_write(info->rst_regmap,
NPCM7XX_IPSRST1_OFFSET,drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device
Quoted 6 lines
drivers/iio/adc/npcm_adc.c +1
-1- 0x0); +reset_control_deassert (info->reset);msleep (100 );/* Enable ADC and start conversion module */ @@ -186,7 +181,6 @@ static int npcm_adc_probe(struct platform_device*pdev)
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device
Quoted 8 lines
drivers/iio/adc/npcm_adc.c +0
-1struct npcm_adc *info;struct iio_dev *indio_dev;struct device *dev = &pdev->dev; -struct device_node *np = pdev->dev.of_node; indio_dev =devm_iio_device_alloc (&pdev->dev,sizeof (*info));if (!indio_dev)@@ -199,6 +193,10 @@ static int npcm_adc_probe(struct platform_device*pdev)
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device
Quoted 11 lines
drivers/iio/adc/npcm_adc.c +4
-0if (IS_ERR (info->regs))return PTR_ERR (info->regs); + info->reset =devm_reset_control_get (&pdev->dev,NULL ); +if (IS_ERR (info->reset)) +return PTR_ERR (info->reset); + info->adc_clk =devm_clk_get (&pdev->dev,NULL );if (IS_ERR (info->adc_clk)) {dev_warn (&pdev->dev,"ADC clock failed: can't read clk\n" );@@ -211,16 +209,6 @@ static int npcm_adc_probe(struct platform_device*pdev)
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device · line 210
Quoted 2 lines
drivers/iio/adc/npcm_adc.c +0
-0div = div >>NPCM_ADCCON_DIV_SHIFT ; info->adc_sample_hz = clk_get_rate(info->adc_clk) / ((div + 1) *2);
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device *pdev)
Quoted 6 lines
drivers/iio/adc/npcm_adc.c +0
-5-if (of_device_is_compatible (np,"nuvoton,npcm750-adc" )) { - info->rst_regmap =syscon_regmap_lookup_by_compatible - ("nuvoton,npcm750-rst" ); -if (IS_ERR (info->rst_regmap)) { - dev_err(&pdev->dev, "Failed to findnuvoton,npcm750-rst\n");
Quoted 8 lines
drivers/iio/adc/npcm_adc.c +0
-5- ret =PTR_ERR (info->rst_regmap); - goto err_disable_clk; - } - } - irq =platform_get_irq (pdev,0 );if (irq <=0 ) { ret = -EINVAL ;
Tomer Maimon
maintainerRe: [PATCH v1 2/2] iio: adc: modify NPCM reset support
Hi Jonathan,
Thanks for the clarification,
Quoted 16 lines · Jonathan Cameron
Quoted 5 lines · On Thu, 30 Jan 2020 10:20:30 +0200 Tomer Maimon <[email protected]> wrote:
Hi Jonathan,
The patch replace reset ADC method from direct register access to using reset driver (will applied next Linux version).
Quoted 7 lines
The ADC dt-binding modified as well to use the new reset method (approved by Rob Herring)
https://www.spinics.net/lists/devicetree/msg331327.htmlIndeed the this modification require DT modification as it described in
Quoted 8 lines
the
Quoted 1 line
ADC dt-binding commit, is it an issue? Do you thnk I should describe it
in
Quoted 1 line
the commit?
Whether it is an issue depends on nuvoton business model. Can they ensure that all places the kernel is changed will also have appropriate dt updates?
Yes, we can ensure it in this development stage.
Quoted 1 line
If not, you need to make the code continue to function without the change
Quoted 5 lines
(fall back to old methods). If they do have enough control to ensure it won't
break any systems out in the wild, then just add a note to say that is the case to the commit message.
I will modify the commit message as you suggested.
Reasons this sort of thing is sometimes safe include:
Quoted 9 lines
* preproduction part so no users outside of people who will expect potential breakage
* dt and new kernel images only distributed in a firmware package, or where build script used to build the firmware package will ensure they match (this is a bmc chip I think, so I guess not many people build their own
kernels except via scripting to package everything up as a firmware image of some type?)
As far as I know only the server developers are creating new firmwares and they are aware to our modifications.
Quoted 104 lines
Thanks,
Jonathan
Quoted 46 lines
Thanks,
Tomer
Quoted 38 lines · Jonathan Cameron
Quoted 4 lines · On Sun, 19 Jan 2020 13:00:32 +0200 Tomer Maimon <[email protected]> wrote:
Modify NPCM ADC reset support from
direct register access to reset controller support.Signed-off-by Tomer Maimon <[email protected]>Hmm. This presumably breaks all old DT.
If that's not a problem please say why.
Jonathan
Quoted 24 lines
--- drivers/iio/adc/npcm_adc.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-)drivers/iio/adc/npcm_adc.c +2
-1@@ -14,6 +14,7 @@#include <linux/regulator/consumer.h> #include <linux/spinlock.h> #include <linux/uaccess.h> +#include <linux/reset.h> struct npcm_adc {bool int_status;@@ -23,13 +24,9 @@ struct npcm_adc {struct clk *adc_clk;wait_queue_head_t wq;struct regulator *vref; -struct regmap *rst_regmap; +struct reset_control *reset; };Quoted 8 lines
Quoted 8 lines
drivers/iio/adc/npcm_adc.c static int npcm_adc_read(struct npcm_adc
Quoted 8 lines
drivers/iio/adc/npcm_adc.c +0
-4-/* NPCM7xx reset module */ -#define NPCM7XX_IPSRST1_OFFSET 0x020 -#define NPCM7XX_IPSRST1_ADC_RST BIT(27) -/* ADC registers */ #define NPCM_ADCCON 0x00#define NPCM_ADCDATA 0x04@@ -106,13 +103,11 @@ static int npcm_adc_read(struct npcm_adc*info,
Quoted 5 lines
Quoted 5 lines
int *val, u8 channel)
Quoted 4 lines
drivers/iio/adc/npcm_adc.c +0
-1msecs_to_jiffies(10));if (ret ==0 ) { regtemp =ioread32 (info->regs +NPCM_ADCCON ); - if ((regtemp & NPCM_ADCCON_ADC_CONV) &&
info->rst_regmap) {Quoted 8 lines
Quoted 8 lines
drivers/iio/adc/npcm_adc.c static int npcm_adc_read(struct npcm_adc *info, int *val, u8 channel)
Quoted 3 lines
drivers/iio/adc/npcm_adc.c +1
-1+if (regtemp &NPCM_ADCCON_ADC_CONV ) {/* if conversion failed - reset ADC module */ - regmap_write(info->rst_regmap,
NPCM7XX_IPSRST1_OFFSET,Quoted 4 lines
drivers/iio/adc/npcm_adc.c +1
-2- NPCM7XX_IPSRST1_ADC_RST); +reset_control_assert (info->reset);msleep (100 ); - regmap_write(info->rst_regmap,Quoted 7 lines
Quoted 7 lines
NPCM7XX_IPSRST1_OFFSET,drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct
Quoted 6 lines
drivers/iio/adc/npcm_adc.c +1
-1- 0x0); +reset_control_deassert (info->reset);msleep (100 );/* Enable ADC and start conversion module */ @@ -186,7 +181,6 @@ static int npcm_adc_probe(struct
platform_deviceQuoted 9 lines
Quoted 9 lines
*pdev)
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct
Quoted 8 lines
drivers/iio/adc/npcm_adc.c +0
-1struct npcm_adc *info;struct iio_dev *indio_dev;struct device *dev = &pdev->dev; -struct device_node *np = pdev->dev.of_node; indio_dev =devm_iio_device_alloc (&pdev->dev,sizeof (*info));if (!indio_dev)@@ -199,6 +193,10 @@ static int npcm_adc_probe(struct
platform_deviceQuoted 11 lines
Quoted 11 lines
*pdev)
Quoted 10 lines
drivers/iio/adc/npcm_adc.c +4
-0if (IS_ERR (info->regs))return PTR_ERR (info->regs); + info->reset =devm_reset_control_get (&pdev->dev,NULL ); +if (IS_ERR (info->reset)) +return PTR_ERR (info->reset); + info->adc_clk =devm_clk_get (&pdev->dev,NULL );if (IS_ERR (info->adc_clk)) { dev_warn(&pdev->dev, "ADC clock failed: can't read
Quoted 27 lines
clk\n");
Quoted 1 line
Quoted 1 line
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct
Quoted 1 line
drivers/iio/adc/npcm_adc.c +0
-0@@ -211,16 +209,6 @@ static int npcm_adc_probe(struct
platform_deviceQuoted 3 lines
Quoted 3 lines
*pdev)
Quoted 2 lines
drivers/iio/adc/npcm_adc.c +0
-0div = div >>NPCM_ADCCON_DIV_SHIFT ; info->adc_sample_hz = clk_get_rate(info->adc_clk) / ((div + 1)*
Quoted 18 lines
Quoted 18 lines
2);
drivers/iio/adc/npcm_adc.c static int npcm_adc_probe(struct platform_device *pdev)
Quoted 6 lines
drivers/iio/adc/npcm_adc.c +0
-5-if (of_device_is_compatible (np,"nuvoton,npcm750-adc" )) { - info->rst_regmap =syscon_regmap_lookup_by_compatible - ("nuvoton,npcm750-rst" ); -if (IS_ERR (info->rst_regmap)) { - dev_err(&pdev->dev, "Failed to findnuvoton,npcm750-rst\n");
Quoted 8 lines
drivers/iio/adc/npcm_adc.c +0
-5- ret =PTR_ERR (info->rst_regmap); - goto err_disable_clk; - } - } - irq =platform_get_irq (pdev,0 );if (irq <=0 ) { ret = -EINVAL ;
Thanks a lot,
Tomer
Quoted 7 lines · Tomer Maimon
Add NPCM ADC reset binding documentation.
Signed-off-by Tomer Maimon <[email protected]>--- Documentation/devicetree/bindings/iio/adc/nuvoton,npcm-adc.txt | 2 ++ 1 file changed, 2 insertions(+)