From nobody Sat Sep 26 10:04:20 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 6EF2E49505F; Wed, 2 Sep 2026 12:52:17 +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=1788353537; cv=none; b=LvQ0w71LiW3Cr8dDwaBrZL+T70KbbMMfc3ipt8qmEdfvhRN8G8EgwWCr1aiVxoLKw/ulU7KoYQhKA+50s9GC611hU61+a3L+4hgmvV2QLCRe4yC+Rpz8oXcP74FhCn+OqMa94NxB1RN65nXunIqMxy+t0h6s9uDSwUz1vVj4Ubs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788353537; c=relaxed/simple; bh=O7eMDBHqcruD9r+Gj32/0LYLOb9udOfrNqBmq6ix7CA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Yb0MVmJ8M+My3qf81hojnr4U8+F6ZKHY8UYEJp7dat3O66a0jFOMbOzfk2TFns/jK/hY+amMpaxzrVOLbAQpmQfbP9AvHvYpLTZjRhnQt65AZWdfFXksz6dDXezPhdfYUWz5HwAERjf6uX+c/es7ZXNceRWaefSdkpOdvZzYrBA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=o01ZAQ0Z; 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="o01ZAQ0Z" Received: by smtp.kernel.org (Postfix) with ESMTPS id 0C9FEC2BCC7; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788353537; bh=O7eMDBHqcruD9r+Gj32/0LYLOb9udOfrNqBmq6ix7CA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=o01ZAQ0ZgbP24PYsNKpP+RJeIa7DSRa6YYtJcVXRyVHZeuwTh8p5BzgsGdwlM+MW7 kH5AeBjmw7W5m9bLcyVEAdie7MWqfJxy32kEoaWcxXmL5EZGDUPmytsXnAstZ8pDQc 1GbFJwf8VQJPbLNSFAemIps4INCywuxXJnjkxSvMiLF+UVM3LH57vKVNS4CDTjFkCl hKRs9/NoDDZRV/f1kzLsBtVoZOdPdIe10lOtSB2QL/3XO8KqF8dQ+i89SFVynKhl9J c9bEAX2kj+cFdLmDScHnzZ91Q6UYZBd7FVjK8WHhdU/yiWkONZC6NAHXKtq7ZUaGdC 7ej8mQae1xh0g== 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 E00C8C61DD6; Wed, 2 Sep 2026 12:52:16 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 02 Sep 2026 14:51:05 +0200 Subject: [PATCH v11 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: <20260902-add-mcu-fan-khadas-vim4-v11-1-5f1610d83bf0@aliel.fr> References: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@aliel.fr> In-Reply-To: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9YM6adH51qFTbTiOBoZtVGnqsfmlO/q8ruls/auvGC4r K6CacnyjlIWBjEuBlkxRZb+uZYn3l0+eubrHvUUmDmsTCBDGLg4BWAiSn8Y/nCeMTBvihPcV9Vz pOCbrWSHSajM9s5jpytmPflZUK/tpczwz17PTu6O+W1/Fd/zrTN/PXT4XCp9ijFSqYzLbNcC2/0 vGQA= 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 10:04:20 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 6F2DD4968F6; Wed, 2 Sep 2026 12:52:17 +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=1788353537; cv=none; b=cAaIArs7owr9PRr9jzLgyx5c4gd+TTetlawmhHSL78sBJM75mF5AP54qyNlEfAaTG++3KUoSuO0mo4e526iFQXDb45EaTL1FBZJCLU+oe4Xc5kUEWxSdzAV7F+8mJjksuRZ281sNW+EED+9UT6MVwnNQivQ+BSQSDX9hUvN8cYU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788353537; c=relaxed/simple; bh=NpJ68cAdxRTul9v+KRzPMyOhGoHG7IvwOK7cj3TZ7Fk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=suEhrQfnIvxOCewDTLVeHWlhaCngFHZsc1Nxag9W4b8eYij+Zg1LI7qYsHu2TMrKnl2QoupXWiX0G96i0gFQ8uF5mLRGCtMq2Oq3JiusefxZ8pKKjNKdSJkZs13tlCWfvOXCTw+p/9qAbZ7bOMTyStyU1Rew84MMVKC9BZQ9se8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZlMEPtYb; 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="ZlMEPtYb" Received: by smtp.kernel.org (Postfix) with ESMTPS id 21602C2BD01; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788353537; bh=NpJ68cAdxRTul9v+KRzPMyOhGoHG7IvwOK7cj3TZ7Fk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ZlMEPtYb8sDEZ0lQL5z/OEYH3pSB5l7nbCuiXsKG8SPqRvvO5ClN+z5/SNch0oLZ/ v7WFc41oZTAUBcRTkYOwDVL/t6PfXUhqjd76Xpsuv5Hw66qu9gsdBTO5boHTykntop 3iWSoBQ1/cis4nOw9d8BuHo/eF4jpMUbDVC0THKo8gaaKjpC+XVUDxJRIncdR6Zitd lAN6Y7VgBslaZNVUt4EXb0x3CpPmolWppZ0JBP7i3oJUkXZyopi2GAWrMWkKZgSlck 0RbL/4e7LfDWHNvGirlfZBiYE39epGlE3YNRuO/6ZtJ7mkYOFhlAhDs0tJm2e4TlIV wd5mJOs9eq4sQ== 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 053F7C624D0; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 02 Sep 2026 14:51:06 +0200 Subject: [PATCH v11 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: <20260902-add-mcu-fan-khadas-vim4-v11-2-5f1610d83bf0@aliel.fr> References: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@aliel.fr> In-Reply-To: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9YM6dc6bS1vZX3qQ9qDK78sPlr6zubF64d6wdvYll6Un 6utsG5hRykLgxgXg6yYIkv/XMsT7y4fPfN1j3oKzBxWJpAhDFycAjCRi62MDD0TX+8LUWzmzfRJ +XC3O7U98KaJwkXnXyZa21oSpz0578jwT9vP0PPDHN+5E1e//PsxU+65S1MA78ob7uuWPLGNWGe ixAsA 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 10:04:20 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 6F2284968F3; Wed, 2 Sep 2026 12:52:17 +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=1788353537; cv=none; b=HYsOifEQA65uzu1OQoPyZB9kI12vAvb9DpO3+6975u0TTO2mhQiI3FkEmv50FC/xGk6AlsO1FI988t8Ph9mdJh49twp+AiEO9h/moboM9e/TA+UEWg/kU0aBJgqlet8TLDIdUTrNid+ytLvWJygJ45OGE2xUbxvNWq0mRC2nuT4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788353537; c=relaxed/simple; bh=TpKUTT9UnXyJkMGklfvshLexshR4zNIwKPjchubwhf0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RiUGiQnP5bHChtapiDPb3R8zpwTyQ0Abj00HXJTJyvQFfB1WU5KWo5lW9YVXbuEFItdFy1WyMU8NFdK5qWiY6CrmXQqiNOe4AJTuwyD9O63DUfCyNvUoEN+CN2A8XOI8BfgBf7YRFDIFNtOado1crlPkvlxGlHxTJfJLIqLabho= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AeJJzAo+; 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="AeJJzAo+" Received: by smtp.kernel.org (Postfix) with ESMTPS id 2D980C2BCFF; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788353537; bh=TpKUTT9UnXyJkMGklfvshLexshR4zNIwKPjchubwhf0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=AeJJzAo+wDUSmOjhqmiTOs+eOdv3kPpdD6x1e6cRbZvJTQySkZHAplXxfszsXRMcX iqGpeSSkpG9yp+StF0JZvErKJ7Jp81cpV4jRo39lOpSzOnlNrZjidqQer9MxQqpD5L vfAxMikMsP5VigfGf8yytgcd6/bU1ZHYiLCPAq5GnYk5E21B5vz2npBh++6pwTmOs8 Ddf3iJ19aImiXRRf74UbmsjYjjq0Uoce6rTZMc7vAPsgcM3eFv+zgcZVvW4ZtkkERo oJumev1YWcnZ6ka3s6mS9Ll6m34+biUwmZiUjo8pezlnO/B/mVF9+DzP5QtJw11aQS dCF5J3uUIOAZQ== 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 194D3C624D7; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 02 Sep 2026 14:51:07 +0200 Subject: [PATCH v11 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: <20260902-add-mcu-fan-khadas-vim4-v11-3-5f1610d83bf0@aliel.fr> References: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@aliel.fr> In-Reply-To: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9YM6fdqTq57TFPWRfD4L45yfPFVPYEv+7tJbhT7Qxfe7 1IqnpIdpSwMYlwMsmKKLP1zLU+8u3z0zNc96ikwc1iZQIYwcHEKwESMHBn+KR1ZUPLY0SDq2POS B+p/VWP6XnznOvEhrmhNdceO5B9yixgZOo6nZlXzHX62UH3Ky7sZ89okC5ml5KtD7cXfxDZ85gr iBwA= 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 10:04:20 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 6F0014968EE; Wed, 2 Sep 2026 12:52:17 +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=1788353537; cv=none; b=G5UAodFx22sLefRJdF5zuHgJxwz+Y2EkolAJ/Xp84Y3+/QdwqmUkOTzvahKbSZp+K0Qp52WMDRntrHU82oqiV4KCHfoYvxUmYZHTmle23GFx0r2zuLXQ8l1z50pxBHVjxRLe6BBN+qXT8E+VjtkwddgmCcDxmN0+djaj4+ai9/8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788353537; c=relaxed/simple; bh=nSNR/5D0SYg9otiBYp4uOypK1gzpnEDCh1WlB9oDc98=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XUkQtUZyY0kOBlIURda+7fgFrDoT/Ukn/SgDBS40lsX+U1+9yGXuG11DQceLRVAoZgyVgUXmaO1+LR+wLwfm0VqwwR8vvGfRlQ8aUuZX5a9/Dhw/r2372zfLgZX/8Zgo988GmCPrNSUwbZbeO54gSUgP47xTEP6R/WTsBlfPeWE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TEry2ksM; 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="TEry2ksM" Received: by smtp.kernel.org (Postfix) with ESMTPS id 4187AC2BD05; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788353537; bh=nSNR/5D0SYg9otiBYp4uOypK1gzpnEDCh1WlB9oDc98=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=TEry2ksMKhk7PQjeCWGetrlJ2HSQ/UR/ce+pO0O7z3L5WMDfslAQwnkKrCWuvnL/H 782bK0jW5KtnKt+4zgvUBGrpG9Ek4EUw+X44SOlaXOpiuT9v74jVK/ZdlP4lleU8fF 4/usz33+Nfwbh6M+Az52HECW1h1/NYm3eJxNkzIOQIR3i4Hrq76ikF9THN0C9VEqC8 kz8V6MetUju9veN/gIae52v+wuKQvaynaReEXJCfj4Q51z/YRElNjwbr/6sOOdD4TT 2lY55dfNEXdvLGvBbXwgoYfWN43kzvxLWEWHT5FUDwcD4ajmN5VMSVXIYYPZ4BjMS7 lE+YflykbW34w== 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 2DBD9C624D6; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 02 Sep 2026 14:51:08 +0200 Subject: [PATCH v11 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: <20260902-add-mcu-fan-khadas-vim4-v11-4-5f1610d83bf0@aliel.fr> References: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@aliel.fr> In-Reply-To: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@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=zXGNIJ6KCWP9FF8FljP2h9aLndxz2U6+8oWPcyZ4qNY=; b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9YM6c9/lAQnGdfs3vnxtdpH7p0Pb6ydzMtbf4Tn7z3Jw Mnef7J+dJSyMIhxMciKKbL0z7U88e7y0TNf96inwMxhZQIZwsDFKQATCXFn+B+YtsC+eodxzpmV 9RLP9qf9UP3iPbkyOeLs2ZWxS9NERfQZ/pfciNmX9e/ckTL2XXtuCCoLpRhYbPs3LT38r6vZleB lf7gB 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 | 90 ++++++++++++++++++++++++++++++------= ---- 1 file changed, 69 insertions(+), 21 deletions(-) diff --git a/drivers/thermal/khadas_mcu_fan.c b/drivers/thermal/khadas_mcu_= fan.c index 21b3d0a71bd0d..62d4736985b2d 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,56 @@ 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 of_node_get(dev->parent->of_node); + + if (!pdata) + return -EINVAL; + 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,21 +149,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 +174,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 --=20 2.49.0 From nobody Sat Sep 26 10:04:20 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 A578249E5E9; Wed, 2 Sep 2026 12:52:17 +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=1788353537; cv=none; b=K99AiSQcrNYI6c2mbHWxHdth68nrzYLMaw1M8tza9PoUvgwi1ITObM65x8hEi/lmJGdIzuXZPzDiCPIqyZOxoaJRNr6WqQa4S/0wFWjD0IGGfB43Cn+LpXD2sQXFQL6k103aGw2cFKcqnPF8mXsMk11Sv7/E/opjpuX++7yFpMA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788353537; c=relaxed/simple; bh=OuEeieU+V6Hv70haVoj7A7lwMd9n5Nm96UZgZOqvhug=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IfRgljt+zHATMztr05gIY9vbTeOBivgAQa2511Oqum6wyVUWAw6gITWsVl9Y/0Op1d+aa/m5odFsnMDifr266Xh5P5DmwKFaky5rLixDmR3wzRg8/luW/cjFnlC0YcaGriDV1U/FpXGxizmqfkuspBX6/9xsnwF/s/T9H3dwlN8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rg+k7dCb; 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="rg+k7dCb" Received: by smtp.kernel.org (Postfix) with ESMTPS id 5872CC4AF52; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788353537; bh=OuEeieU+V6Hv70haVoj7A7lwMd9n5Nm96UZgZOqvhug=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=rg+k7dCbFo53XmykheSmmOTIi1sBmf5Reim9K1sGQG18dDaAEiY+b2ihjzOpmG29n upHOmYRFv5FhJenaHCnfFrbCPj4ZwsnBuY7cbORAvOp9RSY87JAiBGVq8mgN820JQc azXRgZrLD/XS6XwLvaO8L3jaO0pc9QJjYGF3tV1PAB4tms1ndnMRPxA0beQ1lRXWqW RdhhxBTNrP8u9d9w2XWbGpO7Y+hRMEGWdxYcX34PEKCEbpljHaqihi3N2atvz9iuFN zEnYN1Zf4asn+Q3kgJA47GTs9DqMquJp6GtE1h2e/mt6wphIvfp3stsu8liDBgutTl sX+rEtngcfvHw== 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 43F53C624D9; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 02 Sep 2026 14:51:09 +0200 Subject: [PATCH v11 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: <20260902-add-mcu-fan-khadas-vim4-v11-5-5f1610d83bf0@aliel.fr> References: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@aliel.fr> In-Reply-To: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9YM6R/Kq3Xfa9am3t4mKPfjg/gHsevT5s9TvrH6/Wfzl +wsR/Qmd5SyMIhxMciKKbL0z7U88e7y0TNf96inwMxhZQIZwsDFKQATqbrNyPB6U+bxtJowE+VV jKXeV56d2hxmuPXsRc4eZweLrjm2z5YxMkz9bma2lekmw4NvHK2uprd+fk3gfTpB1X1f1KYynuc a67gB 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 10:04:20 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 D719649EC69; Wed, 2 Sep 2026 12:52:17 +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=1788353538; cv=none; b=i/owmFMFOTjGYNcPY2A0O5gjD4GV22HBqPzdt8Jx14J98n4ivzHumv25ABVBGXJOVWX9VPfzUFfb6Fkeo/UWFge5ggD7OLwAfSdYPU+HI28AoedSv+Aefce6jaD+gUT5chdXU2jndUyh2VlkfGPCEIZYBrIJsTDX8xQI/KGzpp8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788353538; c=relaxed/simple; bh=eto8+h/MaXkAsviCHPdmpQdT7c0Kfi4t066koHw6hAo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HIxHOMNQmBN21QB2n7oDOQcNZ5OB89QpM6WNlu4lSNKeEKkP0aTb4WhUsy6M1eo9xRQbTaktehaTItXKluWPQB8AzT5QJGqfUiYEYvJjHbhVzS8/XA5b/kwVjiGxRyeSB0gjJlLBSvKmQq2MeQVPgLODWKxi1QY9ibBycYpJVhU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Se92FgMX; 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="Se92FgMX" Received: by smtp.kernel.org (Postfix) with ESMTPS id 6A704C4AF63; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788353537; bh=eto8+h/MaXkAsviCHPdmpQdT7c0Kfi4t066koHw6hAo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Se92FgMXxd0gkZAtyYPaq5QnRXO5bu4p1VW84/sYTbDxjPq3tfFOnPlbWvyan8jsD E4+7uZajSwHgkx9A/tjesqK8o43Ao+vOkHGb7eG7ymP3PISw203tMxGmF1LfgzQZVJ 24Gb9UJKCaf2sEfu9bu1LFsr2z1xcaVpuaZv9yJduSHQnWaFHiiMQsuzV57Ce1bz25 dTUKCghES2z2wfkj3tVqL9MbheEm7QKKZTbmDHJ39dN32M2B+qUMPtIVM9OiIMIXMH 2yslnky/TtAKNr3TTHt6L8hIEA89GR4NOAD6/kMre03CkHECuiCoS3i9Pgw6bamqsl i6VylFveRcl9w== 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 56C58C624D3; Wed, 2 Sep 2026 12:52:17 +0000 (UTC) From: Ronald Claveau via B4 Relay Date: Wed, 02 Sep 2026 14:51:10 +0200 Subject: [PATCH v11 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: <20260902-add-mcu-fan-khadas-vim4-v11-6-5f1610d83bf0@aliel.fr> References: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@aliel.fr> In-Reply-To: <20260902-add-mcu-fan-khadas-vim4-v11-0-5f1610d83bf0@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=owGbwMvMwCWm1SvKXP3cUInxtFoSQ9YM6d+rCm0OZHvJFPAu1/l/onnu1KT7zydUzD169VG09 PqqmsfSHaUsDGJcDLJiiiz9cy1PvLt89MzXPeopMHNYmUCGMHBxCsBEOFgY/idzmuxb+v/r/NA3 onGOGwwYnJ4lyVQv9bH/skqhY33ikwBGhgeTda4vWMv/n+X6LgXPyY7LLq/8vdA9mEmBLbAoPvi RNzMA 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