Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1451299 > unrolled thread
| Started by | Caesar Wang <wxt@rock-chips.com> |
|---|---|
| First post | 2016-07-27 16:30 +0200 |
| Last post | 2016-07-30 01:20 +0200 |
| Articles | 12 — 5 participants |
Back to article view | Back to linux.kernel
[PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it Caesar Wang <wxt@rock-chips.com> - 2016-07-27 16:30 +0200
[PATCH v3 2/4] arm64: dts: rockchip: add the saradc for rk3399 Caesar Wang <wxt@rock-chips.com> - 2016-07-27 16:30 +0200
[PATCH v3 3/4] arm64: dts: rockchip: add reset saradc node for rk3368 SoCs Caesar Wang <wxt@rock-chips.com> - 2016-07-27 16:30 +0200
Re: [PATCH v3 3/4] arm64: dts: rockchip: add reset saradc node for rk3368 SoCs Guenter Roeck <linux@roeck-us.net> - 2016-07-27 17:00 +0200
[PATCH v3 4/4] arm: dts: rockchip: add reset node for the exist saradc SoCs Caesar Wang <wxt@rock-chips.com> - 2016-07-27 16:30 +0200
Re: [PATCH v3 4/4] arm: dts: rockchip: add reset node for the exist saradc SoCs Guenter Roeck <linux@roeck-us.net> - 2016-07-27 17:00 +0200
Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it Peter Meerwald-Stadler <pmeerw@pmeerw.net> - 2016-07-27 16:50 +0200
Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it Caesar Wang <wxt@rock-chips.com> - 2016-07-30 01:30 +0200
Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it Guenter Roeck <linux@roeck-us.net> - 2016-07-27 17:00 +0200
Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it Rob Herring <robh@kernel.org> - 2016-07-29 23:30 +0200
Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it Caesar Wang <sasukewxt@163.com> - 2016-07-30 01:20 +0200
Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it Caesar Wang <wxt@rock-chips.com> - 2016-07-30 01:20 +0200
| From | Caesar Wang <wxt@rock-chips.com> |
|---|---|
| Date | 2016-07-27 16:30 +0200 |
| Subject | [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it |
| Message-ID | <rZy0p-y1-1@gated-at.bofh.it> |
SARADC controller needs to be reset before programming it, otherwise
it will not function properly.
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Heiko Stuebner <heiko@sntech.de>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: linux-iio@vger.kernel.org
Cc: linux-rockchip@lists.infradead.org
Tested-by: Guenter Roeck <linux@roeck-us.net>
---
Changes in v3:
- %s/devm_reset_control_get_optional()/devm_reset_control_get()
- add Guente's test tag.
Changes in v2:
- Make the reset as an optional property, since it should work
with old devicetrees as well.
.../bindings/iio/adc/rockchip-saradc.txt | 7 +++++
drivers/iio/adc/Kconfig | 1 +
drivers/iio/adc/rockchip_saradc.c | 30 ++++++++++++++++++++++
3 files changed, 38 insertions(+)
diff --git a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
index bf99e2f..205593f 100644
--- a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
+++ b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
@@ -16,6 +16,11 @@ Required properties:
- vref-supply: The regulator supply ADC reference voltage.
- #io-channel-cells: Should be 1, see ../iio-bindings.txt
+Optional properties:
+- resets: Must contain an entry for each entry in reset-names if need support
+ this option. See ../reset/reset.txt for details.
+- reset-names: Must include the name "saradc-apb".
+
Example:
saradc: saradc@2006c000 {
compatible = "rockchip,saradc";
@@ -23,6 +28,8 @@ Example:
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
clock-names = "saradc", "apb_pclk";
+ resets = <&cru SRST_SARADC>;
+ reset-names = "saradc-apb";
#io-channel-cells = <1>;
vref-supply = <&vcc18>;
};
diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
index 1de31bd..7675772 100644
--- a/drivers/iio/adc/Kconfig
+++ b/drivers/iio/adc/Kconfig
@@ -389,6 +389,7 @@ config QCOM_SPMI_VADC
config ROCKCHIP_SARADC
tristate "Rockchip SARADC driver"
depends on ARCH_ROCKCHIP || (ARM && COMPILE_TEST)
+ depends on RESET_CONTROLLER
help
Say yes here to build support for the SARADC found in SoCs from
Rockchip.
diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
index f9ad6c2..85d7012 100644
--- a/drivers/iio/adc/rockchip_saradc.c
+++ b/drivers/iio/adc/rockchip_saradc.c
@@ -21,6 +21,8 @@
#include <linux/of_device.h>
#include <linux/clk.h>
#include <linux/completion.h>
+#include <linux/delay.h>
+#include <linux/reset.h>
#include <linux/regulator/consumer.h>
#include <linux/iio/iio.h>
@@ -53,6 +55,7 @@ struct rockchip_saradc {
struct clk *clk;
struct completion completion;
struct regulator *vref;
+ struct reset_control *reset;
const struct rockchip_saradc_data *data;
u16 last_val;
};
@@ -190,6 +193,16 @@ static const struct of_device_id rockchip_saradc_match[] = {
};
MODULE_DEVICE_TABLE(of, rockchip_saradc_match);
+/**
+ * Reset SARADC Controller.
+ */
+static void rockchip_saradc_reset_controller(struct reset_control *reset)
+{
+ reset_control_assert(reset);
+ usleep_range(10, 20);
+ reset_control_deassert(reset);
+}
+
static int rockchip_saradc_probe(struct platform_device *pdev)
{
struct rockchip_saradc *info = NULL;
@@ -218,6 +231,20 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
if (IS_ERR(info->regs))
return PTR_ERR(info->regs);
+ /*
+ * The reset should be an optional property, as it should work
+ * with old devicetrees as well
+ */
+ info->reset = devm_reset_control_get(&pdev->dev, "saradc-apb");
+ if (IS_ERR(info->reset)) {
+ ret = PTR_ERR(info->reset);
+ if (ret != -ENOENT)
+ return ret;
+
+ dev_dbg(&pdev->dev, "no reset control found\n");
+ info->reset = NULL;
+ }
+
init_completion(&info->completion);
irq = platform_get_irq(pdev, 0);
@@ -252,6 +279,9 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
return PTR_ERR(info->vref);
}
+ if (info->reset)
+ rockchip_saradc_reset_controller(info->reset);
+
/*
* Use a default value for the converter clock.
* This may become user-configurable in the future.
--
1.9.1
[toc] | [next] | [standalone]
| From | Caesar Wang <wxt@rock-chips.com> |
|---|---|
| Date | 2016-07-27 16:30 +0200 |
| Subject | [PATCH v3 2/4] arm64: dts: rockchip: add the saradc for rk3399 |
| Message-ID | <rZy0u-y1-5@gated-at.bofh.it> |
| In reply to | #1451299 |
This patch adds saradc needed information on rk3399 SoCs.
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
---
Changes in v3: None
Changes in v2: None
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
index 4c84229..b81f84b 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
@@ -299,6 +299,18 @@
};
};
+ saradc: saradc@ff100000 {
+ compatible = "rockchip,rk3399-saradc";
+ reg = <0x0 0xff100000 0x0 0x100>;
+ interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+ #io-channel-cells = <1>;
+ clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
+ clock-names = "saradc", "apb_pclk";
+ resets = <&cru SRST_P_SARADC>;
+ reset-names = "saradc-apb";
+ status = "disabled";
+ };
+
i2c1: i2c@ff110000 {
compatible = "rockchip,rk3399-i2c";
reg = <0x0 0xff110000 0x0 0x1000>;
--
1.9.1
[toc] | [prev] | [next] | [standalone]
| From | Caesar Wang <wxt@rock-chips.com> |
|---|---|
| Date | 2016-07-27 16:30 +0200 |
| Subject | [PATCH v3 3/4] arm64: dts: rockchip: add reset saradc node for rk3368 SoCs |
| Message-ID | <rZy0u-y1-9@gated-at.bofh.it> |
| In reply to | #1451299 |
SARADC controller needs to be reset before programming it, otherwise it will not function properly. Signed-off-by: Caesar Wang <wxt@rock-chips.com> --- Changes in v3: - add Doug's reviewed tag. Changes in v2: None arch/arm64/boot/dts/rockchip/rk3368.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3368.dtsi b/arch/arm64/boot/dts/rockchip/rk3368.dtsi index d02a9003..4f44d11 100644 --- a/arch/arm64/boot/dts/rockchip/rk3368.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3368.dtsi @@ -270,6 +270,8 @@ #io-channel-cells = <1>; clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>; clock-names = "saradc", "apb_pclk"; + resets = <&cru SRST_SARADC>; + reset-names = "saradc-apb"; status = "disabled"; }; -- 1.9.1
[toc] | [prev] | [next] | [standalone]
| From | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| Date | 2016-07-27 17:00 +0200 |
| Subject | Re: [PATCH v3 3/4] arm64: dts: rockchip: add reset saradc node for rk3368 SoCs |
| Message-ID | <rZyts-Js-25@gated-at.bofh.it> |
| In reply to | #1451303 |
On 07/27/2016 07:24 AM, Caesar Wang wrote: > SARADC controller needs to be reset before programming it, otherwise > it will not function properly. > > Signed-off-by: Caesar Wang <wxt@rock-chips.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > > Changes in v3: > - add Doug's reviewed tag. > Not to this patch ? > Changes in v2: None > > arch/arm64/boot/dts/rockchip/rk3368.dtsi | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/arm64/boot/dts/rockchip/rk3368.dtsi b/arch/arm64/boot/dts/rockchip/rk3368.dtsi > index d02a9003..4f44d11 100644 > --- a/arch/arm64/boot/dts/rockchip/rk3368.dtsi > +++ b/arch/arm64/boot/dts/rockchip/rk3368.dtsi > @@ -270,6 +270,8 @@ > #io-channel-cells = <1>; > clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>; > clock-names = "saradc", "apb_pclk"; > + resets = <&cru SRST_SARADC>; > + reset-names = "saradc-apb"; > status = "disabled"; > }; > >
[toc] | [prev] | [next] | [standalone]
| From | Caesar Wang <wxt@rock-chips.com> |
|---|---|
| Date | 2016-07-27 16:30 +0200 |
| Subject | [PATCH v3 4/4] arm: dts: rockchip: add reset node for the exist saradc SoCs |
| Message-ID | <rZy0u-y1-15@gated-at.bofh.it> |
| In reply to | #1451299 |
SARADC controller needs to be reset before programming it, otherwise it will not function properly. Signed-off-by: Caesar Wang <wxt@rock-chips.com> --- Changes in v3: None Changes in v2: None arch/arm/boot/dts/rk3066a.dtsi | 2 ++ arch/arm/boot/dts/rk3288.dtsi | 2 ++ arch/arm/boot/dts/rk3xxx.dtsi | 2 ++ 3 files changed, 6 insertions(+) diff --git a/arch/arm/boot/dts/rk3066a.dtsi b/arch/arm/boot/dts/rk3066a.dtsi index c0ba86c..0d0dae3 100644 --- a/arch/arm/boot/dts/rk3066a.dtsi +++ b/arch/arm/boot/dts/rk3066a.dtsi @@ -197,6 +197,8 @@ clock-names = "saradc", "apb_pclk"; interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; #io-channel-cells = <1>; + resets = <&cru SRST_SARADC>; + reset-names = "saradc-apb"; status = "disabled"; }; diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi index cd33f01..91c4b3c 100644 --- a/arch/arm/boot/dts/rk3288.dtsi +++ b/arch/arm/boot/dts/rk3288.dtsi @@ -279,6 +279,8 @@ #io-channel-cells = <1>; clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>; clock-names = "saradc", "apb_pclk"; + resets = <&cru SRST_SARADC>; + reset-names = "saradc-apb"; status = "disabled"; }; diff --git a/arch/arm/boot/dts/rk3xxx.dtsi b/arch/arm/boot/dts/rk3xxx.dtsi index 99bbcc2..e2cd683 100644 --- a/arch/arm/boot/dts/rk3xxx.dtsi +++ b/arch/arm/boot/dts/rk3xxx.dtsi @@ -399,6 +399,8 @@ #io-channel-cells = <1>; clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>; clock-names = "saradc", "apb_pclk"; + resets = <&cru SRST_SARADC>; + reset-names = "saradc-apb"; status = "disabled"; }; -- 1.9.1
[toc] | [prev] | [next] | [standalone]
| From | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| Date | 2016-07-27 17:00 +0200 |
| Subject | Re: [PATCH v3 4/4] arm: dts: rockchip: add reset node for the exist saradc SoCs |
| Message-ID | <rZyts-Js-35@gated-at.bofh.it> |
| In reply to | #1451306 |
On 07/27/2016 07:24 AM, Caesar Wang wrote: > SARADC controller needs to be reset before programming it, otherwise > it will not function properly. > > Signed-off-by: Caesar Wang <wxt@rock-chips.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > > Changes in v3: None > Changes in v2: None > > arch/arm/boot/dts/rk3066a.dtsi | 2 ++ > arch/arm/boot/dts/rk3288.dtsi | 2 ++ > arch/arm/boot/dts/rk3xxx.dtsi | 2 ++ > 3 files changed, 6 insertions(+) > > diff --git a/arch/arm/boot/dts/rk3066a.dtsi b/arch/arm/boot/dts/rk3066a.dtsi > index c0ba86c..0d0dae3 100644 > --- a/arch/arm/boot/dts/rk3066a.dtsi > +++ b/arch/arm/boot/dts/rk3066a.dtsi > @@ -197,6 +197,8 @@ > clock-names = "saradc", "apb_pclk"; > interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; > #io-channel-cells = <1>; > + resets = <&cru SRST_SARADC>; > + reset-names = "saradc-apb"; > status = "disabled"; > }; > > diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi > index cd33f01..91c4b3c 100644 > --- a/arch/arm/boot/dts/rk3288.dtsi > +++ b/arch/arm/boot/dts/rk3288.dtsi > @@ -279,6 +279,8 @@ > #io-channel-cells = <1>; > clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>; > clock-names = "saradc", "apb_pclk"; > + resets = <&cru SRST_SARADC>; > + reset-names = "saradc-apb"; > status = "disabled"; > }; > > diff --git a/arch/arm/boot/dts/rk3xxx.dtsi b/arch/arm/boot/dts/rk3xxx.dtsi > index 99bbcc2..e2cd683 100644 > --- a/arch/arm/boot/dts/rk3xxx.dtsi > +++ b/arch/arm/boot/dts/rk3xxx.dtsi > @@ -399,6 +399,8 @@ > #io-channel-cells = <1>; > clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>; > clock-names = "saradc", "apb_pclk"; > + resets = <&cru SRST_SARADC>; > + reset-names = "saradc-apb"; > status = "disabled"; > }; > >
[toc] | [prev] | [next] | [standalone]
| From | Peter Meerwald-Stadler <pmeerw@pmeerw.net> |
|---|---|
| Date | 2016-07-27 16:50 +0200 |
| Subject | Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it |
| Message-ID | <rZyjM-F9-19@gated-at.bofh.it> |
| In reply to | #1451299 |
> SARADC controller needs to be reset before programming it, otherwise
> it will not function properly.
nitpicking on wording below
> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: Heiko Stuebner <heiko@sntech.de>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: linux-iio@vger.kernel.org
> Cc: linux-rockchip@lists.infradead.org
> Tested-by: Guenter Roeck <linux@roeck-us.net>
>
> ---
>
> Changes in v3:
> - %s/devm_reset_control_get_optional()/devm_reset_control_get()
> - add Guente's test tag.
>
> Changes in v2:
> - Make the reset as an optional property, since it should work
> with old devicetrees as well.
>
> .../bindings/iio/adc/rockchip-saradc.txt | 7 +++++
> drivers/iio/adc/Kconfig | 1 +
> drivers/iio/adc/rockchip_saradc.c | 30 ++++++++++++++++++++++
> 3 files changed, 38 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
> index bf99e2f..205593f 100644
> --- a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
> +++ b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
> @@ -16,6 +16,11 @@ Required properties:
> - vref-supply: The regulator supply ADC reference voltage.
> - #io-channel-cells: Should be 1, see ../iio-bindings.txt
>
> +Optional properties:
> +- resets: Must contain an entry for each entry in reset-names if need support
> + this option. See ../reset/reset.txt for details.
'... if need support this option.' doesn't sound right, maybe
simply: '... if needed.' or drop this clause.
> +- reset-names: Must include the name "saradc-apb".
> +
> Example:
> saradc: saradc@2006c000 {
> compatible = "rockchip,saradc";
> @@ -23,6 +28,8 @@ Example:
> interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
> clock-names = "saradc", "apb_pclk";
> + resets = <&cru SRST_SARADC>;
> + reset-names = "saradc-apb";
> #io-channel-cells = <1>;
> vref-supply = <&vcc18>;
> };
> diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
> index 1de31bd..7675772 100644
> --- a/drivers/iio/adc/Kconfig
> +++ b/drivers/iio/adc/Kconfig
> @@ -389,6 +389,7 @@ config QCOM_SPMI_VADC
> config ROCKCHIP_SARADC
> tristate "Rockchip SARADC driver"
> depends on ARCH_ROCKCHIP || (ARM && COMPILE_TEST)
> + depends on RESET_CONTROLLER
> help
> Say yes here to build support for the SARADC found in SoCs from
> Rockchip.
> diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
> index f9ad6c2..85d7012 100644
> --- a/drivers/iio/adc/rockchip_saradc.c
> +++ b/drivers/iio/adc/rockchip_saradc.c
> @@ -21,6 +21,8 @@
> #include <linux/of_device.h>
> #include <linux/clk.h>
> #include <linux/completion.h>
> +#include <linux/delay.h>
> +#include <linux/reset.h>
> #include <linux/regulator/consumer.h>
> #include <linux/iio/iio.h>
>
> @@ -53,6 +55,7 @@ struct rockchip_saradc {
> struct clk *clk;
> struct completion completion;
> struct regulator *vref;
> + struct reset_control *reset;
> const struct rockchip_saradc_data *data;
> u16 last_val;
> };
> @@ -190,6 +193,16 @@ static const struct of_device_id rockchip_saradc_match[] = {
> };
> MODULE_DEVICE_TABLE(of, rockchip_saradc_match);
>
> +/**
> + * Reset SARADC Controller.
> + */
> +static void rockchip_saradc_reset_controller(struct reset_control *reset)
> +{
> + reset_control_assert(reset);
> + usleep_range(10, 20);
> + reset_control_deassert(reset);
> +}
> +
> static int rockchip_saradc_probe(struct platform_device *pdev)
> {
> struct rockchip_saradc *info = NULL;
> @@ -218,6 +231,20 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
> if (IS_ERR(info->regs))
> return PTR_ERR(info->regs);
>
> + /*
> + * The reset should be an optional property, as it should work
> + * with old devicetrees as well
> + */
> + info->reset = devm_reset_control_get(&pdev->dev, "saradc-apb");
> + if (IS_ERR(info->reset)) {
> + ret = PTR_ERR(info->reset);
> + if (ret != -ENOENT)
> + return ret;
> +
> + dev_dbg(&pdev->dev, "no reset control found\n");
> + info->reset = NULL;
> + }
> +
> init_completion(&info->completion);
>
> irq = platform_get_irq(pdev, 0);
> @@ -252,6 +279,9 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
> return PTR_ERR(info->vref);
> }
>
> + if (info->reset)
> + rockchip_saradc_reset_controller(info->reset);
> +
> /*
> * Use a default value for the converter clock.
> * This may become user-configurable in the future.
>
--
Peter Meerwald-Stadler
+43-664-2444418 (mobile)
[toc] | [prev] | [next] | [standalone]
| From | Caesar Wang <wxt@rock-chips.com> |
|---|---|
| Date | 2016-07-30 01:30 +0200 |
| Subject | Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it |
| Message-ID | <s0po5-2Xs-1@gated-at.bofh.it> |
| In reply to | #1451319 |
On 2016年07月27日 22:47, Peter Meerwald-Stadler wrote:
>> SARADC controller needs to be reset before programming it, otherwise
>> it will not function properly.
> nitpicking on wording below
>
>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>> Cc: Jonathan Cameron <jic23@kernel.org>
>> Cc: Heiko Stuebner <heiko@sntech.de>
>> Cc: Rob Herring <robh+dt@kernel.org>
>> Cc: linux-iio@vger.kernel.org
>> Cc: linux-rockchip@lists.infradead.org
>> Tested-by: Guenter Roeck <linux@roeck-us.net>
>>
>> ---
>>
>> Changes in v3:
>> - %s/devm_reset_control_get_optional()/devm_reset_control_get()
>> - add Guente's test tag.
>>
>> Changes in v2:
>> - Make the reset as an optional property, since it should work
>> with old devicetrees as well.
>>
>> .../bindings/iio/adc/rockchip-saradc.txt | 7 +++++
>> drivers/iio/adc/Kconfig | 1 +
>> drivers/iio/adc/rockchip_saradc.c | 30 ++++++++++++++++++++++
>> 3 files changed, 38 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
>> index bf99e2f..205593f 100644
>> --- a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
>> +++ b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
>> @@ -16,6 +16,11 @@ Required properties:
>> - vref-supply: The regulator supply ADC reference voltage.
>> - #io-channel-cells: Should be 1, see ../iio-bindings.txt
>>
>> +Optional properties:
>> +- resets: Must contain an entry for each entry in reset-names if need support
>> + this option. See ../reset/reset.txt for details.
> '... if need support this option.' doesn't sound right, maybe
> simply: '... if needed.' or drop this clause.
I don't plan to resend this series patches.
I'm assuming that Jonathan will help me fix it when ready to apply it.:-)
Glad to resend this series patches if Jonathan boss ask me to do.
Thanks,
Caesar
>
>> +- reset-names: Must include the name "saradc-apb".
>> +
>> Example:
>> saradc: saradc@2006c000 {
>> compatible = "rockchip,saradc";
>> @@ -23,6 +28,8 @@ Example:
>> interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
>> clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
>> clock-names = "saradc", "apb_pclk";
>> + resets = <&cru SRST_SARADC>;
>> + reset-names = "saradc-apb";
>> #io-channel-cells = <1>;
>> vref-supply = <&vcc18>;
>> };
>> diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
>> index 1de31bd..7675772 100644
>> --- a/drivers/iio/adc/Kconfig
>> +++ b/drivers/iio/adc/Kconfig
>> @@ -389,6 +389,7 @@ config QCOM_SPMI_VADC
>> config ROCKCHIP_SARADC
>> tristate "Rockchip SARADC driver"
>> depends on ARCH_ROCKCHIP || (ARM && COMPILE_TEST)
>> + depends on RESET_CONTROLLER
>> help
>> Say yes here to build support for the SARADC found in SoCs from
>> Rockchip.
>> diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
>> index f9ad6c2..85d7012 100644
>> --- a/drivers/iio/adc/rockchip_saradc.c
>> +++ b/drivers/iio/adc/rockchip_saradc.c
>> @@ -21,6 +21,8 @@
>> #include <linux/of_device.h>
>> #include <linux/clk.h>
>> #include <linux/completion.h>
>> +#include <linux/delay.h>
>> +#include <linux/reset.h>
>> #include <linux/regulator/consumer.h>
>> #include <linux/iio/iio.h>
>>
>> @@ -53,6 +55,7 @@ struct rockchip_saradc {
>> struct clk *clk;
>> struct completion completion;
>> struct regulator *vref;
>> + struct reset_control *reset;
>> const struct rockchip_saradc_data *data;
>> u16 last_val;
>> };
>> @@ -190,6 +193,16 @@ static const struct of_device_id rockchip_saradc_match[] = {
>> };
>> MODULE_DEVICE_TABLE(of, rockchip_saradc_match);
>>
>> +/**
>> + * Reset SARADC Controller.
>> + */
>> +static void rockchip_saradc_reset_controller(struct reset_control *reset)
>> +{
>> + reset_control_assert(reset);
>> + usleep_range(10, 20);
>> + reset_control_deassert(reset);
>> +}
>> +
>> static int rockchip_saradc_probe(struct platform_device *pdev)
>> {
>> struct rockchip_saradc *info = NULL;
>> @@ -218,6 +231,20 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
>> if (IS_ERR(info->regs))
>> return PTR_ERR(info->regs);
>>
>> + /*
>> + * The reset should be an optional property, as it should work
>> + * with old devicetrees as well
>> + */
>> + info->reset = devm_reset_control_get(&pdev->dev, "saradc-apb");
>> + if (IS_ERR(info->reset)) {
>> + ret = PTR_ERR(info->reset);
>> + if (ret != -ENOENT)
>> + return ret;
>> +
>> + dev_dbg(&pdev->dev, "no reset control found\n");
>> + info->reset = NULL;
>> + }
>> +
>> init_completion(&info->completion);
>>
>> irq = platform_get_irq(pdev, 0);
>> @@ -252,6 +279,9 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
>> return PTR_ERR(info->vref);
>> }
>>
>> + if (info->reset)
>> + rockchip_saradc_reset_controller(info->reset);
>> +
>> /*
>> * Use a default value for the converter clock.
>> * This may become user-configurable in the future.
>>
--
caesar wang | software engineer | wxt@rock-chip.com
[toc] | [prev] | [next] | [standalone]
| From | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| Date | 2016-07-27 17:00 +0200 |
| Subject | Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it |
| Message-ID | <rZytr-Js-21@gated-at.bofh.it> |
| In reply to | #1451299 |
On 07/27/2016 07:24 AM, Caesar Wang wrote:
> SARADC controller needs to be reset before programming it, otherwise
> it will not function properly.
>
> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: Heiko Stuebner <heiko@sntech.de>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: linux-iio@vger.kernel.org
> Cc: linux-rockchip@lists.infradead.org
> Tested-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
>
> ---
>
> Changes in v3:
> - %s/devm_reset_control_get_optional()/devm_reset_control_get()
> - add Guente's test tag.
>
> Changes in v2:
> - Make the reset as an optional property, since it should work
> with old devicetrees as well.
>
> .../bindings/iio/adc/rockchip-saradc.txt | 7 +++++
> drivers/iio/adc/Kconfig | 1 +
> drivers/iio/adc/rockchip_saradc.c | 30 ++++++++++++++++++++++
> 3 files changed, 38 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
> index bf99e2f..205593f 100644
> --- a/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
> +++ b/Documentation/devicetree/bindings/iio/adc/rockchip-saradc.txt
> @@ -16,6 +16,11 @@ Required properties:
> - vref-supply: The regulator supply ADC reference voltage.
> - #io-channel-cells: Should be 1, see ../iio-bindings.txt
>
> +Optional properties:
> +- resets: Must contain an entry for each entry in reset-names if need support
> + this option. See ../reset/reset.txt for details.
> +- reset-names: Must include the name "saradc-apb".
> +
> Example:
> saradc: saradc@2006c000 {
> compatible = "rockchip,saradc";
> @@ -23,6 +28,8 @@ Example:
> interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
> clock-names = "saradc", "apb_pclk";
> + resets = <&cru SRST_SARADC>;
> + reset-names = "saradc-apb";
> #io-channel-cells = <1>;
> vref-supply = <&vcc18>;
> };
> diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
> index 1de31bd..7675772 100644
> --- a/drivers/iio/adc/Kconfig
> +++ b/drivers/iio/adc/Kconfig
> @@ -389,6 +389,7 @@ config QCOM_SPMI_VADC
> config ROCKCHIP_SARADC
> tristate "Rockchip SARADC driver"
> depends on ARCH_ROCKCHIP || (ARM && COMPILE_TEST)
> + depends on RESET_CONTROLLER
> help
> Say yes here to build support for the SARADC found in SoCs from
> Rockchip.
> diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
> index f9ad6c2..85d7012 100644
> --- a/drivers/iio/adc/rockchip_saradc.c
> +++ b/drivers/iio/adc/rockchip_saradc.c
> @@ -21,6 +21,8 @@
> #include <linux/of_device.h>
> #include <linux/clk.h>
> #include <linux/completion.h>
> +#include <linux/delay.h>
> +#include <linux/reset.h>
> #include <linux/regulator/consumer.h>
> #include <linux/iio/iio.h>
>
> @@ -53,6 +55,7 @@ struct rockchip_saradc {
> struct clk *clk;
> struct completion completion;
> struct regulator *vref;
> + struct reset_control *reset;
> const struct rockchip_saradc_data *data;
> u16 last_val;
> };
> @@ -190,6 +193,16 @@ static const struct of_device_id rockchip_saradc_match[] = {
> };
> MODULE_DEVICE_TABLE(of, rockchip_saradc_match);
>
> +/**
> + * Reset SARADC Controller.
> + */
> +static void rockchip_saradc_reset_controller(struct reset_control *reset)
> +{
> + reset_control_assert(reset);
> + usleep_range(10, 20);
> + reset_control_deassert(reset);
> +}
> +
> static int rockchip_saradc_probe(struct platform_device *pdev)
> {
> struct rockchip_saradc *info = NULL;
> @@ -218,6 +231,20 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
> if (IS_ERR(info->regs))
> return PTR_ERR(info->regs);
>
> + /*
> + * The reset should be an optional property, as it should work
> + * with old devicetrees as well
> + */
> + info->reset = devm_reset_control_get(&pdev->dev, "saradc-apb");
> + if (IS_ERR(info->reset)) {
> + ret = PTR_ERR(info->reset);
> + if (ret != -ENOENT)
> + return ret;
> +
> + dev_dbg(&pdev->dev, "no reset control found\n");
> + info->reset = NULL;
> + }
> +
> init_completion(&info->completion);
>
> irq = platform_get_irq(pdev, 0);
> @@ -252,6 +279,9 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
> return PTR_ERR(info->vref);
> }
>
> + if (info->reset)
> + rockchip_saradc_reset_controller(info->reset);
> +
> /*
> * Use a default value for the converter clock.
> * This may become user-configurable in the future.
>
[toc] | [prev] | [next] | [standalone]
| From | Rob Herring <robh@kernel.org> |
|---|---|
| Date | 2016-07-29 23:30 +0200 |
| Subject | Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it |
| Message-ID | <s0nvY-1Jz-15@gated-at.bofh.it> |
| In reply to | #1451299 |
On Wed, Jul 27, 2016 at 10:24:04PM +0800, Caesar Wang wrote: > SARADC controller needs to be reset before programming it, otherwise > it will not function properly. > > Signed-off-by: Caesar Wang <wxt@rock-chips.com> > Cc: Jonathan Cameron <jic23@kernel.org> > Cc: Heiko Stuebner <heiko@sntech.de> > Cc: Rob Herring <robh+dt@kernel.org> > Cc: linux-iio@vger.kernel.org > Cc: linux-rockchip@lists.infradead.org > Tested-by: Guenter Roeck <linux@roeck-us.net> > > --- > > Changes in v3: > - %s/devm_reset_control_get_optional()/devm_reset_control_get() > - add Guente's test tag. > > Changes in v2: > - Make the reset as an optional property, since it should work > with old devicetrees as well. > > .../bindings/iio/adc/rockchip-saradc.txt | 7 +++++ > drivers/iio/adc/Kconfig | 1 + > drivers/iio/adc/rockchip_saradc.c | 30 ++++++++++++++++++++++ > 3 files changed, 38 insertions(+) Please add acks when posting new versions. Rob
[toc] | [prev] | [next] | [standalone]
| From | Caesar Wang <sasukewxt@163.com> |
|---|---|
| Date | 2016-07-30 01:20 +0200 |
| Subject | Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it |
| Message-ID | <s0pep-2TZ-1@gated-at.bofh.it> |
| In reply to | #1452578 |
On 2016年07月30日 05:28, Rob Herring wrote: > On Wed, Jul 27, 2016 at 10:24:04PM +0800, Caesar Wang wrote: >> SARADC controller needs to be reset before programming it, otherwise >> it will not function properly. >> >> Signed-off-by: Caesar Wang <wxt@rock-chips.com> >> Cc: Jonathan Cameron <jic23@kernel.org> >> Cc: Heiko Stuebner <heiko@sntech.de> >> Cc: Rob Herring <robh+dt@kernel.org> >> Cc: linux-iio@vger.kernel.org >> Cc: linux-rockchip@lists.infradead.org >> Tested-by: Guenter Roeck <linux@roeck-us.net> >> >> --- >> >> Changes in v3: >> - %s/devm_reset_control_get_optional()/devm_reset_control_get() >> - add Guente's test tag. >> >> Changes in v2: >> - Make the reset as an optional property, since it should work >> with old devicetrees as well. >> >> .../bindings/iio/adc/rockchip-saradc.txt | 7 +++++ >> drivers/iio/adc/Kconfig | 1 + >> drivers/iio/adc/rockchip_saradc.c | 30 ++++++++++++++++++++++ >> 3 files changed, 38 insertions(+) > Please add acks when posting new versions. I didn't get your ACK when posting the V3. :-P --- Your ack on 2016-07-27 23:12 .../bindings/iio/adc/rockchip-saradc.txt | 7 +++++ Acked-by: Rob Herring<robh@kernel.org> > > Rob > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip
[toc] | [prev] | [next] | [standalone]
| From | Caesar Wang <wxt@rock-chips.com> |
|---|---|
| Date | 2016-07-30 01:20 +0200 |
| Subject | Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it |
| Message-ID | <s0peq-2TZ-9@gated-at.bofh.it> |
| In reply to | #1452578 |
On 2016年07月30日 05:28, Rob Herring wrote: > On Wed, Jul 27, 2016 at 10:24:04PM +0800, Caesar Wang wrote: >> SARADC controller needs to be reset before programming it, otherwise >> it will not function properly. >> >> Signed-off-by: Caesar Wang <wxt@rock-chips.com> >> Cc: Jonathan Cameron <jic23@kernel.org> >> Cc: Heiko Stuebner <heiko@sntech.de> >> Cc: Rob Herring <robh+dt@kernel.org> >> Cc: linux-iio@vger.kernel.org >> Cc: linux-rockchip@lists.infradead.org >> Tested-by: Guenter Roeck <linux@roeck-us.net> >> >> --- >> >> Changes in v3: >> - %s/devm_reset_control_get_optional()/devm_reset_control_get() >> - add Guente's test tag. >> >> Changes in v2: >> - Make the reset as an optional property, since it should work >> with old devicetrees as well. >> >> .../bindings/iio/adc/rockchip-saradc.txt | 7 +++++ >> drivers/iio/adc/Kconfig | 1 + >> drivers/iio/adc/rockchip_saradc.c | 30 ++++++++++++++++++++++ >> 3 files changed, 38 insertions(+) > Please add acks when posting new versions. I didn't get your ACK when posting the V3. :-P --- Your ack on 2016-07-27 23:12 .../bindings/iio/adc/rockchip-saradc.txt | 7 +++++ Acked-by: Rob Herring<robh@kernel.org> > > Rob > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip -- caesar wang | software engineer | wxt@rock-chip.com
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web