From nobody Fri Sep 25 03:21:15 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 3EC833DDDD7; Thu, 17 Sep 2026 08:00:45 +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=1789632045; cv=none; b=qt9sfgjkH2932WwHbKHFm0EHRlw8FJscz/wDik5PWfB9VfiLfu6w/KjBENTnpf4sPVAQZzt50t7+8Z1181WTKxtQApUlyvg/oLa5L4opEhdlb91aNEvHxc13cNKql5ftsX7FIRNn7OTYXjTJR1K02HSoI7ztU/xOGoBT/2+Wr90= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789632045; c=relaxed/simple; bh=fpSccCQTtocdNkkOJ7qtK8D7ka1uiiSK6AMKGUYwGwQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fMmKf5NwB8/tckgwGTz5h0M/Iwipi8u4oU/xk5JPzED+SN1Hj8uODEVtCU4QQjIkJzt0BPVu83GrYGCaFcFeq04tiz8M2czOCIvr99sI2+yAbXpw5SvvqdpU7OYM1Jjhd7QotEdPiSHKAkUL7y2WiT0AATvxt4yPehb4WuqaSDU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ltfFARBn; 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="ltfFARBn" Received: by smtp.kernel.org (Postfix) with ESMTPS id E1C55C4AF09; Thu, 17 Sep 2026 08:00:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1789632045; bh=fpSccCQTtocdNkkOJ7qtK8D7ka1uiiSK6AMKGUYwGwQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ltfFARBn2kLxaJP4576aO5fKsWFweBm4ob0uhQo360ecbAYkXLwRIKXiSfZd6XBkN FiInId7w9Stc41FMj0ChuQEMB4wo2DSHo5Eb0Qx074mLo6rIbG0+AVpQHVRz+qkhb+ NJVjTAOarzLJzB76O834lgPeAuY3gPdeUqRPUiKTDq0vYR9sI/zAxJw+8+VAj8bzUq Unl2iRhV4fVm+y8mqv8Nfw9N8AlLzcLtNtCSARtZaprE6a4cVxEzeMAuGRATG3ym7Q Qipz51aPdR0+sqCC76B/q+Oj9prvfGMPQLukcScVM6ravs5xlx3/+NxfZIVr+iVRJF ROhHoPGCl4Ejw== 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 B6B5CC88E72; Thu, 17 Sep 2026 08:00:44 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Thu, 17 Sep 2026 09:59:00 +0200 Subject: [PATCH v12 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: <20260917-add-mcu-fan-khadas-vim4-v12-1-497cd543a148@aliel.fr> References: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@aliel.fr> In-Reply-To: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@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=1930; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=BJRhwKhcdjrF5epARgcxNmy3jED4cBzG1XxROeciDJk=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9bqeVLWEctSXnAY1q9nWdy0Muhnc9WiVtHLglO2nDH43 Xhtn+2DjlIWBjEuBlkxRZb+uZYn3l0+eubrHvUUmDmsTCBDGLg4BWAiu3gY/vCdeSbLuyCiZ8Np LfHQOWtF/jExpDhNedZ9bLPGoZ0rHFsYGb5OU9ds5dmX4JAsJqm2IlTSlfGXw5wN2mZbOTgqpoW u5QcA 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 fix a kernel-doc warning for the khadas_mcu struct. Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- include/linux/mfd/khadas-mcu.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/include/linux/mfd/khadas-mcu.h b/include/linux/mfd/khadas-mcu.h index a99ba2ed0e4e0..acd3291061b40 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, @@ -80,7 +87,7 @@ enum { =20 /** * struct khadas_mcu - Khadas MCU structure - * @device: device reference used for logs + * @dev: device reference used for logs * @regmap: register map */ struct khadas_mcu { @@ -88,4 +95,14 @@ struct khadas_mcu { struct regmap *regmap; }; =20 +/** + * enum khadas_mcu_type - Khadas MCU hardware variant + * @KHADAS_MCU_GENERIC: VIM1, VIM2, VIM3, Edge, Edge-V (shared register ma= p) + * @KHADAS_MCU_VIM4: VIM4 (extended register map, distinct fan/LED/WDT reg= s) + */ +enum khadas_mcu_type { + KHADAS_MCU_GENERIC =3D 1, + KHADAS_MCU_VIM4, +}; + #endif /* MFD_KHADAS_MCU_H */ --=20 2.49.0 From nobody Fri Sep 25 03:21:15 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 4B79B3DEAC8; Thu, 17 Sep 2026 08:00:45 +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=1789632045; cv=none; b=I2htX4SvXCJY4jZ4c94b9aLkHY5R8XWdkNC9xdzfYcPO1+DynX9PiqGJM7kpAR5EcU03KkE9NkSv80HPjFF+Uyc8diKnkc2MxnJe9+UdQzlWF1rjY/DWGi9AoGG0DcMcBsp4lsH6K2JMfTyNQcB3k2Nw8AMBi4tiwWYpZvuiz+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789632045; c=relaxed/simple; bh=NpJ68cAdxRTul9v+KRzPMyOhGoHG7IvwOK7cj3TZ7Fk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=B9UDwLv70/cg8gqUqjEJwIaN7ANEtcKS9J3lvI7mQ38rbLZ+k7sm31kUwiES54jhvTjvdJf6Q0o+sb+VfS+48QixN5jqhD4Kl7aEvGAkRalBMTxX7fUnSjP6yib69/9kl8AS5Ptt0mcd7eRX05IAMzbhtHRIWf+eNkO5ZeC+TkY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=c6sv3G/5; 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="c6sv3G/5" Received: by smtp.kernel.org (Postfix) with ESMTPS id F2C1AC2BCB9; Thu, 17 Sep 2026 08:00:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1789632045; bh=NpJ68cAdxRTul9v+KRzPMyOhGoHG7IvwOK7cj3TZ7Fk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=c6sv3G/5Ulsd5ezzpAqkpKyZbOU0Tjjv07ers42WVgx4fku5nqvj6f8qasXSoj+Da Thxu9oEds22asrE96G30xf8Cjn6bNLekuKxJ3TCAG0Pv050OYCPeUdDDYFmLPZSB+l S/V5+/wJqLaFJ+wPZf8hsQWbKEmzwa0RcCt5BLUzzuMjLLvvod4+n7ZP/FzD1h7sBl 7EuljgCTarrfxh52Wzexwbc7cWJZ3SOPV8p8Cgz508n2DolzTwoNPmlo/BMXMiIT+s puuRTket0eO5Nk6emSnmbG2n/uuhGJTlWb2iBNbDS3kS6QYVjKaCWx7VdMDkx9Jd7B Lftz1nEmLei4g== 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 D3023C982D0; Thu, 17 Sep 2026 08:00:44 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Thu, 17 Sep 2026 09:59:01 +0200 Subject: [PATCH v12 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: <20260917-add-mcu-fan-khadas-vim4-v12-2-497cd543a148@aliel.fr> References: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@aliel.fr> In-Reply-To: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9bqedK7/+k1Vv8LyomYtW1HyrO7knvrqs7YHZo4tb3zb AmPyYsdHaUsDGJcDLJiiiz9cy1PvLt89MzXPeopMHNYmUCGMHBxCsBEpNIY/qelh5nP+h7dVsS0 zZ770fmImcvbXqg1ls7deiiu1Tk8ZDHD/4rnXz1O/nigqGPX5vpG9BLvzpnHnCt8hef9fBKiwb7 vHw8A 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 Reviewed-by: Neil Armstrong --- 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 Sep 25 03:21:15 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 65ADE3ED13B; Thu, 17 Sep 2026 08:00:45 +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=1789632045; cv=none; b=l5gyYkIgYIEbO+1iZgYkVDHt665hCHyGrCTAvL13BSm2bwtu9J//40juQCKFN46ScashFvnrG6ssglU8UBsLzBNq8NhE5idi2V3QlZ3pvxp0FG8Dj+ce1afHPeIftYvQKTmzsoepbOFgxw2rGsXcpWBeJbW3ufxJPT3VfksGVoI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789632045; c=relaxed/simple; bh=+d8XlJStIrPlLf0i0LWNLFLSYKcxR9dxtCajhUKMsN8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oEcBfQu8fm7IFkXB2Lr6eRZ6ZYS2wBgSvU26Y+1gb0MR2d6ZHX738p7M5YmKBPZN+FTND4cptxLQtLoXSxuIK9GydROoa87T/3wuP3i9IJGxgab+/lw/2lXoPGxHsE8is3dcnpFw1XujaLTzOdV7UMGjwQI3aTdjP+vhP+n2XcU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PhQnjch/; 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="PhQnjch/" Received: by smtp.kernel.org (Postfix) with ESMTPS id 1A929C2BD04; Thu, 17 Sep 2026 08:00:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1789632045; bh=+d8XlJStIrPlLf0i0LWNLFLSYKcxR9dxtCajhUKMsN8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=PhQnjch/qI8r3sdt9UYX/COVJ4ZZur4CQ+Ty75HFRo4zNZVnVYH9CDOhbVKbGD/Yp 71/gllq0s5V/2bgQLOK5UiecaKfa1ji6aMiH7HLDOLkrn6XN/ntZ00qVlmqnR6f77y ZJoeOMSBubXuTRlkVyy3mBwuiUO08jOmCz4mw+t/DvUwkww62Ag1ilxwrAi03g+geD in5NEMpI+BIv6IZHRWa+E0X5Kobuk1QEk1MmKfOHRdaRaER0MvgfmyrbzQyxgu3i0/ mfoqnuwc+zU5dBwulA2DXih67T8/ZBR/9O4UD/SsMBEJI+8TR7pigYvCuXt71QUhsq mj1NCevnfnc9Q== 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 EB31AC982D3; Thu, 17 Sep 2026 08:00:44 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Thu, 17 Sep 2026 09:59:02 +0200 Subject: [PATCH v12 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: <20260917-add-mcu-fan-khadas-vim4-v12-3-497cd543a148@aliel.fr> References: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@aliel.fr> In-Reply-To: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@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=4415; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=Q/kGNzPkcptM03i3MwBjKTn4st9t+jVHg+6yzSnT5b0=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9bqebJmM4P13onsTFyc1NMWKpm6sL+JzbW2MJRhmXtAa NfyGyYdpSwMYlwMsmKKLP1zLU+8u3z0zNc96ikwc1iZQIYwcHEKwETatzH8FdlQvy7L/nHjkcfh 5kqG5Tu3+Mz01LjryxJ1eF684muLGEaG7jK9yGKJqiVbDtQkspmzMhY0+3erbTG7xH/z1MOne41 ZAA== 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. Add a new compatible string "khadas,vim4-mcu". Reviewed-by: Neil Armstrong Signed-off-by: Ronald Claveau --- drivers/mfd/khadas-mcu.c | 96 +++++++++++++++++++++++++++++++++++++++++---= ---- 1 file changed, 83 insertions(+), 13 deletions(-) diff --git a/drivers/mfd/khadas-mcu.c b/drivers/mfd/khadas-mcu.c index 0e74efe14f367..4b37e74e2b04a 100644 --- a/drivers/mfd/khadas-mcu.c +++ b/drivers/mfd/khadas-mcu.c @@ -84,38 +84,107 @@ 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 struct mfd_cell khadas_mcu_vim4_fan_cells[] =3D { + MFD_CELL_NAME("khadas-mcu-vim4-fan"), +}; + 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 *mcu_variant; =20 ddata =3D devm_kzalloc(dev, sizeof(*ddata), GFP_KERNEL); if (!ddata) return -ENOMEM; =20 + mcu_variant =3D i2c_get_match_data(client); + if (!mcu_variant) + return -ENODEV; + + switch ((uintptr_t)mcu_variant) { + 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 +192,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 Sep 25 03:21:15 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 666EB3ED5D6; Thu, 17 Sep 2026 08:00:45 +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=1789632045; cv=none; b=KbAQ8SmvyWR5bXFEkZHVwaiciD2cW8H3pEKgt3U4cdJ2eeoP9fhAS+oXHb6CvGGA1iMcELr8Wg9BeVrl1ypuizNz3Pj+LtGCqPQMBMHsvMOA5oBuPP9Eq1TQ4DlcTpoK3hbUhngmw2ydizR2gtm1SDeof+ewjo6WDf47YE/b+Zo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789632045; c=relaxed/simple; bh=s3uQf43Wa5PHgqudSUytDWbU732N/r4+C6/D5h/JnqE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Sul7lEYeiLG0UIm7GGfvYJFVew9IdAYO1nicDuOtLfq776aKZ6HWerVnzVwbBk7PC8Z72rHxGfyVMhcbpuLOoiXv5l+cztcVjo4P/F0vE7+kx3+gThoP1rOG9ug0IXoaPa+S1gM+8y0bKZmlGL5KUDzD86ODQ/xyL7AQs84w8oY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XayZFqxQ; 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="XayZFqxQ" Received: by smtp.kernel.org (Postfix) with ESMTPS id 24AB1C4AF14; Thu, 17 Sep 2026 08:00:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1789632045; bh=s3uQf43Wa5PHgqudSUytDWbU732N/r4+C6/D5h/JnqE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=XayZFqxQZp63sAnw/K63BCX7/Uq5C9O+aOr7+goBTuLB9tcfYXQkqFIlggMEhO+Qj mp5AMNdrzC81IRyj4IRfB1zL+2VpUqNmF0hO3UJyDrYq/WgLe4HGTp5HxX1Gk/MKqt YTNGeNKgYMaV/ymoKUyaEhdHhYfMWyn5qbBkpfhkQmQxKw9nJAJXfe/UEgxWtCkUs5 IvyaEezwnVjyjWFcaASYzcGgyaZJSo0U7+34r1bAIWD25GoSbim9jaI4WGEtoAP7AZ KgykltFOFkSIXM5B4WZ8UWaBGXHE5D644RPmM6MurfVGIA/t5UMrbuT5J8oHWiYJnd tFRlxRQslk1hw== 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 0EA9DC982C1; Thu, 17 Sep 2026 08:00:45 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Thu, 17 Sep 2026 09:59:03 +0200 Subject: [PATCH v12 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: <20260917-add-mcu-fan-khadas-vim4-v12-4-497cd543a148@aliel.fr> References: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@aliel.fr> In-Reply-To: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@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=6676; i=linux-kernel-dev@aliel.fr; h=from:subject:message-id; bh=N8rriWyvwidyvaKsR0gJdnq8kVYKuQByPAxHAvQC3SA=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9bqeXLmt4ONHSVt29knruFwZp99lv+F2rb9vZW3t8buP z2vz/5nRykLgxgXg6yYIkv/XMsT7y4fPfN1j3oKzBxWJpAhDFycAjCRjRsZGfY2VO7S4f57av9d UZ1Sk1s+iXJ3+Dx0HhcwTeJI7ZFe9ZHhf0TCrugTSzVF/2ktn+L07q1L5fdNxzxEvrW3tzXO4lj gxgUA 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 platform name, 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). 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 Acked-by: Daniel Lezcano --- drivers/thermal/khadas_mcu_fan.c | 108 +++++++++++++++++++++++++++++++----= ---- 1 file changed, 86 insertions(+), 22 deletions(-) diff --git a/drivers/thermal/khadas_mcu_fan.c b/drivers/thermal/khadas_mcu_= fan.c index 21b3d0a71bd0d..1da639d054971 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,71 @@ 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 const unsigned int khadas_mcu_fan_levels[] =3D { 0, 1, 2, 3 }; + +static const unsigned int khadas_mcu_vim4_fan_levels[] =3D { 0, 30, 40, 55= , 75, 100 }; + static int khadas_mcu_fan_probe(struct platform_device *pdev) { + const struct platform_device_id *id =3D platform_get_device_id(pdev); 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 of_node_get(dev->parent->of_node); + + if (!id) + return -EINVAL; + ctx =3D devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); if (!ctx) return -ENOMEM; + ctx->mcu =3D mcu; + switch (id->driver_data) { + case KHADAS_MCU_GENERIC: + ctx->fan_reg =3D KHADAS_MCU_CMD_FAN_STATUS_CTRL_REG; + ctx->levels =3D khadas_mcu_fan_levels; + ctx->nlevels =3D ARRAY_SIZE(khadas_mcu_fan_levels); + break; + case KHADAS_MCU_VIM4: + ctx->fan_reg =3D KHADAS_MCU_VIM4_FAN_CTRL_REG; + ctx->levels =3D khadas_mcu_vim4_fan_levels; + ctx->nlevels =3D ARRAY_SIZE(khadas_mcu_vim4_fan_levels); + break; + default: + return -ENODEV; + } + + 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,21 +164,24 @@ 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; + ret =3D regulator_disable(ctx->power); + if (ret) { + khadas_mcu_fan_set_level(ctx, ctx->levels[ctx->level]); + return ret; + } =20 return 0; } @@ -131,8 +189,13 @@ static int khadas_mcu_fan_suspend(struct device *dev) 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 @@ -140,7 +203,8 @@ static SIMPLE_DEV_PM_OPS(khadas_mcu_fan_pm, khadas_mcu_= fan_suspend, khadas_mcu_fan_resume); =20 static const struct platform_device_id khadas_mcu_fan_id_table[] =3D { - { .name =3D "khadas-mcu-fan-ctrl", }, + { .name =3D "khadas-mcu-fan-ctrl", .driver_data =3D KHADAS_MCU_GENERIC }, + { .name =3D "khadas-mcu-vim4-fan", .driver_data =3D KHADAS_MCU_VIM4 }, {}, }; MODULE_DEVICE_TABLE(platform, khadas_mcu_fan_id_table); --=20 2.49.0 From nobody Fri Sep 25 03:21:15 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 80F1C3F1079; Thu, 17 Sep 2026 08:00:45 +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=1789632045; cv=none; b=CPyzZ4Z/1pmEV3SWex/nZ9K2JRjwcPqCYCwZ4gQ31iYtVUpLrcsdYoTxxnMVqIHwCe26e3yqVn4sw3dMKnKvMRLg333U02TRagUR/DPfUt9m262o07NOAR6xg+zIjgs3ZujHj4k4JcZXFk0Z7kSj6cXM77zAqISXCvjaEtqCm88= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789632045; c=relaxed/simple; bh=OuEeieU+V6Hv70haVoj7A7lwMd9n5Nm96UZgZOqvhug=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DSI/CFc/HnxizR1JCkpdi1Q1UDbE1gVIKJomBiofOj2Ilo41JtLUrAQD//2HL0P2Wyb1LCDAfUMqVcOn+w/cr4qBgkjzW7Y2xBXAexBfmiGWgc+2KSiEq5D8d5FgYqD6O4kRk3fD780VRRcKG98auUnnXnJCY1ETGYNz112vvYk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Wds6ft2j; 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="Wds6ft2j" Received: by smtp.kernel.org (Postfix) with ESMTPS id 3CB7FC2BCFA; Thu, 17 Sep 2026 08:00:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1789632045; bh=OuEeieU+V6Hv70haVoj7A7lwMd9n5Nm96UZgZOqvhug=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Wds6ft2j2MKNh1pNPDidhGF5Z0k83nUCjlY+jGnVSI4/6pLD35O5SwqO02U15O82J cxsYZykCRUmyJjaCZMzhIXYGkaJSAfQpQKgvMzFjiOYPz4LLkE86De2ujtHPhcQiDg t53BVF9IPR6HNj63cAMKccjlyN9JcpHLUWsh1/8BvNs8oeeNOhP4/T3OjxnJH28SzI No8WKmhMmHEdyasW8xZLzuKQ++MmEese5huvqcBdZ9PZfKMeoApuV3lOefzFY1bIWZ KxR8xPScUHejXVQVZeWzmyJ3ax+kVhUXnPbokMO91E9qguBDWJR/RF90xIa+SGHD2s o9fxMUebgd6Vw== 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 24AEEC982D2; Thu, 17 Sep 2026 08:00:45 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Thu, 17 Sep 2026 09:59:04 +0200 Subject: [PATCH v12 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: <20260917-add-mcu-fan-khadas-vim4-v12-5-497cd543a148@aliel.fr> References: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@aliel.fr> In-Reply-To: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9bqeQr991QiZ19+v9gpqnrjD4WprndnipY2Sm5jvSZw0 +VuZnVYRykLgxgXg6yYIkv/XMsT7y4fPfN1j3oKzBxWJpAhDFycAjCR4CcM/6MWsf636H/zgqUt zSgoKWPdnVN5JzYtXsxf9UEoJfqH2hpGhs6PrQ+j+Dcl1AW92+l4yOt1rPJ7sS0NYhGazJOs40z LmAE= 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 Sep 25 03:21:15 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 A8C513F12EC; Thu, 17 Sep 2026 08:00:45 +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=1789632045; cv=none; b=nBYm45enRtd+QngJf2TsNrF4uLewAtF8tf2fcTgThz2HvPFDOvnOou4ZDRBdyRpKDla1bDLAuSO5PiMjuvK9ALb1uCV1+ZeloN232E63m0Fbg7wSLA1dqC6M/LFuZ8+tynijOtBYWbPRkHugGoJ4/6FBRdastmH0TuqrIpnS18A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789632045; c=relaxed/simple; bh=eto8+h/MaXkAsviCHPdmpQdT7c0Kfi4t066koHw6hAo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PPPp29caxnLr0O32dN5ROBNYZ5i9TC8wlTTZLGnc93UfPWkXwuaXxnXp00dst7xkppqgRw0reyKkhSWjwyveDw9xqMTL2Xb27yKwGxJTuKZggcSSBPHsqDjkd8aVECSfwUzwNJ16sdHSRLqhujH5Ff3aOCzNgY3AlihQ9vJg3GE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aLYkHTsH; 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="aLYkHTsH" Received: by smtp.kernel.org (Postfix) with ESMTPS id 55E25C2BD05; Thu, 17 Sep 2026 08:00:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1789632045; bh=eto8+h/MaXkAsviCHPdmpQdT7c0Kfi4t066koHw6hAo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=aLYkHTsHZXIDsir866SV6YWty1ZgyZIGhcp+9Ub6n3FayyM7guGMhDZJ6ZcHCVYM4 PpiQH0/ymoHlf67jrt06SSJe1Z7srO5I7vizPoc0Eu5gDXmNUTFs2lvBt2qC8Vgabd j+OumI+rxNdG6fdzgvFqhr6A2W7SWFMFlhiKKhrNnSrTvm7HuVKlC0VrGN4GUca4IN lzFCM2GtqVb8l2mgzzwLJwwZt8eeAh9HhMKveIQlx0n60ISE9g8Y3cPkCkv95UKrad IKonTTwrDnpYG4Lz0he/YC9ZaAQn4vbyQ31U5KpASBxYhujul2fhNM0F1xmAEF+SC8 WwMlH0GoFGR0A== 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 389CFC982D0; Thu, 17 Sep 2026 08:00:45 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Thu, 17 Sep 2026 09:59:05 +0200 Subject: [PATCH v12 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: <20260917-add-mcu-fan-khadas-vim4-v12-6-497cd543a148@aliel.fr> References: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@aliel.fr> In-Reply-To: <20260917-add-mcu-fan-khadas-vim4-v12-0-497cd543a148@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9bqeYqHb2Qe4D9/hil7ZZOBFKt54vSIIMXClw8iSn1dJ NodZiV3lLIwiHExyIopsvTPtTzx7vLRM1/3qKfAzGFlAhnCwMUpABM53cTI8Nbl6P2Xqx4eK/22 IDZ4gy67df2pmt2Pf+6/cS7TbvW0oxkM/xM0A50duCT034TmRzE52/O6n/AP2LggT8ktVeXY3Sh WFgA= 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