Thread (9 messages) 9 messages, 2 authors, 2023-08-04

Re: [PATCH v4 0/1] Change PWM-controlled LED pin active mode and algorithm

From: Nylon Chen <hidden>
Date: 2023-08-04 06:54:55
Also in: linux-riscv, lkml

Hi Conor,

Thank you for patiently giving me advice. I appreciate your help.

Not long ago, I said, "This patch needs to be accompanied by
modifications to the pwm_sifive_apply() function to make sense."

I recently reviewed the v3 version, and after discussing it with Emil,
there are several areas that require modification. I will provide the
necessary changes for each of them:

1. polarity check. (Suggestion from Uwe)
- if (state->polarity != PWM_POLARITY_INVERSED)
+ if (state->polarity != PWM_POLARITY_NORMAL)
2. avoid using old periodperiod, not state->period
- period = max(state->period, ddata->approx_period);
- frac = DIV64_U64_ROUND_CLOSEST(num, state->period);
+ frac = DIV64_U64_ROUND_CLOSEST(num, period);
3. add a conditional check can be added in the code to set
ddata->approx_period to state->period when state->period is smaller
than ddata->approx_period
  if (state->period != ddata->approx_period) {
  ...
+       if (state->period < ddata->approx_period) {
+               ddata->approx_period = state->period;
+       }
-       ddata->approx_period = state->period;
+       period = ddata->approx_period;

I will use 'unmatched' on my end to verify again. If there are any
other errors, feel free to point them out. Thank you.

Nylon Chen [off-list ref] 於 2023年8月4日 週五 上午9:42寫道:
Hi Conor,

Conor Dooley [off-list ref] 於 2023年8月3日 週四 下午5:44寫道:
quoted
Hey Nylon,

(I yoinked the reply to 1/1 to here, as it makes more sense in this
context)
quoted
On Thu, Aug 03, 2023 at 10:15:10AM +0100, Conor Dooley wrote:
quoted
On Thu, Aug 03, 2023 at 04:57:33PM +0800, Nylon Chen wrote:
quoted
According to the circuit diagram of User LEDs - RGB described in themanual hifive-unleashed-a00.pdf[0] and hifive-unmatched-schematics-v3.pdf[1].

The behavior of PWM is acitve-high.

Removed patches: 1
New patches: (none)

Links:
- [0]:  https://sifive.cdn.prismic.io/sifive/c52a8e32-05ce-4aaf-95c8-7bf8453f8698_hifive-unleashed-a00-schematics-1.pdf
- [1]:  https://sifive.cdn.prismic.io/sifive/6a06d6c0-6e66-49b5-8e9e-e68ce76f4192_hifive-unmatched-schematics-v3.pdf
- [2]:  https://sifive.cdn.prismic.io/sifive/1a82e600-1f93-4f41-b2d8-86ed8b16acba_fu740-c000-manual-v1p6.pdf

Changed in v4:
 - Remove previous updates to the PWM algorithm.
Why? I don't recall the conclusion on the previous version being that
that patch was not needed.
I apologize for forgetting about this update earlier. Just now,
I tried to pull rebase master and noticed that other developers seem
to have made some fixes to the algorithm. Upon closer inspection, I
found that they addressed the part we previously discussed with Emil
and Uwe, such as "first pwm_apply_state."

Therefore, my instinct tells me that they have already taken care of
the issues we discussed before.
I didn't see anything in linux-next that would solve this problem of
inversion. The last meaningful change is:
        commit 334c7b13d38321e47d1a51dba0bef9f4c403ec75
        Author:     Emil Renner Berthing [off-list ref]
        AuthorDate: Wed Nov 9 12:37:24 2022 +0100
        Commit:     Thierry Reding [off-list ref]
        CommitDate: Mon Jan 30 16:42:45 2023 +0100

            pwm: sifive: Always let the first pwm_apply_state succeed

which predates your v3 by quite a bit.
quoted
I will review the conflicting parts in the pwm-sifive.c code in my v4
version once again to ensure there are no omissions. If I find any, I
will submit v5 accordingly.
And if this patch is okay in isolation, please reply here explaining
which commit fixed the algorithm, so that I can pick it up.
This patch needs to be accompanied by modifications to the
pwm_sifive_apply() function to make sense.

I will double-check and review the previous discussions to ensure
that. Thank you for your response.
quoted
Thanks,
Conor.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help