From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B3BF3E1692 for ; Mon, 25 May 2026 08:18:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.48 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779697088; cv=none; b=jYAPSMQeOauIkisUvrnSh4OIXf+x5Es8NIShVPkOzKkD0ic4ZARdRIC/sne8nx+RfsNqKIZZ3zCMd3dpD5VOI68H2iiCdeXS/cksQs5J+P9cfB1gY8JhwKKbke78OGL49TNXGrasgPSdlhg/PbqXutNkAx+Tte6dfgPY/zM/xu0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779697088; c=relaxed/simple; bh=0SbVPfxkERxvuLuYFRMt0OTiBw0AamWfiArb32auM0U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=b4S9N7ptPtmb1oLTKgXmXDZwSn8Q4hFAsLKfaPCaHvFKCycxcwURUs26ZspLDI1FXn6WuBu/FHB3mm8Z47n3Q03R5jqYczAQ3oO1Qah298I3357fikP5hqJHDOJzDtWhUfJeDzY9oR9apuTYrfp1SEsC8a0Ggx9HEFxQK2Il5cA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=E1qSXkdD; arc=none smtp.client-ip=209.85.216.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="E1qSXkdD" Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-365cae89bf5so4088570a91.3 for ; Mon, 25 May 2026 01:18:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779697086; x=1780301886; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=G/wXUXcpOUyTTnopd1ROV7ySKMFEreiMjt7SS3oNKhE=; b=E1qSXkdDlaKaBmVWtsn+EJ+TY++3SjR2qY2JbzjV6jGzpZRJ62KTtmOerjoOmrQhYo 0cVRMqIc4MG6W9itVDelmcRcY3caE1XDtIq3rtoUydIRNCRBUiVId526CW8CD7AiVID1 UEYKEEKofzFhtl1E8aLdyzSFycby+qQR22JWL0s+2114xACf5DCRXGYhJGPuEgLnh8hl kp+Yqldj3Bd2L6G/Piyrv95a9HsDK1Umynubb3GHLg1HIPgQQBJ3Xser4fqcerWpPqlq 4jJz1jZNk6ypNy4pjuQyF91FYKb1Z6GbN5p5W/3M/MxwzGKFVE0sxiYgV+MdRBRgRDfX ROBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779697086; x=1780301886; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=G/wXUXcpOUyTTnopd1ROV7ySKMFEreiMjt7SS3oNKhE=; b=rJLeT4yGSnu79vaDeNj0Nmu6AHzQ3gBOzW6ZTsc+HsYTZ6fLDq9bVdTjR2VJ9vldlx ZKA06KGN7rTNC8FSwsnN5V1EVN3tcWwNJHslA4xaRO2XibeUxGSYy3qiXFAI6mj/k8AS oTkSNa0ReOOmOguls/7pPA3Hazm8iHKUwHktHtEG/prfpSK+D3TvgPCwFS3/aYtafNg2 CyRrvf5mD0hXMCAGz46hMNO/24cF4T+Ztdhkgd7iGSDQIZXX2VWV3HlotKZsxfgUotzh yLPGzlmARnG7XDAerMn5kI9gYaWSk4XAzNjH1POa9PI+bl9UDP1k2OJdOvvL8nEaWJBr cB+g== X-Forwarded-Encrypted: i=1; AFNElJ8BCx9iNLgruSJLnxhV2b9R1sb7BNODZ0qk4aYKD8S29+EiHcA9fJMCWyuNPBH/3V3FpNDBdslfw4C53TE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+sxgpMboMJ+W2no9FF9lvM5B+WxwDDPQ0j0JtcH0yonqSNwqB usZxTDnBNIoWdZOgdb7YQ/I1uDKT8LuVmSs2bjv6pqwaMyYGGYzoTSmO X-Gm-Gg: Acq92OEDPx8ISFuJnTrP+jNtnfHkvWhkEO3IzTMl2W1BlE6vF/5G6rI57Twa4o6Wstc pH93Arwd4TWLn4774svr/ZUN95AnFp7C8Lk+qSSoldQSYuBmURlnVA6n1jR1G4eeCWNhKVKzQKh MHoh+HsUr9cuAVPE7aDwA3leZMXMX5v5Hr11rCvLLUtWWFKcgfCYkeCXtoxpRThRzWq+9Wmhgrp EcvqCOD4aaccO6rxhsohtnUbaTHinNOiI66PcbWUFaqihsg14GCKrNvey/by25MWDbY5qtNHP19 7pLbPITpxLjtyq6z2qzmAz1w+oVnrCV7NoZf3wh2atgzSUDcFdOEg3YWCF9CGEa888MXtvkZGZ4 xl2rFb1XbAyO53jpNNukLwRj9su3aoQ6dsjSFhZlComwOSKMC2qk9uZCCXwA6C88NaU2898zFMX CN17dW0byV/j6Y8NWoFUn3POcLtzK/wb9/KXC0sDWqjILc7o+UtdKHYEMj7duWiSihFg== X-Received: by 2002:a17:90b:4d8b:b0:365:3154:7b1 with SMTP id 98e67ed59e1d1-36a6768dd31mr12945282a91.26.1779697086434; Mon, 25 May 2026 01:18:06 -0700 (PDT) Received: from hcdev-d520mt2.. (60-250-196-139.hinet-ip.hinet.net. [60.250.196.139]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36a721c7cf9sm8964102a91.10.2026.05.25.01.18.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2026 01:18:06 -0700 (PDT) From: a0282524688@gmail.com To: Lee Jones , Ming Yu Cc: Ming Yu , linux-kernel@vger.kernel.org Subject: [PATCH v5 3/7] mfd: nct6694: Introduce transport abstraction with function pointers Date: Mon, 25 May 2026 16:17:32 +0800 Message-Id: <20260525081736.2904310-4-a0282524688@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260525081736.2904310-1-a0282524688@gmail.com> References: <20260525081736.2904310-1-a0282524688@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Ming Yu Add `read_msg` and `write_msg` function pointers to `struct nct6694` and provide static inline helpers for sub-devices. The USB-specific I/O functions are made static and assigned during probe. This decouples sub-device drivers from the underlying USB implementation, paving the way for alternative transport interfaces (e.g., HIF) in the future without modifying client drivers. Signed-off-by: Ming Yu --- Changes in v5: - Split from the monolithic v4 patch to follow the single logical change principle. drivers/mfd/nct6694.c | 12 ++++++++---- include/linux/mfd/nct6694.h | 22 ++++++++++++++++++++-- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/drivers/mfd/nct6694.c b/drivers/mfd/nct6694.c index 58c1cbcbe3f2..b88863a0b70f 100644 --- a/drivers/mfd/nct6694.c +++ b/drivers/mfd/nct6694.c @@ -115,7 +115,9 @@ static int nct6694_response_err_handling(struct nct6694 *nct6694, unsigned char * * Return: Negative value on error or 0 on success. */ -int nct6694_read_msg(struct nct6694 *nct6694, const struct nct6694_cmd_header *cmd_hd, void *buf) +static int nct6694_read_msg(struct nct6694 *nct6694, + const struct nct6694_cmd_header *cmd_hd, + void *buf) { struct nct6694_usb_data *udata = nct6694->priv; union nct6694_usb_msg *msg = udata->usb_msg; @@ -153,7 +155,6 @@ int nct6694_read_msg(struct nct6694 *nct6694, const struct nct6694_cmd_header *c return nct6694_response_err_handling(nct6694, msg->response_header.sts); } -EXPORT_SYMBOL_GPL(nct6694_read_msg); /** * nct6694_write_msg() - Write message to NCT6694 device @@ -166,7 +167,9 @@ EXPORT_SYMBOL_GPL(nct6694_read_msg); * * Return: Negative value on error or 0 on success. */ -int nct6694_write_msg(struct nct6694 *nct6694, const struct nct6694_cmd_header *cmd_hd, void *buf) +static int nct6694_write_msg(struct nct6694 *nct6694, + const struct nct6694_cmd_header *cmd_hd, + void *buf) { struct nct6694_usb_data *udata = nct6694->priv; union nct6694_usb_msg *msg = udata->usb_msg; @@ -210,7 +213,6 @@ int nct6694_write_msg(struct nct6694 *nct6694, const struct nct6694_cmd_header * return nct6694_response_err_handling(nct6694, msg->response_header.sts); } -EXPORT_SYMBOL_GPL(nct6694_write_msg); static void usb_int_callback(struct urb *urb) { @@ -327,6 +329,8 @@ static int nct6694_usb_probe(struct usb_interface *iface, udata->udev = udev; nct6694->priv = udata; + nct6694->read_msg = nct6694_read_msg; + nct6694->write_msg = nct6694_write_msg; nct6694->domain = irq_domain_create_simple(NULL, NCT6694_NR_IRQS, 0, &nct6694_irq_domain_ops, diff --git a/include/linux/mfd/nct6694.h b/include/linux/mfd/nct6694.h index 3f5dd53f38de..3079c74110aa 100644 --- a/include/linux/mfd/nct6694.h +++ b/include/linux/mfd/nct6694.h @@ -92,9 +92,27 @@ struct nct6694 { spinlock_t irq_lock; unsigned int irq_enable; void *priv; + + int (*read_msg)(struct nct6694 *nct6694, + const struct nct6694_cmd_header *cmd_hd, + void *buf); + int (*write_msg)(struct nct6694 *nct6694, + const struct nct6694_cmd_header *cmd_hd, + void *buf); }; -int nct6694_read_msg(struct nct6694 *nct6694, const struct nct6694_cmd_header *cmd_hd, void *buf); -int nct6694_write_msg(struct nct6694 *nct6694, const struct nct6694_cmd_header *cmd_hd, void *buf); +static inline int nct6694_read_msg(struct nct6694 *nct6694, + const struct nct6694_cmd_header *cmd_hd, + void *buf) +{ + return nct6694->read_msg(nct6694, cmd_hd, buf); +} + +static inline int nct6694_write_msg(struct nct6694 *nct6694, + const struct nct6694_cmd_header *cmd_hd, + void *buf) +{ + return nct6694->write_msg(nct6694, cmd_hd, buf); +} #endif -- 2.34.1