{"id":2219653,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2219653/?format=json","project":{"id":35,"url":"http://patchwork.ozlabs.org/api/1.0/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":"<20260403-add-mcu-fan-khadas-vim4-v2-3-70536b22439a@aliel.fr>","date":"2026-04-03T16:08:36","name":"[v2,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":93040,"url":"http://patchwork.ozlabs.org/api/1.0/people/93040/?format=json","name":"Ronald Claveau","email":"linux-kernel-dev@aliel.fr"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-i2c/patch/20260403-add-mcu-fan-khadas-vim4-v2-3-70536b22439a@aliel.fr/mbox/","series":[{"id":498653,"url":"http://patchwork.ozlabs.org/api/1.0/series/498653/?format=json","date":"2026-04-03T16:08:34","name":"Add VIM4 MCU/FAN support","version":2,"mbox":"http://patchwork.ozlabs.org/series/498653/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2219653/checks/","tags":{},"headers":{"Return-Path":"\n <linux-i2c+bounces-16950-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 (1024-bit key;\n secure) header.d=aliel.fr header.i=@aliel.fr header.a=rsa-sha256\n header.s=courrier-s1 header.b=PfXZMFwX;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=linux-i2c+bounces-16950-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=aliel.fr header.i=@aliel.fr\n header.b=\"PfXZMFwX\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=65.21.61.41","smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=aliel.fr","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=aliel.fr"],"Received":["from sin.lore.kernel.org (sin.lore.kernel.org\n [IPv6:2600:3c15:e001:75::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 4fnP3Z5dZqz1yCt\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 04 Apr 2026 03:16:10 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id E49C73054A22\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  3 Apr 2026 16:09:42 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 36EF43CD8D3;\n\tFri,  3 Apr 2026 16:09:27 +0000 (UTC)","from courrier.aliel.fr (courrier.aliel.fr [65.21.61.41])\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 2E6823CB2C1;\n\tFri,  3 Apr 2026 16:09:25 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775232566; cv=none;\n b=klj1iYbbPZXoMUxf/5eiHq1LMmt54c1Ceg6RD8yMeD2VaMDyxWSSLoDnDs4jRVoJ6vG30FvoN57yOhhjuy1WAu1ujCMaoYIBHbOYJHh6dHCEZHigPlGZ6VhKznb8KWKApEOwcNnKuQLJJCaaDY5clztcVqouj3oHAOi2arw3E/E=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775232566; c=relaxed/simple;\n\tbh=OW1b2Q/DJTEMxPikE6mdf/p+H5KyL7TPJwoR6k9njCc=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:\n\t In-Reply-To:To:Cc;\n b=XASUNmuklp0ZNBL2aGVml1la/zL6JdRy5os7E3RY2VCn9K9mlY7g7oKHbzg7620S9PqeTMxvsKn/zD6HaBanWAkYceQphsYkNdSPolBYo+mSF0EJnkKk6WXWYwhAatLdEpw8D70zxSS84Uv49ZrvVZkdPmPTehgUA200rNPLjEA=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=aliel.fr;\n spf=pass smtp.mailfrom=aliel.fr;\n dkim=pass (1024-bit key) header.d=aliel.fr header.i=@aliel.fr\n header.b=PfXZMFwX; arc=none smtp.client-ip=65.21.61.41","From":"Ronald Claveau <linux-kernel-dev@aliel.fr>","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=aliel.fr;\n\ts=courrier-s1; t=1775232558;\n\tbh=OW1b2Q/DJTEMxPikE6mdf/p+H5KyL7TPJwoR6k9njCc=;\n\th=From:Date:Subject:References:In-Reply-To:To:Cc;\n\tb=PfXZMFwXIsrCSGosZonVrGVmWJ+K0tfoIGVOLJTEZHqMjOd1C8y7YNQGoV8BBdDKM\n\t Aqz3mhfR4tgb4+gUt9kiMeDc1oE/jey/DwxU6JhX9Iv9IjvpJ4p1M04P75gqUs36Wk\n\t Tqf+o8kbtjCbPThDXxmj8zY2tolXEyosnTrrINWc=","Date":"Fri, 03 Apr 2026 18:08:36 +0200","Subject":"[PATCH v2 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":"<20260403-add-mcu-fan-khadas-vim4-v2-3-70536b22439a@aliel.fr>","References":"<20260403-add-mcu-fan-khadas-vim4-v2-0-70536b22439a@aliel.fr>","In-Reply-To":"<20260403-add-mcu-fan-khadas-vim4-v2-0-70536b22439a@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=openssh-sha256; t=1775232552; l=2417;\n i=linux-kernel-dev@aliel.fr; s=id_ed25519; h=from:subject:message-id;\n bh=OW1b2Q/DJTEMxPikE6mdf/p+H5KyL7TPJwoR6k9njCc=;\n b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgMGec55oxeeisqykQiUedekMYyOnR9\n BG9E/7rDWyqdNoAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA\n QBYAqg8sMjvR+NKLPDE6Tj+YQsbEym15keBIbm65muteVJUAKrgLJTN7ouhVTiko2nYSYH9FP00\n fFT0k7WtOXQc=","X-Developer-Key":"i=linux-kernel-dev@aliel.fr; a=openssh;\n fpr=SHA256:kch4osYZ6A1BrPps5AUs6KnfdE2wm4ocMtyTc8TmZMs"},"content":"Introduce 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\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":["v2","3/8"]}