{"id":2227937,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2227937/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-i2c/patch/20260424-add-mcu-fan-khadas-vim4-v5-3-afcfa7157b23@aliel.fr/","project":{"id":35,"url":"http://patchwork.ozlabs.org/api/1.1/projects/35/?format=json","name":"Linux I2C development","link_name":"linux-i2c","list_id":"linux-i2c.vger.kernel.org","list_email":"linux-i2c@vger.kernel.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260424-add-mcu-fan-khadas-vim4-v5-3-afcfa7157b23@aliel.fr>","date":"2026-04-24T14:17:34","name":"[v5,3/8] mfd: khadas-mcu: Add per-variant configuration infrastructure and VIM4 support","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"a10b7b8440e984258d9fbd798c4c2166f2f2dcd4","submitter":{"id":93204,"url":"http://patchwork.ozlabs.org/api/1.1/people/93204/?format=json","name":"Ronald Claveau via B4 Relay","email":"devnull+linux-kernel-dev.aliel.fr@kernel.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-i2c/patch/20260424-add-mcu-fan-khadas-vim4-v5-3-afcfa7157b23@aliel.fr/mbox/","series":[{"id":501376,"url":"http://patchwork.ozlabs.org/api/1.1/series/501376/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-i2c/list/?series=501376","date":"2026-04-24T14:17:34","name":"Add VIM4 MCU/FAN support","version":5,"mbox":"http://patchwork.ozlabs.org/series/501376/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2227937/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2227937/checks/","tags":{},"headers":{"Return-Path":"\n <linux-i2c+bounces-17171-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-i2c@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=tlUKD1pL;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c09:e001:a7::12fc:5321; helo=sto.lore.kernel.org;\n envelope-from=linux-i2c+bounces-17171-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"tlUKD1pL\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from sto.lore.kernel.org (sto.lore.kernel.org\n [IPv6:2600:3c09:e001:a7::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g2FVJ23w1z1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 25 Apr 2026 00:20:24 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id 4E297300752B\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 14:20:17 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id D4A3D3DD50B;\n\tFri, 24 Apr 2026 14:20:10 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 59F1532D0CF;\n\tFri, 24 Apr 2026 14:20:10 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPS id 0A05CC2BCB9;\n\tFri, 24 Apr 2026 14:20:10 +0000 (UTC)","from aws-us-west-2-korg-lkml-1.web.codeaurora.org\n (localhost.localdomain [127.0.0.1])\n\tby smtp.lore.kernel.org (Postfix) with ESMTP id F30DDFED3C9;\n\tFri, 24 Apr 2026 14:20:09 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777040410; cv=none;\n b=eu8aU2fM2zyTQqj9+Aed6f4dc+H05mkF+gcCs0kydR5Y5ylUCMT11wWCB4W+7zVg2Vgqn9PvOBzSTfMdM+Y1Rln95lDqcs3pbmSdxAX5Ti3kG44qlLHe3HibMcxKjdot/mRld5ZcSItl3wcNEbtCR6stdIZPhOYW5aptF8fHtAU=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777040410; c=relaxed/simple;\n\tbh=JIvHBkUoalBvVLwrlyOmEWngyDFdpxRN9ZxD0CWqxss=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:\n\t In-Reply-To:To:Cc;\n b=O8LB73tqvrCZmqLvmAOa//NFyQhY691SsTX+M/X/E0C7vMZ/oG1b2ftRF7vp/im5RC1Z6VDiQRcX91+9Ax3b+6XlDllWc0alxtoRnDN9zCbIy1UkEHf7XucPcA7FmQoG79IOaWq/YJihZCTN/8h4y3Hcsk6cKdgo+ECJ/l+d4Rc=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=tlUKD1pL; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1777040410;\n\tbh=JIvHBkUoalBvVLwrlyOmEWngyDFdpxRN9ZxD0CWqxss=;\n\th=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From;\n\tb=tlUKD1pLW3uwSDtalNBMSWWfN4Bq5fGjw7iXyVYfogdeupXcNpbOLgcYTMOMtMA6q\n\t BVx7wrPbB++ub6feIBIo2LjwggXRupgrC0f6cuWUR6HYsMGpW7soWe1debOJfSRCsg\n\t 6mz/0Qr7a/GGukpCafnnezkhJof4J8S0Idu2yNRB1yiY78kqcjUryXUfUWFdXw3UTr\n\t nZZx5cJPZ3NnJZ6zbqJU8vNmUXWI9dzzh7ZRiB83KBgCI1Ms0RKqft2U8n8Gg2/U0O\n\t yXHUacAzv6o5t5cb4/VLtrWd0aYisDKE0Qt7XeY8nB4vEN7rcSmPlCYU7Vqxrd1fYS\n\t kub748IY+Vx7w==","From":"Ronald Claveau via B4 Relay\n <devnull+linux-kernel-dev.aliel.fr@kernel.org>","Date":"Fri, 24 Apr 2026 16:17:34 +0200","Subject":"[PATCH v5 3/8] mfd: khadas-mcu: Add per-variant configuration\n infrastructure and VIM4 support","Precedence":"bulk","X-Mailing-List":"linux-i2c@vger.kernel.org","List-Id":"<linux-i2c.vger.kernel.org>","List-Subscribe":"<mailto:linux-i2c+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-i2c+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","Message-Id":"<20260424-add-mcu-fan-khadas-vim4-v5-3-afcfa7157b23@aliel.fr>","References":"<20260424-add-mcu-fan-khadas-vim4-v5-0-afcfa7157b23@aliel.fr>","In-Reply-To":"<20260424-add-mcu-fan-khadas-vim4-v5-0-afcfa7157b23@aliel.fr>","To":"Neil Armstrong <neil.armstrong@linaro.org>, Lee Jones <lee@kernel.org>,\n Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>,\n Conor Dooley <conor+dt@kernel.org>, Andi Shyti <andi.shyti@kernel.org>,\n Kevin Hilman <khilman@baylibre.com>, Jerome Brunet <jbrunet@baylibre.com>,\n Martin Blumenstingl <martin.blumenstingl@googlemail.com>,\n Beniamino Galvani <b.galvani@gmail.com>,\n \"Rafael J. Wysocki\" <rafael@kernel.org>,\n Daniel Lezcano <daniel.lezcano@kernel.org>, Zhang Rui <rui.zhang@intel.com>,\n Lukasz Luba <lukasz.luba@arm.com>, Liam Girdwood <lgirdwood@gmail.com>,\n Mark Brown <broonie@kernel.org>","Cc":"linux-amlogic@lists.infradead.org, devicetree@vger.kernel.org,\n linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org,\n linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org,\n Ronald Claveau <linux-kernel-dev@aliel.fr>","X-Mailer":"b4 0.14.3","X-Developer-Signature":"v=1; a=openpgp-sha256; l=2474;\n i=linux-kernel-dev@aliel.fr; h=from:subject:message-id;\n bh=lbbZ527T237ZjHkvSfooMhj4xDf42xiFowYZHXz2AMk=;\n b=owGbwMvMwCWm1SvKXP3cUInxtFoSQ+brGkH5uqwwTSmFhBuzncuEQ3YGl8dPzp1mJdDt5q6Xe\n 0tuzfuOUhYGMS4GWTFFlv65lifeXT565use9RSYOaxMIEMYuDgFYCJPuRn+qUT4GXs8uH+EO/Ha\n 792Xpa0+ppms8FjVc/B1aOMiOZcEC4b/YWyM385UWWRpOznqre5237dJ5ocd//v1T5lLHu9WZD3\n NAQA=","X-Developer-Key":"i=linux-kernel-dev@aliel.fr; a=openpgp;\n fpr=DFD863F61375BF917F0012173953305EF1D0EC3E","X-Endpoint-Received":"by B4 Relay for linux-kernel-dev@aliel.fr/default with\n auth_id=744","X-Original-From":"Ronald Claveau <linux-kernel-dev@aliel.fr>","Reply-To":"linux-kernel-dev@aliel.fr"},"content":"From: Ronald Claveau <linux-kernel-dev@aliel.fr>\n\nIntroduce a per-variant configuration structure (khadas_mcu_data)\nholding the regmap config and MFD cells,\nselected at probe time via the of_device_id match data.\nThis makes adding other variants straightforward.\n\nAlso introduce khadas_mcu_fan_pdata to pass fan register address and\nmaximum level to the fan sub-driver, removing the hardcoded constants.\n\nReviewed-by: Neil Armstrong <neil.armstrong@linaro.org>\nSigned-off-by: Ronald Claveau <linux-kernel-dev@aliel.fr>\n---\n include/linux/mfd/khadas-mcu.h | 39 +++++++++++++++++++++++++++++++++++++--\n 1 file changed, 37 insertions(+), 2 deletions(-)","diff":"diff --git a/include/linux/mfd/khadas-mcu.h b/include/linux/mfd/khadas-mcu.h\nindex a99ba2ed0e4e0..75e275d3fa8d9 100644\n--- a/include/linux/mfd/khadas-mcu.h\n+++ b/include/linux/mfd/khadas-mcu.h\n@@ -70,6 +70,13 @@\n #define KHADAS_MCU_WOL_INIT_START_REG\t\t0x87 /* WO */\n #define KHADAS_MCU_CMD_FAN_STATUS_CTRL_REG\t0x88 /* WO */\n \n+/* VIM4 specific registers */\n+#define KHADAS_MCU_VIM4_REST_CONF_REG\t\t0x2c /* WO - reset EEPROM */\n+#define KHADAS_MCU_VIM4_LED_ON_RAM_REG\t\t0x89 /* WO - LED volatile */\n+#define KHADAS_MCU_VIM4_FAN_CTRL_REG\t\t0x8a /* WO */\n+#define KHADAS_MCU_VIM4_WDT_EN_REG\t\t0x8b /* WO */\n+#define KHADAS_MCU_VIM4_SYS_RST_REG\t\t0x91 /* WO */\n+\n enum {\n \tKHADAS_BOARD_VIM1 = 0x1,\n \tKHADAS_BOARD_VIM2,\n@@ -82,10 +89,38 @@ enum {\n  * struct khadas_mcu - Khadas MCU structure\n  * @device:\t\tdevice reference used for logs\n  * @regmap:\t\tregister map\n+ * @data:\t\tpointer to variant-specific config\n  */\n struct khadas_mcu {\n-\tstruct device *dev;\n-\tstruct regmap *regmap;\n+\tstruct device\t\t\t*dev;\n+\tstruct regmap\t\t\t*regmap;\n+\tconst struct khadas_mcu_data\t*data;\n+};\n+\n+/**\n+ * struct khadas_mcu_data - per-variant configuration\n+ * @regmap_config:\tregmap configuration\n+ * @cells:\t\tMFD sub-devices\n+ * @ncells:\t\tnumber of sub-devices\n+ * @fan_cells:\t\tMFD fan sub-devices\n+ * @nfan_cells:\t\tnumber of fan sub-devices\n+ */\n+struct khadas_mcu_data {\n+\tconst struct regmap_config\t*regmap_config;\n+\tconst struct mfd_cell\t\t*cells;\n+\tint\t\t\t\tncells;\n+\tconst struct mfd_cell\t\t*fan_cells;\n+\tint\t\t\t\tnfan_cells;\n+};\n+\n+/**\n+ * struct khadas_mcu_fan_pdata - fan sub-driver configuration\n+ * @fan_reg: register address to write the fan level\n+ * @max_level: maximum fan level\n+ */\n+struct khadas_mcu_fan_pdata {\n+\tunsigned int fan_reg;\n+\tunsigned int max_level;\n };\n \n #endif /* MFD_KHADAS_MCU_H */\n","prefixes":["v5","3/8"]}