From nobody Sat Sep 26 12:29:01 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 EA42843A807; Tue, 1 Sep 2026 15:27:46 +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=1788276467; cv=none; b=o5hl8ftU+xM3Zb4TbBQ7lMaDB9lkwtM/uEFDbAlO6AKdRAUCYqNWd5sFMkODkoaggO6mOpjNpStkmbI9RZRrK00PhvRfVh4rSXdLc0ZY0V0P/mWKMszN/qzQomHj/lfZ1sWXwm2UUboQD5HNwQh1qW2GqRluY/YHfqkxo+3N6i4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788276467; c=relaxed/simple; bh=O7eMDBHqcruD9r+Gj32/0LYLOb9udOfrNqBmq6ix7CA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jTDmNpN0JaS1SKcUq4Z5P7DsfO3/6Ulg2Pk7eCaVUgoikUzI4HxdOaNsyfrC2raLbXlCkIXflEMRFz45K07mj5GnPYvXXybA4rjAYWp+wQvC13wjFF1VR6AaY8g3aTCdQH3dSeMseWanU3uUB4cF8BsoDv4mnSIekdgkLsEWrMY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=r+EB22dS; 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="r+EB22dS" Received: by smtp.kernel.org (Postfix) with ESMTPS id 7F4DAC2BCFD; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788276466; bh=O7eMDBHqcruD9r+Gj32/0LYLOb9udOfrNqBmq6ix7CA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=r+EB22dSn+8a9Z21FaG9jc06hoqZZaO5NgmKGQzpsUrUeBRiL9+9hnZsRsYqIlI86 f2d2O5PKPFzoEJ8RABq5r+PDm7sUSeDgN9Sj+HAxA0yeuib4gcKZ2juebnlADoObVy suAjVPPnunWxASfALZaOYRHT5x+eLWZV7mH5qvRurSrUn5e0rzlmtNlDrCRjTe9Ibh c1OS+6eYuNp0UKBZ/P6nBRRyFlxDFUA7YMFpaesIO2HCPPv19n16cxRgIfDmjM35YB /7vt3DWAYWDlcdg8RwHUkCAg08bIv/QRPobCsScGbZwzHBRnuhQz4fuSshL3M0Sg5O TA8CQJn6Xxjpg== 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 5FFB6C61DD3; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Tue, 01 Sep 2026 17:25:52 +0200 Subject: [PATCH v10 1/6] 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: <20260901-add-mcu-fan-khadas-vim4-v10-1-aecdb9955a30@aliel.fr> References: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@aliel.fr> In-Reply-To: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@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, mfd@lists.linux.dev, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2035; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=41a1uCUdSjssDusDgka02m9AT4HiCk+OuG8CTPrx2oY=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9a0dy/rs7TzjeMnZDy9eyfhb8WWj2n8xVM2zrlxlf/X/ thdRSbKHaUsDGJcDLJiiiz9cy1PvLt89MzXPeopMHNYmUCGMHBxCsBEvmozMmxd8mll5IslkfvO Tnz6TqC/08xhpqFxzqG1x30bdVvq4ksZ/squ//B53duUhW+1V6VOMfi1rjGMT/Pn5VTf3X38Vay vVzEAAA== 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 Some values change per variant, add the structure to manage it. Add VIM4 specific registers done for a subsequent patch, which will use a new compatible especially to get the right regmap config. Add an enum khadas_mcu_type used as value to match. Also introduce khadas_mcu_fan_pdata to pass fan register address, a table named levels to get fan-supported levels on the MCU, and the number of levels to the fan sub-driver. Done in preparation for a subsequent commit. Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- include/linux/mfd/khadas-mcu.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/include/linux/mfd/khadas-mcu.h b/include/linux/mfd/khadas-mcu.h index a99ba2ed0e4e0..7a9980ea63e7e 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, @@ -88,4 +95,21 @@ struct khadas_mcu { struct regmap *regmap; }; =20 +/** + * struct khadas_mcu_fan_pdata - fan sub-driver configuration + * @fan_reg: register address to write the fan level + * @levels: table mapping logical cooling-device states to raw fan levels + * @nlevels: number of entries in @levels + */ +struct khadas_mcu_fan_pdata { + unsigned int fan_reg; + const unsigned int *levels; + unsigned int nlevels; +}; + +enum khadas_mcu_type { + KHADAS_MCU_GENERIC =3D 1, /* VIM1/2/3, Edge, Edge-V */ + KHADAS_MCU_VIM4, +}; + #endif /* MFD_KHADAS_MCU_H */ --=20 2.49.0 From nobody Sat Sep 26 12:29:01 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 EA55B43A808; Tue, 1 Sep 2026 15:27:46 +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=1788276467; cv=none; b=c53RqHyZDW4cP4fgBVfuXRAL1xYlKfVeawjkHVPu5/3x1H5DgPRm/ob/h/d/j8D5ixD6+TrnawYMslQYlFLYgVZb7XdVVn1fXMRcJzLvkiSPMZcmDNYBb1RC64k6Kq60q0SrZGXsWZjOjcNenQvo8mDSvTudk4OxL/RJjbiyk5A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788276467; c=relaxed/simple; bh=NpJ68cAdxRTul9v+KRzPMyOhGoHG7IvwOK7cj3TZ7Fk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AzIlAWJwz6ELrXGm2Fi2mALtBE3e/i5QnFlwJyt4o3+NbX20NH8WrXfPtNjILLtRwdTEGeJ9tH9rtuSgwz7NC+qq+42+HerWm2zimSvfyx5b/++hgQQ8DlwvYjfdYxEsU70r56wsvTWl6hnAHHIeuRfw0r/QX7xPRWrhWb9of00= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=J/GI7Gg6; 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="J/GI7Gg6" Received: by smtp.kernel.org (Postfix) with ESMTPS id 927F4C2BCFC; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788276466; bh=NpJ68cAdxRTul9v+KRzPMyOhGoHG7IvwOK7cj3TZ7Fk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=J/GI7Gg6N3UrOXIuonjkoT042Z+OEbLS5iYUsNrW4suZQDlvL4WbUeHlUVrG2PrcO UvqX+47tGZz2WPkZyqXWVkrwgaIIlaRnVEvm1vM+AWcrJmjRwvo0EKB/DoD2bWuRvD Nw6WCyMKZSR192MXFiCzGwWApsJibnHJUu6dfpDzqif9y+FRsnGsARiSMIZn2vWips W8uLzsyU4B+nfXtWbo1ZElBrI9ymvAR0gsUPpXF49T2cronN00L/K6q7pkwYflyDLq YCYXks41M/pnKc6by9LrAVJ12WloVg7PdAJtpG41mJUsvDiYpIgFVqau+RWvuj/Vrp WrE81QUFy8kLg== 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 72347C61DD6; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Tue, 01 Sep 2026 17:25:53 +0200 Subject: [PATCH v10 2/6] mfd: khadas-mcu: Use MFD_CELL_* macros for cell declarations 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: <20260901-add-mcu-fan-khadas-vim4-v10-2-aecdb9955a30@aliel.fr> References: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@aliel.fr> In-Reply-To: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@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, mfd@lists.linux.dev, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1351; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=EC3QR4h1VRMR/TQsGWmFoDDKLNA1VXSGTQljiGJtTRI=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9a0d69FKn349lQz/bn81phL9F3j/wlHN1R09ciuz7bOk X7mXJXaUcrCIMbFICumyNI/1/LEu8tHz3zdo54CM4eVCWQIAxenAEyEV47hD4+NbNTazXp7lj1b IVbpYPlAdYtSrP7THHUzV07j+tPqMxn+WTOr8xt5v/Q6m3rA9ETKExHxrV8SlvO8rCnT0f365kQ +LwA= 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 Convert khadas_mcu_fan_cells[] and khadas_mcu_cells[] to use the MFD_CELL_NAME() helper macro instead of open-coding the struct mfd_cell initialisers. While at it, make both arrays const since they are never modified after initialisation. This is a pure cleanup with no functional change, done in preparation for a subsequent patch which will need to attach platform_data to the fan cell. Signed-off-by: Ronald Claveau --- drivers/mfd/khadas-mcu.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/mfd/khadas-mcu.c b/drivers/mfd/khadas-mcu.c index ba981a7886921..0e74efe14f367 100644 --- a/drivers/mfd/khadas-mcu.c +++ b/drivers/mfd/khadas-mcu.c @@ -75,13 +75,13 @@ 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 mfd_cell khadas_mcu_fan_cells[] =3D { /* VIM1/2 Rev13+ and VIM3 only */ - { .name =3D "khadas-mcu-fan-ctrl", }, + MFD_CELL_NAME("khadas-mcu-fan-ctrl"), }; =20 -static struct mfd_cell khadas_mcu_cells[] =3D { - { .name =3D "khadas-mcu-user-mem", }, +static const struct mfd_cell khadas_mcu_cells[] =3D { + MFD_CELL_NAME("khadas-mcu-user-mem"), }; =20 static int khadas_mcu_probe(struct i2c_client *client) --=20 2.49.0 From nobody Sat Sep 26 12:29:01 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 E9FC343A7FA; Tue, 1 Sep 2026 15:27:46 +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=1788276467; cv=none; b=pYPSE9lt/VDQvziBvn0ciyPvEE7U/7Zu5Ltm6nvU08+5n4KRZ8Gyt0R4I7ctMHbyf+hAAaouUOfQqmZ3h6p1nYnNtDglrcfn1ToPYI4ITQRsomv7bJpTcqx0JP3CwooIjZZv+Med3G5qCaJDMZ1xgcYK3mwGO6NQi0+VcGgzbyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788276467; c=relaxed/simple; bh=TpKUTT9UnXyJkMGklfvshLexshR4zNIwKPjchubwhf0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=amXKW25hLnZWytkhJFekJ6o30/zsTC91/EtfTUyPY30tmjysPXSdTAe8naahP8Fg8tht7/c0cGML9hffTA6ieOALMCZekub5BGVwqat0nnqh90FO3TaOJsgpxMM0aP4MRHQ8lqsxhTYl2rO3ece/brFzrUfTu8SY2cl4QChLnNE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=U0jSXkIz; 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="U0jSXkIz" Received: by smtp.kernel.org (Postfix) with ESMTPS id A2BBDC32781; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788276466; bh=TpKUTT9UnXyJkMGklfvshLexshR4zNIwKPjchubwhf0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=U0jSXkIzzo2cu71Bg36KXpqDdrw+lxNwmfn3nwqbgHfbXjnej2K4zkdefF1eMSA3T 0gJ0GuQ0NXhUREksAIsqn9g6wNh+oJgtdiLvliOQobp0PzrvxS4WbcqHjozuYgi9zu ECrw9/M8o4RnRWZW1u12S77N0FHNqEfd4s4s/tRma0q8NH2CUTbr1TfKuGbA1NdSGa DCjJo395ChWlNWJJ6QOefU0/PI7S53LiByyO2ITAzxLBiB1K2YhtwGH65kGzX9qApR q6ShBXj06B1ZD29/kHxykTSczI1Z57c00Wqhxn4WMD4n3B+hWusv059pRFC6TnfgnR Uag7tp4E2FK7w== 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 87253C624D6; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Tue, 01 Sep 2026 17:25:54 +0200 Subject: [PATCH v10 3/6] 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: <20260901-add-mcu-fan-khadas-vim4-v10-3-aecdb9955a30@aliel.fr> References: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@aliel.fr> In-Reply-To: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@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, mfd@lists.linux.dev, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5696; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=huWXhUHwpCRJwBvPNQon4ySNunAT1WR74/SHbV4RoFk=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9a0d29q46QDV5q/Ntmc5Sr4lWVp7L+tvkbGbOuTlM5M1 xAXvtPcUcrCIMbFICumyNI/1/LEu8tHz3zdo54CM4eVCWQIAxenAExkyzJGhqXthlkz67aePNb+ 47faAo3QFh79aS3XAxt/7mD/+CP86kdGhmdpS7d/Sjo0d8qFxfvOCvxoTek27RGR4Dx2eEF5Gsu Ffm4A 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 values instead of hardcoded globals. Add dedicated regmap configuration for the VIM4 MCU, with its own volatile/writeable registers. Introduce struct khadas_mcu_fan_pdata to pass the fan control register and duty-cycle levels per variant. VIM4 uses a different register and level set (0-100) declared as a list (0, 30, 40, 55, 75, 100) compared to previous boards (0-3). Add a new compatible string "khadas,vim4-mcu". Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- drivers/mfd/khadas-mcu.c | 120 +++++++++++++++++++++++++++++++++++++++++--= ---- 1 file changed, 106 insertions(+), 14 deletions(-) diff --git a/drivers/mfd/khadas-mcu.c b/drivers/mfd/khadas-mcu.c index 0e74efe14f367..4cb305ac915e1 100644 --- a/drivers/mfd/khadas-mcu.c +++ b/drivers/mfd/khadas-mcu.c @@ -75,47 +75,138 @@ static const struct regmap_config khadas_mcu_regmap_co= nfig =3D { .cache_type =3D REGCACHE_MAPLE, }; =20 +static const unsigned int khadas_mcu_fan_levels[] =3D { + 0, 1, 2, 3, +}; + +static const struct khadas_mcu_fan_pdata khadas_mcu_fan_pdata =3D { + .fan_reg =3D KHADAS_MCU_CMD_FAN_STATUS_CTRL_REG, + .levels =3D khadas_mcu_fan_levels, + .nlevels =3D ARRAY_SIZE(khadas_mcu_fan_levels), +}; + static const struct mfd_cell khadas_mcu_fan_cells[] =3D { /* VIM1/2 Rev13+ and VIM3 only */ - MFD_CELL_NAME("khadas-mcu-fan-ctrl"), + MFD_CELL_BASIC("khadas-mcu-fan-ctrl", NULL, &khadas_mcu_fan_pdata, + sizeof(khadas_mcu_fan_pdata), 0), }; =20 static const struct mfd_cell khadas_mcu_cells[] =3D { MFD_CELL_NAME("khadas-mcu-user-mem"), }; =20 +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 unsigned int khadas_mcu_vim4_fan_levels[] =3D { + 0, 30, 40, 55, 75, 100, +}; + +static const struct khadas_mcu_fan_pdata khadas_mcu_vim4_fan_pdata =3D { + .fan_reg =3D KHADAS_MCU_VIM4_FAN_CTRL_REG, + .levels =3D khadas_mcu_vim4_fan_levels, + .nlevels =3D ARRAY_SIZE(khadas_mcu_vim4_fan_levels), +}; + +static const struct mfd_cell khadas_mcu_vim4_fan_cells[] =3D { + MFD_CELL_BASIC("khadas-mcu-fan-ctrl", NULL, &khadas_mcu_vim4_fan_pdata, + sizeof(khadas_mcu_vim4_fan_pdata), 0), +}; + static int khadas_mcu_probe(struct i2c_client *client) { + const struct mfd_cell *cells, *fan_cells; + const struct regmap_config *regmap_cfg; struct device *dev =3D &client->dev; + int ncells, nfan_cells, ret; struct khadas_mcu *ddata; - int ret; + const void *match; =20 ddata =3D devm_kzalloc(dev, sizeof(*ddata), GFP_KERNEL); if (!ddata) return -ENOMEM; =20 + match =3D i2c_get_match_data(client); + if (!match) + return -ENODEV; + + switch ((uintptr_t)match) { + case KHADAS_MCU_GENERIC: + regmap_cfg =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); + break; + case KHADAS_MCU_VIM4: + regmap_cfg =3D &khadas_mcu_vim4_regmap_config; + cells =3D NULL; + ncells =3D 0; + fan_cells =3D khadas_mcu_vim4_fan_cells; + nfan_cells =3D ARRAY_SIZE(khadas_mcu_vim4_fan_cells); + 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, regmap_cfg); 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 (cells && ncells) { + ret =3D devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE, + cells, + 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), + fan_cells, + nfan_cells, NULL, 0, NULL); =20 return 0; @@ -123,7 +214,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 Sat Sep 26 12:29:01 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 EDB7543A812; Tue, 1 Sep 2026 15:27:46 +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=1788276467; cv=none; b=UcD8HHSnh5HtqJW8qb2DCT5fi77U3cQ62FpsFP/uxJhvHzecRZ+/zY/Ye09W/HZIilRoKRB8XdCaO335NMtYic4L5fxJdHAB1Der37iPY59WAZp6imr7ECkAyp0stNldR5U7+uK0RlLwP+Gu4LZUg2BHwhe4BlZ/iGscbIjEi10= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788276467; c=relaxed/simple; bh=u7Jg9tQTHmoStH7V/USEIn5xFwqXnHXrTzN8IDNeez0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uzIJPR/Z3yg/IKqUY9DPuXfsPc/dl3EzlZHrS1l2M1TLxQ8YSXRjJPkUjFZw2tN90O47MOSuIS7TfWPRQkVZ+DHddmjyo3DcNuzD4EqR6Xz+LkiC0J4a/+ebu4CsJx2NjRgA00DeNmjiUP1QuVHGpNdd3GUWvbyySh6YIkyt7ok= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=s6hPRY/K; 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="s6hPRY/K" Received: by smtp.kernel.org (Postfix) with ESMTPS id B0E58C2BCF4; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788276466; bh=u7Jg9tQTHmoStH7V/USEIn5xFwqXnHXrTzN8IDNeez0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=s6hPRY/KfYh7TCuOkxKO35I7YPe6VWcSpchVqtVuowkZtpLGSiFwbxoR/p+mK5T3I f5Y1PNXrk/l978nrS4yZww1D2Qtd9OuKyElKhNsvGusIJ1OSSuAwldwpAM8Bcnbmc3 HlDmb2mVAwJKFJMEA93JAaHq76W7Z84CYMwottegKSx6wTUfm5Gotofnr3iKU0wSAE WAfgK2PYyA6Uc9So8WoWjlvQkFMVlCSigQ0Tmxjd7arsdcXepqhJu3RuxPiUsvguIq t3fMf8t8Yc1US0eUTv4sK7KtsbC99ewF6D83blM1tmYWWzXf1EgrM64gE6csCKs3Nv kTkXW+kQQe9og== 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 9B3A2C624D5; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Tue, 01 Sep 2026 17:25:55 +0200 Subject: [PATCH v10 4/6] 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: <20260901-add-mcu-fan-khadas-vim4-v10-4-aecdb9955a30@aliel.fr> References: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@aliel.fr> In-Reply-To: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@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, mfd@lists.linux.dev, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5678; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=NgWEa6VMYz3MNICtIO8RbLKLnPH8ThvJnMMKdtpA/z8=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9a0d2/7eD8lrLry9r7FysrQg0zfc1RFP0xpeHFvT/e6D yITOrev7yhlYRDjYpAVU2Tpn2t54t3lo2e+7lFPgZnDygQyhIGLUwAmcusAI8MC7QuTq/6rZz9Y lv74r1qH5emKgl/K4RkWF/865jq1qTozMlzh/9KceJM/UDBUgk//tWIaR9bC4EVCN0QXePw67HX 6LTcA 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 Read the fan register and level table from platform_data (fan_reg, levels[] and nlevels) instead of hardcoding a single register and level count, as new MCUs need different values. MAX_LEVEL is kept and bumped from 3 to 5 to make the speed change more gradual with the newer MCUs. The cooling device's state is stored as an index into levels[], and khadas_mcu_fan_set_level() writes levels[state] to fan_reg, rather than writing the raw state value as before. 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. The regulator is released via a devm_add_action_or_reset() callback. Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- drivers/thermal/khadas_mcu_fan.c | 94 ++++++++++++++++++++++++++++++------= ---- 1 file changed, 71 insertions(+), 23 deletions(-) diff --git a/drivers/thermal/khadas_mcu_fan.c b/drivers/thermal/khadas_mcu_= fan.c index 21b3d0a71bd0d..512a6f0ff7c26 100644 --- a/drivers/thermal/khadas_mcu_fan.c +++ b/drivers/thermal/khadas_mcu_fan.c @@ -13,34 +13,33 @@ #include #include #include +#include +#include =20 -#define MAX_LEVEL 3 +#define MAX_LEVEL 5 =20 struct khadas_mcu_fan_ctx { struct khadas_mcu *mcu; + unsigned int fan_reg; unsigned int level; + const unsigned int *levels; + unsigned int nlevels; struct thermal_cooling_device *cdev; + struct regulator *power; }; =20 static int khadas_mcu_fan_set_level(struct khadas_mcu_fan_ctx *ctx, unsigned int level) { - int ret; - - ret =3D regmap_write(ctx->mcu->regmap, KHADAS_MCU_CMD_FAN_STATUS_CTRL_REG, - level); - if (ret) - return ret; - - ctx->level =3D level; - - return 0; + return regmap_write(ctx->mcu->regmap, ctx->fan_reg, level); } =20 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 min_t(unsigned int, MAX_LEVEL, ctx->nlevels - 1); =20 return 0; } @@ -60,14 +59,21 @@ khadas_mcu_fan_set_cur_state(struct thermal_cooling_dev= ice *cdev, unsigned long state) { struct khadas_mcu_fan_ctx *ctx =3D cdev->devdata; + int ret; =20 - if (state > MAX_LEVEL) + if (state > MAX_LEVEL || state >=3D ctx->nlevels) return -EINVAL; =20 if (state =3D=3D ctx->level) return 0; =20 - return khadas_mcu_fan_set_level(ctx, state); + ret =3D khadas_mcu_fan_set_level(ctx, ctx->levels[state]); + if (ret) + return ret; + + ctx->level =3D state; + + return 0; } =20 static const struct thermal_cooling_device_ops khadas_mcu_fan_cooling_ops = =3D { @@ -76,22 +82,53 @@ static const struct thermal_cooling_device_ops khadas_m= cu_fan_cooling_ops =3D { .set_cur_state =3D khadas_mcu_fan_set_cur_state, }; =20 +static void khadas_mcu_fan_regulator_disable(void *data) +{ + struct regulator *power =3D data; + + regulator_disable(power); +} + 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; struct khadas_mcu_fan_ctx *ctx; int ret; =20 + + if (!dev->of_node) + dev->of_node =3D dev->parent->of_node; + 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->levels =3D pdata->levels; + ctx->nlevels =3D pdata->nlevels; + + ctx->power =3D devm_regulator_get(dev, "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; + } + + ret =3D devm_add_action_or_reset(dev, khadas_mcu_fan_regulator_disable, c= tx->power); + if (ret) + return ret; + platform_set_drvdata(pdev, ctx); =20 - cdev =3D devm_thermal_of_child_cooling_device_register(dev->parent, - dev->parent->of_node, + cdev =3D devm_thermal_of_child_cooling_device_register(dev, + dev->of_node, "khadas-mcu-fan", ctx, &khadas_mcu_fan_cooling_ops); if (IS_ERR(cdev)) { @@ -109,30 +146,41 @@ static void khadas_mcu_fan_shutdown(struct platform_d= evice *pdev) { struct khadas_mcu_fan_ctx *ctx =3D platform_get_drvdata(pdev); =20 - khadas_mcu_fan_set_level(ctx, 0); + khadas_mcu_fan_set_level(ctx, ctx->levels[0]); } =20 #ifdef CONFIG_PM_SLEEP static int khadas_mcu_fan_suspend(struct device *dev) { struct khadas_mcu_fan_ctx *ctx =3D dev_get_drvdata(dev); - unsigned int level_save =3D ctx->level; int ret; =20 - ret =3D khadas_mcu_fan_set_level(ctx, 0); + ret =3D khadas_mcu_fan_set_level(ctx, ctx->levels[0]); if (ret) return ret; =20 - ctx->level =3D level_save; - - 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, ret2; + + ret =3D regulator_enable(ctx->power); + if (ret) + return ret; =20 - return khadas_mcu_fan_set_level(ctx, ctx->level); + ret =3D khadas_mcu_fan_set_level(ctx, ctx->levels[ctx->level]); + if (ret) { + ret2 =3D regulator_disable(ctx->power); + if (ret2) + dev_err(dev, "failed to disable regulator after error %d: %d\n", ret, + ret2); + return ret; + } + + return 0; } #endif =20 --=20 2.49.0 From nobody Sat Sep 26 12:29:01 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 2307243C04D; Tue, 1 Sep 2026 15:27:47 +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=1788276467; cv=none; b=F33LTNABeEcmNU9C1WGJvXBSTD17me/mj1/pvFKRxzPJpsqgsWfAAgj/vopnB0Nk4oAUa90CaRoyHZjwjlDCz8kwAI6qAFDhDWT5YNHrBFlRWkbFXX3xbH7eOLs0MCqGzU4pB+g5ydUhrFS7emIjbaINfjUb1KyW/PkSKJBfkJ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788276467; c=relaxed/simple; bh=OuEeieU+V6Hv70haVoj7A7lwMd9n5Nm96UZgZOqvhug=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KnwWC5/OMtHfGA7kZxO+QUFCSiVk9Zgqm6Z1v47NrWa0TKf0qcUymA7fUSZw5XzIuQTvNDBEzOB3qyRdqYndhl6ip3lrPI3Wr/OyODVRxZi+XdYyrGu7e0lF0PCTBVNfFDc38InBchaEphlP6qZnnoFh+gnV64TVtL74SjyvEXo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=l9RtJ98t; 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="l9RtJ98t" Received: by smtp.kernel.org (Postfix) with ESMTPS id C51D9C4AF18; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788276466; bh=OuEeieU+V6Hv70haVoj7A7lwMd9n5Nm96UZgZOqvhug=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=l9RtJ98t7H1IDdapibl0W/Z4iL9+fD6pIwu5gu5Engbzd3fFoGUTolpWRNHT81H// fjoOR6swbRWHMSI/5kxfF9vfgLaR2TDGhhoo79eqKVyrLDvoaoE+CaHS3BHYvx1HqM Ci9uvvKgFuBIcY+oqyQN68PHerDA/kFT2HtIdun9fdyw7u/WZ5gV6F6hEs0kANmemJ 9KvktKEo+7OzXrJsiZFD+mafypcq8kgERxRVU7kqbSP0ZViHUt8muG0TZMtKeG9xkN PdrZzgazhxkCJRIeyS2RieHK4A9zVBD6KmpQEFdXEkegfYv9dksbtpm8A+5gtbCQ68 QhpDfq0hXk1YQ== 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 AF270C624D7; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Tue, 01 Sep 2026 17:25:56 +0200 Subject: [PATCH v10 5/6] 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: <20260901-add-mcu-fan-khadas-vim4-v10-5-aecdb9955a30@aliel.fr> References: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@aliel.fr> In-Reply-To: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@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, mfd@lists.linux.dev, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1224; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=aLYRKhvnbuah+/DuOuT+PfGuc1jyAXlae73BAxIufCo=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9a0d+/eZhodzvRNn6t8z4Ht04IrulaBQhpy018tV1u9V n5F5VLxjlIWBjEuBlkxRZb+uZYn3l0+eubrHvUUmDmsTCBDGLg4BWAiH7oZ/qdF7hCNOx/x4pqp WYh2zNG6icFdTz5MVSjoNJbufhq0/xDDX2n598UP9h/rPrRMfMrpB9uu7eK+5WHg2dVdfKJfmkV sHj8A 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 Reviewed-by: Martin Blumenstingl 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 c3dc479b137de..0f48e23077e99 100644 --- a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi +++ b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi @@ -724,6 +724,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 Sat Sep 26 12:29:01 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 22D1E43C048; Tue, 1 Sep 2026 15:27:47 +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=1788276467; cv=none; b=AlBtXRK0UNpOaPj4hK3x+sHPuxP/6syJQ6SLCm9f8ErB8j6+S4ofujdnWk4EAIfVKF7MX9OTenAICmRBpaOz1mOIIqiJimO9z68FPyGYukBq9baQAnitkXOXEJNnPv2Rl5g6EUJJ1ji3aZvudHafBQEAJ5saVBKHCSlGUAggTpg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788276467; c=relaxed/simple; bh=eto8+h/MaXkAsviCHPdmpQdT7c0Kfi4t066koHw6hAo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PCrncXcaa2s1Le1GUkckqxwbb6tf4AP4emeD0NBAxxeLP3p9s2DXfxBO7kWWJfWxV4mic9+EDIyHbmW68Wf0Z4PNCsPMZ6DI18/YlfUAASW4oktmfOeySCXqyIyChIBRryNP66iiKQ0myraztcQQCVg4DSN7131vrxQSyyNzkdw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UiPHoIA8; 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="UiPHoIA8" Received: by smtp.kernel.org (Postfix) with ESMTPS id D5D97C2BCFF; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788276466; bh=eto8+h/MaXkAsviCHPdmpQdT7c0Kfi4t066koHw6hAo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=UiPHoIA8cqD2VvU+uW+MTs3MrccWyDVyvOHhj6U1ym8qGMVg4ciSqoRR/DWTU+O35 1ZQPo5Sl+p8n6CLwHw9OItXz550QfkHj5JNhKCd1iegE/hU8AugW2mi/LJ08EyKR7v aWsAh+G52/C2dzyTJxk39/RuwFGOmaINF59F4mtFDmhPynjRyTlgOPlJgXmJNB6TWi e984ZNXbmkIa++fZOH+f95p3okA6QR3khk0OVHS61hXtD6GKWOadsOmWceC/UJwiuJ IhHzFQlyti+iucITO8hfgrGjZPKbpGCeh64rEy6XGWFd1VtocgHikbpIaojNvXroQo zp/x9/n0IXEMw== 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 C1E06C624D3; Tue, 1 Sep 2026 15:27:46 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Tue, 01 Sep 2026 17:25:57 +0200 Subject: [PATCH v10 6/6] 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: <20260901-add-mcu-fan-khadas-vim4-v10-6-aecdb9955a30@aliel.fr> References: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@aliel.fr> In-Reply-To: <20260901-add-mcu-fan-khadas-vim4-v10-0-aecdb9955a30@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, mfd@lists.linux.dev, Ronald Claveau X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1095; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=Z7uWC5BzI9Wq+imS2bvYjb9eymbusN6NdD/vEPC6HdE=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9a0dx+UNA2Ttpa2JXA3PdoSsHGmck9Q4CLtFVdlXdnNc 3c8frulo5SFQYyLQVZMkaV/ruWJd5ePnvm6Rz0FZg4rE8gQBi5OAZiInjcjw5y6K3lTNi7Sf6Pc u7Oy75iP5V65osVc5kI1U1JivyY8b2VkmC3f+OgiH4OMVPka742bN3hdZA1vX5m+LjcnUWTh8b6 DDAA= 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 Reviewed-by: Martin Blumenstingl 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 c41525a34b721..7d95aadcf6a66 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 @@ -167,6 +167,19 @@ xtal: xtal-clk { }; }; =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