From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx1.white.stw.pengutronix.de (mx1.white.stw.pengutronix.de [185.203.200.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 930693C277E; Fri, 10 Jul 2026 10:14:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.203.200.13 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783678451; cv=none; b=hiYMHF8AsQgJXvbvh8r/u7znQWLih4RePq9CcpaXQP160YDrfsADf+3AgNbGSqDOD/y89JQ7n1M5LbontPE+bc3jXILFfpTBW2sPjijuKr9SHrFZNDJDEJGOAs8lXw5NNfOqGQWe8lRsngFF/bSR6ScOwWKNCgzXbOPvUMmnq+Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783678451; c=relaxed/simple; bh=OTAE7WnJ9CBcrXuIIzKx0Kj2/O0vXkhjkz/0bIKF1j0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=V2pAtanGv9t3Id2pZMt95qLtb6am/+VqquyK2XltYZ6dz/CQNWPK9Bi0AH51+uw0+UaBr4DpeQIIK6c8R0Em+fuuiXZzZC3FyqoGoTxtdukW3GEeEUkMIb2O/pyRYuJ0t89dL/rFA/E77OHq3DXPAITNlpMbySKjFR2m92c3pp0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de; spf=pass smtp.mailfrom=pengutronix.de; arc=none smtp.client-ip=185.203.200.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pengutronix.de Received: from drehscheibe.grey.stw.pengutronix.de (drehscheibe.grey.stw.pengutronix.de [IPv6:2a0a:edc0:0:c01:1d::a2]) (Authenticated sender: relay-from-drehscheibe.grey.stw.pengutronix.de) by mx1.white.stw.pengutronix.de (Postfix) with ESMTPSA id 0799C202015; Fri, 10 Jul 2026 12:14:00 +0200 (CEST) Received: from dude04.red.stw.pengutronix.de ([2a0a:edc0:0:1101:1d::ac] helo=dude04) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wi8F5-001424-2r; Fri, 10 Jul 2026 12:13:59 +0200 Received: from ore by dude04 with local (Exim 4.98.2) (envelope-from ) id 1wi8F5-0000000AwD0-3LOR; Fri, 10 Jul 2026 12:13:59 +0200 From: Oleksij Rempel To: Guenter Roeck , Lee Jones , Linus Walleij , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Peter Rosin Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-hwmon@vger.kernel.org, linux-gpio@vger.kernel.org, David Jander Subject: [PATCH v15 0/6] mfd: Add support for NXP MC33978/MC34978 MSDI Date: Fri, 10 Jul 2026 12:13:49 +0200 Message-ID: <20260710101358.2606941-1-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.47.3 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit changes v15: - move platform part out of MFD patch changes v7: - drop gpiolib irq fix and make pinctrl more robust against NULL point dereference. This series adds support for the NXP MC33978/MC34978 Multiple Switch Detection Interface (MSDI) via the MFD framework. Architecture overview: * mfd: Core driver handling 2-frame pipelined SPI, regulator sequencing, and linear irq_domain. Harvests status bits from SPI MISO MSB. * pinctrl: Exposes 22 physical switch inputs as standard GPIOs. Proxies IRQs to the MFD domain. * hwmon: Exposes thermal limits, VBATP/VDDQ voltage boundaries, and dynamic fault alarms. * mux: Controls the 24-to-1 AMUX routing analog signals (switch voltages, temperature, VBATP) to an external ADC. Initial pinctrl implementation by David Jander, reworked into this MFD architecture. Best regards, Oleksij David Jander (1): pinctrl: add NXP MC33978/MC34978 pinctrl driver Oleksij Rempel (5): dt-bindings: pinctrl: add NXP MC33978/MC34978 MSDI platform: misc: add NXP MC33978/MC34978 core driver mfd: mc33978: Add NXP MC33978/MC34978 MSDI support hwmon: add NXP MC33978/MC34978 driver mux: add NXP MC33978/MC34978 AMUX driver .../bindings/pinctrl/nxp,mc33978.yaml | 160 ++ drivers/hwmon/Kconfig | 10 + drivers/hwmon/Makefile | 1 + drivers/hwmon/mc33978-hwmon.c | 580 ++++++++ drivers/mfd/Kconfig | 16 + drivers/mfd/Makefile | 2 + drivers/mfd/mc33978.c | 195 +++ drivers/mux/Kconfig | 14 + drivers/mux/Makefile | 2 + drivers/mux/mc33978-mux.c | 141 ++ drivers/pinctrl/Kconfig | 16 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/pinctrl-mc33978.c | 1042 +++++++++++++ drivers/platform/Kconfig | 2 + drivers/platform/Makefile | 1 + drivers/platform/misc/Kconfig | 10 + drivers/platform/misc/Makefile | 6 + drivers/platform/misc/mc33978-core.c | 1285 +++++++++++++++++ include/linux/mfd/mc33978.h | 196 +++ 19 files changed, 3680 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/nxp,mc33978.yaml create mode 100644 drivers/hwmon/mc33978-hwmon.c create mode 100644 drivers/mfd/mc33978.c create mode 100644 drivers/mux/mc33978-mux.c create mode 100644 drivers/pinctrl/pinctrl-mc33978.c create mode 100644 drivers/platform/misc/Kconfig create mode 100644 drivers/platform/misc/Makefile create mode 100644 drivers/platform/misc/mc33978-core.c create mode 100644 include/linux/mfd/mc33978.h -- 2.47.3