From nobody Wed Jun 10 08:25:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 4C2601E511; Sat, 16 May 2026 17:18:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; cv=none; b=mTYy5TBFkYkt3O3lgzA9TLteTPcTgjuI1ZaphCYYqlRyOP4tSKlaT7we9VzurHvHEfbILwxaabalGnC3nCbaw9VPtVq7q0l4C5N6WGz3xmfj/vTjKbhDdJvKDWhgr9fmhOFPe+MWXr2YrxFRatMJ0B+B9Lg5eixrrdqs5PuwJpE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; c=relaxed/simple; bh=KQ2jlEW1eOaS76algkR9vPolQCqOkVsbm0MXBmfkdXw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=goS+LeX1IPXeNpq3apQuODP5FAv/5UygFeR7TyAHlieA/LUNw2NfKlo9nYD0kFTOMbKBvpl9MiPobBeWx02tG3gGdA/6tFjUtc1JDhj5YfAFD6MNtoub6MGrcYNZ014V9lAQz5QEkGCxX0dFpCh9trHpZ3ol+uk4S9KWGLN5DTg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=f7IRgHVM; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="f7IRgHVM" Received: by smtp.kernel.org (Postfix) with ESMTPS id 0BE7CC2BCC7; Sat, 16 May 2026 17:18:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778951902; bh=KQ2jlEW1eOaS76algkR9vPolQCqOkVsbm0MXBmfkdXw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=f7IRgHVMAr6LYFOcuACeKSyfKbR+gvec+Z6m2nhCkYC9LxpNQvsq/rFhvqwnmlSXS j/i7Sx4kFkgJxK/wNq/ElrMUagB4vWohbv9IsqkqwEUZCUGwgwkcP0TkldxnhVzjCQ SYOoEqIww40ByBVw8J0HUv6BX1Si4CnjeO2q01BltAv3bF8SLHYOfMGLk1Wj5IwjN+ a0DC09voLpT5zOc1oS+6ESkE9XQ3qxOFdPab7zYYjWmdLs82EjSbNOsIWgJws9jIXH UQaoxBz20/0qKeK9HmFsTpSA4BDY1ftd3BPfGxYxUV8XnOaVXQNglT2zJngh8yMXV+ Wq7lN0fHDSZIQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id ED9F8CD4F3C; Sat, 16 May 2026 17:18:21 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Sat, 16 May 2026 19:17:01 +0200 Subject: [PATCH v6 1/8] dt-bindings: mfd: khadas: Add new compatible for Khadas VIM4 MCU 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: quoted-printable Message-Id: <20260516-add-mcu-fan-khadas-vim4-v6-1-cccc9b61f465@aliel.fr> References: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> In-Reply-To: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> To: Neil Armstrong , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andi Shyti , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Beniamino Galvani , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Liam Girdwood , Mark Brown Cc: linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org, Ronald Claveau , Conor Dooley X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1479; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=eCKy2chdqFWw8sHr2BRKBa6cnfiYWQdTnn103pMuJ+4=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQxbHsotaN+osbkya8Odm5qkHogoL5rxT1tLdtr5/rsp2z gyOFstJHaUsDGJcDLJiiiz9cy1PvLt89MzXPeopMHNYmUCGMHBxCsBEFiYx/OFbVJeWnXT+wjm7 +bLOtt/2Oua26K8R/n3I7OBuDvEozjpGhsbDs7OVJ+65/2vi9cBVj7Z1Z9dnqdQ6u0m7Rq+ZlGq fyQUA X-Developer-Key: i=linux-kernel-dev@aliel.fr; a=openpgp; fpr=DFD863F61375BF917F0012173953305EF1D0EC3E X-Endpoint-Received: by B4 Relay for linux-kernel-dev@aliel.fr/default with auth_id=744 X-Original-From: Ronald Claveau Reply-To: linux-kernel-dev@aliel.fr From: Ronald Claveau The Khadas VIM4 MCU register is slightly different from previous boards' MCU. This board also features a switchable power source for its fan. Acked-by: Conor Dooley Signed-off-by: Ronald Claveau --- Documentation/devicetree/bindings/mfd/khadas,mcu.yaml | 18 +++++++++++++++= +++ 1 file changed, 18 insertions(+) diff --git a/Documentation/devicetree/bindings/mfd/khadas,mcu.yaml b/Docume= ntation/devicetree/bindings/mfd/khadas,mcu.yaml index 084960fd5a1fd..1f135618e3b6f 100644 --- a/Documentation/devicetree/bindings/mfd/khadas,mcu.yaml +++ b/Documentation/devicetree/bindings/mfd/khadas,mcu.yaml @@ -18,6 +18,7 @@ properties: compatible: enum: - khadas,mcu # MCU revision is discoverable + - khadas,vim4-mcu # Different MCU variant, not discoverable =20 "#cooling-cells": # Only needed for boards having FAN control feature const: 2 @@ -25,10 +26,27 @@ properties: reg: maxItems: 1 =20 + fan-supply: + description: Phandle to the regulator that powers the fan. + $ref: /schemas/types.yaml#/definitions/phandle + required: - compatible - reg =20 +allOf: + - if: + properties: + compatible: + contains: + const: khadas,vim4-mcu + then: + required: + - fan-supply + else: + properties: + fan-supply: false + additionalProperties: false =20 examples: --=20 2.49.0 From nobody Wed Jun 10 08:25:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 5BFE92F7F1B; Sat, 16 May 2026 17:18:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; cv=none; b=IISxaPI6sO5HhpBDThLMnRAKOE4//mPLgqGwIjY5djzMJDraHmtpTcwFy4MPDe6oegNMP8Xv3BVthOewT2yeGTTSJfBpKleXMEaAoImhSV6zAy1iWam2zUCMm1c8KsV1fqosrR9J6WreTU5t/yuCwbaxaPOJCbMdWKSeJdjckI4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; c=relaxed/simple; bh=Jnv894IU9wblCqhm+wVe2Z5FBt6aG6TawzV3npnKdrc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=H23srvnEEwNA85UB91FB88j0WtnZqlPsOuaHj4SoE4qpVIDCu0N4rONfFKmlOsRjoY7pvJ8UEUl3P/A2/oWYPHbfl7zL3BN0PnsXUXUPJ2eAb8YiNJVl2cb8va1jxLC7dIRkvnOhzwJbbAOtvQTsF08QE+Do384hNWhIzoxzPto= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RQGY2Gbm; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="RQGY2Gbm" Received: by smtp.kernel.org (Postfix) with ESMTPS id 1CB78C4AF0C; Sat, 16 May 2026 17:18:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778951902; bh=Jnv894IU9wblCqhm+wVe2Z5FBt6aG6TawzV3npnKdrc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=RQGY2GbmRbfMXLB+jQ1nJotT8Kk/SRKJzgIcXaP74wd/3Dp1uF+dhb1Z9fc6MlQKK yNVc10a5ZGWy2v2+tw3/f2YtXQSVhfniiokcJJq8u/I9bV6DVg/PMLA54uNOjJDm/C zmolu8wNVGFrTdJb0c1yHPMD0XQoGTCZo3dL6yqwD0+Ke3sAw1RV3kFhE8hRhRoXtN OZdFCBJCAeJzd00H6DZu9TVqtAFJ8rvvJWNvbZswxGlE49ByTBP++v06k2lSdvGCR4 PMo0nSSgbX1opJiE++QI38kUmCR4i6e4qbqs4epOfJWJy6qrOnxfdAvlJxggkHONgW WRZ9+OeDxFAXg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0B564CD4F21; Sat, 16 May 2026 17:18:22 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Sat, 16 May 2026 19:17:02 +0200 Subject: [PATCH v6 2/8] dt-bindings: i2c: amlogic: Add compatible for T7 SOC 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: quoted-printable Message-Id: <20260516-add-mcu-fan-khadas-vim4-v6-2-cccc9b61f465@aliel.fr> References: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> In-Reply-To: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> To: Neil Armstrong , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andi Shyti , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Beniamino Galvani , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Liam Girdwood , Mark Brown Cc: linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1268; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=dSGVBP6Kwid380fHwj/yvIcbmVkBngDKwALA0QzKSyw=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQxbHskuPVK5/bflaERHSuDZrodorkz27U+ztuf9OMuFfd HVnrjxTRykLgxgXg6yYIkv/XMsT7y4fPfN1j3oKzBxWJpAhDFycAnCTORkZ7r1Tkn0+McCe/WPz X9e2c+84Pm4L4PFh3jPJQJN51ukKd4b/QQG6nQp/5heeDeL/Lmw5Rzp/D0Nqw6sV/tyKJ6Tn/vF lAwA= X-Developer-Key: i=linux-kernel-dev@aliel.fr; a=openpgp; fpr=DFD863F61375BF917F0012173953305EF1D0EC3E X-Endpoint-Received: by B4 Relay for linux-kernel-dev@aliel.fr/default with auth_id=744 X-Original-From: Ronald Claveau Reply-To: linux-kernel-dev@aliel.fr From: Ronald Claveau Add the T7 SOC compatible which fallback to AXG compatible. Acked-by: Rob Herring (Arm) Signed-off-by: Ronald Claveau --- .../devicetree/bindings/i2c/amlogic,meson6-i2c.yaml | 13 +++++++++= ---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/i2c/amlogic,meson6-i2c.yaml = b/Documentation/devicetree/bindings/i2c/amlogic,meson6-i2c.yaml index c4cc8af182807..7b59b60b62e5b 100644 --- a/Documentation/devicetree/bindings/i2c/amlogic,meson6-i2c.yaml +++ b/Documentation/devicetree/bindings/i2c/amlogic,meson6-i2c.yaml @@ -16,10 +16,15 @@ allOf: =20 properties: compatible: - enum: - - amlogic,meson6-i2c # Meson6, Meson8 and compatible SoCs - - amlogic,meson-gxbb-i2c # GXBB and compatible SoCs - - amlogic,meson-axg-i2c # AXG and compatible SoCs + oneOf: + - items: + - enum: + - amlogic,t7-i2c + - const: amlogic,meson-axg-i2c + - enum: + - amlogic,meson6-i2c # Meson6, Meson8 and compatible SoCs + - amlogic,meson-gxbb-i2c # GXBB and compatible SoCs + - amlogic,meson-axg-i2c # AXG and compatible SoCs =20 reg: maxItems: 1 --=20 2.49.0 From nobody Wed Jun 10 08:25:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 6ED183E6DED; Sat, 16 May 2026 17:18:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; cv=none; b=d3oOQYMTJXQkHfvSDfDO/shgnZNEHB9Ek7A7zTUFMTPBHbjNxAOpyLzY9AQtfSIuB8phsIW7c9Bx6MNLMI1Ro60SpO6uDFXSSnhbzRmmbjcEnsd62lDQrDQXq+oAdhyCW1QBsUe1lWg6sSjYMEHIrRBCA2e/WZlg7/wY6b/4dA4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; c=relaxed/simple; bh=fQprm5lT4/q5e31EEIMxahir4PgMeiEdEnhwiQk+Iz8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HQMXZ6Jnheiu2Q3LHMqOG378wl+d38xqRFcTiRLJ+glaRUFVE1Yh+BHaftN9k7AH+6X9ci/ugCDAtt189PsIHyt/bhllFt/1YO6yQA1AZ/VKbdcQ58uwv6IpeO7yyrM3WFtqIdkrTJcPV7jhawF2B0quWGy9D1Rbz0erRR3Srdg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gmKZpATt; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gmKZpATt" Received: by smtp.kernel.org (Postfix) with ESMTPS id 2CF21C2BCB8; Sat, 16 May 2026 17:18:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778951902; bh=fQprm5lT4/q5e31EEIMxahir4PgMeiEdEnhwiQk+Iz8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=gmKZpATtNzVlmzlLmpJPC6Mb+Koqivmm04ZypsFiGb+z/Qf/6FGH9qeTYDBd5u2Hi nA5Bo1KK81WJB0/O4NWY3C4GwyC0cITpW2DDJSZY4fggsm4DenX5Io58jGlfRdGGen 64vvyTQ/IBqMzkX3ZjNa8uNzT1sxopvKWuAojuywrbkE4q6fjbLBYADXZiDWpNPjKJ 2nj3WIjvLm9sHlmar39E+lLIaHdeGMkL5iBh+5yABtC3JCXBVGzOlgyW61PZDgSbhg 22W/9DFdw73xiwwaDk287Xoe11oBapgydElZV6tNfS9ko6hHlhUzO45avNdIGzniuk bd+hmIJg/vHEQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 21246CD4F48; Sat, 16 May 2026 17:18:22 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Sat, 16 May 2026 19:17:03 +0200 Subject: [PATCH v6 3/8] mfd: khadas-mcu: Add per-variant configuration infrastructure and VIM4 support 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: quoted-printable Message-Id: <20260516-add-mcu-fan-khadas-vim4-v6-3-cccc9b61f465@aliel.fr> References: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> In-Reply-To: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> To: Neil Armstrong , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andi Shyti , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Beniamino Galvani , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Liam Girdwood , Mark Brown Cc: linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2637; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=r0EaeA9eg7+unwS/0v+HwFnfoqRYAmUrsRuBj7hZ56g=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQxbHsiu/VxiVdtyaeW2D6eGQ21ce3tix9eXb5g2CRx50v sq68FhLoKOUhUGMi0FWTJGlf67liXeXj575ukc9BWYOKxPIEAYuTgGYyOsMhr/CdrU+15Y8WlzK duQzVyjT9ELZ+7XzpgpXKkxf8V3B3UKY4X98mqvdvedeTndzYlxaZ3mF2da8U5rV8/X03NNL7i/ h/csBAA== X-Developer-Key: i=linux-kernel-dev@aliel.fr; a=openpgp; fpr=DFD863F61375BF917F0012173953305EF1D0EC3E X-Endpoint-Received: by B4 Relay for linux-kernel-dev@aliel.fr/default with auth_id=744 X-Original-From: Ronald Claveau Reply-To: linux-kernel-dev@aliel.fr From: Ronald Claveau Introduce a per-variant configuration structure (khadas_mcu_data) holding the regmap config and MFD cells, selected at probe time via the of_device_id match data. This makes adding other variants straightforward. Add an enum khadas_mcu_type used as value to match. Also introduce khadas_mcu_fan_pdata to pass fan register address and maximum level to the fan sub-driver, removing the hardcoded constants. Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- include/linux/mfd/khadas-mcu.h | 44 ++++++++++++++++++++++++++++++++++++++= ++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/include/linux/mfd/khadas-mcu.h b/include/linux/mfd/khadas-mcu.h index a99ba2ed0e4e0..88de49b78f5e6 100644 --- a/include/linux/mfd/khadas-mcu.h +++ b/include/linux/mfd/khadas-mcu.h @@ -70,6 +70,13 @@ #define KHADAS_MCU_WOL_INIT_START_REG 0x87 /* WO */ #define KHADAS_MCU_CMD_FAN_STATUS_CTRL_REG 0x88 /* WO */ =20 +/* VIM4 specific registers */ +#define KHADAS_MCU_VIM4_REST_CONF_REG 0x2c /* WO - reset EEPROM */ +#define KHADAS_MCU_VIM4_LED_ON_RAM_REG 0x89 /* WO - LED volatile */ +#define KHADAS_MCU_VIM4_FAN_CTRL_REG 0x8a /* WO */ +#define KHADAS_MCU_VIM4_WDT_EN_REG 0x8b /* WO */ +#define KHADAS_MCU_VIM4_SYS_RST_REG 0x91 /* WO */ + enum { KHADAS_BOARD_VIM1 =3D 0x1, KHADAS_BOARD_VIM2, @@ -82,10 +89,43 @@ enum { * struct khadas_mcu - Khadas MCU structure * @device: device reference used for logs * @regmap: register map + * @data: pointer to variant-specific config */ struct khadas_mcu { - struct device *dev; - struct regmap *regmap; + struct device *dev; + struct regmap *regmap; + const struct khadas_mcu_data *data; +}; + +/** + * struct khadas_mcu_data - per-variant configuration + * @regmap_config: regmap configuration + * @cells: MFD sub-devices + * @ncells: number of sub-devices + * @fan_cells: MFD fan sub-devices + * @nfan_cells: number of fan sub-devices + */ +struct khadas_mcu_data { + const struct regmap_config *regmap_config; + const struct mfd_cell *cells; + int ncells; + const struct mfd_cell *fan_cells; + int nfan_cells; +}; + +/** + * struct khadas_mcu_fan_pdata - fan sub-driver configuration + * @fan_reg: register address to write the fan level + * @max_level: maximum fan level + */ +struct khadas_mcu_fan_pdata { + unsigned int fan_reg; + unsigned int max_level; +}; + +enum khadas_mcu_type { + KHADAS_MCU_GENERIC, /* VIM1/2/3, Edge, Edge-V */ + KHADAS_MCU_VIM4, }; =20 #endif /* MFD_KHADAS_MCU_H */ --=20 2.49.0 From nobody Wed Jun 10 08:25:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 74EE23E8C60; Sat, 16 May 2026 17:18:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; cv=none; b=KIGBlFJ0gsYqzZZ6umuWsItj3TaGQeqKUaijUwlmNT4D0padN1/mHHSJ1ENWYO96DRibYIDqkOlJ0uIEz6xBOBk7lbIVrYXaJoS2hGqAetGjmqPNSXd/6y32vcGi+tPJYYZMP5PrlimNGYh09ACgphhV8mDPAkgP3ePs6sXtQIM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; c=relaxed/simple; bh=vcddWAKBUUc53BVyhxK72EFohe0DoJxhoQgjf6bXTGA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kJc4/FJ1BaVb6XLYuAV8zC1c9YCO5vhk4keu8rrfjCBkJ6NsAyw4VoAhAixCoU4ib/Y4xHG34henyNXd4i6tnsHa3+H0bHM/1l3bhRaKWaRMDAp+W+WlNa6YWHZV6jMapBIetypqa4dZWKmx7rY180VQNos764DWcNcTLVKoLsE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Md5MwT7A; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Md5MwT7A" Received: by smtp.kernel.org (Postfix) with ESMTPS id 4094AC2BCF7; Sat, 16 May 2026 17:18:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778951902; bh=vcddWAKBUUc53BVyhxK72EFohe0DoJxhoQgjf6bXTGA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Md5MwT7AgzVQWQH08Fe1gqrytP8Plx3AUNPVDaB4vDelIBfUj16Ruzd4NOfuJSboD hABi57WS+BW1n4W+49K1fjBnKNNOkn1C3GQLmzEJANrahC+8JgLMIO2MlXz/bKrJv4 dRiKCEWChQGdFLpIpHuJohUNjc4EmVB6wiNLewJROMbiOO0Jt6FL9V628lMzphhP8Y xF5rkQj7oE3AHDCS6+5RRCPVm3GWsoI8GCaSfJRXbEj+SICYmBcRX5Zod0I9f6lsC8 byF9wv+E9Ua5VgCLhHLRo9fikN4sngQIcqg8FCnJxwEcVbQqTesVhOJ/Y5CcEn+Q0y fxEW/mK+RN48A== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 355A7CD4F25; Sat, 16 May 2026 17:18:22 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Sat, 16 May 2026 19:17:04 +0200 Subject: [PATCH v6 4/8] mfd: khadas-mcu: Add support for VIM4 MCU variant 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: quoted-printable Message-Id: <20260516-add-mcu-fan-khadas-vim4-v6-4-cccc9b61f465@aliel.fr> References: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> In-Reply-To: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> To: Neil Armstrong , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andi Shyti , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Beniamino Galvani , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Liam Girdwood , Mark Brown Cc: linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5516; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=qs6BYksNaYQxO8cRXhUkAsFpyxmfuBDf4W1LAvds4Ks=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQxbHsmur+KI+ti9sl51ikNlclTvvcIuMoW3Mq513o7hco mQfL9LqKGVhEONikBVTZOmfa3ni3eWjZ77uUU+BmcPKBDKEgYtTACbyNZ/hryDb6UrV5re6b/Lr +6SSbk89nT2/X0Uicuf1C6v+qK7abcvIMLti4++pTW83n8wp6BXZMXG2fflryy/7N4nI2TQa/1Z 7zwYA X-Developer-Key: i=linux-kernel-dev@aliel.fr; a=openpgp; fpr=DFD863F61375BF917F0012173953305EF1D0EC3E X-Endpoint-Received: by B4 Relay for linux-kernel-dev@aliel.fr/default with auth_id=744 X-Original-From: Ronald Claveau Reply-To: linux-kernel-dev@aliel.fr From: Ronald Claveau Refactor probe() to use per-variant khadas_mcu_data instead of hardcoded globals. Add dedicated regmap configuration and device data for the VIM4 MCU, with its own volatile/writeable registers. Add the fan control register (0=E2=80=93100 levels vs 0=E2=80=933 for previous supported boards). Add a new compatible string "khadas,vim4-mcu". Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- drivers/mfd/khadas-mcu.c | 119 +++++++++++++++++++++++++++++++++++++++++--= ---- 1 file changed, 104 insertions(+), 15 deletions(-) diff --git a/drivers/mfd/khadas-mcu.c b/drivers/mfd/khadas-mcu.c index ba981a7886921..7bc538232a445 100644 --- a/drivers/mfd/khadas-mcu.c +++ b/drivers/mfd/khadas-mcu.c @@ -75,15 +75,91 @@ static const struct regmap_config khadas_mcu_regmap_con= fig =3D { .cache_type =3D REGCACHE_MAPLE, }; =20 -static struct mfd_cell khadas_mcu_fan_cells[] =3D { +static const struct khadas_mcu_fan_pdata khadas_mcu_fan_pdata =3D { + .fan_reg =3D KHADAS_MCU_CMD_FAN_STATUS_CTRL_REG, + .max_level =3D 3, /* Fan speed: 0 =3D off, 1 =3D low, 2 =3D medium, 3 =3D= high */ +}; + +static const struct mfd_cell khadas_mcu_fan_cells[] =3D { /* VIM1/2 Rev13+ and VIM3 only */ - { .name =3D "khadas-mcu-fan-ctrl", }, + { + .name =3D "khadas-mcu-fan-ctrl", + .platform_data =3D &khadas_mcu_fan_pdata, + .pdata_size =3D sizeof(khadas_mcu_fan_pdata), + }, }; =20 -static struct mfd_cell khadas_mcu_cells[] =3D { +static const struct mfd_cell khadas_mcu_cells[] =3D { { .name =3D "khadas-mcu-user-mem", }, }; =20 +static const struct khadas_mcu_data khadas_mcu_data =3D { + .regmap_config =3D &khadas_mcu_regmap_config, + .cells =3D khadas_mcu_cells, + .ncells =3D ARRAY_SIZE(khadas_mcu_cells), + .fan_cells =3D khadas_mcu_fan_cells, + .nfan_cells =3D ARRAY_SIZE(khadas_mcu_fan_cells), +}; + +static bool khadas_mcu_vim4_reg_volatile(struct device *dev, unsigned int = reg) +{ + switch (reg) { + case KHADAS_MCU_PWR_OFF_CMD_REG: + case KHADAS_MCU_VIM4_REST_CONF_REG: + case KHADAS_MCU_WOL_INIT_START_REG: + case KHADAS_MCU_VIM4_LED_ON_RAM_REG: + case KHADAS_MCU_VIM4_FAN_CTRL_REG: + case KHADAS_MCU_VIM4_WDT_EN_REG: + case KHADAS_MCU_VIM4_SYS_RST_REG: + return true; + default: + return false; + } +} + +static bool khadas_mcu_vim4_reg_writeable(struct device *dev, unsigned int= reg) +{ + switch (reg) { + case KHADAS_MCU_VERSION_0_REG: + case KHADAS_MCU_VERSION_1_REG: + case KHADAS_MCU_SHUTDOWN_NORMAL_STATUS_REG: + return false; + default: + return true; + } +} + +static const struct regmap_config khadas_mcu_vim4_regmap_config =3D { + .reg_bits =3D 8, + .reg_stride =3D 1, + .val_bits =3D 8, + .max_register =3D KHADAS_MCU_VIM4_SYS_RST_REG, + .volatile_reg =3D khadas_mcu_vim4_reg_volatile, + .writeable_reg =3D khadas_mcu_vim4_reg_writeable, + .cache_type =3D REGCACHE_MAPLE, +}; + +static const struct khadas_mcu_fan_pdata khadas_vim4_fan_pdata =3D { + .fan_reg =3D KHADAS_MCU_VIM4_FAN_CTRL_REG, + .max_level =3D 0x64, +}; + +static const struct mfd_cell khadas_mcu_vim4_cells[] =3D { + { + .name =3D "khadas-mcu-fan-ctrl", + .platform_data =3D &khadas_vim4_fan_pdata, + .pdata_size =3D sizeof(khadas_vim4_fan_pdata), + }, +}; + +static const struct khadas_mcu_data khadas_vim4_mcu_data =3D { + .regmap_config =3D &khadas_mcu_vim4_regmap_config, + .cells =3D NULL, + .ncells =3D 0, + .fan_cells =3D khadas_mcu_vim4_cells, + .nfan_cells =3D ARRAY_SIZE(khadas_mcu_vim4_cells), +}; + static int khadas_mcu_probe(struct i2c_client *client) { struct device *dev =3D &client->dev; @@ -94,28 +170,40 @@ static int khadas_mcu_probe(struct i2c_client *client) if (!ddata) return -ENOMEM; =20 + switch ((uintptr_t)i2c_get_match_data(client)) { + case KHADAS_MCU_GENERIC: + ddata->data =3D &khadas_mcu_data; + break; + case KHADAS_MCU_VIM4: + ddata->data =3D &khadas_vim4_mcu_data; + break; + default: + return -ENODEV; + } + i2c_set_clientdata(client, ddata); =20 ddata->dev =3D dev; =20 - ddata->regmap =3D devm_regmap_init_i2c(client, &khadas_mcu_regmap_config); + ddata->regmap =3D devm_regmap_init_i2c(client, ddata->data->regmap_config= ); if (IS_ERR(ddata->regmap)) { ret =3D PTR_ERR(ddata->regmap); - dev_err(dev, "Failed to allocate register map: %d\n", ret); - return ret; + return dev_err_probe(dev, ret, "Failed to allocate register map\n"); } =20 - ret =3D devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE, - khadas_mcu_cells, - ARRAY_SIZE(khadas_mcu_cells), - NULL, 0, NULL); - if (ret) - return ret; + if (ddata->data->cells && ddata->data->ncells) { + ret =3D devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE, + ddata->data->cells, + ddata->data->ncells, + NULL, 0, NULL); + if (ret) + return ret; + } =20 if (of_property_present(dev->of_node, "#cooling-cells")) return devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE, - khadas_mcu_fan_cells, - ARRAY_SIZE(khadas_mcu_fan_cells), + ddata->data->fan_cells, + ddata->data->nfan_cells, NULL, 0, NULL); =20 return 0; @@ -123,7 +211,8 @@ static int khadas_mcu_probe(struct i2c_client *client) =20 #ifdef CONFIG_OF static const struct of_device_id khadas_mcu_of_match[] =3D { - { .compatible =3D "khadas,mcu", }, + { .compatible =3D "khadas,mcu", .data =3D (void *)KHADAS_MCU_GENERIC }, + { .compatible =3D "khadas,vim4-mcu", .data =3D (void *)KHADAS_MCU_VIM4 }, {}, }; MODULE_DEVICE_TABLE(of, khadas_mcu_of_match); --=20 2.49.0 From nobody Wed Jun 10 08:25:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 89D373ED5AD; Sat, 16 May 2026 17:18:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; cv=none; b=E6EVOoik9FtzGXqnnAtRNxyUkfezSD+XnlTPNCc27Fq1UBlzVIZHeKQpvubY5+L4ncQv15hgTOq4BNz4CJ4jXY542Vu2ZqscRRKIEanFSF0EHzIQULFRsygiAozkpt/fe/+aXaoGcRmdpiCf4dxyx+7YlzKaGd+v5uY98nDO9XM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; c=relaxed/simple; bh=dOoxnDlBmKRUEuWn0/9PCIB2WwlAKvILRj6iXjFR3rg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZaxP69o+lobTjYBIDHNuhnnT5n44SNtOQRHPDNjGQBlHq4QSwnqefp6pVAgN3noxdJvUWzgeQhd1ggeoFpoUlQfQnu9Z5AV+ABntw2MyyZ1dMgDnbtUn7Bf9lOLwV+BR3D/IZBn6rzIa5XNEtCodbFEL0OFcQQGJr97zJPG72mg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qKhF5tI6; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qKhF5tI6" Received: by smtp.kernel.org (Postfix) with ESMTPS id 5C2EFC2BCFC; Sat, 16 May 2026 17:18:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778951902; bh=dOoxnDlBmKRUEuWn0/9PCIB2WwlAKvILRj6iXjFR3rg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=qKhF5tI6v75rZMOl30wwloDyDiBIRjDovAF6gJ2V1gpZooP8T0ZtEWjsbuiRDD+q5 7jjuzUfOCmufNYanr/tnV9V1w8LeHwokPQ1nyz8h24loGm/3LDac3bE9rE5Dyin6tH 8tRVaL0tAttcfLOsFbA0a6fmZYz98+Ewo/rC+oxDpTKzikeGutiRSQM9/HcTykl81P QhCMUNyjWwMCEtH5fu7PqVz8AUQvyzHo9+9gFnG/7df6XkqSoXpU37NEFP293M9gIK DMe6fRIlrNwqwH8nAK0UFtLMH/50taG8DaSu5Gl4TpmwUMvQbV1dY5Q8qsA+84G25w SV/ACxFodm/+Q== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C8B2CD4F3C; Sat, 16 May 2026 17:18:22 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Sat, 16 May 2026 19:17:05 +0200 Subject: [PATCH v6 5/8] thermal: khadas-mcu-fan: Add fan config from platform data Add regulator support 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: quoted-printable Message-Id: <20260516-add-mcu-fan-khadas-vim4-v6-5-cccc9b61f465@aliel.fr> References: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> In-Reply-To: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> To: Neil Armstrong , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andi Shyti , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Beniamino Galvani , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Liam Girdwood , Mark Brown Cc: linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3542; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=GAu0pdDCPzhOo5CdDYjBvtBNlGqzAQdEX8wTJo3sqIc=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQxbHsuufVtfMUz+YbeqUO/ukVkggh63ozG2rjhyYuJD7b eJ0Me47HaUsDGJcDLJiiiz9cy1PvLt89MzXPeopMHNYmUCGMHBxCsBEMusYGf4ezVxiwM25cAH7 qc/if+2XdT5vllZ97vDW8Ji/yu00UXlGhvvWN+J1Kz9N3Oh71vNt7sTZuQcebt38wCzzl5vK870 l71kA X-Developer-Key: i=linux-kernel-dev@aliel.fr; a=openpgp; fpr=DFD863F61375BF917F0012173953305EF1D0EC3E X-Endpoint-Received: by B4 Relay for linux-kernel-dev@aliel.fr/default with auth_id=744 X-Original-From: Ronald Claveau Reply-To: linux-kernel-dev@aliel.fr From: Ronald Claveau Replace the hardcoded MAX_LEVEL constant and fan register with values read from platform_data (fan_reg, max_level), as new MCUs need different values. Optionally acquire and enable a "fan" regulator supply at probe time and on resume, so boards that gate fan power through a regulator are handled. Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- drivers/thermal/khadas_mcu_fan.c | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/drivers/thermal/khadas_mcu_fan.c b/drivers/thermal/khadas_mcu_= fan.c index d35e5313bea41..5603fa099a858 100644 --- a/drivers/thermal/khadas_mcu_fan.c +++ b/drivers/thermal/khadas_mcu_fan.c @@ -13,13 +13,15 @@ #include #include #include - -#define MAX_LEVEL 3 +#include =20 struct khadas_mcu_fan_ctx { struct khadas_mcu *mcu; + unsigned int fan_reg; unsigned int level; + unsigned int max_level; struct thermal_cooling_device *cdev; + struct regulator *power; }; =20 static int khadas_mcu_fan_set_level(struct khadas_mcu_fan_ctx *ctx, @@ -27,8 +29,7 @@ static int khadas_mcu_fan_set_level(struct khadas_mcu_fan= _ctx *ctx, { int ret; =20 - ret =3D regmap_write(ctx->mcu->regmap, KHADAS_MCU_CMD_FAN_STATUS_CTRL_REG, - level); + ret =3D regmap_write(ctx->mcu->regmap, ctx->fan_reg, level); if (ret) return ret; =20 @@ -40,7 +41,9 @@ static int khadas_mcu_fan_set_level(struct khadas_mcu_fan= _ctx *ctx, static int khadas_mcu_fan_get_max_state(struct thermal_cooling_device *cde= v, unsigned long *state) { - *state =3D MAX_LEVEL; + struct khadas_mcu_fan_ctx *ctx =3D cdev->devdata; + + *state =3D ctx->max_level; =20 return 0; } @@ -61,7 +64,7 @@ khadas_mcu_fan_set_cur_state(struct thermal_cooling_devic= e *cdev, { struct khadas_mcu_fan_ctx *ctx =3D cdev->devdata; =20 - if (state > MAX_LEVEL) + if (state > ctx->max_level) return -EINVAL; =20 if (state =3D=3D ctx->level) @@ -78,6 +81,7 @@ static const struct thermal_cooling_device_ops khadas_mcu= _fan_cooling_ops =3D { =20 static int khadas_mcu_fan_probe(struct platform_device *pdev) { + const struct khadas_mcu_fan_pdata *pdata =3D dev_get_platdata(&pdev->dev); struct khadas_mcu *mcu =3D dev_get_drvdata(pdev->dev.parent); struct thermal_cooling_device *cdev; struct device *dev =3D &pdev->dev; @@ -87,7 +91,21 @@ static int khadas_mcu_fan_probe(struct platform_device *= pdev) ctx =3D devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); if (!ctx) return -ENOMEM; + ctx->mcu =3D mcu; + ctx->fan_reg =3D pdata->fan_reg; + ctx->max_level =3D pdata->max_level; + + ctx->power =3D devm_regulator_get(dev->parent, "fan"); + if (IS_ERR(ctx->power)) + return PTR_ERR(ctx->power); + + ret =3D regulator_enable(ctx->power); + if (ret) { + dev_err(dev, "Failed to enable fan power supply: %d\n", ret); + return ret; + } + platform_set_drvdata(pdev, ctx); =20 cdev =3D devm_thermal_of_cooling_device_register(dev->parent, @@ -124,12 +142,17 @@ static int khadas_mcu_fan_suspend(struct device *dev) =20 ctx->level =3D level_save; =20 - return 0; + return regulator_disable(ctx->power); } =20 static int khadas_mcu_fan_resume(struct device *dev) { struct khadas_mcu_fan_ctx *ctx =3D dev_get_drvdata(dev); + int ret; + + ret =3D regulator_enable(ctx->power); + if (ret) + return ret; =20 return khadas_mcu_fan_set_level(ctx, ctx->level); } --=20 2.49.0 From nobody Wed Jun 10 08:25:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A2B4C3EDE51; Sat, 16 May 2026 17:18:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; cv=none; b=FKacOQT67SAfCkoqBDUi9b3aid2POYOPNTwb9HTSmKCLW4d6E/t/yulWsixmL5jOpuvngmg28kaBJVmnVDjMOfByADgq5LVUgu9znDRDyDJJoaHiBQVoII0Gdv0sOYaK2rbSc+XioaNyWSKj1MDWy8+3BzCGxTq51Bi+Dr3/1ZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; c=relaxed/simple; bh=LgAbB0ZXLnx/BP4AfsepnntHvttapSIZpd8aWCrBwiI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FTWztRiAntqfAoSkthhDnrksyOSB7A9TVJGcbO8irAExQ7YGY4mGjaICsW0XOBegypEoyTRWuDSu8X2nJMW2wuH1cd4Ne0VhAzmUR+FBwyCgSbTyYOPzODbgUXc8ugCfS8hcqG7DboE1cEkinyektOD/9U/EbbWbc4KvboN1OYw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P/ogeJvo; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P/ogeJvo" Received: by smtp.kernel.org (Postfix) with ESMTPS id 785CFC19425; Sat, 16 May 2026 17:18:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778951902; bh=LgAbB0ZXLnx/BP4AfsepnntHvttapSIZpd8aWCrBwiI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=P/ogeJvo6Qqoo6251PbBts1gxDZKQiSTZJABnSyV+H+BPs3XOTuNY8mzop4NeoEb7 dWaQr2pVxhRn7VYGMcPBHB9Q+CabVNprvHlUPt6aYqC5frvXBKdvVbRDLG/rDQnUJ2 Mu6BKndXokp/HqiCMDJmD9USbKgqleB9cUuRxkcyDd1PIcGky0r9oZcsLrh8dKc44F FNUM59cmQMktPYOS1NHlOPSMCnewFSf75WztHhgTRlAG4B4DFNrw1ABQaKwMWzCI95 k38WDRoM/8LzTPTMc1SNkUt9rlUUj7SvY++aKvxQbMXCGTjv4kwS2cgz9n1xQnlqiM fJrs2LOotNLGQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6885ACD4F21; Sat, 16 May 2026 17:18:22 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Sat, 16 May 2026 19:17:06 +0200 Subject: [PATCH v6 6/8] arm64: dts: amlogic: t7: Add i2c pinctrl node 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: quoted-printable Message-Id: <20260516-add-mcu-fan-khadas-vim4-v6-6-cccc9b61f465@aliel.fr> References: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> In-Reply-To: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> To: Neil Armstrong , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andi Shyti , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Beniamino Galvani , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Liam Girdwood , Mark Brown Cc: linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=892; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=F350Js/5aqFj9YLCGASaC045elV+sRf2mbU4+Ox2uSQ=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQxbHshupb14UHLFPDuh4t/dq0s3vaxZNZC7y4IrkDXG4K i3N3GrUUcrCIMbFICumyNI/1/LEu8tHz3zdo54CM4eVCWQIAxenAEykgJeRYaNEUOTW+OXrvJMc dn3fvOPXXtUX8YFbs48fear2dte9TU6MDBc6N3LXpXhI1PYcj864E31vkvfsBrWrCZ7a+zrEbr0 qZQAA X-Developer-Key: i=linux-kernel-dev@aliel.fr; a=openpgp; fpr=DFD863F61375BF917F0012173953305EF1D0EC3E X-Endpoint-Received: by B4 Relay for linux-kernel-dev@aliel.fr/default with auth_id=744 X-Original-From: Ronald Claveau Reply-To: linux-kernel-dev@aliel.fr From: Ronald Claveau Add the T7 pinctrl used by the Khadas VIM4 for MCU communication. Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi b/arch/arm64/boot/= dts/amlogic/amlogic-t7.dtsi index 7fe72c94ed623..e96fe10b251a0 100644 --- a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi +++ b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi @@ -376,6 +376,16 @@ mux { }; }; =20 + i2c0_ao_d_pins: i2c0-ao-d { + mux { + groups =3D "i2c0_ao_sck_d", + "i2c0_ao_sda_d"; + function =3D "i2c0_ao"; + bias-disable; + drive-strength-microamp =3D <3000>; + }; + }; + pwm_a_pins: pwm-a { mux { groups =3D "pwm_a"; --=20 2.49.0 From nobody Wed Jun 10 08:25:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 B5FAE3EE1E2; Sat, 16 May 2026 17:18:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; cv=none; b=OO7h41VXWY+aiDcaUD6xkAsNwsqIRpETr9vJKUavsE0bdCEvwl2rc2zYrJ07MYCIrytkM43WvDDJkzZDWf+eU5w5Uc8g4Y2ZKVHqRJhnfC6un99gHI243SYiCG2+B+ZFTFZjk7vG3+eZSByT6LN5Ut+6RpsIANPP2eso4Hqf+Vc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951902; c=relaxed/simple; bh=0i79ZDOBUMf/y7rR7lHOzqHQn+JRQngDYQDzRKcFojw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uWCwSuDAcDWkwAICPJ2Py3GNWGG5A0lpTdu0PCVpVbjy9000BEpTSroqJnP4nojGz6wYAQs3kUexTPV0jfsZaIP6CCnynJER9JF7mVSElu1JQNjQyaX2n9ZR3igan2uaDS1XAmE1RGGo+zXLv1tuNgZhJTQWjB6HzqtJls9BWZU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BUj2GZXr; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BUj2GZXr" Received: by smtp.kernel.org (Postfix) with ESMTPS id 8ECBEC2BCC7; Sat, 16 May 2026 17:18:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778951902; bh=0i79ZDOBUMf/y7rR7lHOzqHQn+JRQngDYQDzRKcFojw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=BUj2GZXr4Wu+NKiooR3l6M6jBFvOtp7W7F4qPNO8N9rJ/sLq+BKm0HSdXTrx3IsIC rAF31AERfjC649Y0KP/0QOv3r2IMvPd/RxFE5VPJTDslKvMnOQ27wfrYiHBiReWE0V 49UqPT9yEcqKIfnTq5Inqb3Yvc2bHix1h1NCQyB3fXJ4tClnENan9ec6A3pofxgvLh BLHLKpaq6iM9bVVjHLo3Ff9bZL85oZrnHkdPXT/HfzMwzsnM9K9SbMI4+vCNAeO6Cr F1RugWiDVcvfI6fomcMLT/R8twgaSuJ8kw6nvHAi9Io5g7VjNo9cqRYBuO/CnOJNdZ S70izNruyDSyw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 80713CD4F25; Sat, 16 May 2026 17:18:22 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Sat, 16 May 2026 19:17:07 +0200 Subject: [PATCH v6 7/8] arm64: dts: amlogic: t7: Add i2c controller node 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: quoted-printable Message-Id: <20260516-add-mcu-fan-khadas-vim4-v6-7-cccc9b61f465@aliel.fr> References: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> In-Reply-To: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> To: Neil Armstrong , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andi Shyti , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Beniamino Galvani , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Liam Girdwood , Mark Brown Cc: linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1153; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=ZSNkfEC4FeiA6QucNF9aNhEEdVvV/IVtkbNzZYp3uHA=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQxbHspuTHzq5qUwXkZpUnHZ61afrcxf4v1q9/3nz4ZZ7v 6fFPlzk0VHKwiDGxSArpsjSP9fyxLvLR8983aOeAjOHlQlkCAMXpwBM5OBPRoatd06oXwzY6KH5 5KzA8ewrSt/O828Q9DomxNJWoMvByRfLyLD0H+Nim48TL4o8O5DqYnHjo/ns6IC/y1X/3Uw06uX y6ucBAA== X-Developer-Key: i=linux-kernel-dev@aliel.fr; a=openpgp; fpr=DFD863F61375BF917F0012173953305EF1D0EC3E X-Endpoint-Received: by B4 Relay for linux-kernel-dev@aliel.fr/default with auth_id=744 X-Original-From: Ronald Claveau Reply-To: linux-kernel-dev@aliel.fr From: Ronald Claveau Add the T7 i2c controller node used by the Khadas VIM4 for MCU communication. Use amlogic,meson-axg-i2c as fallback compatible. Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi b/arch/arm64/boot/= dts/amlogic/amlogic-t7.dtsi index e96fe10b251a0..560c9dce35266 100644 --- a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi +++ b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi @@ -711,6 +711,16 @@ pwm_ao_cd: pwm@60000 { status =3D "disabled"; }; =20 + i2c_m_ao_a: i2c@76000 { + compatible =3D "amlogic,t7-i2c", "amlogic,meson-axg-i2c"; + reg =3D <0x0 0x76000 0x0 0x48>; + #address-cells =3D <1>; + #size-cells =3D <0>; + interrupts =3D ; + clocks =3D <&clkc_periphs CLKID_SYS_I2C_AO_A>; + status =3D "disabled"; + }; + sd_emmc_a: mmc@88000 { compatible =3D "amlogic,t7-mmc", "amlogic,meson-axg-mmc"; reg =3D <0x0 0x88000 0x0 0x800>; --=20 2.49.0 From nobody Wed Jun 10 08:25:46 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 F00F93EEAE3; Sat, 16 May 2026 17:18:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951903; cv=none; b=CnT4h1abFCeYzioOpWc0C9kUnw4GPeXAAsQEadlcZIRe/6Axlp+4KlJJuuTCzWjLemNqbFqDa/KSV8NIPktlaEknfNtx8lFDqMTFA40irfFDCqkCZ+mXvrGzKQY48pED5iRKxfENvt8Ep7E8psq29e3uFC/zY/yKUYDyq/Zevz8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778951903; c=relaxed/simple; bh=fm/6sk7gCdpwISaGU9WT3cWYZ93Sf6uQPBQjjnBRxxk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mLdgto9TxdoAoGFIaE40gpJ+kyz7Z/UwQyFNegIaIbf12KdXgH3Zqjk2gkyAoeNXBficOvQHMs87QGAXjUw/cpbFkb/hAlBpvhkFZ2zf8aWoeApx0xwJanT2tHul+1lgo1pYyMZklG33AOnV5nvdG6jeJaM9jBIKn0AEVluxz4A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R2/gP6qh; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="R2/gP6qh" Received: by smtp.kernel.org (Postfix) with ESMTPS id B13FFC2BCF5; Sat, 16 May 2026 17:18:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778951902; bh=fm/6sk7gCdpwISaGU9WT3cWYZ93Sf6uQPBQjjnBRxxk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=R2/gP6qh3cyks92N2UuNFBHalCc7hsnC2KEWZpMsgD+MsVy/mlJzAGQrkSZYkQkIu amduRQe2V1iiwnY8OHJ5qobvAi71dk9XdFBu9VM8L33Yudzz0erYxqWAriHK4P0K4B vSrYcdT94yVVZdc+e+oJUUNdnsRxmoHmTbhY1If1q+cWqJ4IXsQWzVtuFF/xqb0ptR 06a02re4/22JeNkY763AJqZVdJL6GpbUHyV8GTFU6C2ENmbY9xrl4lUwb3b6r2fsio biLKlWw2D3bSZZDziai7gmbK521cK4q/zoyGkqz0UHxHRFY+6IyTgSlRPcp8Oaqqge QLBoVxsLecpMA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id A10D0CD4F48; Sat, 16 May 2026 17:18:22 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Sat, 16 May 2026 19:17:08 +0200 Subject: [PATCH v6 8/8] arm64: dts: amlogic: t7: khadas-vim4: Add i2c MCU fan node 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: quoted-printable Message-Id: <20260516-add-mcu-fan-khadas-vim4-v6-8-cccc9b61f465@aliel.fr> References: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> In-Reply-To: <20260516-add-mcu-fan-khadas-vim4-v6-0-cccc9b61f465@aliel.fr> To: Neil Armstrong , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andi Shyti , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Beniamino Galvani , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Liam Girdwood , Mark Brown Cc: linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1026; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=ReP9jX1LqZ1xk8srjfORg2VmRh0QSxflyWImCLygV1k=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQxbHstsB3Uu+camfa9KbLV5qOpXbbz/HSsvY9j3LlcQm5 XyMCJTpKGVhEONikBVTZOmfa3ni3eWjZ77uUU+BmcPKBDKEgYtTACaitIPhn/ZN5tis9Wyz7DzP bL8wqzqumkle0fJPcn7Ok5+HtRnWGDD8szP+tfWtY46nxVabPac+Gh7akSnNuVV3v+u0td5ijb4 qXAA= X-Developer-Key: i=linux-kernel-dev@aliel.fr; a=openpgp; fpr=DFD863F61375BF917F0012173953305EF1D0EC3E X-Endpoint-Received: by B4 Relay for linux-kernel-dev@aliel.fr/default with auth_id=744 X-Original-From: Ronald Claveau Reply-To: linux-kernel-dev@aliel.fr From: Ronald Claveau Enable and configure i2c MCU node to get fan working on Khadas VIM4. Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- .../boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts | 13 +++++++++= ++++ 1 file changed, 13 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts = b/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts index 69d6118ba57e7..5d7f5390f3a66 100644 --- a/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts +++ b/arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts @@ -157,6 +157,19 @@ wifi32k: wifi32k { }; }; =20 +&i2c_m_ao_a { + status =3D "okay"; + pinctrl-0 =3D <&i2c0_ao_d_pins>; + pinctrl-names =3D "default"; + + khadas_mcu: system-controller@18 { + compatible =3D "khadas,vim4-mcu"; + reg =3D <0x18>; + fan-supply =3D <&vcc5v>; + #cooling-cells =3D <2>; + }; +}; + &pwm_ab { status =3D "okay"; pinctrl-0 =3D <&pwm_a_pins>; --=20 2.49.0