From: Conor Dooley <conor@kernel.org>
To: Oleksij Rempel <o.rempel@pengutronix.de>
Cc: Guenter Roeck <linux@roeck-us.net>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Lee Jones <lee@kernel.org>,
Peter Rosin <peda@axentia.se>, Linus Walleij <linusw@kernel.org>,
kernel@pengutronix.de, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, linux-hwmon@vger.kernel.org,
linux-gpio@vger.kernel.org, David Jander <david@protonic.nl>
Subject: Re: [PATCH v4 1/6] dt-bindings: pinctrl: add NXP MC33978/MC34978 MSDI
Date: Fri, 13 Mar 2026 17:16:31 +0000 [thread overview]
Message-ID: <20260313-shortwave-baguette-5914f1af60f8@spud> (raw)
In-Reply-To: <20260313140218.1213393-2-o.rempel@pengutronix.de>
[-- Attachment #1: Type: text/plain, Size: 5392 bytes --]
On Fri, Mar 13, 2026 at 03:02:12PM +0100, Oleksij Rempel wrote:
> Add device tree binding documentation for the NXP MC33978 and MC34978
> Multiple Switch Detection Interface (MSDI) devices.
>
> These ICs monitor up to 22 mechanical switch contacts in automotive and
> industrial environments. They provide configurable wetting currents to
> break through contact oxidation and feature extensive hardware
> protection against thermal overload and voltage transients (load
> dumps/brown-outs).
>
> The device interfaces via SPI. While it provides multiple functions, its
> primary hardware purpose is pin/switch control. To accurately represent
> the hardware as a single physical integrated circuit without unnecessary
> DT overhead, all functions are flattened into a single pinctrl node:
> - pinctrl: Exposing the 22 switch inputs (SG/SP pins) as a GPIO controller
> and managing their pin configurations.
> - hwmon: Exposing critical hardware faults (OT, OV, UV) and static
> voltage/temperature thresholds.
> - mux: Controlling the 24-to-1 analog multiplexer to route pin voltages,
> internal temperature, or battery voltage to an external SoC ADC.
>
> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
>> .../bindings/pinctrl/nxp,mc33978.yaml | 148 ++++++++++++++++++
> 1 file changed, 148 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/pinctrl/nxp,mc33978.yaml
>
> diff --git a/Documentation/devicetree/bindings/pinctrl/nxp,mc33978.yaml b/Documentation/devicetree/bindings/pinctrl/nxp,mc33978.yaml
> new file mode 100644
> index 000000000000..58a641a7c615
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pinctrl/nxp,mc33978.yaml
> @@ -0,0 +1,148 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/pinctrl/nxp,mc33978.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NXP MC33978/MC34978 Multiple Switch Detection Interface
> +
> +maintainers:
> + - David Jander <david@protonic.nl>
> + - Oleksij Rempel <o.rempel@pengutronix.de>
> +
> +description: |
> + The MC33978 and MC34978 are Multiple Switch Detection Interface (MSDI)
> + devices with 22 switch inputs, integrated fault detection, and analog
> + multiplexer (AMUX) for voltage/temperature monitoring.
> +
> + Pin numbering:
> + - Pins 0-13: SG0-SG13 (Switch-to-Ground inputs). These pins monitor
> + contacts closed to ground and typically require GPIO_ACTIVE_LOW
> + flags when used as digital inputs.
> + - Pins 14-21: SP0-SP7 (Programmable inputs). These can be configured
> + as SG (Switch-to-Ground) or SB (Switch-to-Battery) inputs. SB
> + inputs monitor contacts closed to the battery voltage and typically
> + require GPIO_ACTIVE_HIGH flags when used as digital inputs.
> +
> + Output Emulation:
> + The hardware lacks standard push-pull output drivers. Outputs are emulated
> + by toggling the programmable wetting current sources (acting as pull-ups
> + or pull-downs) and the hardware tri-state registers. Because of this
> + physical constraint:
> + - Consumers using pins as outputs MUST flag them with GPIO_OPEN_DRAIN or
> + GPIO_OPEN_SOURCE in the device tree.
> + - Push-pull configurations are physically unsupported.
> + - The active polarity depends entirely on the external circuit (e.g., how
> + an LED is wired) and must be flagged accordingly by the consumer.
> +
> +allOf:
> + - $ref: /schemas/spi/spi-peripheral-props.yaml#
> +
> +properties:
> + compatible:
> + enum:
> + - nxp,mc33978
> + - nxp,mc34978
What's different about these that a fallback is not suitable?
> +
> + reg:
> + maxItems: 1
> + description: SPI chip select number
> +
> + spi-max-frequency:
> + maximum: 8000000
> + description: Maximum SPI clock frequency (up to 8 MHz)
> +
> + interrupts:
> + maxItems: 1
> + description:
> + INT_B pin interrupt. Active-low, indicates pin state changes or
> + fault conditions.
> +
> + interrupt-controller: true
> +
> + '#interrupt-cells':
> + const: 2
> + description:
> + First cell is the IRQ number (0-21 for pins, 22 for faults).
> + Second cell is the trigger type (IRQ_TYPE_* from interrupt-controller.h).
> +
> + '#mux-control-cells':
> + const: 0
> + description:
> + Present if the device AMUX selector is used as a mux provider.
> + Consumers (e.g. io-channel-mux) must provide settle-time-us for the
> + external ADC sampling path.
> +
> + vddq-supply:
> + description: Digital supply voltage
> +
> + vbatp-supply:
> + description: Battery/power supply
> +
> + gpio-controller: true
> +
> + '#gpio-cells':
> + const: 2
> +
> + ngpios:
> + const: 22
> +
> +patternProperties:
> + '^.*-grp$':
> + type: object
> + $ref: /schemas/pinctrl/pincfg-node.yaml#
> + additionalProperties: false
> + description: Pin configuration subnodes.
> + properties:
> + pins: true
This seems overly permissive, think it should only allow the couple of
options that your hardware has. Probably just make it an enum? Shouldn't
have to check the driver to know what the acceptable pin names are.
Cheers,
Conor.
pw-bot: changes-requested
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2026-03-13 17:16 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-13 14:02 [PATCH v4 0/6] mfd: Add support for NXP MC33978/MC34978 MSDI Oleksij Rempel
2026-03-13 14:02 ` [PATCH v4 1/6] dt-bindings: pinctrl: add " Oleksij Rempel
2026-03-13 17:16 ` Conor Dooley [this message]
2026-03-16 10:49 ` Oleksij Rempel
2026-03-16 11:02 ` Conor Dooley
2026-03-13 14:02 ` [PATCH v4 2/6] mfd: add NXP MC33978/MC34978 core driver Oleksij Rempel
2026-03-13 14:02 ` [PATCH v4 3/6] pinctrl: core: Make pin group callbacks optional Oleksij Rempel
2026-03-13 14:02 ` [PATCH v4 4/6] pinctrl: add NXP MC33978/MC34978 pinctrl driver Oleksij Rempel
2026-03-13 14:02 ` [PATCH v4 5/6] hwmon: add NXP MC33978/MC34978 driver Oleksij Rempel
2026-03-13 14:02 ` [PATCH v4 6/6] mux: add NXP MC33978/MC34978 AMUX driver Oleksij Rempel
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=20260313-shortwave-baguette-5914f1af60f8@spud \
--to=conor@kernel.org \
--cc=conor+dt@kernel.org \
--cc=david@protonic.nl \
--cc=devicetree@vger.kernel.org \
--cc=kernel@pengutronix.de \
--cc=krzk+dt@kernel.org \
--cc=lee@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=o.rempel@pengutronix.de \
--cc=peda@axentia.se \
--cc=robh@kernel.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