From nobody Fri Apr 3 20:53:04 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013029.outbound.protection.outlook.com [40.93.196.29]) (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 412C639098C; Mon, 23 Mar 2026 11:08:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.29 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264129; cv=fail; b=B3Avu0Hg19LceotT+Mo6G/M3G2IF5uNSlKOUoetBiLAe6MoKBTPb+uX8/MJTgY44irbJiTdUBemuPbUiHn9ILGzmEApwCGwNAar9rlGFTCSl7vZkK6bIN30sIrj+gdDpvNdmp5oU14qvqKSEgu6GWuDs9RuUorhd9XUQPWqpqlE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264129; c=relaxed/simple; bh=kb21sC1Aq8cMGv0iuzbcIlyuDLG3chxcOEv4oLWRDHs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=PyeUoVAxwBX0YwMc5vflFzNdjUJFTjeZr+r6ZxJ8HLSkXFxU6Xy9YSnh66Sp82CmuWMu0xePf5rSKGGjiKMPGCeFI0M9jE5odSl9hGvQNMGu+dtfM2ecW3D4jc0M/yjdcBnSfE6FlhD/PLHm/uKq1lOVBQ9EEWc+1FCxumCEsM4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=iDTK1AuZ; arc=fail smtp.client-ip=40.93.196.29 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="iDTK1AuZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IMPXMTKUmnyILERrlTuVx818aMMkTWR1ERdrbggvhvp/yFl8MX1ycYhDGnErpRy5WheXS7pmDND/ZJJ74FOhutYva7xyiNV+RC7878UGqYF32bRlhUPxVgyMQMqllddgSnFuF/CySaXSOxh/SMlFf5PnwsfzeLdCrd5/7xGcmf6HLGkajP3hCMyX3oPIlHPrzT7KpfqNQOqsUeX5HVhNDbZKsUw8hhb/iN5qKA8osy5MsZ/pjT0+bldtNkWtmh2jkn3iqZl9GD7/IjOcw62/Lc0dPu+WwgpSpGMfBIfTAeYEYnvfvjzkJgqCNGew0pKPebWNRK/Z3vZmXo/tM6I9Xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dzdrJk4aJuLb+CSXHHjXhx+mfPoLj/WkV9aAK2PQKJU=; b=XD5UXz1iUnHYO6Ue5ZT+I0ymnfKAZ8Ee/1lMnYBnOB8lpbm5B0hBlN83DDAj9FzLCcV+QcEBKaCjT/ReEOQSCUX81EYuh+QGf/oyvd5Sdjcd3G4rOtQJYhWz7OBeNCBuF6DHqrjE478KP+QNMaSVeDoMgJrIjw4pmo6iKULd8+3kVk2tJ4lULPLOl5JiWNsiQgsc4+PU6Es4sV6KSNSSiyvc6Kgah9+Tkzm5dg8XICCZ3KYIqkocpyGBsoi+0/NwaaHFtN/4csuGvGtxZpVxii4zuf7KeDgViC4qgRpasabarxNQy7ffgZkdJpOuRchqoPCBNk/bxWFsY44mTzM5Bw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dzdrJk4aJuLb+CSXHHjXhx+mfPoLj/WkV9aAK2PQKJU=; b=iDTK1AuZS8Su6uLjBGbosEHrbyhwutYkygVVjY5WyG00geyfbRN8dSDpcXiTbvogso01cbnUREKFJZJx/1kDCG+K88CiXdqpF2tx2kgT5Ah5F8sI/F61BXW4QPGvr++Jr6Y5lC3Bk2/RYvm0k2hW4xDfYDCeML/+zDMDMaRc1bA= Received: from MN2PR08CA0013.namprd08.prod.outlook.com (2603:10b6:208:239::18) by DM4PR12MB6448.namprd12.prod.outlook.com (2603:10b6:8:8a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Mon, 23 Mar 2026 11:08:43 +0000 Received: from BN2PEPF00004FBC.namprd04.prod.outlook.com (2603:10b6:208:239:cafe::f) by MN2PR08CA0013.outlook.office365.com (2603:10b6:208:239::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.31 via Frontend Transport; Mon, 23 Mar 2026 11:08:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by BN2PEPF00004FBC.mail.protection.outlook.com (10.167.243.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19 via Frontend Transport; Mon, 23 Mar 2026 11:08:42 +0000 Received: from dcsm-trdripper1.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 23 Mar 2026 06:08:38 -0500 From: Akshay Gupta To: CC: , , , , , , , , , , , , Akshay Gupta Subject: [PATCH v1 1/6] hwmon/misc: amd-sbi: Move core SBTSI support from hwmon to misc Date: Mon, 23 Mar 2026 16:38:06 +0530 Message-ID: <20260323110811.2898997-2-Akshay.Gupta@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260323110811.2898997-1-Akshay.Gupta@amd.com> References: <20260323110811.2898997-1-Akshay.Gupta@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb08.amd.com (10.181.42.217) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBC:EE_|DM4PR12MB6448:EE_ X-MS-Office365-Filtering-Correlation-Id: 2a184e87-3d23-4123-c5fa-08de88cc8b75 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: BLOz5g1UD2t562gBXAPu+Eu8Y14Mz2DVb4601nAh9QpbUQMqzo4MhqUyvDsrZSGoBxMPYEGWNBA3T0P/wo5WPTm/6Jom5NJgcOawZXWV/H0cCN3egH2XtMZTiND4XZBfOltwtdcONLU6hfqpbCDOaSkltV9BJnTmdxr/9ly1ifmzl0zQhXG8AKYOcOvZ3USSrPHlf4vDhVtFueCtr5QUhlc+Z5bTgy39Vt6EDlDs13+amYOyJ4ehphGwbCO+haOZuqbDq/jC9wJxC/DDwqi/UXMzCBIjvCKrr1MhGt1o/mnpNtUvAxcRZnDmG3twr8SQTmpXdcd0rRqu/jKV6QiDKCUjLLKthJvCdoxwoYRWYnC7wbAQzkarpPCHjU3CPzwL4sn1hZQYKey/syabnnxdMpXoNHBwbAX7GyzetbbeNsHcxB2xkugc3mNHnvBnYD3XN+zxh/Yw32kYyOwZTAznnZ9SV/Ufiz2+JS8lGX3v2ouV2YaLSFU7UDm0ZWzNLnw3KEDCYCuxRf+zNWSJOBmHdDG4mzJt4mwPib73UvETovFwGLympE/h+494XyXcVbOqnIL2Y6nvFfJGn+j4UKHqZ73tDmrvF5h7FQ2gQVyWZAGXB/zpIAmmG82FwwbQwh302FOOffxIQdi+hf0PPDWq7OMLGpDcAkaxn9wjjKEKnPAUDGCNKlPGaAo515XGuqERKyVo78HFJCFlBAECsU526kjrmXdpEp8C3s+vCdG15lx0vxRNaiSzPPadjQZnkt/62z2w4E3XbfbbHauH85ssTw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(36860700016)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4x4eALoKMh21jPbgzLPHtCxUJQibPGPn76tcxI96bXY/pJvyN89Xeq99d1E+NhwHXt2/kaFPwsou7CAYKl3rMHXrik42HjDy88H9uyzz6aJ4VEOjnpIesroWjk13l4eYy52F405cdYB89vHcmEFa2RIVt/WV9nhC5g3C6dpI4ckjY+RZnDqqcevgB9E1TIsBcToSG+HghnG29fNJRbEIBEhgiYphWzqqbUDHcCpGbmef0AUAEUVuh9XOrPoF6TTZJOlnoHSb+KPWPDd9ohU0lYMRcvyxWmO5vYr4YP2yTsvY8r1dNWh7P8V7oR/f6b5qKGEBTeOMa19sT+VCnxTwygrbBdmOJQ8LlQ/2sEbk17vYUnGsGXzsP9hiQzBMAkOlKKGsP/q7wMdUm8s5Xu82mOVRBrJ49OyBYW713GVK/E0tnKUAmkzq8tLRcoxOpB7H X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Mar 2026 11:08:42.7206 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2a184e87-3d23-4123-c5fa-08de88cc8b75 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBC.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6448 Content-Type: text/plain; charset="utf-8" From: Prathima Move SBTSI core functionality out of the hwmon-only path and into drivers/misc/amd-sbi so it can be reused by non-hwmon consumers. This split prepares the driver for additional interfaces while keeping hwmon support as an optional layer on top of common SBTSI core logic. Reviewed-by: Akshay Gupta Signed-off-by: Prathima --- drivers/hwmon/Kconfig | 10 ---------- drivers/hwmon/Makefile | 1 - drivers/misc/amd-sbi/Kconfig | 11 +++++++++++ drivers/misc/amd-sbi/Makefile | 2 ++ drivers/{hwmon/sbtsi_temp.c =3D> misc/amd-sbi/sbtsi.c} | 2 +- 5 files changed, 14 insertions(+), 12 deletions(-) rename drivers/{hwmon/sbtsi_temp.c =3D> misc/amd-sbi/sbtsi.c} (98%) diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 328867242cb3..758f9c9f9e4f 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig @@ -1936,16 +1936,6 @@ config SENSORS_SL28CPLD This driver can also be built as a module. If so, the module will be called sl28cpld-hwmon. =20 -config SENSORS_SBTSI - tristate "Emulated SB-TSI temperature sensor" - depends on I2C - help - If you say yes here you get support for emulated temperature - sensors on AMD SoCs with SB-TSI interface connected to a BMC device. - - This driver can also be built as a module. If so, the module will - be called sbtsi_temp. - config SENSORS_SHT15 tristate "Sensiron humidity and temperature sensors. SHT15 and compat." depends on GPIOLIB || COMPILE_TEST diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile index 5833c807c688..c9b6661cfc72 100644 --- a/drivers/hwmon/Makefile +++ b/drivers/hwmon/Makefile @@ -199,7 +199,6 @@ obj-$(CONFIG_SENSORS_PT5161L) +=3D pt5161l.o obj-$(CONFIG_SENSORS_PWM_FAN) +=3D pwm-fan.o obj-$(CONFIG_SENSORS_QNAP_MCU_HWMON) +=3D qnap-mcu-hwmon.o obj-$(CONFIG_SENSORS_RASPBERRYPI_HWMON) +=3D raspberrypi-hwmon.o -obj-$(CONFIG_SENSORS_SBTSI) +=3D sbtsi_temp.o obj-$(CONFIG_SENSORS_SBRMI) +=3D sbrmi.o obj-$(CONFIG_SENSORS_SCH56XX_COMMON)+=3D sch56xx-common.o obj-$(CONFIG_SENSORS_SCH5627) +=3D sch5627.o diff --git a/drivers/misc/amd-sbi/Kconfig b/drivers/misc/amd-sbi/Kconfig index 30e7fad7356c..e6a422b4a371 100644 --- a/drivers/misc/amd-sbi/Kconfig +++ b/drivers/misc/amd-sbi/Kconfig @@ -20,3 +20,14 @@ config AMD_SBRMI_HWMON This provides support for RMI device hardware monitoring. If enabled, a hardware monitoring device will be created for each socket in the system. + +config SENSORS_SBTSI + tristate "Emulated SB-TSI temperature sensor" + depends on I2C + depends on HWMON + help + If you say yes here you get support for emulated temperature + sensors on AMD SoCs with SB-TSI interface connected to a BMC device. + + This driver can also be built as a module. If so, the module will + be called sbtsi. diff --git a/drivers/misc/amd-sbi/Makefile b/drivers/misc/amd-sbi/Makefile index 38eaaa651fd9..f04273c0d3ad 100644 --- a/drivers/misc/amd-sbi/Makefile +++ b/drivers/misc/amd-sbi/Makefile @@ -2,3 +2,5 @@ sbrmi-i2c-objs +=3D rmi-i2c.o rmi-core.o sbrmi-i2c-$(CONFIG_AMD_SBRMI_HWMON) +=3D rmi-hwmon.o obj-$(CONFIG_AMD_SBRMI_I2C) +=3D sbrmi-i2c.o +# SBTSI Configuration +obj-$(CONFIG_SENSORS_SBTSI) +=3D sbtsi.o diff --git a/drivers/hwmon/sbtsi_temp.c b/drivers/misc/amd-sbi/sbtsi.c similarity index 98% rename from drivers/hwmon/sbtsi_temp.c rename to drivers/misc/amd-sbi/sbtsi.c index c5b2488c4c7f..e09b10c17771 100644 --- a/drivers/hwmon/sbtsi_temp.c +++ b/drivers/misc/amd-sbi/sbtsi.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * sbtsi_temp.c - hwmon driver for a SBI Temperature Sensor Interface (SB-= TSI) + * sbtsi.c - hwmon driver for a SBI Temperature Sensor Interface (SB-TSI) * compliant AMD SoC temperature device. * * Copyright (c) 2020, Google Inc. --=20 2.34.1 From nobody Fri Apr 3 20:53:04 2026 Received: from CO1PR03CU002.outbound.protection.outlook.com (mail-westus2azon11010037.outbound.protection.outlook.com [52.101.46.37]) (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 34F59397E87; Mon, 23 Mar 2026 11:08:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.46.37 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264135; cv=fail; b=Eqg5ncjDF+Qv4lASc6bFBH1rRjb99zRwqnskk8Mvtf/Ck/VWt9ZE256WU4PAbNlNfLYnpzXPa+tGZt6KGddf45BvjuMekVac/pI210bFF1sv3x1o5DknVf3d2dMaJTcrw97k46cQRg+ZaYT7/lhnhmqvFHsn0obBg7Ir7qpF1MQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264135; c=relaxed/simple; bh=PWzKz/IFRloa3wDMR6tKx0MUrOmVJYoOkglIhT+7ngc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=UMzVvQKF09LIJE5Q0jzys4OVkDRvLBNyMZisHCVQfCco0WTHAlv2EtkWGIW+NSmo+StowNsdBu9lXDK+RVpDvX2elc+7Kaqd0GRYFNzjZ2hgpfH2fOuGSuqF7UTnjsXHmy5CpeoXcYXkWfxl0i9v6snS7f1E483EVqkaBFidZTI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=au3UlWgc; arc=fail smtp.client-ip=52.101.46.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="au3UlWgc" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VbvYJissc7DguYcCcpQpORrZ4i3QFu68cvKZ8rMrG9Zc6dRPp3o1KHvF3X12s9KycXdRYpp/1ARkgAjoxpelgTzWCMfFAJGBA8NnjEOltZ7ffLFxAqGgPdE/3DfStVaOw6IVElc3xzmhM6FV+3a0gVlJr3M0ch2mGoqDgo3Dm8resGX4TQJZwWpuj0BEHdXYwTibwG+99qn3cIV/c8w86sBGhiHleZ9nenWGyTw096RR8ULPYjatXj67IjWFBj/rUxIGBgvglTYHXkZoq0xu5GD3b6bslVNPz8jaoP7Ux4jh5eQcLAZGWn4/1VqPh3YAhJotZTqoSc3PqiBFscn4mQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Uy00Wzm2NOBxJ643g/rnFSZkw8bAZgisZZKe1nrHytU=; b=ejCWLZe6bgzvjSuZhacn6px+FVdiEBTuP+H1EiwkeGjJKkuZUsF7KwoC9FEvuAo699wYlwmDyi0KjszqzHLKpNv4tkDFQCLx9Wj6Os8de8c9Xl6JrjH9r+XMFcjKw5QKgu+gL3uH+ykiR0H/OWQC1i8n/L1Bxj92yxLCq49TxtiRw7ByW2wP+RJ22YSIKlMcvgObx3XYQDM+d333uWoeOSHF9dMosqMcUsNk+vLT7hegqFFCU0vUABj1/GZu1aB16hEf/R8DszteYr8iMaz+CoqWuCI62RVxj6WkMV0aWhuveTbsx5+A26ExfrAPVfCf5kDA1SCo24ndHcAKCH7+vw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Uy00Wzm2NOBxJ643g/rnFSZkw8bAZgisZZKe1nrHytU=; b=au3UlWgcFfUqdUX5txSYEwITvykUDVtPyK4niXTyytigGDuSRGfg0hrq2NO3UpnGS0zLfaPqDJz2JMzYlT2N2iDDpe6SnWEIIX3l6g2lXTfQt4ashTUWp97k3vmx+ezWAwxEx9J4XUVvwQGfMcdGvDC2mUKv+wORWJ8DmODbjcs= Received: from BN0PR08CA0006.namprd08.prod.outlook.com (2603:10b6:408:142::26) by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Mon, 23 Mar 2026 11:08:47 +0000 Received: from BN2PEPF00004FBD.namprd04.prod.outlook.com (2603:10b6:408:142:cafe::15) by BN0PR08CA0006.outlook.office365.com (2603:10b6:408:142::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.31 via Frontend Transport; Mon, 23 Mar 2026 11:08:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by BN2PEPF00004FBD.mail.protection.outlook.com (10.167.243.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19 via Frontend Transport; Mon, 23 Mar 2026 11:08:47 +0000 Received: from dcsm-trdripper1.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 23 Mar 2026 06:08:43 -0500 From: Akshay Gupta To: CC: , , , , , , , , , , , , Akshay Gupta Subject: [PATCH v1 2/6] misc: amd-sbi: Update SBTSI Kconfig to clarify this is BMC driver Date: Mon, 23 Mar 2026 16:38:07 +0530 Message-ID: <20260323110811.2898997-3-Akshay.Gupta@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260323110811.2898997-1-Akshay.Gupta@amd.com> References: <20260323110811.2898997-1-Akshay.Gupta@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb08.amd.com (10.181.42.217) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBD:EE_|DS7PR12MB9504:EE_ X-MS-Office365-Filtering-Correlation-Id: 73b854c3-c4d6-433d-1d13-08de88cc8e09 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: Smk8cpl3Q1SZFMqBKGWzjjpJxeG/Fs/yUqqeSjLQf6g/mVVZ1kAju5tSjupFjNdSF/ViSqWwRAgtAd3hTBxTv48qznadZIrBRa86Xqy64O3O49m87GM7LpjgJe7dmQU7fgYfE7coEYMTJkC2ZkDYXEWgkBsnmuEQob6TWatIissg8asKWAMX/leElJ5aihISXvIE1wN17Sb38fQpJNifGP7aqs2QeRkrD2TJU5bf/m09Qqm4ntV5mfkufX7ttMjB45bWCt6/Qzp585YH0vrAmY3MYccbULV3+zlt91nMQA1yhOM/MMMTRUel0fEmHYanFK7xukp2GjvaCiOETY2eu51yXkTbRpGPQG8eKelzujl1C1KSdEC7cXgbOcTjrtj6UAnOjfMZFZkLYAXc85ozFlmS+eYo9k5txXtQcI6kQrcKMIeMrZtM41zoWjnjSYlEYSed+bW82ui+eEiMwim0bzGt0OVH4haFkfP46eYQWEHNymPGxazGAsqGS6Oi0aeWwdyZPGjFkznqEko8qPsreF8rNYvjBuEn6I98HJ2JUy+e+TBwi1BgrCcFzwQKMlQFQpVEvaKuSB/2oM6VQxc0jlKTJd3QOwlNySHDBGk1z8oYzTTATQwQT8ed2lBQiALSN1x5IxtbZhBIH0sqVSyAM1cSYHczHHVu1vS0+EP4g4Lx50l5SM5Vv+ak05R8/CyipWWUjChv323wMDt9hpSzmMNLCz4Fz/aZMfLEsHiwqKFtqrjqcLAHwOqQuMrD0j0H0AxkhTn376Bgzw580jpxmQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(376014)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rvWdpkgvshFD8Js3c8Ti4NGF48NVInCkVaNfr0VUo/3FewXh9CYK9Yx9jqHOpsnfoArLaz3rfwu+0K37JUeFOUZmFfr5g0ZjkYq8krt4qlF7DaABaLYEp2VfBYAmMeVB0JjhIm9AY82EQ8paZ2Fhbv+94iL/Th7qg35ebb0ABsbiXU/tGVaVMm/C0/P3N7kVohokwbMKycRcZzhE5cZfrnCPZwrIfPVbBToI45HyfhXXUL11xILvGf1LFVTic7tCLgeSH8obDFuix7rydgrOBvPnGta9X5gkZqKZ59AZaoo/QkZ8P092wvteZwAQx2nM2dJ8/T1WdhcF3Q1PioIMgK+K0eVza6SDUWJ0Pa3BQmFs3QI0Lvl1GmkLUWJQ9uxOfST8klcCwEVv+Z4PE1B4ohXPc93SxlZfZk43n2RCxZEZanM3DoB894FOVHjoH3Qs X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Mar 2026 11:08:47.0460 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 73b854c3-c4d6-433d-1d13-08de88cc8e09 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBD.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504 Content-Type: text/plain; charset="utf-8" Add an architecture dependency to the SBTSI Kconfig This limits enablement to supported targets Also clarify in the help text that the SBTSI driver is intended to run on the BMC, not on the managed host node. Signed-off-by: Akshay Gupta --- drivers/misc/amd-sbi/Kconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/misc/amd-sbi/Kconfig b/drivers/misc/amd-sbi/Kconfig index e6a422b4a371..19a8d596e8f5 100644 --- a/drivers/misc/amd-sbi/Kconfig +++ b/drivers/misc/amd-sbi/Kconfig @@ -24,10 +24,12 @@ config AMD_SBRMI_HWMON config SENSORS_SBTSI tristate "Emulated SB-TSI temperature sensor" depends on I2C + depends on ARM || ARM64 || COMPILE_TEST depends on HWMON help If you say yes here you get support for emulated temperature sensors on AMD SoCs with SB-TSI interface connected to a BMC device. + This driver is intended to run on the BMC, not the managed node. =20 This driver can also be built as a module. If so, the module will be called sbtsi. --=20 2.34.1 From nobody Fri Apr 3 20:53:04 2026 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010045.outbound.protection.outlook.com [52.101.56.45]) (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 A094C39902F; Mon, 23 Mar 2026 11:09:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264147; cv=fail; b=GnWYjvzNhPke0yPlEIM5rCtu4BCkw40a2mVq84YabfUlPY/gFxK2sGjZ4ZsDSFP7NWEv5OS5tABBsZysgZlDwJQIhOY9F/TW75hlH4lhbndZKTJiK2m+yBB2PNH/S6ZIlgtyHMEsJLyIvP4MaJRJfAWL27dnTBjriJ8cTEhKkJw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264147; c=relaxed/simple; bh=GsGBqP+ILO1mrt27TU5E3qMjDXeg2LRBasgVEHFENz4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Qei5dm7SQ1QYN5Dl3l7Vp4N8Q5Abh7Fwm+rWfVuMikPk6v/Vgqegk+6qkk98b8Kd/kl4iCStToLoUictia2wb6pm9CyQoLUUgGdq98mOTwaOEe2Rd2bKd/h0DZrXRsIOTN3LjKT9spoT8N1h48F8Xhmk7kFkwIxBnms9sYjDf7I= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=zq33D95z; arc=fail smtp.client-ip=52.101.56.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="zq33D95z" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EoN2wyiBpYZShswaaX3vQsMmMYd8D3ViNb12gLi6lC7MbQaorPO/9WcfAKDWbvYZPZNG/vfRPivbU95hsP3g28al0ZqFfTQD6ueUOh5U6AeR+Eg3UA8sKEkzH6dnGfUQxMx15di+L57IhxZlczyevpnDDKd6FGWwafMOlGcdzBalFVpiguyb+LzdOOwmdUaateaER1G7E5LkYY1Lr+OsKxekgyDrzIQXpkvW40gZy8+NJYR1uvIKN+OQDNSnHGd0mLQmBXrBNWmWsuqFpMCqLv4DGCJUZIpqvlafPqXA/HYtKDTQPeLLofYFpPtIeT3qRfbxmy8dT6SonYpCmWIJCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ftMTX7Tu2yaZn3VgneEeWCrE8vnN/2ePEUvI390eBNE=; b=DOkKgzKc+/Z9xiILuKdcu24ntNW1f/1j4deywz7k5voUPpOrqPFpcBs9TuZla97DFVvJGuub2/sQjeb2vEAd6y6Ki0zAcHKxl4qNsycP+TL2wY1d1Q7GPk1ugr75WNAK/TSyioJ6yL8x0U6WZHU9V3Q4j58nXS4mavCFVFE5dObl5HEN8aHpAMHNxtdHWUUaKhABhVz5CVHK5xSaBzOn2X8X+LCq5uHGAU9Ul2GSNpkZJ9q1xWVv8wn5M9O5U69k5FULlli15Gse/Eih+d7j152XHMTixPjnxtgtBHgAyyqshxlVULllMSeCuz18TZALvk0ND85dBYWBWx9EXM4+gg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ftMTX7Tu2yaZn3VgneEeWCrE8vnN/2ePEUvI390eBNE=; b=zq33D95zW9AchB8rBE/+abEwsUVE4I0OWNlf8EG0iopdE4g3+V/7vGkCnKR7rwhNwnSqLxvc2/1Em5yWLJAA68pIpBnLNlvQzmsVxd7bFJ3QL4PWps35iHMW+BCXTX0HXjaGh0OoSq4PocmqiR9peYBejIQ7Cr/f0fnWeJcKx7Y= Received: from BN0PR08CA0020.namprd08.prod.outlook.com (2603:10b6:408:142::8) by IA0PPF73BED5E32.namprd12.prod.outlook.com (2603:10b6:20f:fc04::bd2) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.8; Mon, 23 Mar 2026 11:08:52 +0000 Received: from BN2PEPF00004FBD.namprd04.prod.outlook.com (2603:10b6:408:142:cafe::ff) by BN0PR08CA0020.outlook.office365.com (2603:10b6:408:142::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.31 via Frontend Transport; Mon, 23 Mar 2026 11:08:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by BN2PEPF00004FBD.mail.protection.outlook.com (10.167.243.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19 via Frontend Transport; Mon, 23 Mar 2026 11:08:52 +0000 Received: from dcsm-trdripper1.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 23 Mar 2026 06:08:48 -0500 From: Akshay Gupta To: CC: , , , , , , , , , , , , Akshay Gupta Subject: [PATCH v1 3/6] misc: amd-sbi: Split SBTSI hwmon sensor handling into a separate entity Date: Mon, 23 Mar 2026 16:38:08 +0530 Message-ID: <20260323110811.2898997-4-Akshay.Gupta@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260323110811.2898997-1-Akshay.Gupta@amd.com> References: <20260323110811.2898997-1-Akshay.Gupta@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb08.amd.com (10.181.42.217) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBD:EE_|IA0PPF73BED5E32:EE_ X-MS-Office365-Filtering-Correlation-Id: e81e730e-eeef-46b1-91f5-08de88cc9148 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|1800799024|36860700016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: NbQwRtQzhDBYKLaEM1CeXVyb1xGWg24WuvqtxXv1yS6DMWX/xBLayxb6qog51Tlww+I6rGZpb4VwVMQP771kuA12H445c18pHBdgVP63fxRaqj0Cz4jvxPQv6kOi81kCbgnxAI7fQc/O3DoTa1sAAaEuZD8q0S+AuC+crPuUUzrZFtcw+cxnXKzah5Syw3SOxkAMd8nn/t3RtHPjW178Dg9w8zwQwlxpY3e5eptFKGWWpTu0dPDf7O4z/Um8NrWXrINIsPqFPGH4xbq0kWHh7LPt9qwhbCjtZU9ddTgBWHENXPQ4R5BJmXwf73lIdoktXav4pGtYnMWyhXYYPK7QnOxDryKhLhfcnV/7yK9t4gqGgQEjimsoQ9JUOhTzJzH8U/GLM0c5qw3ykhx6Xl6hmp5WVpEu00KrlxY4ElZdxrhXtxags7KunmDqGUVtMH8d7czZ4a3ASySn0knNJ3PrAHIOlRYyJ+o1zzR0G+BEP1hl+iW8RfRRmO2L5W/GzHGNliJ8sBDi8UjvLk37WK1IfaFaFSeAPBMgyF4Sxp+JipqN7r6bUks0AIpMA3oyidDF7L5514Lr1z/DzKtdvL85/92GAvP01dbuG7tGIi0dG9PQsnMwZ+8oJU+muG+1SchUHXkzcuUrUwXX2YTiJyyu6v1rlVcriMAe/yvmargKwFjKhOe9Wiwf1cpStc7SNQf//mQZDmovKiKAZespJaeXmVXFIvzpHL5+jpAkV8l5uZCf0rq/85C+31QLtN+Ic6NTx0IPK+8zK+02fklCncgvUQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(1800799024)(36860700016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: bNBjKqM8QDMCltPYG5mLJd4g7gKYUjXIchra9kNAt3IxRPt2SXqu3E2WqQ1MyS7Nea2WMtLXGj6h/rO5Vmbms3XC6zeRH3n//4pPm2XnDJvyqZl1kvLIDxlEDBVP01/X+sFnFxXM7u7eZUoKl6O9kRORHWaTT1PQl6aSc0SFURf27DMAXDuKWT0X27ILgtTbHWHgB5clHmES0wDYdxe6Nx3Pw5+mc9c2IpoqEW8cAaDAG4ZW2N4C8Sy3upp5q0U+zoHI3nwKGXLUJYmeFAvbEjhVVPrshbopHYF7MaYOg3IzOkp1bYYL5Jvx/855EyDM66dh+i7LvAsYx509/tPqoUAh1fd5oMuYBkZo+VmUlCmLwco2/FBAzv1ZyLAn+u51ZVTaua5lbKbVeVlir9xLSThXIK/8oQv4Hd+T6MJ4Jm6QCBF3FE6IwRLCndTpCknN X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Mar 2026 11:08:52.4920 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e81e730e-eeef-46b1-91f5-08de88cc9148 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBD.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PPF73BED5E32 Content-Type: text/plain; charset="utf-8" From: Prathima Separate SBTSI hwmon sensor handling from the core path to improve code organization and maintainability. This keeps core transport/register access independent while preserving existing hwmon functionality through a dedicated hwmon component. Reviewed-by: Akshay Gupta Signed-off-by: Prathima --- drivers/misc/amd-sbi/Kconfig | 12 +- drivers/misc/amd-sbi/Makefile | 2 + drivers/misc/amd-sbi/tsi-core.h | 30 +++++ drivers/misc/amd-sbi/{sbtsi.c =3D> tsi-hwmon.c} | 120 ++++-------------- drivers/misc/amd-sbi/tsi.c | 77 +++++++++++ 5 files changed, 142 insertions(+), 99 deletions(-) create mode 100644 drivers/misc/amd-sbi/tsi-core.h rename drivers/misc/amd-sbi/{sbtsi.c =3D> tsi-hwmon.c} (57%) create mode 100644 drivers/misc/amd-sbi/tsi.c diff --git a/drivers/misc/amd-sbi/Kconfig b/drivers/misc/amd-sbi/Kconfig index 19a8d596e8f5..2710860a86c7 100644 --- a/drivers/misc/amd-sbi/Kconfig +++ b/drivers/misc/amd-sbi/Kconfig @@ -25,7 +25,6 @@ config SENSORS_SBTSI tristate "Emulated SB-TSI temperature sensor" depends on I2C depends on ARM || ARM64 || COMPILE_TEST - depends on HWMON help If you say yes here you get support for emulated temperature sensors on AMD SoCs with SB-TSI interface connected to a BMC device. @@ -33,3 +32,14 @@ config SENSORS_SBTSI =20 This driver can also be built as a module. If so, the module will be called sbtsi. + +config AMD_SBTSI_HWMON + bool "SBTSI hardware monitoring for AMD platforms" + depends on SENSORS_SBTSI && HWMON + depends on !(SENSORS_SBTSI=3Dy && HWMON=3Dm) + default y + help + This provides support for TSI device hardware monitoring. + When enabled, a hwmon device is created for each socket to expose + temperature monitoring data through the standard Linux + hwmon interface. diff --git a/drivers/misc/amd-sbi/Makefile b/drivers/misc/amd-sbi/Makefile index f04273c0d3ad..a874136e438f 100644 --- a/drivers/misc/amd-sbi/Makefile +++ b/drivers/misc/amd-sbi/Makefile @@ -3,4 +3,6 @@ sbrmi-i2c-objs +=3D rmi-i2c.o rmi-core.o sbrmi-i2c-$(CONFIG_AMD_SBRMI_HWMON) +=3D rmi-hwmon.o obj-$(CONFIG_AMD_SBRMI_I2C) +=3D sbrmi-i2c.o # SBTSI Configuration +sbtsi-objs +=3D tsi.o +sbtsi-$(CONFIG_AMD_SBTSI_HWMON) +=3D tsi-hwmon.o obj-$(CONFIG_SENSORS_SBTSI) +=3D sbtsi.o diff --git a/drivers/misc/amd-sbi/tsi-core.h b/drivers/misc/amd-sbi/tsi-cor= e.h new file mode 100644 index 000000000000..e60cf25fda7a --- /dev/null +++ b/drivers/misc/amd-sbi/tsi-core.h @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2026 Advanced Micro Devices, Inc. + */ + +#ifndef _TSI_CORE_H_ +#define _TSI_CORE_H_ + +#include +#include +#include +#include +#include + +/* Each client has this additional data */ +struct sbtsi_data { + struct i2c_client *client; + bool ext_range_mode; + bool read_order; +}; + +#ifdef CONFIG_AMD_SBTSI_HWMON +int create_sbtsi_hwmon_sensor_device(struct device *dev, struct sbtsi_data= *data); +#else +static inline int create_sbtsi_hwmon_sensor_device(struct device *dev, str= uct sbtsi_data *data) +{ + return 0; +} +#endif +#endif /*_TSI_CORE_H_*/ diff --git a/drivers/misc/amd-sbi/sbtsi.c b/drivers/misc/amd-sbi/tsi-hwmon.c similarity index 57% rename from drivers/misc/amd-sbi/sbtsi.c rename to drivers/misc/amd-sbi/tsi-hwmon.c index e09b10c17771..efd450a85d34 100644 --- a/drivers/misc/amd-sbi/sbtsi.c +++ b/drivers/misc/amd-sbi/tsi-hwmon.c @@ -1,59 +1,31 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * sbtsi.c - hwmon driver for a SBI Temperature Sensor Interface (SB-TSI) - * compliant AMD SoC temperature device. + * tsi-hwmon.c - hwmon sensor support for side band TSI * * Copyright (c) 2020, Google Inc. * Copyright (c) 2020, Kun Yi */ =20 -#include -#include -#include #include -#include -#include -#include +#include "tsi-core.h" =20 /* * SB-TSI registers only support SMBus byte data access. "_INT" registers = are * the integer part of a temperature value or limit, and "_DEC" registers = are * corresponding decimal parts. */ -#define SBTSI_REG_TEMP_INT 0x01 /* RO */ -#define SBTSI_REG_STATUS 0x02 /* RO */ -#define SBTSI_REG_CONFIG 0x03 /* RO */ -#define SBTSI_REG_TEMP_HIGH_INT 0x07 /* RW */ -#define SBTSI_REG_TEMP_LOW_INT 0x08 /* RW */ -#define SBTSI_REG_TEMP_DEC 0x10 /* RW */ -#define SBTSI_REG_TEMP_HIGH_DEC 0x13 /* RW */ -#define SBTSI_REG_TEMP_LOW_DEC 0x14 /* RW */ +#define SBTSI_REG_TEMP_INT 0x01 /* RO */ +#define SBTSI_REG_STATUS 0x02 /* RO */ +#define SBTSI_REG_TEMP_HIGH_INT 0x07 /* RW */ +#define SBTSI_REG_TEMP_LOW_INT 0x08 /* RW */ +#define SBTSI_REG_TEMP_DEC 0x10 /* RW */ +#define SBTSI_REG_TEMP_HIGH_DEC 0x13 /* RW */ +#define SBTSI_REG_TEMP_LOW_DEC 0x14 /* RW */ =20 -/* - * Bit for reporting value with temperature measurement range. - * bit =3D=3D 0: Use default temperature range (0C to 255.875C). - * bit =3D=3D 1: Use extended temperature range (-49C to +206.875C). - */ -#define SBTSI_CONFIG_EXT_RANGE_SHIFT 2 -/* - * ReadOrder bit specifies the reading order of integer and decimal part of - * CPU temperature for atomic reads. If bit =3D=3D 0, reading integer part= triggers - * latching of the decimal part, so integer part should be read first. - * If bit =3D=3D 1, read order should be reversed. - */ -#define SBTSI_CONFIG_READ_ORDER_SHIFT 5 - -#define SBTSI_TEMP_EXT_RANGE_ADJ 49000 - -#define SBTSI_TEMP_MIN 0 -#define SBTSI_TEMP_MAX 255875 +#define SBTSI_TEMP_EXT_RANGE_ADJ 49000 =20 -/* Each client has this additional data */ -struct sbtsi_data { - struct i2c_client *client; - bool ext_range_mode; - bool read_order; -}; +#define SBTSI_TEMP_MIN 0 +#define SBTSI_TEMP_MAX 255875 =20 /* * From SB-TSI spec: CPU temperature readings and limit registers encode t= he @@ -85,7 +57,7 @@ static inline void sbtsi_mc_to_reg(s32 temp, u8 *integer,= u8 *decimal) } =20 static int sbtsi_read(struct device *dev, enum hwmon_sensor_types type, - u32 attr, int channel, long *val) + u32 attr, int channel, long *val) { struct sbtsi_data *data =3D dev_get_drvdata(dev); s32 temp_int, temp_dec; @@ -112,12 +84,6 @@ static int sbtsi_read(struct device *dev, enum hwmon_se= nsor_types type, return -EINVAL; } =20 - - if (temp_int < 0) - return temp_int; - if (temp_dec < 0) - return temp_dec; - *val =3D sbtsi_reg_to_mc(temp_int, temp_dec); if (data->ext_range_mode) *val -=3D SBTSI_TEMP_EXT_RANGE_ADJ; @@ -126,7 +92,7 @@ static int sbtsi_read(struct device *dev, enum hwmon_sen= sor_types type, } =20 static int sbtsi_write(struct device *dev, enum hwmon_sensor_types type, - u32 attr, int channel, long val) + u32 attr, int channel, long val) { struct sbtsi_data *data =3D dev_get_drvdata(dev); int reg_int, reg_dec, err; @@ -154,12 +120,15 @@ static int sbtsi_write(struct device *dev, enum hwmon= _sensor_types type, if (err) return err; =20 - return i2c_smbus_write_byte_data(data->client, reg_dec, temp_dec); + err =3D i2c_smbus_write_byte_data(data->client, reg_dec, temp_dec); + if (err) + return err; + return 0; } =20 static umode_t sbtsi_is_visible(const void *data, - enum hwmon_sensor_types type, - u32 attr, int channel) + enum hwmon_sensor_types type, + u32 attr, int channel) { switch (type) { case hwmon_temp: @@ -195,56 +164,11 @@ static const struct hwmon_chip_info sbtsi_chip_info = =3D { .info =3D sbtsi_info, }; =20 -static int sbtsi_probe(struct i2c_client *client) +int create_sbtsi_hwmon_sensor_device(struct device *dev, struct sbtsi_data= *data) { - struct device *dev =3D &client->dev; struct device *hwmon_dev; - struct sbtsi_data *data; - int err; =20 - data =3D devm_kzalloc(dev, sizeof(struct sbtsi_data), GFP_KERNEL); - if (!data) - return -ENOMEM; - - data->client =3D client; - - err =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_CONFIG); - if (err < 0) - return err; - data->ext_range_mode =3D FIELD_GET(BIT(SBTSI_CONFIG_EXT_RANGE_SHIFT), err= ); - data->read_order =3D FIELD_GET(BIT(SBTSI_CONFIG_READ_ORDER_SHIFT), err); - - hwmon_dev =3D devm_hwmon_device_register_with_info(dev, client->name, dat= a, + hwmon_dev =3D devm_hwmon_device_register_with_info(dev, "sbtsi", data, &sbtsi_chip_info, NULL); - return PTR_ERR_OR_ZERO(hwmon_dev); } - -static const struct i2c_device_id sbtsi_id[] =3D { - {"sbtsi"}, - {} -}; -MODULE_DEVICE_TABLE(i2c, sbtsi_id); - -static const struct of_device_id __maybe_unused sbtsi_of_match[] =3D { - { - .compatible =3D "amd,sbtsi", - }, - { }, -}; -MODULE_DEVICE_TABLE(of, sbtsi_of_match); - -static struct i2c_driver sbtsi_driver =3D { - .driver =3D { - .name =3D "sbtsi", - .of_match_table =3D of_match_ptr(sbtsi_of_match), - }, - .probe =3D sbtsi_probe, - .id_table =3D sbtsi_id, -}; - -module_i2c_driver(sbtsi_driver); - -MODULE_AUTHOR("Kun Yi "); -MODULE_DESCRIPTION("Hwmon driver for AMD SB-TSI emulated sensor"); -MODULE_LICENSE("GPL"); diff --git a/drivers/misc/amd-sbi/tsi.c b/drivers/misc/amd-sbi/tsi.c new file mode 100644 index 000000000000..df754e60d84b --- /dev/null +++ b/drivers/misc/amd-sbi/tsi.c @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * tsi.c - Side band TSI over I2C support for AMD out of band management. + * + * Copyright (c) 2020-2026, Google Inc. + * Copyright (c) 2020-2026, Kun Yi + */ + +#include +#include "tsi-core.h" + +#define SBTSI_REG_CONFIG 0x03 /* RO */ + +/* + * Bit for reporting value with temperature measurement range. + * bit =3D=3D 0: Use default temperature range (0C to 255.875C). + * bit =3D=3D 1: Use extended temperature range (-49C to +206.875C). + */ +#define SBTSI_CONFIG_EXT_RANGE_SHIFT 2 + +/* + * ReadOrder bit specifies the reading order of integer and decimal part of + * CPU temperature for atomic reads. If bit =3D=3D 0, reading integer part= triggers + * latching of the decimal part, so integer part should be read first. + */ + +#define SBTSI_CONFIG_READ_ORDER_SHIFT 5 + +static int sbtsi_probe(struct i2c_client *client) +{ + struct device *dev =3D &client->dev; + struct sbtsi_data *data; + int err; + + data =3D devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + data->client =3D client; + err =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_CONFIG); + if (err < 0) + return err; + data->ext_range_mode =3D FIELD_GET(BIT(SBTSI_CONFIG_EXT_RANGE_SHIFT), err= ); + data->read_order =3D FIELD_GET(BIT(SBTSI_CONFIG_READ_ORDER_SHIFT), err); + + dev_set_drvdata(dev, data); + return create_sbtsi_hwmon_sensor_device(dev, data); +} + +static const struct i2c_device_id sbtsi_id[] =3D { + {"sbtsi"}, + {} +}; +MODULE_DEVICE_TABLE(i2c, sbtsi_id); + +static const struct of_device_id __maybe_unused sbtsi_of_match[] =3D { + { + .compatible =3D "amd,sbtsi", + }, + { }, +}; +MODULE_DEVICE_TABLE(of, sbtsi_of_match); + +static struct i2c_driver sbtsi_driver =3D { + .driver =3D { + .name =3D "sbtsi", + .of_match_table =3D of_match_ptr(sbtsi_of_match), + }, + .probe =3D sbtsi_probe, + .id_table =3D sbtsi_id, +}; + +module_i2c_driver(sbtsi_driver); + +MODULE_AUTHOR("Kun Yi "); +MODULE_DESCRIPTION("Hwmon driver for AMD SB-TSI emulated sensor"); +MODULE_LICENSE("GPL"); --=20 2.34.1 From nobody Fri Apr 3 20:53:04 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012003.outbound.protection.outlook.com [52.101.48.3]) (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 B09CF396568; Mon, 23 Mar 2026 11:09:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264144; cv=fail; b=mQ4xA/5a+FaSdOtyKgvmR7BdePUzYH8qDh47DPcSjqk2/6Hg1uhaibQfFI0YRTbzFAuIENeY4PXnSJz7zJTsrrxXdnMCfaWlbS4lwm5zH+LIsHu3kOIjk4LpzxlDHfCJnI7JTBS/QjGpW+r1KELL34BmW+yJKSZVz0QJ3adhp0Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264144; c=relaxed/simple; bh=QMaPIQEaOOxFi4xjMJvxiHIZr30urCajlCOKaoq4Rok=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=If/e3tolQpg7gEWBv9BumFQyo3DXKRvxEHtf4vNB+QtR6nN44+D0gSECqsvUHc0cBqCIvfA2Km3pdbNNMzcToWpn07qOUNwbs/HRCXX72d22yXlmIwQUrM0J04xhn10sCcg2AXhNpOTtVaVzzHe0MqZwIJg9TGFrKa2fHhDmOyc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=xqN8uDEm; arc=fail smtp.client-ip=52.101.48.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="xqN8uDEm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lOdu/FVyOBJFkBLq++O46pmuBJ07HJu5c/CofPmhKHL6CE2UcPzOFNo8/ZB1F6r1DYXMOsvCXay6lK3d329BgFog87guSpM6VOXqQSO2HchETOSiyhGlK6yAztY8yKiz5gZxLrE2o3fWfKwrFR0tdEIl58Q4C2ihWo55WKdQq8tKwkQHrUTUT9/L+M/bUIvU17zAY+E6YaegKLGJHb8uzXIP7h1e9aGdAFg/b3sLcnUtBmO5GldYZL3MIz9X29fpYkiM/kQIm6iV8uXYRrKxOjMtaGKDQmCq1Q/QRCXj8BOp+VEVIp/LyUBKA/y2eAnkFzK2PGjM721vqj9fZiD0FA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3xKmA69JC+imOYzhM8Hf7CSBB0o8ErLWj0YmTEMMKnI=; b=nVZbNcxbKRjZaMh98rAJwSGSM3lErjewHFy59qhcDsWE5yxhHXoQ4Utvu2SWeX5+hY7cgrHG9EZ5ara1fufDskEuEXossYwbasWlrEjYSMHkSsmULC5C+/T3P1VDXbmRs+BQQNguISHZoehNNQPiyvf2FTvO6+AAWzNF/jKLL5F4rPJi0wEtYqmcKVnnCpQqCcgrgIpzqtPc1KsoHhH5yF6G2kbTO20Fl0qIjrIdZhXvEr6jPJ54BSFhurx6VhINWzKa0cXcbBBY/EYjaYPE3CVszZbTKbLXK05x7yyfdbthSL1eFwCyoeXsX9PDeskUE8jYUXhDUxduBW9dA9DP7g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3xKmA69JC+imOYzhM8Hf7CSBB0o8ErLWj0YmTEMMKnI=; b=xqN8uDEmf2yL3xV0IZEO2tBdFdzL6UMUOYsTg3jN+527lMpgVtBnHNreGMItT0+Li1fLLjq2H8cnkAi6vgl5XoxNGQm8Xq0rta3sT4zPm8DZnRzZWjUmKWpSe9DaKsIJMusnCnr2Gr2bf8zlRGnI5FStxpZrZm420LPcwgJ8VUI= Received: from MN2PR08CA0004.namprd08.prod.outlook.com (2603:10b6:208:239::9) by CH1PPFC908D89D1.namprd12.prod.outlook.com (2603:10b6:61f:fc00::623) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.9; Mon, 23 Mar 2026 11:08:57 +0000 Received: from BN2PEPF00004FBC.namprd04.prod.outlook.com (2603:10b6:208:239:cafe::ea) by MN2PR08CA0004.outlook.office365.com (2603:10b6:208:239::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.31 via Frontend Transport; Mon, 23 Mar 2026 11:08:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by BN2PEPF00004FBC.mail.protection.outlook.com (10.167.243.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19 via Frontend Transport; Mon, 23 Mar 2026 11:08:57 +0000 Received: from dcsm-trdripper1.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 23 Mar 2026 06:08:53 -0500 From: Akshay Gupta To: CC: , , , , , , , , , , , , Akshay Gupta Subject: [PATCH v1 4/6] misc: amd-sbi: Add support for SB-TSI over I3C Date: Mon, 23 Mar 2026 16:38:09 +0530 Message-ID: <20260323110811.2898997-5-Akshay.Gupta@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260323110811.2898997-1-Akshay.Gupta@amd.com> References: <20260323110811.2898997-1-Akshay.Gupta@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb08.amd.com (10.181.42.217) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBC:EE_|CH1PPFC908D89D1:EE_ X-MS-Office365-Filtering-Correlation-Id: e1ee5c28-e027-4282-8543-08de88cc9431 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700016|82310400026|1800799024|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: XGhNo5Z8QOB5amHQ+1yvVaIDiua7yC1UusjZqqciamsNqjYoOaT9gyzZFYI801+VVWrdYK1DpV0fiEkSyCuqjT8mE08Q65BpngwWDvlWO+5uCTh73r1hD5x/QXUO8OCTXWnuf+GB0dnuceXyjimHp2b7Bb9Qr4GxNgmx/Vq+3iDLgk+WwZL3GAVi0GG5o9WSYpQbJ2PPpUEq3KWlpzz7n7fuHQ9Bmid1hF16z10cO1tOLYDh1yBIAy6CsqciCawJxKeelicPj+ts3K0Tbb4SPeDu1s1v48z5rohVS4DiCzGsnR/8Qys2tbeA+jm5NFtqcxz+UYzOrb9yP4zXTyDvodqXyL8LXlVU4FzHYg+Endn83dlPyArZGOmT6Xzg3f5LjNgIx7OU46QVXbeS9rY2IOVpG543J/5nsyZZmSOuGeQAFWgoBK9CC6RdjxF08L75Y8TQuzpQ2b/rsAxqBmTuRE83hwSPmyX10La6zjfucpt7WjCipU54i35G9B3ouMgipNMPzqNb5MDkxK4lrhfrwRRoYNKjYgZmgdGiCRF8eezK6pE/B/3zok5h3qQ15izokS0K89PEUcBc88up0/jGTiUnGn6QkqF1zg6iosUx7RCdFZS+XIorNzd0iwU1zTDkC4L9YiUGfaMUofyL0qD5T9PZyv8ZPERXfSI28qwaTsFYahbx0iqAx6KX8aJ/ogQW7UwB+aDks1B+XQ0gQr7/FjwS7ayBVOn22pnLiqXgriFUQhF7ucxYQEPgg5+nW+WmAHlRBHkCVxyqncnHElHXoA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(82310400026)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vGhFI+00vzuYTp2fUFildlCDHPOCckmG8YrOazfD4lFvONMXbuL706u5cj7CXLKtec3B1OK+UNNF2+UHPpEPk4GnPNNOymRC3+MJfYQgbzzvbL2zTEYWazdc0R/uxqjXMLhUnv5kcTHXgHOaX37cw17rpccZ04dl2an8MolOKVeYjg7PoHsODtt24LZ7s8OiB0JmHC5LLPoz62p13xXwLaqW3Um1d5ghK2RqKOLSijEA/pGdFu7cJiSMoFUPk57wcQ3V+16Pz3W4uvoW14RKEIx1/92E/28qNe19ReYGO003azmkGLH0quz3hYbbH3K6kuB/0fEVUcfZ5NkLiFHTRhaqbA2gS5MAJDRe+Ir9F3dDry0Fvme8ZCS3+P8K338Skb9kaRif+ZcXzmr19OFXzd0lDKjbhR1kbdSM8RepsKlp4+/mTwE9G2yF27O2TjSe X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Mar 2026 11:08:57.3747 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e1ee5c28-e027-4282-8543-08de88cc9431 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBC.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPFC908D89D1 Content-Type: text/plain; charset="utf-8" From: Prathima - Extend the SB-TSI driver to support both I2C and I3C bus interfaces. - The driver maintains backward compatibility with existing I2C deployments while enabling support for systems using the I3C bus. Reviewed-by: Akshay Gupta Signed-off-by: Prathima --- drivers/misc/amd-sbi/Kconfig | 5 ++- drivers/misc/amd-sbi/Makefile | 2 +- drivers/misc/amd-sbi/tsi-core.c | 64 ++++++++++++++++++++++++++++++++ drivers/misc/amd-sbi/tsi-core.h | 11 +++++- drivers/misc/amd-sbi/tsi-hwmon.c | 50 ++++++++++++++++++------- drivers/misc/amd-sbi/tsi.c | 62 +++++++++++++++++++++++++++++-- 6 files changed, 173 insertions(+), 21 deletions(-) create mode 100644 drivers/misc/amd-sbi/tsi-core.c diff --git a/drivers/misc/amd-sbi/Kconfig b/drivers/misc/amd-sbi/Kconfig index 2710860a86c7..d18652537788 100644 --- a/drivers/misc/amd-sbi/Kconfig +++ b/drivers/misc/amd-sbi/Kconfig @@ -23,11 +23,12 @@ config AMD_SBRMI_HWMON =20 config SENSORS_SBTSI tristate "Emulated SB-TSI temperature sensor" - depends on I2C + depends on I3C_OR_I2C depends on ARM || ARM64 || COMPILE_TEST help If you say yes here you get support for emulated temperature - sensors on AMD SoCs with SB-TSI interface connected to a BMC device. + sensors on AMD SoCs with SB-TSI interface connected to a BMC device + over I2C and I3C. This driver is intended to run on the BMC, not the managed node. =20 This driver can also be built as a module. If so, the module will diff --git a/drivers/misc/amd-sbi/Makefile b/drivers/misc/amd-sbi/Makefile index a874136e438f..e87c8e618dcc 100644 --- a/drivers/misc/amd-sbi/Makefile +++ b/drivers/misc/amd-sbi/Makefile @@ -3,6 +3,6 @@ sbrmi-i2c-objs +=3D rmi-i2c.o rmi-core.o sbrmi-i2c-$(CONFIG_AMD_SBRMI_HWMON) +=3D rmi-hwmon.o obj-$(CONFIG_AMD_SBRMI_I2C) +=3D sbrmi-i2c.o # SBTSI Configuration -sbtsi-objs +=3D tsi.o +sbtsi-objs +=3D tsi.o tsi-core.o sbtsi-$(CONFIG_AMD_SBTSI_HWMON) +=3D tsi-hwmon.o obj-$(CONFIG_SENSORS_SBTSI) +=3D sbtsi.o diff --git a/drivers/misc/amd-sbi/tsi-core.c b/drivers/misc/amd-sbi/tsi-cor= e.c new file mode 100644 index 000000000000..fcb7fcf87a55 --- /dev/null +++ b/drivers/misc/amd-sbi/tsi-core.c @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * tsi-core.c - file defining SB-TSI protocols compliant + * AMD SoC device. + * Copyright (c) 2020, Google Inc. + * Copyright (c) 2020, Kun Yi + */ + +#include "tsi-core.h" + +/* I3C read transfer function */ +static int sbtsi_i3c_read(struct sbtsi_data *data, u8 reg, u8 *val) +{ + struct i3c_xfer xfers[2]; + + /* Send register address */ + xfers[0].rnw =3D false; + xfers[0].len =3D 1; + xfers[0].data.out =3D ® + + /* Read data */ + xfers[1].rnw =3D true; + xfers[1].len =3D 1; + xfers[1].data.in =3D val; + + return i3c_device_do_xfers(data->i3cdev, xfers, 2, I3C_SDR); +} + +/* I3C write transfer function */ +static int sbtsi_i3c_write(struct sbtsi_data *data, u8 reg, u8 *val) +{ + u8 buf[2] =3D { reg, *val }; + struct i3c_xfer xfers =3D { + .rnw =3D false, + .len =3D 2, + .data.out =3D buf, + }; + + return i3c_device_do_xfers(data->i3cdev, &xfers, 1, I3C_SDR); +} + +/* I2C transfer function */ +static int sbtsi_i2c_xfer(struct sbtsi_data *data, u8 reg, u8 *val, bool i= s_read) +{ + if (is_read) { + int ret =3D i2c_smbus_read_byte_data(data->client, reg); + + if (ret < 0) + return ret; + *val =3D ret; + return 0; + } + return i2c_smbus_write_byte_data(data->client, reg, *val); +} + +/* Unified transfer function for I2C and I3C access */ +int sbtsi_xfer(struct sbtsi_data *data, u8 reg, u8 *val, bool is_read) +{ + if (data->is_i3c) + return is_read ? sbtsi_i3c_read(data, reg, val) + : sbtsi_i3c_write(data, reg, val); + + return sbtsi_i2c_xfer(data, reg, val, is_read); +} diff --git a/drivers/misc/amd-sbi/tsi-core.h b/drivers/misc/amd-sbi/tsi-cor= e.h index e60cf25fda7a..a4ded17942c9 100644 --- a/drivers/misc/amd-sbi/tsi-core.h +++ b/drivers/misc/amd-sbi/tsi-core.h @@ -11,14 +11,23 @@ #include #include #include +#include +#include +#include =20 /* Each client has this additional data */ struct sbtsi_data { - struct i2c_client *client; + union { + struct i2c_client *client; + struct i3c_device *i3cdev; + }; bool ext_range_mode; bool read_order; + bool is_i3c; }; =20 +int sbtsi_xfer(struct sbtsi_data *data, u8 reg, u8 *val, bool is_read); + #ifdef CONFIG_AMD_SBTSI_HWMON int create_sbtsi_hwmon_sensor_device(struct device *dev, struct sbtsi_data= *data); #else diff --git a/drivers/misc/amd-sbi/tsi-hwmon.c b/drivers/misc/amd-sbi/tsi-hw= mon.c index efd450a85d34..9b447042d4aa 100644 --- a/drivers/misc/amd-sbi/tsi-hwmon.c +++ b/drivers/misc/amd-sbi/tsi-hwmon.c @@ -27,8 +27,7 @@ #define SBTSI_TEMP_MIN 0 #define SBTSI_TEMP_MAX 255875 =20 -/* - * From SB-TSI spec: CPU temperature readings and limit registers encode t= he +/* From SB-TSI spec: CPU temperature readings and limit registers encode t= he * temperature in increments of 0.125 from 0 to 255.875. The "high byte" * register encodes the base-2 of the integer portion, and the upper 3 bit= s of * the "low byte" encode in base-2 the decimal portion. @@ -61,24 +60,50 @@ static int sbtsi_read(struct device *dev, enum hwmon_se= nsor_types type, { struct sbtsi_data *data =3D dev_get_drvdata(dev); s32 temp_int, temp_dec; + u8 reg_val; + int err; =20 switch (attr) { case hwmon_temp_input: if (data->read_order) { - temp_dec =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_TEMP_DEC); - temp_int =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_TEMP_INT); + err =3D sbtsi_xfer(data, SBTSI_REG_TEMP_DEC, ®_val, true); + if (err < 0) + return err; + temp_dec =3D reg_val; + err =3D sbtsi_xfer(data, SBTSI_REG_TEMP_INT, ®_val, true); + if (err < 0) + return err; + temp_int =3D reg_val; } else { - temp_int =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_TEMP_INT); - temp_dec =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_TEMP_DEC); + err =3D sbtsi_xfer(data, SBTSI_REG_TEMP_INT, ®_val, true); + if (err < 0) + return err; + temp_int =3D reg_val; + err =3D sbtsi_xfer(data, SBTSI_REG_TEMP_DEC, ®_val, true); + if (err < 0) + return err; + temp_dec =3D reg_val; } break; case hwmon_temp_max: - temp_int =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_TEMP_HIGH_= INT); - temp_dec =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_TEMP_HIGH_= DEC); + err =3D sbtsi_xfer(data, SBTSI_REG_TEMP_HIGH_INT, ®_val, true); + if (err < 0) + return err; + temp_int =3D reg_val; + err =3D sbtsi_xfer(data, SBTSI_REG_TEMP_HIGH_DEC, ®_val, true); + if (err < 0) + return err; + temp_dec =3D reg_val; break; case hwmon_temp_min: - temp_int =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_TEMP_LOW_I= NT); - temp_dec =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_TEMP_LOW_D= EC); + err =3D sbtsi_xfer(data, SBTSI_REG_TEMP_LOW_INT, ®_val, true); + if (err < 0) + return err; + temp_int =3D reg_val; + err =3D sbtsi_xfer(data, SBTSI_REG_TEMP_LOW_DEC, ®_val, true); + if (err < 0) + return err; + temp_dec =3D reg_val; break; default: return -EINVAL; @@ -115,12 +140,11 @@ static int sbtsi_write(struct device *dev, enum hwmon= _sensor_types type, val +=3D SBTSI_TEMP_EXT_RANGE_ADJ; val =3D clamp_val(val, SBTSI_TEMP_MIN, SBTSI_TEMP_MAX); sbtsi_mc_to_reg(val, &temp_int, &temp_dec); - - err =3D i2c_smbus_write_byte_data(data->client, reg_int, temp_int); + err =3D sbtsi_xfer(data, reg_int, &temp_int, false); if (err) return err; =20 - err =3D i2c_smbus_write_byte_data(data->client, reg_dec, temp_dec); + err =3D sbtsi_xfer(data, reg_dec, &temp_dec, false); if (err) return err; return 0; diff --git a/drivers/misc/amd-sbi/tsi.c b/drivers/misc/amd-sbi/tsi.c index df754e60d84b..d7a8237fc4fd 100644 --- a/drivers/misc/amd-sbi/tsi.c +++ b/drivers/misc/amd-sbi/tsi.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * tsi.c - Side band TSI over I2C support for AMD out of band management. + * tsi.c - Side band TSI over I2C/I3C support for AMD out of band manageme= nt. * * Copyright (c) 2020-2026, Google Inc. * Copyright (c) 2020-2026, Kun Yi @@ -26,7 +26,7 @@ =20 #define SBTSI_CONFIG_READ_ORDER_SHIFT 5 =20 -static int sbtsi_probe(struct i2c_client *client) +static int sbtsi_i2c_probe(struct i2c_client *client) { struct device *dev =3D &client->dev; struct sbtsi_data *data; @@ -36,6 +36,7 @@ static int sbtsi_probe(struct i2c_client *client) if (!data) return -ENOMEM; =20 + data->is_i3c =3D false; data->client =3D client; err =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_CONFIG); if (err < 0) @@ -66,11 +67,64 @@ static struct i2c_driver sbtsi_driver =3D { .name =3D "sbtsi", .of_match_table =3D of_match_ptr(sbtsi_of_match), }, - .probe =3D sbtsi_probe, + .probe =3D sbtsi_i2c_probe, .id_table =3D sbtsi_id, }; =20 -module_i2c_driver(sbtsi_driver); +static int sbtsi_i3c_probe(struct i3c_device *i3cdev) +{ + struct device *dev =3D i3cdev_to_dev(i3cdev); + struct sbtsi_data *data; + int err; + u8 val; + /* + * AMD OOB devices differ on basis of Instance ID, + * for SBTSI, instance ID is 0. + * As the device Id match is not on basis of Instance ID, + * add the below check to probe the SBTSI device only and + * not other OOB devices. + */ + if (I3C_PID_INSTANCE_ID(i3cdev->desc->info.pid) !=3D 0) + return -ENXIO; + + data =3D devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + data->i3cdev =3D i3cdev; + data->is_i3c =3D true; + + err =3D sbtsi_xfer(data, SBTSI_REG_CONFIG, &val, true); + if (err) + return err; + + data->ext_range_mode =3D FIELD_GET(BIT(SBTSI_CONFIG_EXT_RANGE_SHIFT), val= ); + data->read_order =3D FIELD_GET(BIT(SBTSI_CONFIG_READ_ORDER_SHIFT), val); + + dev_set_drvdata(dev, data); + return create_sbtsi_hwmon_sensor_device(dev, data); +} + +static const struct i3c_device_id sbtsi_i3c_id[] =3D { + /* PID for AMD SBTSI device */ + I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x1, NULL), + I3C_DEVICE_EXTRA_INFO(0x0, 0x0, 0x118, NULL), /* Socket:0, Venice A0 */ + I3C_DEVICE_EXTRA_INFO(0x0, 0x100, 0x118, NULL), /* Socket:1, Venice A0 */ + I3C_DEVICE_EXTRA_INFO(0x112, 0x0, 0x119, NULL), /* Socket:0, Venice B0 */ + I3C_DEVICE_EXTRA_INFO(0x112, 0x100, 0x119, NULL), /* Socket:1, Venice B0 = */ + {} +}; +MODULE_DEVICE_TABLE(i3c, sbtsi_i3c_id); + +static struct i3c_driver sbtsi_i3c_driver =3D { + .driver =3D { + .name =3D "sbtsi-i3c", + }, + .probe =3D sbtsi_i3c_probe, + .id_table =3D sbtsi_i3c_id, +}; + +module_i3c_i2c_driver(sbtsi_i3c_driver, &sbtsi_driver); =20 MODULE_AUTHOR("Kun Yi "); MODULE_DESCRIPTION("Hwmon driver for AMD SB-TSI emulated sensor"); --=20 2.34.1 From nobody Fri Apr 3 20:53:04 2026 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012035.outbound.protection.outlook.com [52.101.43.35]) (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 7A43E3A169C; Mon, 23 Mar 2026 11:09:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.35 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264149; cv=fail; b=OgcHsHZ9vBX1jvtKjruNDjlwf11ii+sYrziNB2ou2QTfs3OCy0AmNXFx/7W3FYI6LaefIpLsE7B0OrOeVjSDCBwbhvOWhNuJZ6noEf+QFEuwL2u1dmgYHg+gRZoHp46ZM2a2jyv5mur1L1WEFHKR+z125lV/c6RQvSEHU/JrX7g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264149; c=relaxed/simple; bh=H24hRCRRJ1B2kUsHpmvX2kmt2me1DeJqEEDrugPlDZs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=AzSJslzJ+tXzybPxQvTevQyIk4TELmeG6j10LvSdLdhmm9i/1xHNC/tK61ff1ZMsN//+QCIe9i92httNWPPuxCVUcKpyu4MCDyWYa4+aBbaqNK6Bd+OdXDGvcizLuBwZVOeGyX4au9XutPqzRXjGxNYyXwnHWr08Ae2GZjgvkCg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=GgWHATx1; arc=fail smtp.client-ip=52.101.43.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="GgWHATx1" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sTCNi7s6F1bMxkzBbTbsRpZk31Z57nUayoXg3J0o+QqjfFxJST51TaTbYAFnQW6XLtUvmFRM3CaRFZgTCKOE4wV3PjvZdtcPM6IrrPs6+3qwkaxbTeTWBo0BmYZ/s8e9YYS7aDLFtihehiNvB0Qt40zW/5CSL9mBw6G6lgW+7osryU4vhGRJGMO+LvRaQvj7LaAa/IjAmRWgNXj0j2kvD+36szc2hUSFJphIHXd8xWt8IAD+18UoW51CP2GT6ayYllL6+fJoJ9JDftJGNCRllaDlGL9u0NdOIoi1TDJtQ9VTDhECEwtQwoLiYborGl3RiC2VtsYWi3WHhfe7Z+/ZjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1LKrBF7cR4Ljhgvnbv7/Xn82Q4Nov6JyZLHHg9JI3pU=; b=mfjjEHXaR5/t91wiATM8j6zYFF/vcDxfjMXB1+ImJrHGGPoRDIXoVLAcjwWiXSDy8eZAwa3Q/h+djncjBkShv5Mtve2r5920qoqs7MGHVebh4VRopnrXjc+pqfv5/eYZfbGJoSf9xIa9KOFqi0B3MUFUjkaZYrNNr6JJI5K4p3nCV0bI870vCJwwKWUPKjXnE8li0ijjoC0b6wFiKJW6ZLy2QeagZBfr1Bgr0oTKA7UXCjXvRl7KLfg5lBzueMeFtOpBNqrAjCAJ2Wi2jyyVD9GwIQBKnxYwrmSczkf4uXLhJKNRPBtMhYl9jAiBJtXW8v4tH7qTw4swO5m3hN5oww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1LKrBF7cR4Ljhgvnbv7/Xn82Q4Nov6JyZLHHg9JI3pU=; b=GgWHATx1C9oy7xXQBSQ9q7Bx2pQ5q5aA87bXl8Y1Ua4wW9ExWRXY0yArAT/GvdDZ0k4SBGsER/PKCKLe+Wndq2CxIWRLnRCcbr7oeHcGPHrXrwwe2VH66+G9Y3KiQCfY/+tXgVPurUmNq6OBOJl+gv32MYJ18gzAzjvyG3gynU0= Received: from MN2PR08CA0013.namprd08.prod.outlook.com (2603:10b6:208:239::18) by DS0PR12MB7655.namprd12.prod.outlook.com (2603:10b6:8:11e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Mon, 23 Mar 2026 11:09:02 +0000 Received: from BN2PEPF00004FBC.namprd04.prod.outlook.com (2603:10b6:208:239:cafe::b8) by MN2PR08CA0013.outlook.office365.com (2603:10b6:208:239::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.31 via Frontend Transport; Mon, 23 Mar 2026 11:08:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by BN2PEPF00004FBC.mail.protection.outlook.com (10.167.243.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19 via Frontend Transport; Mon, 23 Mar 2026 11:09:01 +0000 Received: from dcsm-trdripper1.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 23 Mar 2026 06:08:57 -0500 From: Akshay Gupta To: CC: , , , , , , , , , , , , Akshay Gupta Subject: [PATCH v1 5/6] misc: amd-sbi: Add SBTSI ioctl register transfer interface Date: Mon, 23 Mar 2026 16:38:10 +0530 Message-ID: <20260323110811.2898997-6-Akshay.Gupta@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260323110811.2898997-1-Akshay.Gupta@amd.com> References: <20260323110811.2898997-1-Akshay.Gupta@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb08.amd.com (10.181.42.217) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBC:EE_|DS0PR12MB7655:EE_ X-MS-Office365-Filtering-Correlation-Id: 86da4686-9f78-4368-1441-08de88cc96de X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700016|376014|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: GwuS3Gwb88BEWbJc9bGoWcTfEF1Pbmc4iHEGjAPWm5OlRl2VV2WkWrtXlkiRmVVcU2Fqhiigrc5Xsp7dE8XPZNzxkaM+Yxsl4UiRUECE45fJvtRRGhSYG9nh1uyJKnJw0+SJesHWvRLIJRjq5liXlfDBT62y4cwsoyy4g/SHlraxmpFViZOdHYLyK6Rg0zSObSPmlJj9b/fW4Fhdc7rpy9MeFL4NsX+L8fiauq/wquovvRapsDEpi/+UhayPz2A0wR6rdVUUny6AEhmWFZBvI5Pyf2zYDZYBKm6MRyjnoV5tHM07BPALKu1zWAh4NR/OCWWA1eiBNZyLFBblTONzyH9ClSj/nAQ/b3YfmFYuiOrYfYm4qPkdwuCDzusMWrocrFUzZBfMNUwtN1/tNCpl6moysnTgvtfxgWCGNgIhafbdEQ9BwxBGf+BQb+ezjROdc+aioDSbA3ZooZ/DtJdyTrMez8yx1uPBg3UDbeJEkOhf61sikpmCRLZkSzPXdPFvjE5E9Ikf71wuVwb+D+QKKICKeMU+4X34r3eXXrLbZaG5entbC/NQ5ZG/88kucXhFaqAHx0vuAPRhiYWYNpHYJ66a7lcyMpToKmTQ64p3mEHXA0ho/YBiNpWM+qNoYcyO9YBGfqEBesklBeTLCs6s/BN+bm0rdsGNmgD0SsQNhQFfJxq/5cp2NNViP1eiICoKYfGWxWwAb8UzCzMfoSRzNJXc42Czuie0QnqQPHGbdQpNk7kPFLITdbxqENI+KrwTDvJwdrVACwhz7UxyEYlPWg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(36860700016)(376014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0xaaeQnQOUIDyrJLJUVmQs+64BYY1MNS8WV7jP6eLSCIu6xu1MdHK8N2IDoDM+x7Kc4f8/a+LV61Kg0CD8goG6ASuerZIexPvkiP5QQJH3s1yblc6hhNUWVbKG5k03QUegQ8b+KrD1+tOZUeF3I/Cezm41PjYH5IxbvMLBr8Ve1gf9rmSImYIv0zwMXKF+1I8TE750m/9yT8Mzyjt1H/ZcCeeW+Uy6AD63KfGTeIYT84RcG5S+FPL3ql+D7P7D/miAAYV00BI9JkmkTezQXwojKHIFWhZ1YKvAkcBzG+1O/8y15gTbhjpdK4LaLyhCVFa9Q5/QCH3QM7WDDVB8WFPToHAbAs8qs8P2z63ybRxq5O8d3Ealeh2Xr5qsHx9yj5LOGutIUleLTdSO74KetCR4BlBoV6UkBuhOEWq88Ld2K1ewBLk/FwllFbe0TKO7yn X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Mar 2026 11:09:01.8625 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 86da4686-9f78-4368-1441-08de88cc96de X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBC.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7655 Content-Type: text/plain; charset="utf-8" From: Prathima Implement IOCTL interface for SB-TSI driver to enable userspace access to TSI register read/write operations through the AMD Advanced Platform Management Link (APML) protocol. Reviewed-by: Akshay Gupta Signed-off-by: Prathima --- drivers/misc/amd-sbi/tsi-core.c | 86 ++++++++++++++++++++++++++++++++- drivers/misc/amd-sbi/tsi-core.h | 5 ++ drivers/misc/amd-sbi/tsi.c | 37 ++++++++++++-- include/uapi/misc/amd-apml.h | 23 +++++++++ 4 files changed, 146 insertions(+), 5 deletions(-) diff --git a/drivers/misc/amd-sbi/tsi-core.c b/drivers/misc/amd-sbi/tsi-cor= e.c index fcb7fcf87a55..080cf1f368df 100644 --- a/drivers/misc/amd-sbi/tsi-core.c +++ b/drivers/misc/amd-sbi/tsi-core.c @@ -6,6 +6,10 @@ * Copyright (c) 2020, Kun Yi */ =20 +#include +#include +#include +#include #include "tsi-core.h" =20 /* I3C read transfer function */ @@ -56,9 +60,87 @@ static int sbtsi_i2c_xfer(struct sbtsi_data *data, u8 re= g, u8 *val, bool is_read /* Unified transfer function for I2C and I3C access */ int sbtsi_xfer(struct sbtsi_data *data, u8 reg, u8 *val, bool is_read) { + int ret; + + mutex_lock(&data->lock); if (data->is_i3c) - return is_read ? sbtsi_i3c_read(data, reg, val) + ret =3D is_read ? sbtsi_i3c_read(data, reg, val) : sbtsi_i3c_write(data, reg, val); + else + ret =3D sbtsi_i2c_xfer(data, reg, val, is_read); + mutex_unlock(&data->lock); + return ret; +} + +static int apml_tsi_reg_xfer(struct sbtsi_data *data, + struct apml_tsi_xfer_msg __user *arg) +{ + struct apml_tsi_xfer_msg msg =3D { 0 }; + u8 val; + int ret; + + /* Copy the structure from user */ + if (copy_from_user(&msg, arg, sizeof(struct apml_tsi_xfer_msg))) + return -EFAULT; + + if (msg.rflag) { + /* Read operation */ + ret =3D sbtsi_xfer(data, msg.reg_addr, &val, true); + if (!ret) + msg.data_in_out =3D val; + } else { + /* Write operation */ + ret =3D sbtsi_xfer(data, msg.reg_addr, &msg.data_in_out, false); + } + + if (msg.rflag && !ret) { + if (copy_to_user(arg, &msg, sizeof(struct apml_tsi_xfer_msg))) + return -EFAULT; + } + return ret; +} + +static long sbtsi_ioctl(struct file *fp, unsigned int cmd, unsigned long a= rg) +{ + void __user *argp =3D (void __user *)arg; + struct sbtsi_data *data; + + data =3D container_of(fp->private_data, struct sbtsi_data, sbtsi_misc_dev= ); + switch (cmd) { + case SBTSI_IOCTL_REG_XFER_CMD: + return apml_tsi_reg_xfer(data, argp); + default: + return -ENOTTY; + } +} + +static const struct file_operations sbtsi_fops =3D { + .owner =3D THIS_MODULE, + .unlocked_ioctl =3D sbtsi_ioctl, + .compat_ioctl =3D compat_ptr_ioctl, +}; + +int create_misc_tsi_device(struct sbtsi_data *data, + struct device *dev) +{ + int ret; + + data->sbtsi_misc_dev.name =3D devm_kasprintf(dev, GFP_KERNEL, + "sbtsi-%x", data->dev_addr); + if (!data->sbtsi_misc_dev.name) + return -ENOMEM; + data->sbtsi_misc_dev.minor =3D MISC_DYNAMIC_MINOR; + data->sbtsi_misc_dev.fops =3D &sbtsi_fops; + data->sbtsi_misc_dev.parent =3D dev; + data->sbtsi_misc_dev.nodename =3D devm_kasprintf(dev, GFP_KERNEL, + "sbtsi-%x", data->dev_addr); + if (!data->sbtsi_misc_dev.nodename) + return -ENOMEM; + data->sbtsi_misc_dev.mode =3D 0600; + + ret =3D misc_register(&data->sbtsi_misc_dev); + if (ret) + return ret; =20 - return sbtsi_i2c_xfer(data, reg, val, is_read); + return ret; } diff --git a/drivers/misc/amd-sbi/tsi-core.h b/drivers/misc/amd-sbi/tsi-cor= e.h index a4ded17942c9..d130ceadde04 100644 --- a/drivers/misc/amd-sbi/tsi-core.h +++ b/drivers/misc/amd-sbi/tsi-core.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -21,12 +22,16 @@ struct sbtsi_data { struct i2c_client *client; struct i3c_device *i3cdev; }; + struct miscdevice sbtsi_misc_dev; + struct mutex lock; /* serializes SBTSI register access */ bool ext_range_mode; bool read_order; bool is_i3c; + u8 dev_addr; }; =20 int sbtsi_xfer(struct sbtsi_data *data, u8 reg, u8 *val, bool is_read); +int create_misc_tsi_device(struct sbtsi_data *data, struct device *dev); =20 #ifdef CONFIG_AMD_SBTSI_HWMON int create_sbtsi_hwmon_sensor_device(struct device *dev, struct sbtsi_data= *data); diff --git a/drivers/misc/amd-sbi/tsi.c b/drivers/misc/amd-sbi/tsi.c index d7a8237fc4fd..6e321064a3f3 100644 --- a/drivers/misc/amd-sbi/tsi.c +++ b/drivers/misc/amd-sbi/tsi.c @@ -38,6 +38,7 @@ static int sbtsi_i2c_probe(struct i2c_client *client) =20 data->is_i3c =3D false; data->client =3D client; + mutex_init(&data->lock); err =3D i2c_smbus_read_byte_data(data->client, SBTSI_REG_CONFIG); if (err < 0) return err; @@ -45,7 +46,21 @@ static int sbtsi_i2c_probe(struct i2c_client *client) data->read_order =3D FIELD_GET(BIT(SBTSI_CONFIG_READ_ORDER_SHIFT), err); =20 dev_set_drvdata(dev, data); - return create_sbtsi_hwmon_sensor_device(dev, data); + err =3D create_sbtsi_hwmon_sensor_device(dev, data); + if (err < 0) + return err; + data->dev_addr =3D client->addr; + return create_misc_tsi_device(data, dev); +} + +static void sbtsi_i2c_remove(struct i2c_client *client) +{ + struct sbtsi_data *data =3D dev_get_drvdata(&client->dev); + + if (data) + misc_deregister(&data->sbtsi_misc_dev); + + dev_info(&client->dev, "Removed sbtsi driver\n"); } =20 static const struct i2c_device_id sbtsi_id[] =3D { @@ -68,6 +83,7 @@ static struct i2c_driver sbtsi_driver =3D { .of_match_table =3D of_match_ptr(sbtsi_of_match), }, .probe =3D sbtsi_i2c_probe, + .remove =3D sbtsi_i2c_remove, .id_table =3D sbtsi_id, }; =20 @@ -90,7 +106,7 @@ static int sbtsi_i3c_probe(struct i3c_device *i3cdev) data =3D devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; - + mutex_init(&data->lock); data->i3cdev =3D i3cdev; data->is_i3c =3D true; =20 @@ -102,7 +118,21 @@ static int sbtsi_i3c_probe(struct i3c_device *i3cdev) data->read_order =3D FIELD_GET(BIT(SBTSI_CONFIG_READ_ORDER_SHIFT), val); =20 dev_set_drvdata(dev, data); - return create_sbtsi_hwmon_sensor_device(dev, data); + err =3D create_sbtsi_hwmon_sensor_device(dev, data); + if (err < 0) + return err; + data->dev_addr =3D i3cdev->desc->info.dyn_addr; + return create_misc_tsi_device(data, dev); +} + +static void sbtsi_i3c_remove(struct i3c_device *i3cdev) +{ + struct sbtsi_data *data =3D dev_get_drvdata(&i3cdev->dev); + + if (data) + misc_deregister(&data->sbtsi_misc_dev); + + dev_info(&i3cdev->dev, "Removed sbtsi-i3c driver\n"); } =20 static const struct i3c_device_id sbtsi_i3c_id[] =3D { @@ -121,6 +151,7 @@ static struct i3c_driver sbtsi_i3c_driver =3D { .name =3D "sbtsi-i3c", }, .probe =3D sbtsi_i3c_probe, + .remove =3D sbtsi_i3c_remove, .id_table =3D sbtsi_i3c_id, }; =20 diff --git a/include/uapi/misc/amd-apml.h b/include/uapi/misc/amd-apml.h index 745b3338fc06..199532b8e64a 100644 --- a/include/uapi/misc/amd-apml.h +++ b/include/uapi/misc/amd-apml.h @@ -73,6 +73,13 @@ struct apml_reg_xfer_msg { __u8 rflag; }; =20 +struct apml_tsi_xfer_msg { + __u8 reg_addr; /* TSI register address offset */ + __u8 data_in_out; /* Register data for read/write */ + __u8 rflag; /* Register read or write */ + __u8 pad; /* Explicit padding */ +}; + /* * AMD sideband interface base IOCTL */ @@ -149,4 +156,20 @@ struct apml_reg_xfer_msg { */ #define SBRMI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 3, struct apml_re= g_xfer_msg) =20 +/** + * DOC: SBTSI_IOCTL_REG_XFER_CMD + * + * @Parameters + * + * @struct apml_tsi_xfer_msg + * Pointer to the &struct apml_tsi_xfer_msg that will contain the pro= tocol + * information + * + * @Description + * IOCTL command for APML TSI messages using generic _IOWR + * The IOCTL provides userspace access to AMD sideband TSI register xfer p= rotocol + * - TSI protocol to read/write temperature sensor registers + */ +#define SBTSI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 4, struct apml_ts= i_xfer_msg) + #endif /*_AMD_APML_H_*/ --=20 2.34.1 From nobody Fri Apr 3 20:53:04 2026 Received: from CH4PR04CU002.outbound.protection.outlook.com (mail-northcentralusazon11013004.outbound.protection.outlook.com [40.107.201.4]) (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 B35C4399367; Mon, 23 Mar 2026 11:09:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.201.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264154; cv=fail; b=FBp5cDs9ZhDwy8C52w+5aw3lE5Sl4tCG+KY+KccCuzzMM6VW/5t6DPrryMq/zz2wsRFkbpi5HI5KAnOHZ/f201NE/c4zbgg8CLyokNc+J15uogXT2ZFfIgklK2gAtx3NULMyI6t3X38VhOimsNFeKxjvk46xjw0BUZfe7/sZE0I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774264154; c=relaxed/simple; bh=nLTY8k/s/mzofaL2s2ylizDcIq7OQbDEq1GQw4pR1Vs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=hXZKB7HQ446ssWQ3ZQLvcHd0VBxqBH+LhuTvHdt8dubogCJ2H0Z3OU6SikhctD+AWi55ttNUyT3VuRaa1UrCjiWtGE93RAQG0sb+qO8VCQH6h5OArj0TP7nMEDa+XMC0+5ZvEnRdAmAnXXEqGPjNkH2RM3cTM2eL+Ioiuo4BnRo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=di43HHSW; arc=fail smtp.client-ip=40.107.201.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="di43HHSW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HQYF8EOfpV1x3ducFLTvPMSVgh3csuwsBWD6c1jl125gvBXzBCaRVX1ulSwucNdsuGT9pNSNebmiLQJ2/QwXS/Tba2b3QsXvv8DVMdNMMEOeWm7BwtZvyVj9IhiL0Uk0DdpZEcNJfl+PU0Q/gZ8HYnv6S+J/8fpMSUO+tcmgUB2Qa0EUFR4ubZcn+UFtyRxJjNityjdUN2dnx0XpNycnJJPM82Cx3Sd1AZ+gtC3ZH+kj83QDxbv+9/zYtyzHqm8z3BHXgkdUNBnDzRDl4peJ6+GNo13lp40nPaGWQpVCrbaGRUES/A/Hz4bBlSBgnVDxju9nPmyHphUzZpmE3sPmXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ecelYwyFGdZfl0zRdrDcfqiLd1ould15Q4JP1mj9EVE=; b=CAFO806oA+B2qJ4tl0td3sgeB0TU68K8WGEW0p5x/hTY3qGefssbCsukNvjtirSg+2tsl6JGtra0RMk8dtcf0gmTdrEHiGT0PRdOr2nG6Hpv2iVSbFBrqVfrqT4Kky8drnv8aIt4sdUAoU6uGKnWtos++EkKQZ9ol2oZuXlVaiJx5frljNY2pdpGL/xhsM+hj8kjs5rUu2d3AHM8QW9o2r7+ftjSgBV8o/3Kbo9+Yy0N6r2lZA27nnsJpJUVq2EmPdu0h2XLTyFJhWTFfwJtGJgdrDn1Xh0M+LeHvpOOsYoRNV5NmXADBqA6vPDJX2ghIwwLdvMMS1rnYbWIIA4azQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ecelYwyFGdZfl0zRdrDcfqiLd1ould15Q4JP1mj9EVE=; b=di43HHSWA5RJCoyrss6xfu4ngt+yu7CtXT3CMRsBooPENxj7I2cTBTKDVrsUorQyjv9Blsnt4EnP1KuN+1o0NwJmDUBb413xeigwZzn30ZRTKH99+cSgKaZ+vs+nU9wLO/C9AhLQTCT98qnEo2CFZgsKc4+weQd0cdkesdP25cs= Received: from MN2PR08CA0004.namprd08.prod.outlook.com (2603:10b6:208:239::9) by CH1PPF68E8581EB.namprd12.prod.outlook.com (2603:10b6:61f:fc00::611) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.8; Mon, 23 Mar 2026 11:09:08 +0000 Received: from BN2PEPF00004FBC.namprd04.prod.outlook.com (2603:10b6:208:239:cafe::95) by MN2PR08CA0004.outlook.office365.com (2603:10b6:208:239::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.31 via Frontend Transport; Mon, 23 Mar 2026 11:09:04 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by BN2PEPF00004FBC.mail.protection.outlook.com (10.167.243.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19 via Frontend Transport; Mon, 23 Mar 2026 11:09:06 +0000 Received: from dcsm-trdripper1.amd.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 23 Mar 2026 06:09:02 -0500 From: Akshay Gupta To: CC: , , , , , , , , , , , , Akshay Gupta Subject: [PATCH v1 6/6] docs: misc: amd-sbi: Document SBTSI userspace interface Date: Mon, 23 Mar 2026 16:38:11 +0530 Message-ID: <20260323110811.2898997-7-Akshay.Gupta@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260323110811.2898997-1-Akshay.Gupta@amd.com> References: <20260323110811.2898997-1-Akshay.Gupta@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb08.amd.com (10.181.42.217) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBC:EE_|CH1PPF68E8581EB:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b8f21c4-c6a1-463f-b717-08de88cc999c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|13003099007|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: UNiPf0DnlPFZ5FHQLuzg7Z6plWdTAEMWVEILXAM19CBgL98tVA0fNrUEUuFr7OKI6t7LXAcYW9ZX5jxrj0Ad+E0geE/J05rLyMGwwHZNT1/dOe/p3tyjbe/fNQYgvShwtgsqFBIobOKlSS6kdb9tdWIpovPfSAskn3dGGg8fmETApW1iSbCih6rOmnrt+wtvdJvXCggoflTdb3NkMKAL8V6FZ0ObZzKQEofFW+R/rBEyBV25G2aK67NVBB4BkGEbo4G3Ss9f2rkyvi473qLZ77sYTEpHhZJkfcYMPZDhTsQH/aQgk6aEdc+kkjIbllMFSWnXAKd5aFoX4DT/2f5dVs+3C/5HsxsQUFHYmYycnP5rQFGx1bLiZnYcB/gZfVJdYkpXwB/Hb+Tr75gCmM168DCHTgUzvNYJNOp7bPsZ3W0EQGsW5XGkRZsb0SOEjwzMp5R07p2WMaSf4i9d2xVu7zNSbLK93A/3uABF65nPQk183y9l7x5MtzGAKRv+ca3G3UdmD9pqCQ2EZyMzlgtJdfvpVpKV8k3iLAUHh+6vA7wFobQx9kjNcmsAxgBGiR3HST8HP0Xy5YJIh0jRk3B6d0HjOYxz63fPLXd7Plkt9/JI/+jmIwsvT0V8I9Q+M66dyyoAbVEZSsT/Legc/pt/FT7xyieLb9dunTRi4XDTkbBlR/tl/ARxh5c7wr5R44TJTI37piHDxQGQ+1q4QfEcDeh1/iat2WUWgkUpgbPDanBj0pANzka4ezjfz1RGeet5KFOIqAUAxmJQkD25x/ifmM/IqLkZIHMNTW4fFso7mXU= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(36860700016)(13003099007)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LhTawAhz9vYwtzetjavn2yGcPKqwk8sGCLYvykevabQg6v3VYf84dh6gzaqZojjZxRdpQsO7jM7EKPxapwoKs6ZOfOHioWA2yXZIqjRDIDgvuZl/pN2U0rAtzQB8G7RD9rUilgdhQzDoBwGhcV2+m9wekeUPr2+PR5ls6ZQrT5e7tzC6AY5VKqvIfuXISE7ijKF/QYEwfMNOWcGnz29VnktU30jHpjxw92zfY/LT0wU9Kk3CcZoyb4CTjYDMPD4hzXKqbZWti3XtCgbS7h7gR9WG86RH1IHRrsAJtykqm3JG7cMXkQ1sVUWS7QTR4OREGvgstY6pYH5QRIkQ/ctcYj3VnJiERacjoAYa+o3j19Slm/IxduXXpCqX7msAaVG5AxjJIioAcLquSsLey/joCe4xTdRbxeIFpbW3ITOPe8OEf1H+axc3K1s2lcTeV9H4 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Mar 2026 11:09:06.4688 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b8f21c4-c6a1-463f-b717-08de88cc999c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN2PEPF00004FBC.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPF68E8581EB Content-Type: text/plain; charset="utf-8" From: Prathima - Document AMD sideband IOCTL description defined for SBTSI and its usage. User space C-APIs are made available by esmi_oob_library [1], which is provided by the E-SMS project [2]. Link: https://github.com/amd/esmi_oob_library [1] Link: https://www.amd.com/en/developer/e-sms.html [2] Reviewed-by: Akshay Gupta Signed-off-by: Prathima --- Documentation/misc-devices/amd-sbi.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Documentation/misc-devices/amd-sbi.rst b/Documentation/misc-de= vices/amd-sbi.rst index f91ddadefe48..ddff3cea8ed1 100644 --- a/Documentation/misc-devices/amd-sbi.rst +++ b/Documentation/misc-devices/amd-sbi.rst @@ -48,6 +48,20 @@ Access restrictions: * APML Mailbox messages and Register xfer access are read-write, * CPUID and MCA_MSR access is read-only. =20 +SBTSI device +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +apml_sbtsi driver under the drivers/misc/amd-sbi creates miscdevice +/dev/sbtsi-* to let user space programs run APML TSI register xfer +commands. + +The driver supports both I2C and I3C transports for SB-TSI targets. +The transport is selected by the bus where the device is enumerated. + +Access restrictions: + * Only root user is allowed to open the file. + * APML TSI Register xfer access is read-write. + Driver IOCTLs =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 @@ -63,6 +77,9 @@ Driver IOCTLs .. c:macro:: SBRMI_IOCTL_REG_XFER_CMD .. kernel-doc:: include/uapi/misc/amd-apml.h :doc: SBRMI_IOCTL_REG_XFER_CMD +.. c:macro:: SBTSI_IOCTL_REG_XFER_CMD +.. kernel-doc:: include/uapi/misc/amd-apml.h + :doc: SBTSI_IOCTL_REG_XFER_CMD =20 User-space usage =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D @@ -92,6 +109,7 @@ The following IOCTLs are defined: ``#define SBRMI_IOCTL_CPUID_CMD _IOWR(SB_BASE_IOCTL_NR, 1, struct apml_cp= uid_msg)`` ``#define SBRMI_IOCTL_MCAMSR_CMD _IOWR(SB_BASE_IOCTL_NR, 2, struct apml_mc= amsr_msg)`` ``#define SBRMI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 3, struct apml_= reg_xfer_msg)`` +``#define SBTSI_IOCTL_REG_XFER_CMD _IOWR(SB_BASE_IOCTL_NR, 4, struct = apml_tsi_xfer_msg)`` =20 =20 User space C-APIs are made available by esmi_oob_library, hosted at --=20 2.34.1