pwm: sun4i: pwm-backlight not working since 5.6-rc1

53 views
Skip to first unread message

Pascal Roeleven

unread,
Mar 12, 2020, 8:22:29 AM3/12/20
to Thierry Reding, Uwe Kleine-König, Maxime Ripard, Chen-Yu Tsai, Philipp Zabel, linu...@vger.kernel.org, linux-ar...@lists.infradead.org, linux-...@vger.kernel.org, linux...@googlegroups.com
Hi all,

I am working on adding an old A10 device to mainline and noticed an
issue when testing on 5.5.8 vs master.

Since 5.6-rc1, I can't control the brightness of my LCD backlight
anymore. The backlight stays on full brightness instead. I am
controlling the brightness value via sysfs for testing.

I am not sure if this is a general pwm-sun4i issue or if it is related
to the backlight. However I narrowed it down to one commit for
pwm-sun4i:

fa4d81784681a26bcf7d2a43c6ac5cf991ef28f5

If I use pwm-sun4i.c from 5b090b430d750961305030232314b6acdb0102aa on
master, the backlight works fine. Unfortunately, due to my lack of
kernel experience, I can't see how the commit above broke it.

Not sure if it helps, but the binding for the backlight is as follows:

backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm 0 100000 PWM_POLARITY_INVERTED>;
power-supply = <&reg_vbat>;
enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
brightness-levels = <0 30 40 50 60 70 80 90 100>;
default-brightness-level = <8>;
};

Please let me know if there is anything else which might be helpful to
know or anything I can test.

Regards,
Pascal

Uwe Kleine-König

unread,
Mar 12, 2020, 9:29:56 AM3/12/20
to Pascal Roeleven, Thierry Reding, Maxime Ripard, Chen-Yu Tsai, Philipp Zabel, linu...@vger.kernel.org, linux-ar...@lists.infradead.org, linux-...@vger.kernel.org, linux...@googlegroups.com
On Thu, Mar 12, 2020 at 01:22:13PM +0100, Pascal Roeleven wrote:
> Hi all,
>
> I am working on adding an old A10 device to mainline and noticed an issue
> when testing on 5.5.8 vs master.
>
> Since 5.6-rc1, I can't control the brightness of my LCD backlight anymore.
> The backlight stays on full brightness instead. I am controlling the
> brightness value via sysfs for testing.
>
> I am not sure if this is a general pwm-sun4i issue or if it is related to
> the backlight. However I narrowed it down to one commit for pwm-sun4i:
>
> fa4d81784681a26bcf7d2a43c6ac5cf991ef28f5
>
> If I use pwm-sun4i.c from 5b090b430d750961305030232314b6acdb0102aa on
> master, the backlight works fine. Unfortunately, due to my lack of kernel
> experience, I can't see how the commit above broke it.

Hmm, I cannot see how fa4d81784681a26bcf7d2a43c6ac5cf991ef28f5 breaks
this. Looking at the output of

git show -b fa4d81784681a26bcf7d2a43c6ac5cf991ef28f5

(i.e. ignoring whitespace changes) I don't see how the behaviour you're
reporting can be explained.

Are you sure that fa4d81784681a26bcf7d2a43c6ac5cf991ef28f5 is the bad
commit?

Can you install a tool to inspect register values and check how the
affected registers change if you switch kernel versions and/or pwm
settings?

(e.g.
memtool md 0x1c20e00+0xc
)

Best regards
Uwe

--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |

Pascal Roeleven

unread,
Mar 12, 2020, 11:06:27 AM3/12/20
to Uwe Kleine-König, Thierry Reding, Maxime Ripard, Chen-Yu Tsai, Philipp Zabel, linu...@vger.kernel.org, linux-ar...@lists.infradead.org, linux-...@vger.kernel.org, linux...@googlegroups.com
Thanks for your response.

Yes I am sure that is the commit. If I am on master, and replace
pwm-sun4i.c with the one from 5b090b43, everything works. If I then
apply fa4d8178, it stops working.

And strangely the output of the registers is exactly the same before and
after fa4d8178:

01c20e00: 00000050 00130014 00000000 (full brightness)
01c20e00: 00000050 00130006 00000000 (min brightness)

Even when I'm on 5b090b43 and cherry-pick fa4d8178 can I reproduce the
issue.

Uwe Kleine-König

unread,
Mar 16, 2020, 3:26:28 AM3/16/20
to Pascal Roeleven, Thierry Reding, Maxime Ripard, Chen-Yu Tsai, Philipp Zabel, linu...@vger.kernel.org, linux-ar...@lists.infradead.org, linux-...@vger.kernel.org, linux...@googlegroups.com
Hello,
Very strange. I'm out of sensible ideas. The remaining ones are:

- enable tracing in the kernel and boot with

trace_event=pwm

And then check after the problem occurred in
/sys/kernel/debug/tracing/trace if something sticks out.

- Try modifying the registers using memtool. E.g.

memtool mw 0x01c20e04 0x00130012

- Do you have equipment to check the actual output of the PWM hardware?
If so, what do you see?

Uwe Kleine-König

unread,
Mar 17, 2020, 1:32:21 PM3/17/20
to Pascal Roeleven, Thierry Reding, Maxime Ripard, Chen-Yu Tsai, Philipp Zabel, linu...@vger.kernel.org, linux-ar...@lists.infradead.org, linux-...@vger.kernel.org, linux...@googlegroups.com
Hello Pascal,
I assume the sun4i-series you sent earlier today resolves the problems
you reported here?

Pascal Roeleven

unread,
Mar 17, 2020, 1:53:02 PM3/17/20
to Uwe Kleine-König, Thierry Reding, Maxime Ripard, Chen-Yu Tsai, Philipp Zabel, linu...@vger.kernel.org, linux-ar...@lists.infradead.org, linux-...@vger.kernel.org, linux...@googlegroups.com
Hi Uwe,

Yes it does, but as Emil mentioned it's probably not complete. It's just
an RFC for now to make sure it doesn't cause a regression. Turns out the
Allwinner PWM controller is even more pickier than I thought.

Again, thank you for your help.
Reply all
Reply to author
Forward
0 new messages