From: Baruch Siach <baruch@tkos.co.il>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: Thierry Reding <thierry.reding@gmail.com>,
Lee Jones <lee.jones@linaro.org>, Andy Gross <agross@kernel.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
Balaji Prakash J <bjagadee@codeaurora.org>,
Rob Herring <robh+dt@kernel.org>,
Robert Marko <robert.marko@sartura.hr>,
devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-pwm@vger.kernel.org
Subject: Re: [PATCH 1/3] pwm: driver for qualcomm ipq6018 pwm block
Date: Sun, 23 May 2021 18:54:08 +0300 [thread overview]
Message-ID: <87zgwltpi7.fsf@tarshish> (raw)
In-Reply-To: <20210522213524.lnb5bds5hvv2f2zi@pengutronix.de>
Hi Uwe,
Thanks for your review comments.
On Sun, May 23 2021, Uwe Kleine-König wrote:
> On Wed, May 19, 2021 at 10:48:44AM +0300, Baruch Siach wrote:
>> Driver for the PWM block in Qualcomm IPQ6018 line of SoCs. Based on
>> driver from downstream Codeaurora kernel tree. Removed support for older
>> (V1) variants because I have no access to that hardware.
>>
>> Tested on IPQ6010 based hardware.
>>
>> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
[...]
>> +static void ipq_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
>> +{
>> + struct ipq_pwm_chip *ipq_chip = to_ipq_pwm_chip(pwm->chip);
>> + unsigned offset = ipq_pwm_reg_offset(pwm, PWM_CFG_REG1);
>> + unsigned long val;
>> +
>> + val = readl(ipq_chip->mem + offset);
>> + val |= PWM_UPDATE;
>
> What is the effect of this register bit?
>
> Does the output become inactive or does it freeze at state that happens
> to be emitted when the ENABLE bit is removed?
I don't know. PWM does not work when this bit is not set here. The
original downstream driver[1] does not set this bit on disable. But it
also enables PWM unconditionally on .config. I added the 'enabled' check
in .config, and then PWM stopped working even when enabled later. It was
only by accident (excess copy/paste) that I found this workaround.
A comment on the original code says that PWM_UPDATE is "auto cleared".
This is evidently not true on my hardware (IPQ6010). This might be true
for older variants of this PWM block. Unfortunately, I have no access to
hardware documentation.
[1] https://source.codeaurora.org/quic/qsdk/oss/kernel/linux-ipq-5.4/tree/drivers/pwm/pwm-ipq.c?h=NHSS.QSDK.11.4.1.r1&id=9e4627b7088b0c06ddd910c8770274d26613de9e
baruch
--
~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
WARNING: multiple messages have this Message-ID (diff)
From: Baruch Siach <baruch@tkos.co.il>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: Thierry Reding <thierry.reding@gmail.com>,
Lee Jones <lee.jones@linaro.org>, Andy Gross <agross@kernel.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
Balaji Prakash J <bjagadee@codeaurora.org>,
Rob Herring <robh+dt@kernel.org>,
Robert Marko <robert.marko@sartura.hr>,
devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-pwm@vger.kernel.org
Subject: Re: [PATCH 1/3] pwm: driver for qualcomm ipq6018 pwm block
Date: Sun, 23 May 2021 18:54:08 +0300 [thread overview]
Message-ID: <87zgwltpi7.fsf@tarshish> (raw)
In-Reply-To: <20210522213524.lnb5bds5hvv2f2zi@pengutronix.de>
Hi Uwe,
Thanks for your review comments.
On Sun, May 23 2021, Uwe Kleine-König wrote:
> On Wed, May 19, 2021 at 10:48:44AM +0300, Baruch Siach wrote:
>> Driver for the PWM block in Qualcomm IPQ6018 line of SoCs. Based on
>> driver from downstream Codeaurora kernel tree. Removed support for older
>> (V1) variants because I have no access to that hardware.
>>
>> Tested on IPQ6010 based hardware.
>>
>> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
[...]
>> +static void ipq_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
>> +{
>> + struct ipq_pwm_chip *ipq_chip = to_ipq_pwm_chip(pwm->chip);
>> + unsigned offset = ipq_pwm_reg_offset(pwm, PWM_CFG_REG1);
>> + unsigned long val;
>> +
>> + val = readl(ipq_chip->mem + offset);
>> + val |= PWM_UPDATE;
>
> What is the effect of this register bit?
>
> Does the output become inactive or does it freeze at state that happens
> to be emitted when the ENABLE bit is removed?
I don't know. PWM does not work when this bit is not set here. The
original downstream driver[1] does not set this bit on disable. But it
also enables PWM unconditionally on .config. I added the 'enabled' check
in .config, and then PWM stopped working even when enabled later. It was
only by accident (excess copy/paste) that I found this workaround.
A comment on the original code says that PWM_UPDATE is "auto cleared".
This is evidently not true on my hardware (IPQ6010). This might be true
for older variants of this PWM block. Unfortunately, I have no access to
hardware documentation.
[1] https://source.codeaurora.org/quic/qsdk/oss/kernel/linux-ipq-5.4/tree/drivers/pwm/pwm-ipq.c?h=NHSS.QSDK.11.4.1.r1&id=9e4627b7088b0c06ddd910c8770274d26613de9e
baruch
--
~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-05-23 15:54 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-19 7:48 [PATCH 1/3] pwm: driver for qualcomm ipq6018 pwm block Baruch Siach
2021-05-19 7:48 ` Baruch Siach
2021-05-19 7:48 ` [PATCH 2/3] dt-bindings: pwm: add IPQ6018 binding Baruch Siach
2021-05-19 7:48 ` Baruch Siach
2021-05-21 1:34 ` Rob Herring
2021-05-21 1:34 ` Rob Herring
2021-05-19 7:48 ` [PATCH 3/3] arm64: dts: ipq6018: add pwm node Baruch Siach
2021-05-19 7:48 ` Baruch Siach
2021-05-22 21:35 ` [PATCH 1/3] pwm: driver for qualcomm ipq6018 pwm block Uwe Kleine-König
2021-05-22 21:35 ` Uwe Kleine-König
2021-05-23 15:54 ` Baruch Siach [this message]
2021-05-23 15:54 ` Baruch Siach
2021-05-22 21:37 ` Uwe Kleine-König
2021-05-22 21:37 ` Uwe Kleine-König
-- strict thread matches above, loose matches on Subject: below --
2022-02-07 9:30 Baruch Siach
2022-02-07 9:30 ` Baruch Siach
2022-02-07 20:22 ` kernel test robot
2022-02-07 20:22 ` kernel test robot
2022-02-08 6:51 ` Baruch Siach
2022-02-08 6:51 ` Baruch Siach
2022-02-08 18:47 ` Nathan Chancellor
2022-02-08 18:47 ` Nathan Chancellor
2023-09-15 6:25 ` Devi Priya
2023-09-15 6:25 ` Devi Priya
2023-09-15 6:36 ` Baruch Siach
2023-09-15 6:36 ` Baruch Siach
2023-09-20 4:58 ` Devi Priya
2023-09-20 4:58 ` Devi Priya
2023-09-22 6:00 ` Devi Priya
2023-09-22 6:00 ` Devi Priya
2023-09-22 8:35 ` Baruch Siach
2023-09-22 8:35 ` Baruch Siach
2023-09-22 10:56 ` Devi Priya
2023-09-22 10:56 ` Devi Priya
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=87zgwltpi7.fsf@tarshish \
--to=baruch@tkos.co.il \
--cc=agross@kernel.org \
--cc=bjagadee@codeaurora.org \
--cc=bjorn.andersson@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=lee.jones@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=robert.marko@sartura.hr \
--cc=robh+dt@kernel.org \
--cc=thierry.reding@gmail.com \
--cc=u.kleine-koenig@pengutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.