From: Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: Caesar Wang <wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
john-HooS5bfzL4hWk0Htik3J/w@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org
Subject: Re: [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it
Date: Sun, 21 Aug 2016 21:01:19 +0100 [thread overview]
Message-ID: <b25cda21-0e24-de46-fb23-2142135eca03@kernel.org> (raw)
In-Reply-To: <7e84e59d-48ee-3e17-feff-8e57ae7c2b4b-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Something in here got it blocked by the lists. I'm guessing it
was the characters my email client didn't like so trying again
with them dropped.
Jonathan
On 21/08/16 20:11, Jonathan Cameron wrote:
> On 15/08/16 19:10, Caesar Wang wrote:
>>
>>> On 27/07/16 15:24, Caesar Wang wrote:
>>>> SARADC controller needs to be reset before programming it, otherwise
>>>> it will not function properly.
>>>>
>>>> Signed-off-by: Caesar Wang <wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
>>>> Cc: Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>>>> Cc: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
>>>> Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>>>> Cc: linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>>>> Cc: linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
>>>> Tested-by: Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
>>>>
>>> Hi
>>>
>>> Patch is fine (I'll fix up the wording issue) however...
>>>
>>> I'm not clear on the severity of the issue. Is this something
>>> we should be pushing for stable?
>>
>> I think that should be pushing for stable, since the common isssue for the ADC is initially enabled on loader,
>> and only disabled after the first read.
>>
>> cat /sys/class/hwmon/hwmon1/device/temp1_input
>> cat: /sys/class/hwmon/hwmon1/device/temp1_input: Connection timed out
>>
>> The kernel log shows:
>>
>> [ 32.209451] read channel() error: -110
>> ..
>>
>> Also, for my experience. Some other reasons caused the adc (controller) glitch for the kernel side.
> Fine. So now the only question is who is handling it. The
> fix is useless (I think) without the dts changes to support it.
> Normally we'd route the dts and driver changes separately as it
> should not matter, but here I think I'd prefer it if the whole
> thing went via rockchip -> arm-soc tree so it goes in together.
>
> Hence (with wording fixed)
>
> Acked-by: Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Cc: <Stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
> (for the driver patch).
>
> If people want me to take it via IIO then I'll need acks for
> the dts changes with explicit agreement that they can be marked
> for stable. Would image Heiko, these would come from you.
>
> Thanks,
>
> Jonathan
>>
>> -
>> Caesar
>>
>>> Jonathan
>>>> ---
>>>>
>>>> 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.
>>>>
>>>
>>> _______________________________________________
>>> Linux-rockchip mailing list
>>> Linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
>>> http://lists.infradead.org/mailman/listinfo/linux-rockchip
>>
>>
>> --
>> caesar wang | software engineer | wxt-TNX95d0MmH73oGB3hsPCZA@public.gmane.org
>>
>
next prev parent reply other threads:[~2016-08-21 20:01 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-27 14:24 [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it Caesar Wang
2016-07-27 14:24 ` [PATCH v3 2/4] arm64: dts: rockchip: add the saradc for rk3399 Caesar Wang
[not found] ` <1469629447-544-2-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-07-27 14:50 ` Guenter Roeck
2016-08-24 9:32 ` Heiko Stübner
2016-07-27 14:24 ` [PATCH v3 4/4] arm: dts: rockchip: add reset node for the exist saradc SoCs Caesar Wang
[not found] ` <1469629447-544-4-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-07-27 14:52 ` Guenter Roeck
2016-08-22 17:20 ` Heiko Stuebner
2016-08-23 18:09 ` Jonathan Cameron
2016-07-27 14:47 ` [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it Peter Meerwald-Stadler
[not found] ` <alpine.DEB.2.02.1607271642110.22647-jW+XmwGofnusTnJN9+BGXg@public.gmane.org>
2016-07-29 23:21 ` Caesar Wang
2016-07-27 14:50 ` Guenter Roeck
[not found] ` <1469629447-544-1-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-07-27 14:24 ` [PATCH v3 3/4] arm64: dts: rockchip: add reset saradc node for rk3368 SoCs Caesar Wang
[not found] ` <1469629447-544-3-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-07-27 14:51 ` Guenter Roeck
2016-08-22 17:19 ` Heiko Stuebner
2016-08-23 18:08 ` Jonathan Cameron
2016-07-29 21:28 ` [PATCH v3 1/4] iio: adc: rockchip_saradc: reset saradc controller before programming it Rob Herring
2016-07-29 23:13 ` Caesar Wang
2016-07-29 23:13 ` Caesar Wang
2016-08-15 17:41 ` Jonathan Cameron
[not found] ` <5b6602f2-23f9-e5e5-8479-cddd365f7e71-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-08-15 17:43 ` Jonathan Cameron
[not found] ` <57B20584.3090502@rock-chips.com>
[not found] ` <57B20584.3090502-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-08-21 19:11 ` Jonathan Cameron
[not found] ` <7e84e59d-48ee-3e17-feff-8e57ae7c2b4b-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-08-21 20:01 ` Jonathan Cameron [this message]
[not found] ` <b25cda21-0e24-de46-fb23-2142135eca03-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-08-22 17:19 ` Heiko Stuebner
2016-08-23 18:08 ` Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b25cda21-0e24-de46-fb23-2142135eca03@kernel.org \
--to=jic23-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org \
--cc=john-HooS5bfzL4hWk0Htik3J/w@public.gmane.org \
--cc=linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).