Thread (20 messages) 20 messages, 3 authors, 2026-02-27

Re: [PATCH v1 4/8] pinctrl: add NXP MC33978/MC34978 pinctrl driver

From: Linus Walleij <linusw@kernel.org>
Date: 2026-02-27 14:08:47
Also in: linux-gpio, linux-hwmon, lkml

On Fri, Feb 27, 2026 at 11:58 AM Oleksij Rempel [off-list ref] wrote:
quoted
The driver needs to report the *physical* level on the line. Then the
lines need to be flagged with GPIO_ACTIVE_LOW or GPIO_ACTIVE_HIGH
on the consumers in the device tree.
Returning the physical level is actually exactly what this code is
trying to do. I need to rewrite the comment :)
Aha OK I'm not very smart at times...
The issue is that the MC33978 hardware does not report the physical
voltage level on the pin. As per section 9.10.27 (Read switch status) of
the datasheet: "A Logic [1] means the switch is closed while a Logic [0]
is an open switch."

Because it only reports this abstract "contact status", I have to
translate it back to the actual physical voltage level (1 = High, 0 =
Low) based on the pin's current configuration:

In Switch-to-Ground (SG) mode: the status bit stays 0 when the physical
voltage on the line is High (open), and reports 1 when the physical
voltage is Low (shorted to ground).
In Switch-to-Battery (SB) mode: the exact opposite happens.
Fair enough, as long as we have a (possibly verbose...) explanation
about what is going on in the binding document I think the
proper driver behaviour will come out as obvious in the end.

Yours,
Linus Walleij
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help