From nobody Fri Oct 2 04:35:57 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 AFC7F3E5EF3; Wed, 5 Aug 2026 08:08:15 +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=1785917295; cv=none; b=dwAsmK90umE0Qwkp9FxkYL509wzLtkJSM7BJbZLsbnSccpuiYT2J6xT/5sOvgdvq4QZHwCljD76AsM7nRtHlg67JosEz8Cv1BsCxTiYaowYOFJ95pCP9cNyylA/ZAe9PGZZ3lboBgiEOQUMKbwoA8DHFRqTsZV51uVBqeoB2LGw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785917295; c=relaxed/simple; bh=hpWnV5LS0GblNz9y/FlvFSDIRyY1+QAth4KLt9LSkxg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pVXmc7uKK/tNyywuQU2hcAXVOZgDtteqBqwjXAycM91+yjVAS6BZ3BW+AnrYbjqEOwixXMyRB4Qs6jI3PLWhaLozrEQ8Ud3YIAc6eKnZn3ghTL21q30Mev15S6zBtK+eHyIpnefCGiXp7ZtjqGfni6h9Jl84vW40uwBfntBfcdU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PMhsEdTl; 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="PMhsEdTl" Received: by smtp.kernel.org (Postfix) with ESMTPS id 99F7EC19425; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785917294; bh=hpWnV5LS0GblNz9y/FlvFSDIRyY1+QAth4KLt9LSkxg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=PMhsEdTlGclZENFHxJlxo5CMm+SwPMSZmOggq17f39z97QCSdkheGuSa+aFQDQ8tB ZIg4AxiTYEuYDw3IAcWMNDpJapPfoQaxXeMsVVxAe3oNj5ACwf+5pLjHrddDGJ4Pcn VbZMLc1DyKWFxgzVarh6xOfmGNXKoz9F0f6DEdoH0omlUu0pLE94E1Lzk5PiqnuUxn 5BDy39WTOiEmhRfkApwkLcLjH0mGwqab5xFQP4ukdWxs5nrBNo11iX9g6sFo7Ds5jx y7Z9OBfQjr8RO/PTTLd9/mHViDOcqiUZXqqCs5HitA88lmki3Utk0j4r2t5J3lXqgI eCn5a6illaf1g== 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 73970C55822; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 05 Aug 2026 10:06:02 +0200 Subject: [PATCH v9 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: <20260805-add-mcu-fan-khadas-vim4-v9-1-75df78710b9e@aliel.fr> References: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@aliel.fr> In-Reply-To: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@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=1883; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=l0O0cD0fiAJBO81t4csvMi2nHXVHt2flC0X0yXFYJns=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ1bR+7TlSTH9bA6391scvfY9sPj+ZvY9kdq+Uhds605FR CfOXfm5o5SFQYyLQVZMkaV/ruWJd5ePnvm6Rz0FZg4rE8gQBi5OAZiIz0lGhhlSAYsrLkzS3X6y OsCsfU22wO947eligi/VU77/mLKBVYeRYerdpsq1a5xWL/CKXOvgJbxZL96NI6lpkXlcYe2aS4/ juAA= 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 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, removing the hardcoded constants. 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..e4044c251b97e 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, /* VIM1/2/3, Edge, Edge-V */ + KHADAS_MCU_VIM4, +}; + #endif /* MFD_KHADAS_MCU_H */ --=20 2.49.0 From nobody Fri Oct 2 04:35:57 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 B06F33E6392; Wed, 5 Aug 2026 08:08:15 +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=1785917295; cv=none; b=rGk487BMGF6cSNjwKAr5avn9mIPHgmf5dJcxwGIik/rH6p7m/lqexDDTQ7aIvKBeNXk9Y7Dx+v4OgLeZOJIRE4Ny7cnfJww1/lN/N+tZ5sVjrItGQeSOf8ZHmS9uwfnPqdenVhAcn8TQWZwpMM1jVyQxluDA04c7S0JaecyMwYw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785917295; c=relaxed/simple; bh=NpJ68cAdxRTul9v+KRzPMyOhGoHG7IvwOK7cj3TZ7Fk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OBKH16O4073DhnnhQ09TG4mr82r0R6ze9FxdkZtm90zkWEjFF53T4yQeBM7pSqLixLdv1WHMN8+blkXA0V59Z6eCIeZXFs+86qAN42c0neeyUJpL36Xk5t3qRggRByxSQompXfPFv3uUdW9p1GtaO0F395duf9OYptszn9DiE78= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tWUfbIex; 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="tWUfbIex" Received: by smtp.kernel.org (Postfix) with ESMTPS id A9C30C4AF0F; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785917294; bh=NpJ68cAdxRTul9v+KRzPMyOhGoHG7IvwOK7cj3TZ7Fk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=tWUfbIexIerufb8STyJWs4Aq2r6Qc4Q5tzhfh56tE34PfHT+3fE0/9saMvQv8LO6l eBW7UdT1NV9tIcbQGIdxinDmIjzcvhxT5OHYTM/ydPJEiMGgJy1LXR+f/ASBRhr4K7 D5E6ngA/hH5q5TAoCaM1WNe+u6zYUmXQR4MNhF/i/VqP7vMa8/BxScDTEJzULQfmfG dOhFRXc3uxgfqqQ587yAWF/CJCuNsutC4eNpFOUiY5CXpcxTm6RtM+LeM0t9iLjVBc 8NCbyE5zf6A77h8aQHAkGLnJivKtvPVSlNqfmETnh9WKPYZZhJrBu5yVSNccieDEVq h18jhDwIvluww== 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 88F1FC56201; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 05 Aug 2026 10:06:03 +0200 Subject: [PATCH v9 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: <20260805-add-mcu-fan-khadas-vim4-v9-2-75df78710b9e@aliel.fr> References: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@aliel.fr> In-Reply-To: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ1bR+3SpD/YLLt7ud07237FLfMGJDW9iksPyeoyrnbVu3 tE9/Eevo5SFQYyLQVZMkaV/ruWJd5ePnvm6Rz0FZg4rE8gQBi5OAZjICT1GhqafE1RV6qae2btL cP7Psga2t1UXr53IU++OWGItMc/Y3YqRYeFrJw7Xj16PnrO2zXrAYnW/w+yxa6pnY1Ha1SuPpe0 j2AE= 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 Fri Oct 2 04:35:57 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 AFA983C5826; Wed, 5 Aug 2026 08:08:15 +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=1785917295; cv=none; b=P64G1BAlAmfGnXg8fAZMrUTBROZ8FrWLDwzTGfMCDUIuuprkXUrTId1Xd8zurERrlFQ04hPpO1Ze2IHV8j967OBsji1fFYph8+je0oBj/ZQ3TEPAiGODIPnv4NczDqQPRNNMx/Vcn5OEofuHs/kRCki36Qbo4uF/i2PhFEiE35s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785917295; c=relaxed/simple; bh=TpKUTT9UnXyJkMGklfvshLexshR4zNIwKPjchubwhf0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HIiMZAmbFXevJA7rN2Mg7k9nnxPCtJhIWJW6feViZgQSkz89VW2DPRVihkqJrfoIM0uz95BFTYOqAOuxy+9I8eOyhSk8DwsrPpuZEdGYMy/eSZUSzDIw9ALfLI/GreG7X4Gnu9bqC1ug6upKTfjIyV5uy3Jjt+Ng3fAy234wtm8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jVt5/TPw; 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="jVt5/TPw" Received: by smtp.kernel.org (Postfix) with ESMTPS id BB525C2BCFA; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785917294; bh=TpKUTT9UnXyJkMGklfvshLexshR4zNIwKPjchubwhf0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jVt5/TPw6Q/PYrnptGMKAFgLHWvnpCmIhbDv+vXRTwtunDfez89bjjLWFEVfi+tnt /8W5jg8pnk9ec6z24Aiw8uxos4e2yX2xOtmLxkwDhCVfuL6JMBwsw8JJOBb6EuLG3M sDTn2xLVTuTon1ycOB0H029BOF1XeRRlhA5/F0E9K8uN8ztdHpC2OtCcAOtbKgxTS+ X+a6FTWsInJpv2rzxuXFlNTR/gVp2E+y+HgUpQFhRAYRH6dNt8VbOEC+p4wNM2ia+r uc4xb5glRcn7JAF+q+qu977Z/EDHoDod2XE9HbmRLvj/HuEGd6+Q18j8hntdR2wGfg vBMcRz5WCL9lg== 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 9C183C56203; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 05 Aug 2026 10:06:04 +0200 Subject: [PATCH v9 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: <20260805-add-mcu-fan-khadas-vim4-v9-3-75df78710b9e@aliel.fr> References: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@aliel.fr> In-Reply-To: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ1bR+4zqLfMXearE3i8J/Jskc8Mnyk2x+fuPN5/aQ/2PT bRd+6y9o5SFQYyLQVZMkaV/ruWJd5ePnvm6Rz0FZg4rE8gQBi5OAZiI6hRGhvciPhwq4rI8u3b2 qmo9PT81bOqlaMdpJ3aECXyTCBVs8mf4n3pmCu9Pn78G0xe8yVAq4Db35BNSCX7+59Nq9vf5c7g LeQA= 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 Fri Oct 2 04:35:57 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 AFB803E5A17; Wed, 5 Aug 2026 08:08:15 +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=1785917295; cv=none; b=mUiuM6Z3Qjpxu88k32mIeD4JnTo4vzoc5vqEoYjjB13dXUmR4V2742gj4mnqP8nNq42oDwjHWB+dlcQ5MT6ywYlr2PElb3VQ/2XUurMiZxlrXIFLrzbbRO/1jbBcdp0HWVKIZm70b8IBGAZXuk7aYQPTS795q3+M7Saq9XabJ9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785917295; c=relaxed/simple; bh=zJ9vphVMBzNYXgwvdVFpKScyRKZfxDrmu7izpa2hJSI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rJM8OzBH6gYW4/TQoyf9ekfNTIed5dQMW+ENg2B4IXq0KE/gB8a1x5taEb+KRXgGZcUvEt00lkR9Gm7akxVOa0/hg+LdVbusodYlGTdAattpvklYE54S8oUMeAhvzuCM8eF0NPb0OhbLBTQALucouIVwuYMXRJ6mT4FFN+kmfeU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CD1zOKQM; 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="CD1zOKQM" Received: by smtp.kernel.org (Postfix) with ESMTPS id C7932C2BD05; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785917294; bh=zJ9vphVMBzNYXgwvdVFpKScyRKZfxDrmu7izpa2hJSI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=CD1zOKQMPL1QmK+fuYBzkrgLTKYBVHc3HEFFpXxLfu3AG5NzDTSXYtylumGpAUXZM JUNYM5v1SMc/kTKirEim+Vj1R7ap1QnFgFPOziF38chB0Ng5h8BPIAGnpzn8RMdCd5 Im1HgESZcPv49oh4WvuPNN6QZ6hpbahea/c9lT2NrAtA+b9eMMCZfX4HSztGEO8N+Q dpOpYUhGy68ByhzJT1uuCFApqzgt7Ldkvj/SzEhHVVC7vSamg+Y6AQq8up69MvqzEc vM49sUqjIb+ia6YNAJqm4agJ2pyRFqdZWFQTJQScHJBGlMyOsQGVxyTIAXfNITLbK3 qQBfUCAZbXSqw== 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 ADFD8C55ABA; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 05 Aug 2026 10:06:05 +0200 Subject: [PATCH v9 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: <20260805-add-mcu-fan-khadas-vim4-v9-4-75df78710b9e@aliel.fr> References: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@aliel.fr> In-Reply-To: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@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=4111; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=xyEzSXqpYiePonMeddDiYlTDMPNaRxm1EjYvtENMuSw=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ1bR+8xr30oFzOr3sTUeWOeS2mpQtqHjsvBEg5QtWVeut Nqoduh2lLIwiHExyIopsvTPtTzx7vLRM1/3qKfAzGFlAhnCwMUpABO5zM/wPy+6OXfNyVM123ef yGtTfLNnfkuDaInz5c9yVUpFj26obGJk2KKw6Uq0grq3e3i0otoCA89pv5NfeaYZ2a8sPsHBpPy QFQA= 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, levels[] and nlevels), as new MCUs need different values. 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. Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- drivers/thermal/khadas_mcu_fan.c | 58 ++++++++++++++++++++++++++++--------= ---- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/drivers/thermal/khadas_mcu_fan.c b/drivers/thermal/khadas_mcu_= fan.c index 21b3d0a71bd0d..c7f74394b823f 100644 --- a/drivers/thermal/khadas_mcu_fan.c +++ b/drivers/thermal/khadas_mcu_fan.c @@ -13,34 +13,30 @@ #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; + 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 ctx->nlevels - 1; =20 return 0; } @@ -60,14 +56,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 >=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 { @@ -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,22 @@ 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->levels =3D pdata->levels; + ctx->nlevels =3D pdata->nlevels; + + 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_child_cooling_device_register(dev->parent, @@ -125,14 +144,19 @@ 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); + return khadas_mcu_fan_set_level(ctx, ctx->levels[ctx->level]); } #endif =20 --=20 2.49.0 From nobody Fri Oct 2 04:35:57 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 3EFFC3ED10F; Wed, 5 Aug 2026 08:08:18 +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=1785917298; cv=none; b=m+kp4AaLuURVcItjHcYVL15qIpXilPthaUVtUo+GqGJOXh4P1CxRsKFv7o0aSU/2ujBLfbg0VfU3qPmbHyaP3t6PXVnSvY8acocWDGwAFNS0e5ug33v7L8xI8YgdSOuwG5s0vJNLaT5zfe8X0XaHptapwoL81/PqF4kee3cE/xY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785917298; c=relaxed/simple; bh=OuEeieU+V6Hv70haVoj7A7lwMd9n5Nm96UZgZOqvhug=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l1BN3iVz8O0hJdlV+/z6vOgnVAA0blQBvNUjU0DOr8un8tXctDo3vMIG6+Gbf30exDHZjvHwc2PPq7HJXEOj9JozA6VK9+jXtfm/n6AjoP9FPu2DzgMu51vJW6/00yEyKTXp2rpedDNBLqDhl1dVLzJSe9Bb+J8VBa8gzIKK8hI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=J6ZKiTUa; 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="J6ZKiTUa" Received: by smtp.kernel.org (Postfix) with ESMTPS id D2DA0C2BD04; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785917294; bh=OuEeieU+V6Hv70haVoj7A7lwMd9n5Nm96UZgZOqvhug=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=J6ZKiTUaeGgKG2ecyhMMYNtnPpwKKd9MMphy2Hk0OgoC6ypeTb4Xi0xa8Dkis6djT fyu+zf62AABIfywssljTNaYIl0LVGCzApH2fIveoQVSdnU5iRc9Qa/jcz1vBVP+Gxr GcYcbDy1DLFY6S2s0AHQ6pepVcdvrbg9Dhxdd69LKPVJ8wZfgCcW0r1MFEDfRuxRT9 sp0U+LiJeA+bGVqTuVZc1g8tVY80TDmr/DSV5JLCnOOuMgr6uCyGgPUWG2kyz48Vke aenlfcwdfVNfnWKN2QHIkBKFmj4TcRSYgWVSwU0M7g2FO9/ivr1GD1oHL8jywyNORr ClhPeOukFt1mw== 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 BF979C55174; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 05 Aug 2026 10:06:06 +0200 Subject: [PATCH v9 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: <20260805-add-mcu-fan-khadas-vim4-v9-5-75df78710b9e@aliel.fr> References: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@aliel.fr> In-Reply-To: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ1bR++xD0lozJ/qybzkrnOm85vwtL0MDGeZzn5Rf1M9jN b59I0W+o5SFQYyLQVZMkaV/ruWJd5ePnvm6Rz0FZg4rE8gQBi5OAZjITwlGhnle+1bf3SDsa6g1 I8/Vyadl95H3G+8LWbJ/jHxX/PqBoTwjw7aULVsvn88Usbq17S6jnnL+kv8aUZ327RMaVO1k/WT TOAA= 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 Fri Oct 2 04:35:57 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 8E94E3EDE72; Wed, 5 Aug 2026 08:08:18 +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=1785917298; cv=none; b=OicVvKvh+4cJOSHH1s5VoPk8jKsFFIxGG/xjK3qYTbz4b9cLDi7ZwjCNLDCS6U3qczu5CmuOw66k2cHFHVr5om5uqxWSkY95v6nAhg3HaTMwHZ9WEcRGuNL7YulxFnl5619d585T2re6MDahrZMbjXxpIr73mh9fEW185vBnAHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785917298; c=relaxed/simple; bh=eto8+h/MaXkAsviCHPdmpQdT7c0Kfi4t066koHw6hAo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=epVu9TesTdgbii39h3z7Eg4KQellZ9MsMHm/acWmPidqPEkmRPlT61TJz/RLSDieh6/huuPX/i6DfkIwXyrmgc7fvk1x6HQNmELq0v+yvnc9axm4TlB6VoUGPwbloHAqYf/04J/7sV2Q4ssxx0cG/s9qOs6F30kJUjChrwSJOqo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OZolXATy; 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="OZolXATy" Received: by smtp.kernel.org (Postfix) with ESMTPS id E231AC32782; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785917294; bh=eto8+h/MaXkAsviCHPdmpQdT7c0Kfi4t066koHw6hAo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=OZolXATyrJE/yc5j9XDI8jBSHdrWTGLmmgRxfQWnYKzLCsatgjHNH1KpeZL2D4ewB HKfHfqF4IZtZt4WAhlzDqyLtS/TP6b4qy8O1NS9ejoQ8QVxgV/+GJOHyMfJYB1SVUu 8YilUj2OMTkmuoSyqemdqYMqPB/5jjeAuFiW4P49PbWFqWZLBLVgcwmXjmyGM3xTl5 K32PszTCLvOXi9O87R8wv8v1IIPl2MmKugtACwug3KxSn5azq2/aCn0/BsgcYG56JN BA0tOuxoc+RwLF7bDeSGk1uDwctPqf6aGsoNx93kfgLb0hRoeFQUUEayQBh2DqNZFN qOmmyvS5mG7FA== 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 D1039C55822; Wed, 5 Aug 2026 08:08:14 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 05 Aug 2026 10:06:07 +0200 Subject: [PATCH v9 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: <20260805-add-mcu-fan-khadas-vim4-v9-6-75df78710b9e@aliel.fr> References: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@aliel.fr> In-Reply-To: <20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ1bR+5yHyto2astO3/kw1/dqzha+RROvV16YyDx9hWHh3 UMLM7t/dJSyMIhxMciKKbL0z7U88e7y0TNf96inwMxhZQIZwsDFKQAT2fWKkWFq9/knovZf5xSk uPXkth9M3d9wXPcjd7l33M2bB5PbVHkYGRZ0u7/SyPl64DfbhY199kr/jzeWFPX/ypr/eaHrOZv GVYwA 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