From nobody Sun Feb 8 21:21:35 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013037.outbound.protection.outlook.com [40.107.159.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 ACEA6325737 for ; Fri, 7 Nov 2025 14:25:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.37 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525544; cv=fail; b=BBZkSg9aLAxoVV2w20hgy9aLdOcRQ9ZZTh2kqXiMwj5Ck+3rkOfuf9jPPZUtEH+ZjXsN9AWJUQqquRdqxVXXcMsAwR8HKC4ivBdEM1zDY/3gPs4bajHht5o56Xwmd0KADU6TVcwRvQWgpwbK2kDjacvFxzdrIpdA75Q+1uxfYOA= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525544; c=relaxed/simple; bh=SQblla2TB2+oGQNW+rOX5cH9ZtSf7kEkiqpxDaI+81c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=WIhCNC6P/nUnFmj8h4LAAhVsU2zL4NkSWfXh1Tyd802XxfodXOPnCz8NUiEiyKa43OFEP3+sS3c8tSDtbmK/wMxAXF1ebL8uiCuC1dXpL6ZQlQCyaeZmFhkO4O7wgwOswDnxCUTiK1BlcCBRAJOWjouN69UVAxCf3ane7T7aRY4= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=hdXM9rr8; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=hdXM9rr8; arc=fail smtp.client-ip=40.107.159.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="hdXM9rr8"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="hdXM9rr8" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=Yy9msGneq/aV/wnIMiLgAIBaiC4UIb43FV0dzG60+icWgrlg1zAkvBMZwlrV7z6wZJZtZ9hfh/WfqNYp9WczbnZa5zAK1E4dQ/IK/ejcjMmqgZvL8oeatbGWpaC6IfYYsaHD6OmtAvUlFa6kNmMX9Es53YzqsKcdh4Gym8nhblrEZX+TpeUx8fBxK/hsujSD4kan1WX7zIHcfQrNxzFQtn1+cCnvqzxxvflL1nmcQOo070YPBlqTWNDVpxWi3mV8zIfCTTRBBnEeMfOhVkIh0e/MzehCzdEQSsdDF3Ns4OCUMDUO4f/VKpNShMhHKuz5Kgb031sPVolbIMncdolQLQ== ARC-Message-Signature: i=2; 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=FIXHTC9XgtbFLjz2y1mLJahqQ0kR4H2RxdMexvDjsfw=; b=LVvpzuCzzHS+VW1aG/oUrk6PuLMbH3EL8kpd2ufqAwtrd+9d4GoIKEUpMkx8+EvH1wKhiK0VcfDbhLW9zYd7MVJeaEl7VOz4RaDZ+8fSH3zscT4woPPvNd+Qd3SNcp7hxKIc/SjWGJ9Olb0JxwXTXjzIaIob51WNEmLcJYjP2zLZ6XsUpWn+R5B62mlogv8bd1UZsT8UU1j/Sh7TBLsgDo8PuYU30TWfOweKHAU8J98SB3ohBpojL+wv+zlGtMAQGoJDi6z/PF0OtQfulsFLghHEQOewQHiIkPbefgBpJM2B3345UDfGa9N66iooDecpQuZlYdIrvvj9SzP64HdWtQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FIXHTC9XgtbFLjz2y1mLJahqQ0kR4H2RxdMexvDjsfw=; b=hdXM9rr80rQNNOB5ted6udPwPqb9Sx0GonHaONCH8au3RMVEBpCE8AqHjx4H7bImuGN3i8jbcsvDHaBLCCOHHVH3J0HKX2HJHyA1YGW4oK1zXf7YaqbzyGInm8qGfPNZ48R4F64MsDHq5AXPuqwZQNkf0lw0TnErAFbo03T5dXA= Received: from DU7P250CA0010.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:54f::28) by AS2PR08MB9896.eurprd08.prod.outlook.com (2603:10a6:20b:5fe::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Fri, 7 Nov 2025 14:25:37 +0000 Received: from DU6PEPF0000B620.eurprd02.prod.outlook.com (2603:10a6:10:54f:cafe::6a) by DU7P250CA0010.outlook.office365.com (2603:10a6:10:54f::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.12 via Frontend Transport; Fri, 7 Nov 2025 14:25:37 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU6PEPF0000B620.mail.protection.outlook.com (10.167.8.136) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.6 via Frontend Transport; Fri, 7 Nov 2025 14:25:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UN/cmO///Q7bBNrnpGF3nH05T/jHWfbJRHwFrD0k6wRSNWaTIaf/ak6zy01ukA4q4Tn0Ztm0ziDiE9J/LFOXBj7WBFzas2fqmYEG1qseqoMM9jPYCJD3zJaQuXECWSh//kM1KTMWqtLED4Nk5p01VzHtwVj2jO+fvEd2eEPazjotTYLtc0o7TbkIQvzS6pvBsQvQPeEHIgdyu1/S6CDQvmRTFGKHclk5chges5Kx8tEzxT74B1RLjaSD+a66ilr9sND355bg/aDNpPwysLnaKlHdxecn1nj9+aGInKzTve5mvSHZBWxb3dOBt83FRkguLpWeTWwl87Uy/n7SNCLH7w== 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=FIXHTC9XgtbFLjz2y1mLJahqQ0kR4H2RxdMexvDjsfw=; b=fcMVz28r1DFxD0Cf+92Rqv43fz+Ng7RNa511sV1amIi6IGEG/9U/Umj2MuvymEDGVUqWPYTb6SvqkfmpTykOEAw7GZ7TDHHZ+Rv/3Dn9ViaKz7YjrW6ba1O3FEo1ftF58Xki2qJOeLYQ7F23G6wOskJK9zTCoDKpp3Op7M0dVmM0RJRZSOw3RqrHFD3kgVBRFLwA+GjfyfSjyarL6+hkHzekD9BXHQcJ4+9h5I+APtwES29/09P3FEGKTMBuMT9p1iCAkb2fMSYS8nOazzQHRJZimrNOvfSx1LMAWXrbaiE7kEXDt9TRMllG3AVhxr6BBf/58h1cZtaWS5APOjgVLg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FIXHTC9XgtbFLjz2y1mLJahqQ0kR4H2RxdMexvDjsfw=; b=hdXM9rr80rQNNOB5ted6udPwPqb9Sx0GonHaONCH8au3RMVEBpCE8AqHjx4H7bImuGN3i8jbcsvDHaBLCCOHHVH3J0HKX2HJHyA1YGW4oK1zXf7YaqbzyGInm8qGfPNZ48R4F64MsDHq5AXPuqwZQNkf0lw0TnErAFbo03T5dXA= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DB9PR08MB9682.eurprd08.prod.outlook.com (2603:10a6:10:462::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Fri, 7 Nov 2025 14:25:02 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74%7]) with mapi id 15.20.9298.007; Fri, 7 Nov 2025 14:25:02 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v4 1/8] drm/panthor: Add arch-specific panthor_hw binding Date: Fri, 7 Nov 2025 14:24:33 +0000 Message-ID: <20251107142440.1134528-2-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251107142440.1134528-1-karunika.choo@arm.com> References: <20251107142440.1134528-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0023.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:151::10) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DB9PR08MB9682:EE_|DU6PEPF0000B620:EE_|AS2PR08MB9896:EE_ X-MS-Office365-Filtering-Correlation-Id: c01f2225-4c37-41da-34ef-08de1e0984ca X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?IHC/njGuBjBGu2rRNbHRo32Mlg/L9XfUURjdoEXZMO9B4Adaz8IhV+xRTNY+?= =?us-ascii?Q?IePWmZFHhVzKBTb3RcTRqBm5GJBXrVhiRTPHe0iV9ilzLOoi0ZIds1ood1TD?= =?us-ascii?Q?SMUwfGPRRxt1FphYwZCNPBzRWGNA2yNr36rRob/L8GnR5as/y4VyJLLaCZOi?= =?us-ascii?Q?ZlRKhQHjDSDac3l72OFL9mIXaPSUa+EIstirYr3S2Z3HVB2uGw7yRdoeuJCd?= =?us-ascii?Q?sfmk2qrwyW+wsVl+qyRz2IcJg5ari+W/WJSZUx13/nk8rKK9S3K1w2+i4h+A?= =?us-ascii?Q?X6MiRCvdz2i3F1jK6CYS6h2ewW35fkiplimH0GE2kyH2lqcjs51A5Yf+yT0V?= =?us-ascii?Q?7y6WkseLBzNXa1wDycZoy4Ly/0KdcrNTBCRuIq2QqCwPgTKPVjM9dfkllEiW?= =?us-ascii?Q?kpJ0OScPjsKMUJnabRTQS3ieaM6Bv74sYN4qma0DbuCGjv6NGbNnvmUVtshZ?= =?us-ascii?Q?SrFMbCg/il2kOOkyNqetzsUNNEZPhY28ZBLo37Sa0Lnq460gVVibcYZTKmPR?= =?us-ascii?Q?H9ftde3rNePU3luggSSXaUInVyP2Iy67blXNyzE4h3v0vu/ZXbXcThe2T3yU?= =?us-ascii?Q?LjYYt+ta8bZr7bFVkyRNHhz94qbJYfpL7koPfoAuX34A4VPjo5VsUrblrceD?= =?us-ascii?Q?7gKAwDFKPAxznAFQVTwnlfpmvB4x49nlFUF7tKTwUAVpgZh2kFN7Uf+hA1Sn?= =?us-ascii?Q?RlXJsmIB18cPQzRu67/stdd4mT6GE6y8pIjxnlE2PyGsaFY336EoXbf6t66F?= =?us-ascii?Q?Whq47s1rKfi2JtqSWz3uLUEmQ9Dn57+FOZvLEhU3pvhBZtTx76XDJY+fruH+?= =?us-ascii?Q?bfclzaygHVJVWq89USsBscRNLTSuYNYhmOnzx+IcMkCsNU3RTA3sV4OREhO2?= =?us-ascii?Q?nEwpQqibJZxtWCmWWncxa2ugf/jbtOLG6nSsIfzt67Xg6Ypu9gXMBm6HaRkt?= =?us-ascii?Q?VUd+CQoMAbGGOpsUIDGFWMbbaR/F09JUCb+EqpUSq5QBy8P7iI8Y/xBOMuNe?= =?us-ascii?Q?miQdssD93bULJ2SoSEmaaSi0VmML+z3+tkXrZ+4OhijsDXRhi8f4ZguBf5Ml?= =?us-ascii?Q?gMYMewKGlopkIQArMalR7yY1CwNJvl2rUX0cGsF8tD6sJvOIJ7f+YynKAVR/?= =?us-ascii?Q?TRutdJuzUNMgK9NSEhiuD06xmi5nY6ztGoSyrUse3okBMXl0TDubwhzWyZ4A?= =?us-ascii?Q?3FKKkPv92c77cp93JMbnY3qG9O8rfP/vJ/ANF07t87x+BAPC+mqmxnKDV7Ci?= =?us-ascii?Q?f2JgPK48BSO9kaAzcTgBsMwBjQWSx6UeRaUjoYMvSNcTn0yy1NfCd4uI9cRX?= =?us-ascii?Q?pCOSNxuWgomZWqn5bF+fS458K9v9h9zRIUKGDYWesNZZQhtF0RoSoy30S0yI?= =?us-ascii?Q?MdJgpPHOKfjY31KZgm3oQvODxazRfNLmHmUFjzxxazjijOVd6+Q7wMJhUSwy?= =?us-ascii?Q?mkPaN/FAHHsN9tgL5gXAfgKyH+/G6b7V?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9682 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000B620.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e395796c-7dd3-4583-e237-08de1e097044 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|35042699022|1800799024|36860700013|14060799003|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ZOX8Wm7UVRndkN0CYJO8EEjMbAMKF3BqP9/1/uh+CpxOZW4ZuHksRbYyY9zt?= =?us-ascii?Q?AtUP21KOu6RYHzvjjYXrDuPg05O4SKiWeFQDsALV3CP8CxazEtQkkpfBpoML?= =?us-ascii?Q?df2bynSOd7SrbK5aQsmI41mOyVFL8/JGGPg9+1p1dqoB0KiDBLLwdqSXU8Q6?= =?us-ascii?Q?KYRFd49QTzwBdowIxhlfc3nLeq/X0NgFQzRG5/QIBnkBhmhL6qpvNyhVCcvJ?= =?us-ascii?Q?tTlel92W8IQRqXN79V+4KQ/LPkzy6toBCGcSBEAc5cVCN7AQUFC1reC37pcy?= =?us-ascii?Q?KYxCHMeTvgYtH8pvUhyEr7eFPy+9y7KyxP5okYgDkKoJHKkdWFpujypTCJL4?= =?us-ascii?Q?FxxZeJZ+ihvB12kzrSYxcFHADpoH3nPM2lnjbhN+FoqM7pyqEDO0LHF2CR1L?= =?us-ascii?Q?ywY3d6jbUHxsqJZD4ItAvHsujGKk5BlxawmQKqmJhJ73S9YY+rNhl7SeVvF4?= =?us-ascii?Q?p/HeZoxYOo6X5hvdSFVXwPVC/zfOfAOvy/gzlFOsSTlhdUuVMpZ+bwekITy7?= =?us-ascii?Q?dmPylP9UZG2a8Ib6p4kwVchGEtAQ0vWrc7z+sKIMJRJNPmG1Mu5fRbNuKb1Y?= =?us-ascii?Q?v1YnbSJTdcCPSxPzkog3M8qGcwBJBPoP1m9kyGMv98yY9LG2mCtvsLVTQ5Nf?= =?us-ascii?Q?yCBYfQmBm02X3CW841JCwumfDuwHz1FOJ33/cJzThllzOnMzfjReLy3MNm7p?= =?us-ascii?Q?qoyZ0Mg5tT21qy0YDs+F1P1bb9otWS88xEOLcslR1hL/mhr+KTLE6TywbHW6?= =?us-ascii?Q?UvKmmz8wuxBvzcBHd/Zt3ivYN8Dh5qBynE6aWFUDb76GDN4sLMM8Ysj2GFW7?= =?us-ascii?Q?w+RDcFA+r3314tUGT0WPiX7l5VaMptQZvLdIlvzJ51LLUZ13QEqg7lonxOGz?= =?us-ascii?Q?w/3vhZ2JkpRHssL7/dPN1bvyZ1NZrSAvnrXtANS9k6o+m6Tn+fPbAHlSNJVp?= =?us-ascii?Q?hB+gJPzgAWVMHUoQs7xL7SY2dWNmRlNynO4n3sRTfK3fNrNF9dliAbOUfJA+?= =?us-ascii?Q?ndXMbhhrJhZI8uWQ8efP/Sszh+AJ72Lr6q5Zwa2GbUNYc/rso/HLn1NxJoMO?= =?us-ascii?Q?a1wjPczZ2SYQ7SJoqU1xHzmud2jkuEmAmZfVjqW+WWwSldi0JPzsSmBIOzBb?= =?us-ascii?Q?vHewpQoIkowTugqH3YCI0rLexA2J6kD+mtm31/nJdRSRO61TRechG0cfAPks?= =?us-ascii?Q?4tQbdGn7SkMuxXvSFzqcOUqLbOMX9FpWro0rCfil+w+aL9A5X0jw4/X4g5ci?= =?us-ascii?Q?MOApvDoqt7ULsPdfODEiApNY8+p+OyG0PYngMv9hR2qmBAV9Mv1Y/F0KsNgc?= =?us-ascii?Q?Hdb0jAvc8sz5vqAT0SWScmvgc+9tKXrCCgOjX3VWFBfWY6wbIELugw+w2J9y?= =?us-ascii?Q?06l52anoyGiIalh5GFI3yUYSHVViiY+hkMqRfnYr3jDRreCPa8Lrou5fcRZX?= =?us-ascii?Q?qXuj5lAq+DmePAwgaXyl9Pwe8vXn9YXTdHyrL6xXIJPL71f1kwjZn4gdF9qQ?= =?us-ascii?Q?XlAdfGOWNyaCmaX4m8JBzHeiMbkGKZuuX18oR2MpNOdIvStUTJvi177MQqd5?= =?us-ascii?Q?sKkNRxqvSmbq+e1z4O4=3D?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(35042699022)(1800799024)(36860700013)(14060799003)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2025 14:25:36.3442 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c01f2225-4c37-41da-34ef-08de1e0984ca X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF0000B620.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9896 Content-Type: text/plain; charset="utf-8" This patch adds the framework for binding to a specific panthor_hw structure based on the architecture major value parsed from the GPU_ID register. This is in preparation of enabling architecture-specific behaviours based on GPU_ID. As such, it also splits the GPU_ID register read operation into its own helper function. This framework allows a single panthor_hw structure to be shared across multiple architectures should there be minimal changes between them via the arch_min and arch_max field of the panthor_hw_entry structure, instead of duplicating the structure across multiple architectures. Reviewed-by: Steven Price Signed-off-by: Karunika Choo --- v4: * Picked up R-b from Steve. v2: * merged GPU_ID refactoring patch with the arch-specific panthor_hw binding patch (PATCH 01/10 and PATCH 02/10 in v1). --- drivers/gpu/drm/panthor/panthor_device.h | 4 ++ drivers/gpu/drm/panthor/panthor_hw.c | 65 +++++++++++++++++++++++- drivers/gpu/drm/panthor/panthor_hw.h | 6 +++ 3 files changed, 74 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/pan= thor/panthor_device.h index a764111359d2..1457c1255f1f 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -26,6 +26,7 @@ struct panthor_device; struct panthor_gpu; struct panthor_group_pool; struct panthor_heap_pool; +struct panthor_hw; struct panthor_job; struct panthor_mmu; struct panthor_fw; @@ -122,6 +123,9 @@ struct panthor_device { /** @csif_info: Command stream interface information. */ struct drm_panthor_csif_info csif_info; + /** @hw: GPU-specific data. */ + struct panthor_hw *hw; + /** @gpu: GPU management data. */ struct panthor_gpu *gpu; diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index 4f2858114e5e..b6e7401327c3 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -8,6 +8,28 @@ #define GPU_PROD_ID_MAKE(arch_major, prod_major) \ (((arch_major) << 24) | (prod_major)) +/** struct panthor_hw_entry - HW arch major to panthor_hw binding entry */ +struct panthor_hw_entry { + /** @arch_min: Minimum supported architecture major value (inclusive) */ + u8 arch_min; + + /** @arch_max: Maximum supported architecture major value (inclusive) */ + u8 arch_max; + + /** @hwdev: Pointer to panthor_hw structure */ + struct panthor_hw *hwdev; +}; + +static struct panthor_hw panthor_hw_arch_v10 =3D {}; + +static struct panthor_hw_entry panthor_hw_match[] =3D { + { + .arch_min =3D 10, + .arch_max =3D 13, + .hwdev =3D &panthor_hw_arch_v10, + }, +}; + static char *get_gpu_model_name(struct panthor_device *ptdev) { const u32 gpu_id =3D ptdev->gpu_info.gpu_id; @@ -62,7 +84,6 @@ static void panthor_gpu_info_init(struct panthor_device *= ptdev) { unsigned int i; - ptdev->gpu_info.gpu_id =3D gpu_read(ptdev, GPU_ID); ptdev->gpu_info.csf_id =3D gpu_read(ptdev, GPU_CSF_ID); ptdev->gpu_info.gpu_rev =3D gpu_read(ptdev, GPU_REVID); ptdev->gpu_info.core_features =3D gpu_read(ptdev, GPU_CORE_FEATURES); @@ -117,8 +138,50 @@ static void panthor_hw_info_init(struct panthor_device= *ptdev) ptdev->gpu_info.tiler_present); } +static int panthor_hw_bind_device(struct panthor_device *ptdev) +{ + struct panthor_hw *hdev =3D NULL; + const u32 arch_major =3D GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id); + int i =3D 0; + + for (i =3D 0; i < ARRAY_SIZE(panthor_hw_match); i++) { + struct panthor_hw_entry *entry =3D &panthor_hw_match[i]; + + if (arch_major >=3D entry->arch_min && arch_major <=3D entry->arch_max) { + hdev =3D entry->hwdev; + break; + } + } + + if (!hdev) + return -EOPNOTSUPP; + + ptdev->hw =3D hdev; + + return 0; +} + +static int panthor_hw_gpu_id_init(struct panthor_device *ptdev) +{ + ptdev->gpu_info.gpu_id =3D gpu_read(ptdev, GPU_ID); + if (!ptdev->gpu_info.gpu_id) + return -ENXIO; + + return 0; +} + int panthor_hw_init(struct panthor_device *ptdev) { + int ret =3D 0; + + ret =3D panthor_hw_gpu_id_init(ptdev); + if (ret) + return ret; + + ret =3D panthor_hw_bind_device(ptdev); + if (ret) + return ret; + panthor_hw_info_init(ptdev); return 0; diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index 0af6acc6aa6a..39752de3e7ad 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -6,6 +6,12 @@ struct panthor_device; +/** + * struct panthor_hw - GPU specific register mapping and functions + */ +struct panthor_hw { +}; + int panthor_hw_init(struct panthor_device *ptdev); #endif /* __PANTHOR_HW_H__ */ -- 2.49.0 From nobody Sun Feb 8 21:21:35 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013012.outbound.protection.outlook.com [52.101.83.12]) (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 D41A4328B62 for ; Fri, 7 Nov 2025 14:25:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.12 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525547; cv=fail; b=e/YwOa7aFW4J7vE/M+CQLUbGlRW98/Q1aFPmFP9aCznao0f3l3XxxFoDAsx/uels9th+2gFuDy440/1N4ZuoBvGblLEDQDT8a7K9WmH0zvb/T4LK9JhlbCan09q52Oexf0jobkS6y+3Wy+pii5UzmeOPeUj2Zx+8tYliC/w7b9U= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525547; c=relaxed/simple; bh=OeFekmu9u9Ct1rWQzhy9acfHu9wRO0YBZ14YujNN0b0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rTSm6ZPXpbdUjBrarEnwXY+wqcubU0G2dYpQoNBo04F4ISIxzu1gIg1JxGjTYStuS0cH7TujF13lkjJ5zGOfMqD03bCQN6eB3WznUZzQakuDYMsaFm8aLU90mXpcEqmNW70uD2BgY57FdiLh1hNJf9exuTHZhdJxKjIc3Nfbzm4= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=haNhJt4J; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=haNhJt4J; arc=fail smtp.client-ip=52.101.83.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="haNhJt4J"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="haNhJt4J" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=wEMQE1vyb+8vk+FS1sCLmqZQVt5mDXBzeOdfvheoxVJNaeO9T0uVN/S7ZqtboD0Oylf8e0Xwroa4fVFwCNEPpJIO5wJGugXEShfBddHRrGC3rIo/THLIbgmnIgkmx4PGBJJy8Yqp73uCjdY23w26Azt/W7UJivnuPgf/c2APrZo0JX4f2atDOxtJliX6hgABvCbbh2100P1eMfoxK9ooZaW3YyJoqvbQIAGexDFZ1IAstgji4v7JLCHHbDLwu5kWai2NzxrT9WGPSLQyLIFmPAi6sgxQFDhJTlecfYMrmvL1bApIlP8+ur73ehFdekFViZ10+JwxyNuwF6dSP24abQ== ARC-Message-Signature: i=2; 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=xjs22j7Nj4y52dV3DB1qj3hfZ2YtvS5xIPW/STCpsfo=; b=Ut/YMEbKJ9OutddnC3PEg65Gy6jaNvSwa/Oc5v95ph97x+WztL3N0hp0UkSm9z99jsG/1AmQ/ACBpn6hiL1CorDzCMszXRgB8T0pq8Gmwy1MaBThaQl/c3jrmkiHAxbCaJQM1vDV593pSnkcgKr/821lMY9O/aHx8+vNDeglMBxb/4/m6N+NXkK9RLMDGDHTYfn23ffyJ07xIKENJPxxsGBqjhzggohhG0D3mt1kuNApWJDs2nsgj352Ya5YyDlpDr9jbJNB4XAVO1+zE17gMgcPQc+i0iXzShv77gL1Dyjpr5VzABPAsU2GGdIBnljTcsrVdZbvwRQZCQMW0Nd8vQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xjs22j7Nj4y52dV3DB1qj3hfZ2YtvS5xIPW/STCpsfo=; b=haNhJt4JawLLSldk0QP9Fl6FjuxNxr4MvaxCfQZvKOMNoZ1xgK8m7xkXFanMmwNtWYiCHKQhYGeViBXXjFdQfMkx8YaclE0nXKMzJg2Wm7MogqAmlXojRI3jh2vURkkiUHxyLi4u+DvkWGZo9zqc9/IE7OVD8mZW+MpK5kaODos= Received: from DU7PR01CA0020.eurprd01.prod.exchangelabs.com (2603:10a6:10:50f::25) by DB9PR08MB11461.eurprd08.prod.outlook.com (2603:10a6:10:608::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.7; Fri, 7 Nov 2025 14:25:39 +0000 Received: from DU6PEPF0000A7DD.eurprd02.prod.outlook.com (2603:10a6:10:50f:cafe::64) by DU7PR01CA0020.outlook.office365.com (2603:10a6:10:50f::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.12 via Frontend Transport; Fri, 7 Nov 2025 14:26:02 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU6PEPF0000A7DD.mail.protection.outlook.com (10.167.8.37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.6 via Frontend Transport; Fri, 7 Nov 2025 14:25:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c1qB5eg/+p6XDG9KFwFiB9+KM6mCCH3r4aB6XMvet6tLhwBEOSNI/VFF3VHbj2llMvRXiLTZBcUnm47bFmFm0XWmm0tq18jeZqYw6IIyn8gI5r3K8eKO9ULlf14WQMIUc+QUFAf8Bv44aBrxcHyE0I4fRfCameC/trqnY5UitpRvdvLe1FHR6RzKdjyYubnrLfm2PpJe272EkiHO8AsiIdjslFUF8XTkr5mSH38v5giLBnOOK5ei3gLvxMPzN+F9UrXgSrDkgtPbNmh5vr2jehfbA1s6nY9RUFY0ofNUIQD0i3/LNUWs9cJi+GGIQKD6OFKrNrEPDFafF27DXMHwyw== 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=xjs22j7Nj4y52dV3DB1qj3hfZ2YtvS5xIPW/STCpsfo=; b=EF+XPvjRw974XIfMJ1cCiFikZLGUH2su9EYGsodtN5im95Es5zrO4ni/3o4oYmdcSF8sr2vhiDcvSVlot4m53oGRSh8/crblPSWmqSoYyYcsxALUOZU5p2Pv8I0S1nu5drHZ1YA1UhQfpMUwlK9yWtoipWdTIUlbs7xWvzyku/+ANl2Oh0r6PQa2T+ruzeQs47r9dnkiO43j78byDEME1lJItZVheXAjuqv16bLSWoZjskBCpXAr9kSBjLHZuu2Zvpco+cjx/a8o4xJnxUvmiNAjbl1N91bQB5MVLl/ZJFiT3DFYg/3OUhlG7EiNT85k/KCqCVp4S4mjXrxUBw7UWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xjs22j7Nj4y52dV3DB1qj3hfZ2YtvS5xIPW/STCpsfo=; b=haNhJt4JawLLSldk0QP9Fl6FjuxNxr4MvaxCfQZvKOMNoZ1xgK8m7xkXFanMmwNtWYiCHKQhYGeViBXXjFdQfMkx8YaclE0nXKMzJg2Wm7MogqAmlXojRI3jh2vURkkiUHxyLi4u+DvkWGZo9zqc9/IE7OVD8mZW+MpK5kaODos= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by DB9PR08MB9682.eurprd08.prod.outlook.com (2603:10a6:10:462::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Fri, 7 Nov 2025 14:25:07 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74%7]) with mapi id 15.20.9298.007; Fri, 7 Nov 2025 14:25:07 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v4 2/8] drm/panthor: Add architecture-specific function operations Date: Fri, 7 Nov 2025 14:24:34 +0000 Message-ID: <20251107142440.1134528-3-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251107142440.1134528-1-karunika.choo@arm.com> References: <20251107142440.1134528-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0393.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18f::20) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DB9PR08MB9682:EE_|DU6PEPF0000A7DD:EE_|DB9PR08MB11461:EE_ X-MS-Office365-Filtering-Correlation-Id: 16291aab-7790-49df-f784-08de1e098696 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?/lVnuS8LPZSADJ6Qg1vQ/j4lEaJmimnI9wOtURNCkdJmx7AJN/IvQn3ksRN+?= =?us-ascii?Q?eXctyUKLBtv2up4kPkZTPkomTV4Ncu8YihS2fLH/o/XWdJeI+lP0x45Il1fV?= =?us-ascii?Q?ClO9gYcnvPSx25KgzNbcxtFmqjroGcZdHjjlq+ZVR4/b7JgT6MU9Umzwm08Z?= =?us-ascii?Q?rcdKSQR9Dpb7uESGlk63q0NRbIZNaGMNO0PAfGFsYLQUM4p6HbpPPvQERk6J?= =?us-ascii?Q?Gi6O0UQwcKrcWFGq7dVUBiyccpnXj4JPzO/blAw/AhBsAlWoF1+dr34syaf2?= =?us-ascii?Q?awRHAu56P6xcHY1WPGx481Z1WxXjtCcjmSzdWM0RaT58Jt7BuGNLNvja3mN0?= =?us-ascii?Q?1b8rirTO+m5H21whVRZ6V89eU95PE9k7TyaKdCRQ/SSR8g++no4zPijGdNm2?= =?us-ascii?Q?nkeUCRmnrQHYMunmo3+MKTQhFA6zq0jEcwijuJb3fYLh/ux9I6MC9ORv6yh+?= =?us-ascii?Q?Yir69KuG98eYefiIB7M25kLFN9SfafFTCLJcA6dt49euZ2HLEvSL7uZ6SefL?= =?us-ascii?Q?5xsqv45kCbxBMOA/fCqpWjuHcE39Xu5UjTQ6UstHeLM4qialxLJUrn8cWnrp?= =?us-ascii?Q?ZsbA2BmwPpxyAwjD3uRSLRua6KouqtSVDsE6d9dQ/4N8EpLA5LlR8RurIm4Y?= =?us-ascii?Q?xKcECreMEMM2SKX21ggTcSzHdDDl1kNvAaYSM9TOzJrG70y1HqYVsdI+vQQO?= =?us-ascii?Q?jLMQHDlt8p0qEsaVYHElTo3uuMwla6ekzhWUXWhRkdmsyOralCiNSu6NZsZ1?= =?us-ascii?Q?Tk1G4JX6HD2gSpWPd+TlyaJxk8V0TPOdHjWTNi67emMBS0wqn87irwAWDlv5?= =?us-ascii?Q?dfRQDcV4Vhmq0BOEb26q5rA7uKlStqzIh4MHAuksf5n5vkOTlf8ANcS4jOyg?= =?us-ascii?Q?WQGfNxMZdarVzfBD/X+iwHgla3G55T9gpgIFyzXWr6cSHsrVz4zLUos2JhV5?= =?us-ascii?Q?cBasg8lrF7p//l2KmkdyoA39qIs3upVMCkuOwwo97rB+upQH1iSnvo4IIcOE?= =?us-ascii?Q?n6CgyJCnPHkColklPIhKkx9Q9BaFrKj2Gxua0e5H8McDK7VFwZgiXBF6oX1x?= =?us-ascii?Q?wYJKAd28JQJRD8CHbzyuktQJRi68+yH+X9PDx31ofJuQtFiJ8b6GeKgZ1vuC?= =?us-ascii?Q?XI0Kll2tyeS0oHty6C8te3ia6xENil1+/QOYcrfxVF0s0vkrBeb5ghpceW5E?= =?us-ascii?Q?9w3AW2EnTkUAwN9V3bsirxMnSH/XgpkAk7BsUiC2KWx/SO4sgHczb5yHsZ4o?= =?us-ascii?Q?Ickqj0DjIRAXv3LISB6UVLwdvciQ1Vxr01SP4Goy9x1xtVRNGQL+cptxNd5O?= =?us-ascii?Q?hdkMJ3fy+mVH5loSmKyOl0z9L+g37AbDPyrvKCnZ5SSNyn/wvuSIvC08joKn?= =?us-ascii?Q?g49xHleG0jf51IHk6Nhm/7owKbDIo94xyKpU6Dr+fLxG/9CW6t48Y/qPSlQC?= =?us-ascii?Q?rkDVw//2elPRLTxOLXLV9TUdMyJgk7zL?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9682 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000A7DD.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a4423072-e725-421b-24c1-08de1e09731a X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|35042699022|14060799003|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?2c9NIM+k0fXm4k6sIyJq4ClNiK0gcQmjE54dXp+kocFE2qmc0G6+MLzNKyK5?= =?us-ascii?Q?mSQ2xOvhMUHLsq8RjzK+lZkk91LjGLRiScq8XV8Kn57Y5DOTmmdo42cVeiff?= =?us-ascii?Q?SX8ddUFeOFc9GjRohDLs5++WTmFfvkSrqBUt3tJAyO7/4FNgB30A0+yyumN1?= =?us-ascii?Q?ExrwUghZHF9N6aVdZ5QiDNVCSlBQcR0pyr0QGmy24hjS4FHFv+VTwZCqVKGy?= =?us-ascii?Q?HcmGHpqScPXcmTKSpeE9k7oByVQSILSzXZ2bfmLaPufWAgi+lOvl5MxbSTg3?= =?us-ascii?Q?bC1Sq/mnL6RM5q+cDlkizjXLhrdiTN44BVlhE4eNbXl+4i6YCDDOqXuI8VZy?= =?us-ascii?Q?dvvt5cFRJrq8D1sGtIT3gQxcs1vEl2Bcqp6Rzxkpmz68amnWWxDmZbKeQejo?= =?us-ascii?Q?4wrYdSvfzbx/ok9wVIBitwog6jqmiGipYLYISh6ni6qfhmRb7SOlC7VmYzwn?= =?us-ascii?Q?8apbKZCgWU5Joq1XgMWMVEQqJVtHgwCs8t2mgtDhYsIxqtHBDL59DrTQSnT9?= =?us-ascii?Q?jJLDJD2YtnooNxx7JasO9zA95juQB2ybCugXrYjhkGEDOz5WgREIDC0vnRlu?= =?us-ascii?Q?HRHRaOp6T6REa6X4oKvYwxYN9DX1DPCMMT2H/rVshmFMzML2tKzQvxbX9c/a?= =?us-ascii?Q?hw5anvkML56/CZ6n1yoMlptnuOe0yNwXR2/KsfTL5lcCFkWMG01N/GBIyqV8?= =?us-ascii?Q?uS+FR3ry8ZOMyjh5yD/4XPvRabwy6JpGafKFVpQUBtxXSrELqx5J7rOiXk1R?= =?us-ascii?Q?gpoLbvJrkCXKancbRwD+upTzUSY75zr8igSUFh1PmZWFawoXSO7ybXbDc9ft?= =?us-ascii?Q?WWuHoIPnzmGjTfllspmAqch2PttIvtEhq63HG9+vUZZe6uq1SHxmAM/qZ27B?= =?us-ascii?Q?1vK7YLRfzdN9t2ZEiVdywc0N4/EiPcw9Wj1iItZA/7VBU9V3nIL2pkqRZFDc?= =?us-ascii?Q?T7N+7xVGOFgXVJDG9x2EchKd50uH2qfD0hWVmZZrlwLDPvV3kC/FiQHCr+eM?= =?us-ascii?Q?5qVl10jUplrYyOz/G9SjjFV2LSh0djZ+g+pudbe5CRWTTzktqgC69AYCjLQU?= =?us-ascii?Q?nu+Jjeyw3qSMONFAFh+QinXwGg6p7LpK6VHe5oCZHPONZhN2pRyrwWONlGao?= =?us-ascii?Q?3N+itfbpdLXoBs2rjK+f29Llmy3XWRhU6J0RGQ2wqMdHEDXIzInJmnZOQWyQ?= =?us-ascii?Q?kxYzfhnWYp1Nno5Ddi+LPAPoX727noIJjUQlwAWODSogGxvSaFpwK6JNR0vD?= =?us-ascii?Q?4eP90+U8Z0cSWJkPGP61ytsyKVsxHmDFxqrEztF+t3aSTrKGIKRqxf8SsXJT?= =?us-ascii?Q?h7pD4cZm8RG6lhKnkZVnlXcOgXLrpHUjzWnl/hv4jq/gn0MD9G6AM0FVCAxa?= =?us-ascii?Q?4TViZ/rveC7NmgP819BZZx1fs3bdOVNrQpOE0WcdW8hxaaewn/w2ETNwxE3w?= =?us-ascii?Q?OajgD3CINIOhmfnUcD5VB888FV8ntw1jjh1/fThTW730QWEm/0a+7PtmnjjA?= =?us-ascii?Q?/gZl9+uEql3GohTZIvRTkxsjh5kYsL5Zkr51y3QxLuD8aefvpV3TyLgXbUoZ?= =?us-ascii?Q?uQ+fo4uctvuGLq+ruSQ=3D?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(35042699022)(14060799003)(36860700013)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2025 14:25:39.3566 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 16291aab-7790-49df-f784-08de1e098696 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF0000A7DD.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB11461 Content-Type: text/plain; charset="utf-8" Introduce architecture-specific function pointers to support architecture-dependent behaviours. This patch adds the following function pointers and updates their usage accordingly: - soft_reset - l2_power_on - l2_power_off Reviewed-by: Steven Price Signed-off-by: Karunika Choo --- v4: * Restored mistakenly deleted forward declaration. * Picked up R-b from Steve. v3: * Reverted includes changes to align with the include behaviour of the rest of the driver while enabling the definition of static inline function pointer accessors. * Moved the function pointer accessors from panthor_device.h to panthor_hw.h v2: * Updated includes for panthor_hw.h to allow static inline function pointer accessor functions instead of MACROs. * updated l2_power_off function signature to void instead of returning int as we have no way of handling a failure in this case. --- drivers/gpu/drm/panthor/panthor_device.c | 4 +-- drivers/gpu/drm/panthor/panthor_fw.c | 5 ++-- drivers/gpu/drm/panthor/panthor_gpu.c | 12 ++++++-- drivers/gpu/drm/panthor/panthor_gpu.h | 1 + drivers/gpu/drm/panthor/panthor_hw.c | 9 +++++- drivers/gpu/drm/panthor/panthor_hw.h | 35 +++++++++++++++++++++++- 6 files changed, 57 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/pan= thor/panthor_device.c index 81df49880bd8..847dea458682 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c @@ -141,8 +141,8 @@ static void panthor_device_reset_work(struct work_struc= t *work) panthor_sched_pre_reset(ptdev); panthor_fw_pre_reset(ptdev, true); panthor_mmu_pre_reset(ptdev); - panthor_gpu_soft_reset(ptdev); - panthor_gpu_l2_power_on(ptdev); + panthor_hw_soft_reset(ptdev); + panthor_hw_l2_power_on(ptdev); panthor_mmu_post_reset(ptdev); ret =3D panthor_fw_post_reset(ptdev); atomic_set(&ptdev->reset.pending, 0); diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index 9bf06e55eaee..e6c39c70d348 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -21,6 +21,7 @@ #include "panthor_fw.h" #include "panthor_gem.h" #include "panthor_gpu.h" +#include "panthor_hw.h" #include "panthor_mmu.h" #include "panthor_regs.h" #include "panthor_sched.h" @@ -1184,7 +1185,7 @@ void panthor_fw_unplug(struct panthor_device *ptdev) ptdev->fw->vm =3D NULL; if (!IS_ENABLED(CONFIG_PM) || pm_runtime_active(ptdev->base.dev)) - panthor_gpu_power_off(ptdev, L2, ptdev->gpu_info.l2_present, 20000); + panthor_hw_l2_power_off(ptdev); } /** @@ -1363,7 +1364,7 @@ int panthor_fw_init(struct panthor_device *ptdev) return ret; } - ret =3D panthor_gpu_l2_power_on(ptdev); + ret =3D panthor_hw_l2_power_on(ptdev); if (ret) return ret; diff --git a/drivers/gpu/drm/panthor/panthor_gpu.c b/drivers/gpu/drm/pantho= r/panthor_gpu.c index db69449a5be0..63ed8c461796 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.c +++ b/drivers/gpu/drm/panthor/panthor_gpu.c @@ -18,6 +18,7 @@ #include "panthor_device.h" #include "panthor_gpu.h" +#include "panthor_hw.h" #include "panthor_regs.h" /** @@ -218,6 +219,11 @@ int panthor_gpu_block_power_on(struct panthor_device *= ptdev, return 0; } +void panthor_gpu_l2_power_off(struct panthor_device *ptdev) +{ + panthor_gpu_power_off(ptdev, L2, ptdev->gpu_info.l2_present, 20000); +} + /** * panthor_gpu_l2_power_on() - Power-on the L2-cache * @ptdev: Device. @@ -344,9 +350,9 @@ void panthor_gpu_suspend(struct panthor_device *ptdev) { /* On a fast reset, simply power down the L2. */ if (!ptdev->reset.fast) - panthor_gpu_soft_reset(ptdev); + panthor_hw_soft_reset(ptdev); else - panthor_gpu_power_off(ptdev, L2, 1, 20000); + panthor_hw_l2_power_off(ptdev); panthor_gpu_irq_suspend(&ptdev->gpu->irq); } @@ -361,6 +367,6 @@ void panthor_gpu_suspend(struct panthor_device *ptdev) void panthor_gpu_resume(struct panthor_device *ptdev) { panthor_gpu_irq_resume(&ptdev->gpu->irq, GPU_INTERRUPTS_MASK); - panthor_gpu_l2_power_on(ptdev); + panthor_hw_l2_power_on(ptdev); } diff --git a/drivers/gpu/drm/panthor/panthor_gpu.h b/drivers/gpu/drm/pantho= r/panthor_gpu.h index 7c17a8c06858..12e66f48ced1 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.h +++ b/drivers/gpu/drm/panthor/panthor_gpu.h @@ -46,6 +46,7 @@ int panthor_gpu_block_power_off(struct panthor_device *pt= dev, type ## _PWRTRANS, \ mask, timeout_us) +void panthor_gpu_l2_power_off(struct panthor_device *ptdev); int panthor_gpu_l2_power_on(struct panthor_device *ptdev); int panthor_gpu_flush_caches(struct panthor_device *ptdev, u32 l2, u32 lsc, u32 other); diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index b6e7401327c3..ed0ebd53f4ba 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -2,6 +2,7 @@ /* Copyright 2025 ARM Limited. All rights reserved. */ #include "panthor_device.h" +#include "panthor_gpu.h" #include "panthor_hw.h" #include "panthor_regs.h" @@ -20,7 +21,13 @@ struct panthor_hw_entry { struct panthor_hw *hwdev; }; -static struct panthor_hw panthor_hw_arch_v10 =3D {}; +static struct panthor_hw panthor_hw_arch_v10 =3D { + .ops =3D { + .soft_reset =3D panthor_gpu_soft_reset, + .l2_power_off =3D panthor_gpu_l2_power_off, + .l2_power_on =3D panthor_gpu_l2_power_on, + }, +}; static struct panthor_hw_entry panthor_hw_match[] =3D { { diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index 39752de3e7ad..64616caa6f05 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -4,14 +4,47 @@ #ifndef __PANTHOR_HW_H__ #define __PANTHOR_HW_H__ -struct panthor_device; +#include "panthor_device.h" + +/** + * struct panthor_hw_ops - HW operations that are specific to a GPU + */ +struct panthor_hw_ops { + /** @soft_reset: Soft reset function pointer */ + int (*soft_reset)(struct panthor_device *ptdev); + + /** @l2_power_off: L2 power off function pointer */ + void (*l2_power_off)(struct panthor_device *ptdev); + + /** @l2_power_on: L2 power on function pointer */ + int (*l2_power_on)(struct panthor_device *ptdev); +}; /** * struct panthor_hw - GPU specific register mapping and functions */ struct panthor_hw { + /** @features: Bitmap containing panthor_hw_feature */ + + /** @ops: Panthor HW specific operations */ + struct panthor_hw_ops ops; }; int panthor_hw_init(struct panthor_device *ptdev); +static inline int panthor_hw_soft_reset(struct panthor_device *ptdev) +{ + return ptdev->hw->ops.soft_reset(ptdev); +} + +static inline int panthor_hw_l2_power_on(struct panthor_device *ptdev) +{ + return ptdev->hw->ops.l2_power_on(ptdev); +} + +static inline void panthor_hw_l2_power_off(struct panthor_device *ptdev) +{ + ptdev->hw->ops.l2_power_off(ptdev); +} + #endif /* __PANTHOR_HW_H__ */ -- 2.49.0 From nobody Sun Feb 8 21:21:35 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010062.outbound.protection.outlook.com [52.101.84.62]) (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 ADA1232937C for ; Fri, 7 Nov 2025 14:25:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.62 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525553; cv=fail; b=gZGI06YJc8xgAbVcWdv1tcU1xa8+vzTUuxOqeEgQvyXiTWoQirUJlAGCI5DFP2BkVAECTm6JthNZ7aOi6skqDtfHdnRCadG7ARi3wdrmYIdSsbj6L1WwEvFcSQ0SNr7we+zIx7MKquwGodtTehxre6nVhrHKTAqVMKeyUgvji1I= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525553; c=relaxed/simple; bh=U33AKV/Q2Z1ttinOnIOw/5AyJf0lG9w6OlQ1yQOpn6w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ENw9NVbO0OTKtayHQ+fpfVYAggCVWzyzjHhXGrnAG95aI9aLT6TCgneNZqUhCHmtCQFRq1aBxJl36hnQU9bTP5rfZ9JpV0pCOPGIWTZG5biFQ3Op9GaN+5L3uTAc9BjVTR8u/KYIzI3Y+p8AvwGwtLe4xDioOy7+MIAFnPf357I= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=M04K4SGU; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=M04K4SGU; arc=fail smtp.client-ip=52.101.84.62 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="M04K4SGU"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="M04K4SGU" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=a7lmwzePHWVfw8lMIaCObk0SSzwjgH9AbXhjGpAyoa4ik4m7lcZnA+cr27Q4deMnwLbym0XwtO5kS1sxygwE5p+aoD/Mn7zFmcXZ9VYWZ5OOihR2U314uPBXBFNqUo1ko9malDzd04IBeYjnkGNALEqWBSpkPxuiRU1maftRyhf9VCLfEFithyaymrA7mRGGUTcne4s1RYRujIzgwrzYXP1Csu8xSNX2IZIozfvtF3Tj5RqtFe+XLakPs9G6DkiCxCUh7o/mioonQB9rIeo/NF16ZIkMelZst67mgtp3bU03MaoqEg4NdILGcUZIqeD9IVPJAYiVdkDu95KfMVRkbA== ARC-Message-Signature: i=2; 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=xfXvDBRxTz3L5TFoDzHqsnuS2EnNO8I7y65Uk6MoZyc=; b=Iupz/tmTPITCzSDVr9uCpcqfXC65+SdR5nP1UpOsKIdN7Q0RUjT6HHAje8JdLN/53hxu7NlKjvfJ37iQbrUcfGyK9oJPz4CsV4M4SAInWGad/oDZsXu3SED+rpO6VAwlSCMD5GpKD8M9sgepE+8FGKf6tD1W+6eVMXAEN06T6rrSCiQ5bFz7f93LKhPZzDwPG2b2pR9dPQESAm4W63gJ81Wv5F3FxGBOKCbSLaxAVXWPFBRuYi+L1QWXGvdk801OdsK7eG+tBHz7SrApOA+VonUOJvSq87phpivnTOEzyv3Ectz0TnpboY79LXPqPDBxDk/OAo5L7F1NCil7vKxoGQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xfXvDBRxTz3L5TFoDzHqsnuS2EnNO8I7y65Uk6MoZyc=; b=M04K4SGU2xho7vHYg4YcC59XNnz8SnFZkEggvqkyEBv0DuLlj6Vfyt/NATApO/UXofGA0fHmOUN6H6L4VCbFnZPnKX9B/cWlPvA83bfvcxC3KchpnOSo0cSah2PKVdBywGn55xtSNtB/F0df484xvQvQlzK0jJiM+t+oRvOnJ3w= Received: from AS4P251CA0017.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:5d3::6) by DB9PR08MB9708.eurprd08.prod.outlook.com (2603:10a6:10:460::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Fri, 7 Nov 2025 14:25:44 +0000 Received: from AMS0EPF000001A0.eurprd05.prod.outlook.com (2603:10a6:20b:5d3:cafe::99) by AS4P251CA0017.outlook.office365.com (2603:10a6:20b:5d3::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.12 via Frontend Transport; Fri, 7 Nov 2025 14:25:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS0EPF000001A0.mail.protection.outlook.com (10.167.16.230) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.6 via Frontend Transport; Fri, 7 Nov 2025 14:25:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TpJ+etCkdh1KMG/vf3dB3Pk9gZPIRhMRs4BGBDd8wehqFxEc5MT2IOJZQfvj/2qR9b+EQm/CJ4f86BzWYYdRr3LzHw8nO14/rUeAQ3zuhzP6wa6KF1IGOkmnNVEkQmNrSk+f1sF7YqUUJHyVNaTs/uCwB9S4fS8FmuCdXIazzqFwxcku6PFxTHviqon2IDcOHeHifFIEWaYcvMPWFfip8R50YnyAKaiULoyo5ZpaNDB5sSBxyAa5joiOj1zM/IY8fhxVBp5xlSywlodOleEAG+SDppf6xu/oWMxoEr8Cgx+BnbWK+JtNpbwg6WKEw9fTyAEKWFPkMuSGaZ5vzSfV0Q== 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=xfXvDBRxTz3L5TFoDzHqsnuS2EnNO8I7y65Uk6MoZyc=; b=JDmvJXOP3h9rc/GiD9BUjmRhFqs8PzrsgCqMayg19aDIuM92BtJgtigqgPloOF4MrlOD419w1LnpasePXaEywAdpsRvKQQU7XuOnl+aF07oP5hbxEwwS444b6yvbDjs59Rczh07QKQIPPr5vYsH7f8lTqU9SPB+jnhXOiM4toLcBtHH5cTKJ4RcyC++DKYGyWhOESlUBW7Vgk9FMq1BMIN8dkdVn3OUKNVryISYXLjK/EhEgt6R2npbbeK0E6RYQ5CUldjNAWbI3R/NJ++Ai5kIK0hfcSt0vE7fvzhnwP4C9WIEF1N76033LIdMRwAZxpQoLIkr35qU/DalAmGAiqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xfXvDBRxTz3L5TFoDzHqsnuS2EnNO8I7y65Uk6MoZyc=; b=M04K4SGU2xho7vHYg4YcC59XNnz8SnFZkEggvqkyEBv0DuLlj6Vfyt/NATApO/UXofGA0fHmOUN6H6L4VCbFnZPnKX9B/cWlPvA83bfvcxC3KchpnOSo0cSah2PKVdBywGn55xtSNtB/F0df484xvQvQlzK0jJiM+t+oRvOnJ3w= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by AS4PR08MB7505.eurprd08.prod.outlook.com (2603:10a6:20b:4f7::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 14:25:11 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74%7]) with mapi id 15.20.9298.007; Fri, 7 Nov 2025 14:25:11 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v4 3/8] drm/panthor: Introduce panthor_pwr API and power control framework Date: Fri, 7 Nov 2025 14:24:35 +0000 Message-ID: <20251107142440.1134528-4-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251107142440.1134528-1-karunika.choo@arm.com> References: <20251107142440.1134528-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0441.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a9::14) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|AS4PR08MB7505:EE_|AMS0EPF000001A0:EE_|DB9PR08MB9708:EE_ X-MS-Office365-Filtering-Correlation-Id: ca2dded6-448e-4cd3-9733-08de1e098968 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?tqTPCetseFrcgMtWp3lmnsfWllGW4j1Z9zm8DVdqIqKYeo6KWiVPzd+rDfiH?= =?us-ascii?Q?cW/IwRwZk+Rced3pG1yjAmVKCZrsm8xDb3tWi58zzAXwzHdKiJLENDrzoHJ3?= =?us-ascii?Q?zF+4QJZO8NBuOJsBka+JyGspcTRPWimsJmPqrX18IWfGTZufHaCaALWnKAoN?= =?us-ascii?Q?WR/25OGo8uzdfC5+pQz9YXAno5oZ+FkGpPWqKRUmW1OB3fY1T/p7N4CdZ6eD?= =?us-ascii?Q?H3tn+AWQSiqoFi3UQncUpChaFHzDveMUXHt6larWHYVolxY/eBurPkqaOWhs?= =?us-ascii?Q?A6X87YqkDiFHcE19FQyY8k0v6AsOU15J6AHyECcM3MVZss07w+qImdu3qWR5?= =?us-ascii?Q?X4/NQhJHeogKgUVBs9X3dl42hFqj4opYkP2yH6Sp2yC0qqxBTxAaV6ZCQT5A?= =?us-ascii?Q?+uW1REX0CxNV75EIeEMxrpXI6jXVz/A2Z/ZavKapGbN7gMyyE+V7g/TSQNqb?= =?us-ascii?Q?S2h22kGNKcMWdvBQi9AORccCNQ/W5Tuxh0gkvNfO1Lhr7Z+2xE/vdxdHNg2L?= =?us-ascii?Q?9yDl3fg6jU1+Oj8Xbfw6rGkYNc6+ZBIgWePsR3NPmLj7GQMvC3WF3D2oTtvY?= =?us-ascii?Q?Q3c7n0ln2voJfgiDtLPswOS/+fjVxZQnKYThmCjF9mwCas4w403D1aw6bb2+?= =?us-ascii?Q?baWKZqSDKGDxxniG1/tBEW69kO8Enca+Iv/9PUKfa0ROu4IQ7cLyDdn+bt4L?= =?us-ascii?Q?w8dBsKjbwGOXgkVrgRrwblF3xl/Ia4ALZrb/odaEP2sdoeUjRhUd2z2vRMj/?= =?us-ascii?Q?28QoWrseNWafUxPd05HyQH1NlnApJiJCAVdE2E/qoyab5WlWTYBQJkr/GEAw?= =?us-ascii?Q?7xJxSjERXSnQr3oEqLK5LJi6zXAuqhsbQJAMNsXhYrrONhrTQ8Vgkq/9slQ/?= =?us-ascii?Q?rPZjLc1veF/6Mqehv5nnuuBBT+uirCvXUkhty4/bOwMh+hNEhDAR4Gon11Mi?= =?us-ascii?Q?jFRnQzRo2XcVBpGq4k0crb4BP8KWtwfb+T5GWLR9yPLfnu8Kv7NR2+ejrdo1?= =?us-ascii?Q?co50PvlOTVS8tcJPiz9xbtyc/cGjTI3qhEFsKJMDq5LwiraIfo+ajie2AM/L?= =?us-ascii?Q?v8wozwFfuU/OtpveChMAWFFf8BRBqjx7W2Hj5DEaDRk+WuqLE2lvTWGuWzb9?= =?us-ascii?Q?Alm8q2lZ4+mjgG6hh+EIwRn2WCTE+ik0ixv4Q80Eccp4gTU+fT+J4+M1C3N/?= =?us-ascii?Q?ALJJX29uzeswbOQZcx/9wDdvrseRDTfEnTu3yh/iWm89riveu2Er362igQgE?= =?us-ascii?Q?e7g9qiCXGJibdf0DmmYDzadH1U70B3YKKz7X/Iq01NgOPNjCfJ8tjpFM5na2?= =?us-ascii?Q?5+LKkWLVHxP43XiqdICpquw/JbdEI8jckdfV/lHe6IRLRpJMktk9UuGByOVs?= =?us-ascii?Q?961wI4CMxzAUwBaRaYUcJUHPrYeTKUrqT7E60+SHAGKVfzgKfgrJ3+azs1i5?= =?us-ascii?Q?Rdvn/S71SQJi5b9b5t+5FXkRNLHNuqY0?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7505 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001A0.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 9d6a393c-b57f-4217-fae0-08de1e0975e1 X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|376014|1800799024|36860700013|82310400026|14060799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?zMh8bi4pXVLY9ZiUdsLMxgSX84GSCPsECzcovPv692UPuzz7LSLkCkEN+QjK?= =?us-ascii?Q?9bxkjsDzd7P90RvUuu9tncusxiNiisvccRzg8AGZ/EOY069QbrRyjIpcM5Zc?= =?us-ascii?Q?iLYmL8Qx4M1/q/22HaD+p12CI2IK8nxFIhtLL/ug9d3RBlxTIQzs/N7M5rWj?= =?us-ascii?Q?t1ng90dEDgduyArZ0Zo/v0xL8o7yny9BsLrhqX3DAUOlBVWt/0MJwCJA9Sej?= =?us-ascii?Q?peGBm/wZ7yo/jFmjQats/T4mCj1AwhuK0WlbuC3AMK6wVw9ag/mb/JiEeajt?= =?us-ascii?Q?jQAnTzuK++WFK/OpEk4nLx0EA7wuYUnhChl/iGUoeFQuzBmCGYhSlHJqRB0r?= =?us-ascii?Q?kJVZ7phJSbTvK/ILsLNfZDC1Ag3jykJhG/CJ97+Sv/QDIKubpe+YF8cpIzQA?= =?us-ascii?Q?HTYTeVBtbHFE+Y6huHSVzl6DDH6AZkU307NIDQqR/QcqneWbm/2jNwe9k/xD?= =?us-ascii?Q?xGtd8Ik1FqB4mKEDxeoO7d0ggm8YqTv+A4KwY3gKNxuWR+oVBTAZVf26mybw?= =?us-ascii?Q?xrJ3weNhVrx9WQ1Kj13doZW+0aE8ADtgbQIvb6uHJ9TdL2xErdJvRwC3BMGO?= =?us-ascii?Q?qcdycJIkgf9JskffT2mdhkwJDl/OYZC09HaKqVRBp2jtnbOAUJxTeDfsa1A1?= =?us-ascii?Q?96N5SzEkSfc//h2Vq3sMV3u2gdL8TZ2XObNVGAxWLnVqUZcxQ5ry9dH0TZVy?= =?us-ascii?Q?I/9t0NTexpsAlB3zcbhUDQElqFL1y7v0bt12hpoClBLJsiD22YFFhFKh2lSR?= =?us-ascii?Q?Bz7jL4bDrbOlCki7fRZwr8VgPDw0cq/izeh5kzti+ahcmWmw9Oo7Ex9zp/bo?= =?us-ascii?Q?TzoE1BHu8H6izSWtQi1Y4VQyJJqS5BWbfOcfSb5EOvHVAMd48PutXlXEycxq?= =?us-ascii?Q?WmWAyBCkP28JN5Vclr36GPhdYdMulgvZZCyaz820t2yCzqq6Vw8FqpdoLHpu?= =?us-ascii?Q?3pJQbiL0EtCFv9uOipdRuAFiyO0I1uASVJXGiKutLhfVIO3ZefUtqYentmSi?= =?us-ascii?Q?UyJlgNATzNy33qKJ1zM0s/JiRfwas8iOsUOWB8+KrURCbYQIz1c6lZPYcAi2?= =?us-ascii?Q?9w/SOgSyaSsg7L8HhJO7h1aok7KRBBj0ZZzvDxta1iJC9VYYgQ8mZZrl2DZ0?= =?us-ascii?Q?Y21V8KGEZGbw28V9fFBs9mEKfHj5/KHaAVMGQPJttI4oiARFOg0KW9836IPW?= =?us-ascii?Q?tCebmc8Wg1AVH1TqJbk8GtbpI8JV6ttJkgKaICFh56Nj+6VaeQwxTdf6LvYh?= =?us-ascii?Q?ngtUoULaGdkUF8PGqIfzlsB89TcUBfBPLVakBn88k+k2L4FL9+Bz9OABl4Ej?= =?us-ascii?Q?8TpthWLpRZaSa9yuSn27B4X46mthH4nkVgKpOhgC8v/pITe9FU2nSRkW7LOk?= =?us-ascii?Q?erba1HlRxxTMaahweQj6AEX1RQtBMYH92OEr6gEsr4H33HIqdkpINcnjRsup?= =?us-ascii?Q?Xc4BY2/PMh59KLGxCszcmmhcW19oJ+RJrE8DwNAZoirDQzZaf/nxfJY5ZQ7P?= =?us-ascii?Q?vRiqZe7hD6R4FlBtaUZuYCSmCmXyzXM+AvY0EdQuexh1wU+59Xb6wX6lG3ej?= =?us-ascii?Q?uUplMnt2rhuom3jqJyM=3D?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(376014)(1800799024)(36860700013)(82310400026)(14060799003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2025 14:25:44.1043 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ca2dded6-448e-4cd3-9733-08de1e098968 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF000001A0.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9708 Content-Type: text/plain; charset="utf-8" Add the new panthor_pwr module, which provides basic power control management for Mali-G1 GPUs. The initial implementation includes infrastructure for initializing the PWR_CONTROL block, requesting and handling its IRQ, and checking for PWR_CONTROL support based on GPU architecture. The patch also integrates panthor_pwr with the device lifecycle (init, suspend, resume, and unplug) through the new API functions. It also registers the IRQ handler under the 'gpu' IRQ as the PWR_CONTROL block is located within the GPU_CONTROL block. Signed-off-by: Karunika Choo Reviewed-by: Steven Price --- v4: * Reintroduced include for panthor_regs.h. * Add include for drm_print.h v3: * Turned panthor_hw_has_pwr_ctrl() into a static inline function. v2: * Removed stub functions. * Updated BIT() definitions for 64-bit fields to use BIT_U64() to address kernel test robot warnings for 32-bit systems. * Moved GPU_FEATURES_RAY_TRAVERSAL definition to the next patch where it is being used. * Drop the use of feature bits in favour of a function that performs a GPU_ARCH_MAJOR check instead. --- drivers/gpu/drm/panthor/Makefile | 1 + drivers/gpu/drm/panthor/panthor_device.c | 14 ++- drivers/gpu/drm/panthor/panthor_device.h | 4 + drivers/gpu/drm/panthor/panthor_hw.h | 6 ++ drivers/gpu/drm/panthor/panthor_pwr.c | 121 +++++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_pwr.h | 17 ++++ drivers/gpu/drm/panthor/panthor_regs.h | 78 +++++++++++++++ 7 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 drivers/gpu/drm/panthor/panthor_pwr.c create mode 100644 drivers/gpu/drm/panthor/panthor_pwr.h diff --git a/drivers/gpu/drm/panthor/Makefile b/drivers/gpu/drm/panthor/Mak= efile index 02db21748c12..753a32c446df 100644 --- a/drivers/gpu/drm/panthor/Makefile +++ b/drivers/gpu/drm/panthor/Makefile @@ -10,6 +10,7 @@ panthor-y :=3D \ panthor_heap.o \ panthor_hw.o \ panthor_mmu.o \ + panthor_pwr.o \ panthor_sched.o obj-$(CONFIG_DRM_PANTHOR) +=3D panthor.o diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/pan= thor/panthor_device.c index 847dea458682..d3e16da0b24e 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c @@ -20,6 +20,7 @@ #include "panthor_gpu.h" #include "panthor_hw.h" #include "panthor_mmu.h" +#include "panthor_pwr.h" #include "panthor_regs.h" #include "panthor_sched.h" @@ -102,6 +103,7 @@ void panthor_device_unplug(struct panthor_device *ptdev) panthor_fw_unplug(ptdev); panthor_mmu_unplug(ptdev); panthor_gpu_unplug(ptdev); + panthor_pwr_unplug(ptdev); pm_runtime_dont_use_autosuspend(ptdev->base.dev); pm_runtime_put_sync_suspend(ptdev->base.dev); @@ -249,10 +251,14 @@ int panthor_device_init(struct panthor_device *ptdev) if (ret) goto err_rpm_put; - ret =3D panthor_gpu_init(ptdev); + ret =3D panthor_pwr_init(ptdev); if (ret) goto err_rpm_put; + ret =3D panthor_gpu_init(ptdev); + if (ret) + goto err_unplug_pwr; + ret =3D panthor_gpu_coherency_init(ptdev); if (ret) goto err_unplug_gpu; @@ -293,6 +299,9 @@ int panthor_device_init(struct panthor_device *ptdev) err_unplug_gpu: panthor_gpu_unplug(ptdev); +err_unplug_pwr: + panthor_pwr_unplug(ptdev); + err_rpm_put: pm_runtime_put_sync_suspend(ptdev->base.dev); return ret; @@ -446,6 +455,7 @@ static int panthor_device_resume_hw_components(struct p= anthor_device *ptdev) { int ret; + panthor_pwr_resume(ptdev); panthor_gpu_resume(ptdev); panthor_mmu_resume(ptdev); @@ -455,6 +465,7 @@ static int panthor_device_resume_hw_components(struct p= anthor_device *ptdev) panthor_mmu_suspend(ptdev); panthor_gpu_suspend(ptdev); + panthor_pwr_suspend(ptdev); return ret; } @@ -568,6 +579,7 @@ int panthor_device_suspend(struct device *dev) panthor_fw_suspend(ptdev); panthor_mmu_suspend(ptdev); panthor_gpu_suspend(ptdev); + panthor_pwr_suspend(ptdev); drm_dev_exit(cookie); } diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/pan= thor/panthor_device.h index 1457c1255f1f..05818318e0ba 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -31,6 +31,7 @@ struct panthor_job; struct panthor_mmu; struct panthor_fw; struct panthor_perfcnt; +struct panthor_pwr; struct panthor_vm; struct panthor_vm_pool; @@ -126,6 +127,9 @@ struct panthor_device { /** @hw: GPU-specific data. */ struct panthor_hw *hw; + /** @pwr: Power control management data. */ + struct panthor_pwr *pwr; + /** @gpu: GPU management data. */ struct panthor_gpu *gpu; diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index 64616caa6f05..56c68c1e9c26 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -5,6 +5,7 @@ #define __PANTHOR_HW_H__ #include "panthor_device.h" +#include "panthor_regs.h" /** * struct panthor_hw_ops - HW operations that are specific to a GPU @@ -47,4 +48,9 @@ static inline void panthor_hw_l2_power_off(struct panthor= _device *ptdev) ptdev->hw->ops.l2_power_off(ptdev); } +static inline bool panthor_hw_has_pwr_ctrl(struct panthor_device *ptdev) +{ + return GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id) >=3D 14; +} + #endif /* __PANTHOR_HW_H__ */ diff --git a/drivers/gpu/drm/panthor/panthor_pwr.c b/drivers/gpu/drm/pantho= r/panthor_pwr.c new file mode 100644 index 000000000000..66dc72b29116 --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_pwr.c @@ -0,0 +1,121 @@ +// SPDX-License-Identifier: GPL-2.0 or MIT +/* Copyright 2025 ARM Limited. All rights reserved. */ + +#include +#include +#include +#include + +#include +#include + +#include "panthor_device.h" +#include "panthor_hw.h" +#include "panthor_pwr.h" +#include "panthor_regs.h" + +#define PWR_INTERRUPTS_MASK \ + (PWR_IRQ_POWER_CHANGED_SINGLE | \ + PWR_IRQ_POWER_CHANGED_ALL | \ + PWR_IRQ_DELEGATION_CHANGED | \ + PWR_IRQ_RESET_COMPLETED | \ + PWR_IRQ_RETRACT_COMPLETED | \ + PWR_IRQ_INSPECT_COMPLETED | \ + PWR_IRQ_COMMAND_NOT_ALLOWED | \ + PWR_IRQ_COMMAND_INVALID) + +/** + * struct panthor_pwr - PWR_CONTROL block management data. + */ +struct panthor_pwr { + /** @irq: PWR irq. */ + struct panthor_irq irq; + + /** @reqs_lock: Lock protecting access to pending_reqs. */ + spinlock_t reqs_lock; + + /** @pending_reqs: Pending PWR requests. */ + u32 pending_reqs; + + /** @reqs_acked: PWR request wait queue. */ + wait_queue_head_t reqs_acked; +}; + +static void panthor_pwr_irq_handler(struct panthor_device *ptdev, u32 stat= us) +{ + spin_lock(&ptdev->pwr->reqs_lock); + gpu_write(ptdev, PWR_INT_CLEAR, status); + + if (unlikely(status & PWR_IRQ_COMMAND_NOT_ALLOWED)) + drm_err(&ptdev->base, "PWR_IRQ: COMMAND_NOT_ALLOWED"); + + if (unlikely(status & PWR_IRQ_COMMAND_INVALID)) + drm_err(&ptdev->base, "PWR_IRQ: COMMAND_INVALID"); + + if (status & ptdev->pwr->pending_reqs) { + ptdev->pwr->pending_reqs &=3D ~status; + wake_up_all(&ptdev->pwr->reqs_acked); + } + spin_unlock(&ptdev->pwr->reqs_lock); +} +PANTHOR_IRQ_HANDLER(pwr, PWR, panthor_pwr_irq_handler); + +void panthor_pwr_unplug(struct panthor_device *ptdev) +{ + unsigned long flags; + + if (!ptdev->pwr) + return; + + /* Make sure the IRQ handler is not running after that point. */ + panthor_pwr_irq_suspend(&ptdev->pwr->irq); + + /* Wake-up all waiters. */ + spin_lock_irqsave(&ptdev->pwr->reqs_lock, flags); + ptdev->pwr->pending_reqs =3D 0; + wake_up_all(&ptdev->pwr->reqs_acked); + spin_unlock_irqrestore(&ptdev->pwr->reqs_lock, flags); +} + +int panthor_pwr_init(struct panthor_device *ptdev) +{ + struct panthor_pwr *pwr; + int err, irq; + + if (!panthor_hw_has_pwr_ctrl(ptdev)) + return 0; + + pwr =3D drmm_kzalloc(&ptdev->base, sizeof(*pwr), GFP_KERNEL); + if (!pwr) + return -ENOMEM; + + spin_lock_init(&pwr->reqs_lock); + init_waitqueue_head(&pwr->reqs_acked); + ptdev->pwr =3D pwr; + + irq =3D platform_get_irq_byname(to_platform_device(ptdev->base.dev), "gpu= "); + if (irq < 0) + return irq; + + err =3D panthor_request_pwr_irq(ptdev, &pwr->irq, irq, PWR_INTERRUPTS_MAS= K); + if (err) + return err; + + return 0; +} + +void panthor_pwr_suspend(struct panthor_device *ptdev) +{ + if (!ptdev->pwr) + return; + + panthor_pwr_irq_suspend(&ptdev->pwr->irq); +} + +void panthor_pwr_resume(struct panthor_device *ptdev) +{ + if (!ptdev->pwr) + return; + + panthor_pwr_irq_resume(&ptdev->pwr->irq, PWR_INTERRUPTS_MASK); +} diff --git a/drivers/gpu/drm/panthor/panthor_pwr.h b/drivers/gpu/drm/pantho= r/panthor_pwr.h new file mode 100644 index 000000000000..b325e5b7eba3 --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_pwr.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 or MIT */ +/* Copyright 2025 ARM Limited. All rights reserved. */ + +#ifndef __PANTHOR_PWR_H__ +#define __PANTHOR_PWR_H__ + +struct panthor_device; + +void panthor_pwr_unplug(struct panthor_device *ptdev); + +int panthor_pwr_init(struct panthor_device *ptdev); + +void panthor_pwr_suspend(struct panthor_device *ptdev); + +void panthor_pwr_resume(struct panthor_device *ptdev); + +#endif /* __PANTHOR_PWR_H__ */ diff --git a/drivers/gpu/drm/panthor/panthor_regs.h b/drivers/gpu/drm/panth= or/panthor_regs.h index 8bee76d01bf8..5469eec02178 100644 --- a/drivers/gpu/drm/panthor/panthor_regs.h +++ b/drivers/gpu/drm/panthor/panthor_regs.h @@ -205,4 +205,82 @@ #define CSF_DOORBELL(i) (0x80000 + ((i) * 0x10000)) #define CSF_GLB_DOORBELL_ID 0 +/* PWR Control registers */ + +#define PWR_CONTROL_BASE 0x800 +#define PWR_CTRL_REG(x) (PWR_CONTROL_BASE + (x)) + +#define PWR_INT_RAWSTAT PWR_CTRL_REG(0x0) +#define PWR_INT_CLEAR PWR_CTRL_REG(0x4) +#define PWR_INT_MASK PWR_CTRL_REG(0x8) +#define PWR_INT_STAT PWR_CTRL_REG(0xc) +#define PWR_IRQ_POWER_CHANGED_SINGLE BIT(0) +#define PWR_IRQ_POWER_CHANGED_ALL BIT(1) +#define PWR_IRQ_DELEGATION_CHANGED BIT(2) +#define PWR_IRQ_RESET_COMPLETED BIT(3) +#define PWR_IRQ_RETRACT_COMPLETED BIT(4) +#define PWR_IRQ_INSPECT_COMPLETED BIT(5) +#define PWR_IRQ_COMMAND_NOT_ALLOWED BIT(30) +#define PWR_IRQ_COMMAND_INVALID BIT(31) + +#define PWR_STATUS PWR_CTRL_REG(0x20) +#define PWR_STATUS_ALLOW_L2 BIT_U64(0) +#define PWR_STATUS_ALLOW_TILER BIT_U64(1) +#define PWR_STATUS_ALLOW_SHADER BIT_U64(8) +#define PWR_STATUS_ALLOW_BASE BIT_U64(14) +#define PWR_STATUS_ALLOW_STACK BIT_U64(15) +#define PWR_STATUS_DOMAIN_ALLOWED(x) BIT_U64(x) +#define PWR_STATUS_DELEGATED_L2 BIT_U64(16) +#define PWR_STATUS_DELEGATED_TILER BIT_U64(17) +#define PWR_STATUS_DELEGATED_SHADER BIT_U64(24) +#define PWR_STATUS_DELEGATED_BASE BIT_U64(30) +#define PWR_STATUS_DELEGATED_STACK BIT_U64(31) +#define PWR_STATUS_DELEGATED_SHIFT 16 +#define PWR_STATUS_DOMAIN_DELEGATED(x) BIT_U64((x) + PWR_STATUS_DELEGAT= ED_SHIFT) +#define PWR_STATUS_ALLOW_SOFT_RESET BIT_U64(33) +#define PWR_STATUS_ALLOW_FAST_RESET BIT_U64(34) +#define PWR_STATUS_POWER_PENDING BIT_U64(41) +#define PWR_STATUS_RESET_PENDING BIT_U64(42) +#define PWR_STATUS_RETRACT_PENDING BIT_U64(43) +#define PWR_STATUS_INSPECT_PENDING BIT_U64(44) + +#define PWR_COMMAND PWR_CTRL_REG(0x28) +#define PWR_COMMAND_POWER_UP 0x10 +#define PWR_COMMAND_POWER_DOWN 0x11 +#define PWR_COMMAND_DELEGATE 0x20 +#define PWR_COMMAND_RETRACT 0x21 +#define PWR_COMMAND_RESET_SOFT 0x31 +#define PWR_COMMAND_RESET_FAST 0x32 +#define PWR_COMMAND_INSPECT 0xF0 +#define PWR_COMMAND_DOMAIN_L2 0 +#define PWR_COMMAND_DOMAIN_TILER 1 +#define PWR_COMMAND_DOMAIN_SHADER 8 +#define PWR_COMMAND_DOMAIN_BASE 14 +#define PWR_COMMAND_DOMAIN_STACK 15 +#define PWR_COMMAND_SUBDOMAIN_RTU BIT(0) +#define PWR_COMMAND_DEF(cmd, domain, subdomain) \ + (((subdomain) << 16) | ((domain) << 8) | (cmd)) + +#define PWR_CMDARG PWR_CTRL_REG(0x30) + +#define PWR_L2_PRESENT PWR_CTRL_REG(0x100) +#define PWR_L2_READY PWR_CTRL_REG(0x108) +#define PWR_L2_PWRTRANS PWR_CTRL_REG(0x110) +#define PWR_L2_PWRACTIVE PWR_CTRL_REG(0x118) +#define PWR_TILER_PRESENT PWR_CTRL_REG(0x140) +#define PWR_TILER_READY PWR_CTRL_REG(0x148) +#define PWR_TILER_PWRTRANS PWR_CTRL_REG(0x150) +#define PWR_TILER_PWRACTIVE PWR_CTRL_REG(0x158) +#define PWR_SHADER_PRESENT PWR_CTRL_REG(0x200) +#define PWR_SHADER_READY PWR_CTRL_REG(0x208) +#define PWR_SHADER_PWRTRANS PWR_CTRL_REG(0x210) +#define PWR_SHADER_PWRACTIVE PWR_CTRL_REG(0x218) +#define PWR_BASE_PRESENT PWR_CTRL_REG(0x380) +#define PWR_BASE_READY PWR_CTRL_REG(0x388) +#define PWR_BASE_PWRTRANS PWR_CTRL_REG(0x390) +#define PWR_BASE_PWRACTIVE PWR_CTRL_REG(0x398) +#define PWR_STACK_PRESENT PWR_CTRL_REG(0x3c0) +#define PWR_STACK_READY PWR_CTRL_REG(0x3c8) +#define PWR_STACK_PWRTRANS PWR_CTRL_REG(0x3d0) + #endif -- 2.49.0 From nobody Sun Feb 8 21:21:35 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011005.outbound.protection.outlook.com [40.107.130.5]) (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 0934C31D387 for ; Fri, 7 Nov 2025 14:25:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.5 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525557; cv=fail; b=px40zGKCNYy/D9l6O8RjxYgMIW4p203BCZKCHZkpC0GpECEotvk5gSDA4nMF3fKU0slqSAjC0WIQ6h2a/tSOfLJGBwkBCPL1Nliv0LsNEdxZjBPrL5sDheAdItdBBMIE6acvVAgCLrwdGnSqqgPrx/NJL5Ur0rd2lmoko/SHMF8= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525557; c=relaxed/simple; bh=3SgpIH1wgaAdhXlzQ/pPyOxq3H82eaKo2O6/F9/umCQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=OhhGr1C+fd8dxND4ZqtiIu3hO7+BhyxnLtVBNfio467dT+J9WjDuSi9fkc5/+e4v0RrDZ/nwpD45zrajoZz2Pj3RqZvXQyagfuC83TEXKoU4R2ROE4meUcLDmhj5gLWstmNtGVKGU/r1UBifu8eCOzFTMgV3XJEJEHtIgPUUtkk= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=PjloqWH+; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=PjloqWH+; arc=fail smtp.client-ip=40.107.130.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="PjloqWH+"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="PjloqWH+" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=Zf6GlpqxeP22PjffjdsPRl/eabdwjSMujkZUC0OS8dfWBNC975v2+BBC0EmLUL0K6WZTt3uYhAikxhEsOFl8GewPmArTnTvTsA4SOnMj/DWh52OFi2PQEDHTUl6/reXgx1K1R87a3mMqS+DASFF7NySKv8bdFVwi+FChQ2wicamED+rbLKVeaCA4AxltdXs+QnLDWhusCxN7Ep4+55eB45aE+H4DCJHw+1otwW8Mgg2UMukHZaFaFpAtqxmD0pObE9GqcCCK35Zdxl6vZYu2JXPgnc2wLuZmmoG/KxvqR5vUNgSXZa2IG+27U+AUb4Z7kkl3pDoBIDdxK8aTG3Pl0w== ARC-Message-Signature: i=2; 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=Mqjx8O9jkX7GrfuiVX89IU7EGctr/x1ATxavXnxJqgo=; b=UmUDS9nL//lGfxuYsop8r1Z4/Jsqh648euxP2FzLlJiq6AeXllQ5zd5KZFflQyCiLIPmKilbWm5NJdy3TsrbXCVZywJijzMrpABSeZD+VuPTJe94a22z2UpKp8BZKgSnwcmPsQgR/9AsYE+Y+tGxOL+oGrEKzO475FA0a3FBWSqaciL+zQrbOD1fcybYTpAwSSP+TCcUQSEVcL2gfxR27b/gJh0R6NMViI+NovZ+gzte5zC351Mm1/vO0l8ci7VkvXYuq+GzsLmgXc1wVAt0Oo5lsLXLkOkyMiDrLTpBM34BLuvWBijCytcgNNQlkNYKx9DuGf9d+PUS6h4a+fhkKg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Mqjx8O9jkX7GrfuiVX89IU7EGctr/x1ATxavXnxJqgo=; b=PjloqWH+Yw8oEQR2qAal7BbFyogcVnahYR+OTYNcVMivX/bhteiVsDJzfWj7YOcdu9L+oCg8RiX+Vkv+TtJl/pgQYGHPxuDaXgI+1+2nFo6gWZYuPtaYr4citB2CVOKjBrQ1POjHCJMoUTUano24PlK6qHBxTrJAAyOkXru0taA= Received: from AS4PR09CA0017.eurprd09.prod.outlook.com (2603:10a6:20b:5d4::11) by AS8PR08MB8801.eurprd08.prod.outlook.com (2603:10a6:20b:5bd::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Fri, 7 Nov 2025 14:25:48 +0000 Received: from AMS0EPF000001A5.eurprd05.prod.outlook.com (2603:10a6:20b:5d4:cafe::95) by AS4PR09CA0017.outlook.office365.com (2603:10a6:20b:5d4::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.12 via Frontend Transport; Fri, 7 Nov 2025 14:25:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS0EPF000001A5.mail.protection.outlook.com (10.167.16.232) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.6 via Frontend Transport; Fri, 7 Nov 2025 14:25:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pEoIzOfnP4Kl+XKFOlvDTSCU6rc54PUjKjPFylPJuXG+fH2hRBFCV8KEQ7g5j/GCYgFaZY/Bh4Tnu6H8C9aEyv8nObzSSILNLp8J7IZAtnS2O2394CEk8Zrny6VomLqqhJn9hKszs9gcXb9ubpLnITlSOjsBDoDohVvh01XEHpX8nHKwNzEfrmvAHzngQxK/TpO+zDcSV9iO94I1lYSm1mlS1HEuxzeeE5MPTG1sBWEHGdKklz4cT7BL/KIzzCbnGHkVuwAa6t4Jnf0nI6JdDdNQvfmHZihciIF2urbLdQkpjP48h+ZMHL/X4pBPzrEx8ODFJmE6TjQOBIWcy15ABQ== 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=Mqjx8O9jkX7GrfuiVX89IU7EGctr/x1ATxavXnxJqgo=; b=v/tWzC8hSZ1yrVkLMtVpVseRgBf9vh6VkkHzHxATqFrKzQaHIyGgwoA1jle7W8jgunNjFoghEEc8ukcnb1ZxmLQvsRkOTbXXPeUvmyJRW3skWs51GwavcxVFQ8LHZbq7whr7psSeSVK+iDHtKpM0rLl1FkaRSF9+2/FLxRUD0L0XDIV6FxrI77caJS2d0KxAnIHlrAYa9ZdTgX3GaRpNCCcbF+97cCdEkuZhiJqdaFCo7fYNZNouGMOjS3+jDFvMX501nrTjgEU8u9aFfsXdgXJ7UsieVx2diFPZe8utO2cdYACjaIPJXAtFYc2s/lupOhnriDUblxPIa3EtKBJQwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Mqjx8O9jkX7GrfuiVX89IU7EGctr/x1ATxavXnxJqgo=; b=PjloqWH+Yw8oEQR2qAal7BbFyogcVnahYR+OTYNcVMivX/bhteiVsDJzfWj7YOcdu9L+oCg8RiX+Vkv+TtJl/pgQYGHPxuDaXgI+1+2nFo6gWZYuPtaYr4citB2CVOKjBrQ1POjHCJMoUTUano24PlK6qHBxTrJAAyOkXru0taA= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by AS4PR08MB7505.eurprd08.prod.outlook.com (2603:10a6:20b:4f7::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 14:25:15 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74%7]) with mapi id 15.20.9298.007; Fri, 7 Nov 2025 14:25:15 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v4 4/8] drm/panthor: Implement L2 power on/off via PWR_CONTROL Date: Fri, 7 Nov 2025 14:24:36 +0000 Message-ID: <20251107142440.1134528-5-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251107142440.1134528-1-karunika.choo@arm.com> References: <20251107142440.1134528-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0445.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a9::18) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|AS4PR08MB7505:EE_|AMS0EPF000001A5:EE_|AS8PR08MB8801:EE_ X-MS-Office365-Filtering-Correlation-Id: dc754d91-0443-4a45-b7e4-08de1e098b7c X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?h9v+8gcRZuPZaWNXRy58D+ysdqyJqGxahk8JwlRWZGck/hZhY57FlfpoN6QY?= =?us-ascii?Q?xHzwQEASuK9izL0hegDS+TrBrdf7PjXuYKlelkhK89Cs3LrFWbuFQp5crdcu?= =?us-ascii?Q?E1ojja1Y88jVRIf8dh3wlbL1LuC4xxAo2ZnwWY22/wOp8PD9ynCdM0VB20i1?= =?us-ascii?Q?VrGREgKy2hp+3GbkISWaTaAEcIXnYCoLdQIjJwDxk4gl0wcO3quWXOTP98Xs?= =?us-ascii?Q?/tTuysN2Ahm13KJawSGlNXZL35YxQo+HyMXHpcBazE6EDG81V63Kkj8K62gI?= =?us-ascii?Q?NrfVQS3Rvw45sr4Ei1f3xuoBn1F6aI3NQmhhZtflcSfUtgciNajy06PRkC57?= =?us-ascii?Q?FKg2mcG5O6B3cFpvQE8xv9tgODBxOvhp3fLLABir/fCVSlXzWTpmL3m8/epC?= =?us-ascii?Q?j7sL4dqq79WOQKZCwzCB9ws9IH2tTZ4u7Upj0+JqC1toZ98TW6MOq+xGURji?= =?us-ascii?Q?mvcsdDlghH3LYihXL5mTFHTvTDS8ZoytETCPYRXt1CVPUc9YTe4xiX1nBK6N?= =?us-ascii?Q?PMCSIWnzJWT2BU/XE/jgWwso3KdI6+dniNgMMzlBLAn4VY2O0s83o23Kaaxq?= =?us-ascii?Q?gJqaJiXViclWm+2Cbs3VR+Fuj7k4gELenygbsAQiOO3WJ5e4OJtSZWdZwfBH?= =?us-ascii?Q?+kKU2DnMk6ZkMURGoQyXQkdA9XcQOg41swuFCGW7PRXMMK9pRPrQnz1q2Jup?= =?us-ascii?Q?g3qa9HBoVbMDmQW4K8OMe6u6b+yV9lVlIC2ILpTIuw8FhHhUPuiaimzXIJL6?= =?us-ascii?Q?PeajzFZNacS3bd17Xtzvbe6bkULqUFUfnfWZBy2LObArAnOqCAcJK7s7ZNUH?= =?us-ascii?Q?7SEfRXSOLzPRekEgwjIRTxv0t0yX3CdatvZez7cNipLeFFG52Y7sZQi5k0Tc?= =?us-ascii?Q?vgqLVhzbNbk+ipqOiKWtAjIc8klMJDm85w7/VO8ekjE+EKk2TSGcuEchGjwY?= =?us-ascii?Q?gZkUOiqmwuClytWMbsOMLjpkt6H8wmPLwMlOoj2eJE853/iRI26SPLP8iOai?= =?us-ascii?Q?rrj7JSukskhe/JEmkiG3YyKByooN1VZQ4e7UeMk1QCrEfiUNErPD5IJLlNDE?= =?us-ascii?Q?RNvYrpcWydtI9oS1cm+0xqAYQ/+A5oYoF0cdOtId1fLJ63uX02gX99Jd8fP5?= =?us-ascii?Q?Lre9pNxedQ+Cag8Uih2FLEC0vLAOFNPvEVY9GsNe1qtEZ4i8iFz3u2VzmwEz?= =?us-ascii?Q?ioNm2GGm1mTAPF3qMdVRdfCcxIu/3Wt+v+LczUPuVPrXUAfmF7/dzFWWpAAm?= =?us-ascii?Q?QYUCQMEAqhb9xkhecZCHN0mP297YbQI1hVZxomwG1bBWjrC3F9nZsfcJZjIW?= =?us-ascii?Q?IKu8m6UYmWqg2niC03jKylgw1IOqVpvsNQJucQz95dg6Ni2c1G9wsro1bzk/?= =?us-ascii?Q?4+ucEQpkNVAdXQITxFzSN0wwErLboODxOlQ43qFSNDSSQ+ztulWmG1I6OnSh?= =?us-ascii?Q?f9jQrjcp1ldfcNwH9VNSn6Z71inBdPHQ?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7505 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001A5.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: d2528884-361a-4b41-03d8-08de1e0977df X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|14060799003|35042699022|376014|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3mVLHam8GGn8+KS9aNBrdWX8a0SLEF+bCHS1w2PhOKQm4+RR8hI+g+pdpCKp?= =?us-ascii?Q?U5t3Npe8Uc1JCu5P/Sh3chwW1CsYXx9cxPV6hkWYfXOdr/Mra6bl/MqyjldS?= =?us-ascii?Q?yaeDaZrjjHwUz2f85EC6sZ7lQvXBXWCsB7wWxkb2gb0xBujtjNp09PdVn41Z?= =?us-ascii?Q?41b7BSF1bDVzca6taDxRm7Z98mJgsMaGShXK3fdEwBY4xwrLHydi0xlcOhMi?= =?us-ascii?Q?3cgAwc+iGWK+eWSwYyM9uTohMLeQw5QK/HiiX79uW7GItVVrm/DcBTz0tY1A?= =?us-ascii?Q?fVe0d5pFNJJCGlbautESXHOz4LmXptoNx+4po8aKQ2Psspn6FDX9NO4frmfj?= =?us-ascii?Q?m5r3+dYegP3I3YoLVBCto18r/W4SrPxStXNIgyQ79cmBRfIqUqvoWVEqnglw?= =?us-ascii?Q?aLBWNa5FvveMIknJxsy2l+Cdl8mOWQtyO3FUUD5Qt/Di5kbwupa60e0Iznwt?= =?us-ascii?Q?xsDdPfL/nOk7X4Od5MH7OpOO9NDLLel9naW4mDgiAMVEr0aKaXM8bo5+xl97?= =?us-ascii?Q?PrZFt2AsT57l2W2bK63dV/BAWLKTB+juo63BiApTMEEHCpQSuLB7v937H3kD?= =?us-ascii?Q?ksEovGbBOxpuRqoiIOzWo72E0Bw+E4TOYLIyAQjahryWUfkNJWa8aRKG+GV2?= =?us-ascii?Q?xri4dBa7mqNVcjOFBDGKpiKMX5tCFbbNGA0gXVp+2IQ/SDph5JNNKAVQ0pTN?= =?us-ascii?Q?ISGz3hCtdY8Upl/1csM/sFAXZC/0efnTJMz6HbcEiBZ70ZVgt+Vc3SckuPDt?= =?us-ascii?Q?Ybb1QC1T4sr85EwRaOOfa4o154IcesRKhKd9gtcork7+jNaLg+0NaazEcXKb?= =?us-ascii?Q?CXitAixPuXmlVvY+TvSdKJ1YSbz/UYDMwbNc5U9MkSfdk3nk7KtD7gf0VF/+?= =?us-ascii?Q?h7f+/iCNxVfGq+Ki3Fb4rBAamk7BFwQVFwgez//P0ABsf9MiOQ4CbuSt5UAH?= =?us-ascii?Q?y6R79HkwsZ8Vg9rkzPIOQlTfRSxPkFpUfVJDtPeBjnX25cG2McgD4J7Da039?= =?us-ascii?Q?+YCq6d22R3MTt97rBZSktPGwMJzH5sw1eyBHADdk04TaYRV8aWfFa8BDkSro?= =?us-ascii?Q?LCz7hJRyeW40fdGtofbAM7WS6NxdOQnqYHT3cOrbaamPstns58YlBfuR0pLS?= =?us-ascii?Q?M92D2F9zqdGMBV+BSeQeTMCoSAz0I5FM+gBQsEsdBB7SxynjCgXwVMOdlI2A?= =?us-ascii?Q?DSLTzxEM6BHJ2L6mS52bElUebfyjtJ/7xjeOJFkp8TTOBUSGK6DHk1ryeNOT?= =?us-ascii?Q?+ssvtMOj6iUL466n/sdFRHM6JKQjL336WWENC/CMNWVfzN73lv0kiaI2FuV4?= =?us-ascii?Q?Utcgu4RYoowqjOOoA/nA006bdBNaCSEZ6NPNTGq0rVZg4Hio7wt7C9M4p0Ek?= =?us-ascii?Q?OjGOEgRigv1LpkgGzl9oX3HXuPV1D8J9T4I4k+nXsySnR9ScdMme3Tn8fVia?= =?us-ascii?Q?4TbdL7tAqjCL94IPB2tYpd0wAnr0LI7J6seEA4i8qEOpJlhdIVkQmuRohZAF?= =?us-ascii?Q?g9HZMPaYqhw2v818Yjj9Y/9BIP2IEaE/N3Oaq5YOGMv3C6oHt6PIab0i5Ur4?= =?us-ascii?Q?BQ8qwFooZPWY9Z9EAmQ=3D?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(14060799003)(35042699022)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2025 14:25:47.5888 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dc754d91-0443-4a45-b7e4-08de1e098b7c X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF000001A5.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8801 Content-Type: text/plain; charset="utf-8" This patch adds common helpers to issue power commands, poll transitions, and validate domain state, then wires them into the L2 on/off paths. The L2 power-on sequence now delegates control of the SHADER and TILER domains to the MCU when allowed, while the L2 itself is never delegated. On power-off, dependent domains beneath the L2 are checked, and if necessary, retracted and powered down to maintain proper domain ordering. Reviewed-by: Steven Price Signed-off-by: Karunika Choo --- v4: * removed extra brackets. * Picked up R-b from Steve. v2: * Updated GENMASK to GENMASK_U64 to address kernel test robot warnings for 32-bit systems. * Removed panthor_pwr_read_status() in favour of a simple gpu_read64() operation on the PWR_STATUS register. * Renamed panthor_pwr_info_show() to panthor_pwr_debug_info_show() for more clarity. * Added additional WARN_ON for an invalid domain when requesting power domain transition. * Made panthor_pwr_domain_transition()'s expected val logic more readable and clearer. * Wait on domain power transition instead of failing the operation. * Fixed inconsistent error return value vs kerneldoc. * Removed confusing drm_dbg in delegate_domain() in favor of a comment. * Add unwind to panthor_pwr_delegate_domains(). * Moved child domain handling logic from panthor_pwr_l2_power_off() into panthor_pwr_domain_force_off(). * Added additional clarification regarding delegation and retraction of power domains. * Minor formatting and readability changes and remove unnecessary checks. --- drivers/gpu/drm/panthor/panthor_pwr.c | 378 +++++++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_pwr.h | 4 + drivers/gpu/drm/panthor/panthor_regs.h | 1 + 3 files changed, 383 insertions(+) diff --git a/drivers/gpu/drm/panthor/panthor_pwr.c b/drivers/gpu/drm/pantho= r/panthor_pwr.c index 66dc72b29116..6dff5daf77d2 100644 --- a/drivers/gpu/drm/panthor/panthor_pwr.c +++ b/drivers/gpu/drm/panthor/panthor_pwr.c @@ -24,6 +24,14 @@ PWR_IRQ_COMMAND_NOT_ALLOWED | \ PWR_IRQ_COMMAND_INVALID) +#define PWR_ALL_CORES_MASK GENMASK_U64(63, 0) + +#define PWR_DOMAIN_MAX_BITS 16 + +#define PWR_TRANSITION_TIMEOUT_US (2ULL * USEC_PER_SEC) + +#define PWR_RETRACT_TIMEOUT_US (2ULL * USEC_PER_MSEC) + /** * struct panthor_pwr - PWR_CONTROL block management data. */ @@ -60,6 +68,323 @@ static void panthor_pwr_irq_handler(struct panthor_devi= ce *ptdev, u32 status) } PANTHOR_IRQ_HANDLER(pwr, PWR, panthor_pwr_irq_handler); +static void panthor_pwr_write_command(struct panthor_device *ptdev, u32 co= mmand, u64 args) +{ + if (args) + gpu_write64(ptdev, PWR_CMDARG, args); + + gpu_write(ptdev, PWR_COMMAND, command); +} + +static const char *get_domain_name(u8 domain) +{ + switch (domain) { + case PWR_COMMAND_DOMAIN_L2: + return "L2"; + case PWR_COMMAND_DOMAIN_TILER: + return "Tiler"; + case PWR_COMMAND_DOMAIN_SHADER: + return "Shader"; + case PWR_COMMAND_DOMAIN_BASE: + return "Base"; + case PWR_COMMAND_DOMAIN_STACK: + return "Stack"; + } + return "Unknown"; +} + +static u32 get_domain_base(u8 domain) +{ + switch (domain) { + case PWR_COMMAND_DOMAIN_L2: + return PWR_L2_PRESENT; + case PWR_COMMAND_DOMAIN_TILER: + return PWR_TILER_PRESENT; + case PWR_COMMAND_DOMAIN_SHADER: + return PWR_SHADER_PRESENT; + case PWR_COMMAND_DOMAIN_BASE: + return PWR_BASE_PRESENT; + case PWR_COMMAND_DOMAIN_STACK: + return PWR_STACK_PRESENT; + } + return 0; +} + +static u32 get_domain_ready_reg(u32 domain) +{ + return get_domain_base(domain) + (PWR_L2_READY - PWR_L2_PRESENT); +} + +static u32 get_domain_pwrtrans_reg(u32 domain) +{ + return get_domain_base(domain) + (PWR_L2_PWRTRANS - PWR_L2_PRESENT); +} + +static bool is_valid_domain(u32 domain) +{ + return get_domain_base(domain) !=3D 0; +} + +static bool has_rtu(struct panthor_device *ptdev) +{ + return ptdev->gpu_info.gpu_features & GPU_FEATURES_RAY_TRAVERSAL; +} + +static u8 get_domain_subdomain(struct panthor_device *ptdev, u32 domain) +{ + if (domain =3D=3D PWR_COMMAND_DOMAIN_SHADER && has_rtu(ptdev)) + return PWR_COMMAND_SUBDOMAIN_RTU; + + return 0; +} + +static int panthor_pwr_domain_wait_transition(struct panthor_device *ptdev= , u32 domain, + u32 timeout_us) +{ + u32 pwrtrans_reg =3D get_domain_pwrtrans_reg(domain); + u64 val; + int ret =3D 0; + + ret =3D gpu_read64_poll_timeout(ptdev, pwrtrans_reg, val, !(PWR_ALL_CORES= _MASK & val), 100, + timeout_us); + if (ret) { + drm_err(&ptdev->base, "%s domain power in transition, pwrtrans(0x%llx)", + get_domain_name(domain), val); + return ret; + } + + return 0; +} + +static void panthor_pwr_debug_info_show(struct panthor_device *ptdev) +{ + drm_info(&ptdev->base, "GPU_FEATURES: 0x%016llx", gpu_read64(ptdev, GP= U_FEATURES)); + drm_info(&ptdev->base, "PWR_STATUS: 0x%016llx", gpu_read64(ptdev, PW= R_STATUS)); + drm_info(&ptdev->base, "L2_PRESENT: 0x%016llx", gpu_read64(ptdev, PW= R_L2_PRESENT)); + drm_info(&ptdev->base, "L2_PWRTRANS: 0x%016llx", gpu_read64(ptdev, PW= R_L2_PWRTRANS)); + drm_info(&ptdev->base, "L2_READY: 0x%016llx", gpu_read64(ptdev, PW= R_L2_READY)); + drm_info(&ptdev->base, "TILER_PRESENT: 0x%016llx", gpu_read64(ptdev, PW= R_TILER_PRESENT)); + drm_info(&ptdev->base, "TILER_PWRTRANS: 0x%016llx", gpu_read64(ptdev, PW= R_TILER_PWRTRANS)); + drm_info(&ptdev->base, "TILER_READY: 0x%016llx", gpu_read64(ptdev, PW= R_TILER_READY)); + drm_info(&ptdev->base, "SHADER_PRESENT: 0x%016llx", gpu_read64(ptdev, PW= R_SHADER_PRESENT)); + drm_info(&ptdev->base, "SHADER_PWRTRANS: 0x%016llx", gpu_read64(ptdev, PW= R_SHADER_PWRTRANS)); + drm_info(&ptdev->base, "SHADER_READY: 0x%016llx", gpu_read64(ptdev, PW= R_SHADER_READY)); +} + +static int panthor_pwr_domain_transition(struct panthor_device *ptdev, u32= cmd, u32 domain, + u64 mask, u32 timeout_us) +{ + u32 ready_reg =3D get_domain_ready_reg(domain); + u32 pwr_cmd =3D PWR_COMMAND_DEF(cmd, domain, get_domain_subdomain(ptdev, = domain)); + u64 expected_val =3D 0; + u64 val; + int ret =3D 0; + + if (drm_WARN_ON(&ptdev->base, !is_valid_domain(domain))) + return -EINVAL; + + switch (cmd) { + case PWR_COMMAND_POWER_DOWN: + expected_val =3D 0; + break; + case PWR_COMMAND_POWER_UP: + expected_val =3D mask; + break; + default: + drm_err(&ptdev->base, "Invalid power domain transition command (0x%x)", = cmd); + return -EINVAL; + } + + ret =3D panthor_pwr_domain_wait_transition(ptdev, domain, timeout_us); + if (ret) + return ret; + + /* domain already in target state, return early */ + if ((gpu_read64(ptdev, ready_reg) & mask) =3D=3D expected_val) + return 0; + + panthor_pwr_write_command(ptdev, pwr_cmd, mask); + + ret =3D gpu_read64_poll_timeout(ptdev, ready_reg, val, (mask & val) =3D= =3D expected_val, 100, + timeout_us); + if (ret) { + drm_err(&ptdev->base, + "timeout waiting on %s power domain transition, cmd(0x%x), arg(0x%llx)", + get_domain_name(domain), pwr_cmd, mask); + panthor_pwr_debug_info_show(ptdev); + return ret; + } + + return 0; +} + +#define panthor_pwr_domain_power_off(__ptdev, __domain, __mask, __timeout_= us) \ + panthor_pwr_domain_transition(__ptdev, PWR_COMMAND_POWER_DOWN, __domain, = __mask, \ + __timeout_us) + +#define panthor_pwr_domain_power_on(__ptdev, __domain, __mask, __timeout_u= s) \ + panthor_pwr_domain_transition(__ptdev, PWR_COMMAND_POWER_UP, __domain, __= mask, __timeout_us) + +/** + * retract_domain() - Retract control of a domain from MCU + * @ptdev: Device. + * @domain: Domain to retract the control + * + * Retracting L2 domain is not expected since it won't be delegated. + * + * Return: 0 on success or retracted already. + * -EPERM if domain is L2. + * A negative error code otherwise. + */ +static int retract_domain(struct panthor_device *ptdev, u32 domain) +{ + const u32 pwr_cmd =3D PWR_COMMAND_DEF(PWR_COMMAND_RETRACT, domain, 0); + const u64 pwr_status =3D gpu_read64(ptdev, PWR_STATUS); + const u64 delegated_mask =3D PWR_STATUS_DOMAIN_DELEGATED(domain); + const u64 allow_mask =3D PWR_STATUS_DOMAIN_ALLOWED(domain); + u64 val; + int ret; + + if (drm_WARN_ON(&ptdev->base, domain =3D=3D PWR_COMMAND_DOMAIN_L2)) + return -EPERM; + + ret =3D gpu_read64_poll_timeout(ptdev, PWR_STATUS, val, !(PWR_STATUS_RETR= ACT_PENDING & val), + 0, PWR_RETRACT_TIMEOUT_US); + if (ret) { + drm_err(&ptdev->base, "%s domain retract pending", get_domain_name(domai= n)); + return ret; + } + + if (!(pwr_status & delegated_mask)) { + drm_dbg(&ptdev->base, "%s domain already retracted", get_domain_name(dom= ain)); + return 0; + } + + panthor_pwr_write_command(ptdev, pwr_cmd, 0); + + /* + * On successful retraction + * allow-flag will be set with delegated-flag being cleared. + */ + ret =3D gpu_read64_poll_timeout(ptdev, PWR_STATUS, val, + ((delegated_mask | allow_mask) & val) =3D=3D allow_mask, 10, + PWR_TRANSITION_TIMEOUT_US); + if (ret) { + drm_err(&ptdev->base, "Retracting %s domain timeout, cmd(0x%x)", + get_domain_name(domain), pwr_cmd); + return ret; + } + + return 0; +} + +/** + * delegate_domain() - Delegate control of a domain to MCU + * @ptdev: Device. + * @domain: Domain to delegate the control + * + * Delegating L2 domain is prohibited. + * + * Return: + * * 0 on success or delegated already. + * * -EPERM if domain is L2. + * * A negative error code otherwise. + */ +static int delegate_domain(struct panthor_device *ptdev, u32 domain) +{ + const u32 pwr_cmd =3D PWR_COMMAND_DEF(PWR_COMMAND_DELEGATE, domain, 0); + const u64 pwr_status =3D gpu_read64(ptdev, PWR_STATUS); + const u64 allow_mask =3D PWR_STATUS_DOMAIN_ALLOWED(domain); + const u64 delegated_mask =3D PWR_STATUS_DOMAIN_DELEGATED(domain); + u64 val; + int ret; + + if (drm_WARN_ON(&ptdev->base, domain =3D=3D PWR_COMMAND_DOMAIN_L2)) + return -EPERM; + + /* Already delegated, exit early */ + if (pwr_status & delegated_mask) + return 0; + + /* Check if the command is allowed before delegating. */ + if (!(pwr_status & allow_mask)) { + drm_warn(&ptdev->base, "Delegating %s domain not allowed", get_domain_na= me(domain)); + return -EPERM; + } + + ret =3D panthor_pwr_domain_wait_transition(ptdev, domain, PWR_TRANSITION_= TIMEOUT_US); + if (ret) + return ret; + + panthor_pwr_write_command(ptdev, pwr_cmd, 0); + + /* + * On successful delegation + * allow-flag will be cleared with delegated-flag being set. + */ + ret =3D gpu_read64_poll_timeout(ptdev, PWR_STATUS, val, + ((delegated_mask | allow_mask) & val) =3D=3D delegated_mask, + 10, PWR_TRANSITION_TIMEOUT_US); + if (ret) { + drm_err(&ptdev->base, "Delegating %s domain timeout, cmd(0x%x)", + get_domain_name(domain), pwr_cmd); + return ret; + } + + return 0; +} + +static int panthor_pwr_delegate_domains(struct panthor_device *ptdev) +{ + int ret; + + if (!ptdev->pwr) + return 0; + + ret =3D delegate_domain(ptdev, PWR_COMMAND_DOMAIN_SHADER); + if (ret) + return ret; + + ret =3D delegate_domain(ptdev, PWR_COMMAND_DOMAIN_TILER); + if (ret) + goto err_retract_shader; + + return 0; + +err_retract_shader: + retract_domain(ptdev, PWR_COMMAND_DOMAIN_SHADER); + + return ret; +} + +/** + * panthor_pwr_domain_force_off - Forcefully power down a domain. + * @ptdev: Device. + * @domain: Domain to forcefully power down. + * + * This function will attempt to retract and power off the requested power + * domain. However, if retraction fails, the operation is aborted. If powe= r off + * fails, the domain will remain retracted and under the host control. + * + * Return: 0 on success or a negative error code on failure. + */ +static int panthor_pwr_domain_force_off(struct panthor_device *ptdev, u32 = domain) +{ + const u64 domain_ready =3D gpu_read64(ptdev, get_domain_ready_reg(domain)= ); + int ret; + + /* Domain already powered down, early exit. */ + if (!domain_ready) + return 0; + + /* Domain has to be in host control to issue power off command. */ + ret =3D retract_domain(ptdev, domain); + if (ret) + return ret; + + return panthor_pwr_domain_power_off(ptdev, domain, domain_ready, PWR_TRAN= SITION_TIMEOUT_US); +} + void panthor_pwr_unplug(struct panthor_device *ptdev) { unsigned long flags; @@ -104,6 +429,59 @@ int panthor_pwr_init(struct panthor_device *ptdev) return 0; } +void panthor_pwr_l2_power_off(struct panthor_device *ptdev) +{ + const u64 l2_allow_mask =3D PWR_STATUS_DOMAIN_ALLOWED(PWR_COMMAND_DOMAIN_= L2); + const u64 pwr_status =3D gpu_read64(ptdev, PWR_STATUS); + + /* Abort if L2 power off constraints are not satisfied */ + if (!(pwr_status & l2_allow_mask)) { + drm_warn(&ptdev->base, "Power off L2 domain not allowed"); + return; + } + + /* It is expected that when halting the MCU, it would power down its + * delegated domains. However, an unresponsive or hung MCU may not do + * so, which is why we need to check and retract the domains back into + * host control to be powered down in the right order before powering + * down the L2. + */ + if (panthor_pwr_domain_force_off(ptdev, PWR_COMMAND_DOMAIN_TILER)) + return; + + if (panthor_pwr_domain_force_off(ptdev, PWR_COMMAND_DOMAIN_SHADER)) + return; + + panthor_pwr_domain_power_off(ptdev, PWR_COMMAND_DOMAIN_L2, ptdev->gpu_inf= o.l2_present, + PWR_TRANSITION_TIMEOUT_US); +} + +int panthor_pwr_l2_power_on(struct panthor_device *ptdev) +{ + const u32 pwr_status =3D gpu_read64(ptdev, PWR_STATUS); + const u32 l2_allow_mask =3D PWR_STATUS_DOMAIN_ALLOWED(PWR_COMMAND_DOMAIN_= L2); + int ret; + + if ((pwr_status & l2_allow_mask) =3D=3D 0) { + drm_warn(&ptdev->base, "Power on L2 domain not allowed"); + return -EPERM; + } + + ret =3D panthor_pwr_domain_power_on(ptdev, PWR_COMMAND_DOMAIN_L2, ptdev->= gpu_info.l2_present, + PWR_TRANSITION_TIMEOUT_US); + if (ret) + return ret; + + /* Delegate control of the shader and tiler power domains to the MCU as + * it can better manage which shader/tiler cores need to be powered up + * or can be powered down based on currently running jobs. + * + * If the shader and tiler domains are already delegated to the MCU, + * this call would just return early. + */ + return panthor_pwr_delegate_domains(ptdev); +} + void panthor_pwr_suspend(struct panthor_device *ptdev) { if (!ptdev->pwr) diff --git a/drivers/gpu/drm/panthor/panthor_pwr.h b/drivers/gpu/drm/pantho= r/panthor_pwr.h index b325e5b7eba3..3c834059a860 100644 --- a/drivers/gpu/drm/panthor/panthor_pwr.h +++ b/drivers/gpu/drm/panthor/panthor_pwr.h @@ -10,6 +10,10 @@ void panthor_pwr_unplug(struct panthor_device *ptdev); int panthor_pwr_init(struct panthor_device *ptdev); +void panthor_pwr_l2_power_off(struct panthor_device *ptdev); + +int panthor_pwr_l2_power_on(struct panthor_device *ptdev); + void panthor_pwr_suspend(struct panthor_device *ptdev); void panthor_pwr_resume(struct panthor_device *ptdev); diff --git a/drivers/gpu/drm/panthor/panthor_regs.h b/drivers/gpu/drm/panth= or/panthor_regs.h index 5469eec02178..18702d7001e2 100644 --- a/drivers/gpu/drm/panthor/panthor_regs.h +++ b/drivers/gpu/drm/panthor/panthor_regs.h @@ -72,6 +72,7 @@ #define GPU_FEATURES 0x60 #define GPU_FEATURES_RAY_INTERSECTION BIT(2) +#define GPU_FEATURES_RAY_TRAVERSAL BIT(5) #define GPU_TIMESTAMP_OFFSET 0x88 #define GPU_CYCLE_COUNT 0x90 -- 2.49.0 From nobody Sun Feb 8 21:21:35 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013024.outbound.protection.outlook.com [40.107.159.24]) (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 BC515329E63 for ; Fri, 7 Nov 2025 14:25:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.24 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525560; cv=fail; b=meYQ83IlDQz42bV5lnzgBYmOWSnGEZydFopw8TmF/bWX7efSinnyRZzufk7Fm83qpkX+R8Ps9V7BV7P8yRMMP1SMozOWmpo0pUVCcSWzveY7/bOlBoKjjZGFHO3nMwYdJaQJbwGStbuKkbMblkm2/vr12ZhAbXAUuKjp9Y1Nsv0= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525560; c=relaxed/simple; bh=PkdhUfaNCyNcVHHHiqJk8f7wQrOnYTzjyqvss49/5iM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lJBX6JXuNWfePqKdCHk3ruvyF3RBdR3CUMKMeiiRfX/9bc0DhhGuw64Gs49pjkGTtGwKAKLOZEDog7O49pMAB0yX//JiAZWQ4x74OgRBH0vCtK2hV7tMwZUmiS5isAetIF9J6lBYFZEcy1TL9teUaWcsxpfbGMdvNGmhx//HW9k= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=KX2k8lZV; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=KX2k8lZV; arc=fail smtp.client-ip=40.107.159.24 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="KX2k8lZV"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="KX2k8lZV" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=hM29V3WEqKhbPCKjYZXDjZhMW00/3JClakffenyAejIdbF830XIgQxNI7fXSh/yYeI5MxpKucslW+zNyYLxYudaU+djceeDyZ3bh/MZ5q9ybh7jDRd/2ct3hD4LGQ67WrpXaOCgka8EK0hJszMRGxhNlJiPH+LfUBUDsyVBhrVyuo8urp/DUjEag934a9dUby6M2uBmUL11t+plO7rRG1pvgrDe7BOYrKLQOxAyMqNQBml5S9PBhXH/72aQk3TEmJm6GE4rYhhs35nZnnUhTJaTcuez+OoptbMJjZNHU1Ad1/+bmlAV5m65WGxh4G2ofklyFpLhGEPgv77ChnTDXaQ== ARC-Message-Signature: i=2; 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=/wS6PRtgAhNisREd/aoz1oCMA9jgqJamgFreItyyyK8=; b=LzdklouKADxypsVmIWrCgbTNEOmofxp1n0k+7i7ASdaf5YFP7efihW4c+3x3sRVH+4o+GYnx5dwOO/sjUlHvuVKXjdc8cRKvUBsiUDZSUD2aG3nBY2EA8hct5TgnWsydCp6HZEcCCMp16vulhARnp7Vk/QffnomZBS2PYR/j14THIPFrsk4ZLJY8CwPUUImnPFgSsAGvVBpTTb8S5t+ky7XN8ZB71+wMWi4sMtwSVDXjhoa3/JU9/FKFzScpo4WTX8mJH4qBC4x74J/8E9NABu+sZ6KBDfIQ5Gtz2RNyjC0O7WRlI38FAisa8yN4mm3uKzQi4QgWqqWR6xIHVC+qRA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/wS6PRtgAhNisREd/aoz1oCMA9jgqJamgFreItyyyK8=; b=KX2k8lZVAz2p1l5G3ahBZ2UTDg5WEg9IA81+Nko7wVQ4uMfLrNyHFv9ygSi51fRMRjDjEkSq3ob/f8CQpgkCnQrtkDyWx61LZoyIP64pQD9bOEWVrF0AUqTKTo/c07biqBWGmcNYwiSQuLWM89HzoOiR2G4mAMBgqM3j1Ut1bAI= Received: from DU7P191CA0003.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:54e::8) by AMDPR08MB11652.eurprd08.prod.outlook.com (2603:10a6:20b:73a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 14:25:52 +0000 Received: from DU2PEPF00028D06.eurprd03.prod.outlook.com (2603:10a6:10:54e:cafe::49) by DU7P191CA0003.outlook.office365.com (2603:10a6:10:54e::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.12 via Frontend Transport; Fri, 7 Nov 2025 14:25:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF00028D06.mail.protection.outlook.com (10.167.242.166) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 7 Nov 2025 14:25:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=geAB+rZKlMyhQfzMB0jNKkm27AanDOyDUwnRJQ4looyrHQXrJ8iNzJk4dJ3SGiayRz0EaXwc/E9qD/S6xF6bGZwyseJAwIDeYxpZsXEh05UNbAVcCpP51+tRxb17C0Vj7qPQp5ozG7eOAKNROUnlGWR0hIBHiPwxSNrW31f74ewMu1MtAbHpeaOZ7WnaX4VaFGpx5wsTIuPtOkbXVcepC4yeeESEvJkOwtQ4PYM/tj7oNxfbEpSLLL5PYPAPjcC6aIyl2IbXWSJVCYfSLUlHpdYBqLj1V9kFTwSGq3I7msaxpYxwt5r3Y9EYdlQDDjXjmk3lDSNHXI7kiDRaC7zZLQ== 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=/wS6PRtgAhNisREd/aoz1oCMA9jgqJamgFreItyyyK8=; b=iVMfMunNaNGAgAi21LDzLtPOGkmYteR2oeLDVlXGBdXhPFRd96A/UugWW+uH/U/yWM9l5wrpEUEZEP3YqzpqtxallKbshdQPEqc931qrooU7u6Q4ujuuy+NJbF38uObhvz3eThJQp+nXJRygV0myaPEQ6nMxdhUPOhJeOj7yjLWSJc3ialrPH8YWqyA81eYY4B4Nu7XGCzhTr5WNJ9n8Q+e9ey8cNvTMjOEraiyVZVF2+jO9C/DJH4GZUgSWwvbSCpH6L4RqQc/y/zK9hmFd7FR9hXK6erZmK7fKJTyxGI9fsuPfmAlE5nrIrAAjC93wsQUWCXKYUsH42gqsOlfyZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/wS6PRtgAhNisREd/aoz1oCMA9jgqJamgFreItyyyK8=; b=KX2k8lZVAz2p1l5G3ahBZ2UTDg5WEg9IA81+Nko7wVQ4uMfLrNyHFv9ygSi51fRMRjDjEkSq3ob/f8CQpgkCnQrtkDyWx61LZoyIP64pQD9bOEWVrF0AUqTKTo/c07biqBWGmcNYwiSQuLWM89HzoOiR2G4mAMBgqM3j1Ut1bAI= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by AS4PR08MB7505.eurprd08.prod.outlook.com (2603:10a6:20b:4f7::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 14:25:18 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74%7]) with mapi id 15.20.9298.007; Fri, 7 Nov 2025 14:25:18 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v4 5/8] drm/panthor: Implement soft reset via PWR_CONTROL Date: Fri, 7 Nov 2025 14:24:37 +0000 Message-ID: <20251107142440.1134528-6-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251107142440.1134528-1-karunika.choo@arm.com> References: <20251107142440.1134528-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LNXP265CA0036.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5c::24) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|AS4PR08MB7505:EE_|DU2PEPF00028D06:EE_|AMDPR08MB11652:EE_ X-MS-Office365-Filtering-Correlation-Id: 60d0521a-88bd-4892-d577-08de1e098e3a X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?asEXLgYRGjm4Qh/Y9Umph86XffGlrcDJk6OfJxGXxLRaxrAaxDJPmhE0JVGS?= =?us-ascii?Q?p62ezXLMVv97Xm1zGxDTMXBkBr5tCkg1d0lTiYoOML/1mQn/nRDs7CA1qYdn?= =?us-ascii?Q?Q/avu06Buu4pwtsReZ6pecCcGLcp/3zG/kvNiLrVDWmDTNeptV37qmbVa9ej?= =?us-ascii?Q?mzlSdBnouo4JcTFTyuafdvvUMaOuGJxu84RtV6ZPD3FH0LykBiRL3gqj2jn+?= =?us-ascii?Q?IcUjmOgpiNxIhS1kvfnOQZWg+Fe04GlDxxFcNiUyxtaLUxrXqGhi6AZb0Nhv?= =?us-ascii?Q?EkNqzoR2xgjLwzd6jBDkWT2o1T1rDGuXns/PfbIOcn1Y4FMJcLjZXl0srSTM?= =?us-ascii?Q?XgnZOatkMZjh1X2Nyr+WGng4eS4VdpTvVLBzPpyLuyvie7ZP+63xYxlJgsY4?= =?us-ascii?Q?l3ZkciCeAZ/Kcu61BEFnYm5N9lZi3MMTkaigV65KkZjyoMXpeYNJrA5ICq12?= =?us-ascii?Q?/gG+cLCC1/yNRJIbOOkhwRJpBvk9Fbqnurdi8JJisZ3emVn2B38bEU0ZZOtP?= =?us-ascii?Q?MWDlOUnLmGiOHlTNEZNqIh9Zs9MYEUqkB3mZjRiD9MKScdNNK7a0tY1R+x2l?= =?us-ascii?Q?EZ58RRbRcY1EJxCySiex1C6Az8s2dCi0rt3b11vq2aBEQ6RbmARKKwsWqJ8v?= =?us-ascii?Q?zKuwp/f+WLAjcPP+iyUztP2B0pjoaUT+V8wfuxmtJLHIeXqbrigJmsdelqg0?= =?us-ascii?Q?Iy7OlC4l+ocYRDfycvyCwlw5C3E9gXlTn9WQRLTkq6LTRKi8I8IZSeCC8Xjm?= =?us-ascii?Q?5Tzo/h+DvYStgQvLPPhNFJceY9o0ovkP65JJs6iU6jJm/tIBWNa6HrrZuDvn?= =?us-ascii?Q?L43GLlLGd2b1st3sbDrxcrQ3qXsET5gVir9IxA3J12dvveXXAzMsecPNd5Bm?= =?us-ascii?Q?EdhTRMUxJWR7aJeh152NZSTsYKDAjP+xTI4PKwhlZYWC1HSLoVRM+bnGnYod?= =?us-ascii?Q?OCFryLAAGdPEVBCxo3yNtQ/3nPQKCXBzlDV+zGGTqGYjXdYdFWqXfviR8pU7?= =?us-ascii?Q?LNyEtB+W9tHLJkdLZWh8iHt/KHnVH7lLE1P57sClpxVcq3wfE4/aFi1yqORl?= =?us-ascii?Q?oQFj21x3YHeyuNd+/rGmHfAqpUXsWm62JLKUGLOir8bYRH4+onRwcSi93lFn?= =?us-ascii?Q?77iRTiogQffnuzKcRq3IaEFxNMJKSAOjbOm/4QiQUcqCp5jhpLe4ms4LAXEF?= =?us-ascii?Q?pbqyopG+WllTNkIXWBps6hzBMEv4qNavxGkH48a2c27J3WTZoMIp3TkMoKGv?= =?us-ascii?Q?8YS/mADpizEC5oVEiTQ0E/NOks9ARBxaDQfT/RxKS86xFvpXzqGkxUFfqund?= =?us-ascii?Q?QjnOHprlQySX1nLZb8YPazxkWStOf0/tmYEpnnd2S5XrvjtkeTydP+DKrJmT?= =?us-ascii?Q?Zuv9GvlHM/fJLxdoMbUTEfS7SMH3tBBCJ+1V90yS/YRbbtuqpvNAZp21FSd1?= =?us-ascii?Q?wYoZkeNh8s3Gv+4I7RQhVAaHtCX2+l/B?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7505 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028D06.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 6c36b39f-4ceb-4710-4d49-08de1e0979bc X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700013|14060799003|35042699022; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uL2ao20mvFN8u9FUm1BmqO2JRc5EGi0iBoh8u/7H2NfpCdcE9GX2lcDt8hkd?= =?us-ascii?Q?ZBGGJLDzJ5yHwEI/Paq9e/pB1NeWXKWh/0Z3WaORxr/7UX27kA/9X/wSWusU?= =?us-ascii?Q?wxgWesaqOC+SAExDyvH6z0krpbwWtXdhQ/JbH9QtXtAF+qjbXrqodA2lG2AG?= =?us-ascii?Q?Gaao2sPLHUg29WDfUIU6SnHGHJUL7zVk3HszXUpV70VuwJ/1U4n2VOI4Im6L?= =?us-ascii?Q?M3vo7CyvfO02cxGvaiAKtExBGEfA9R9IYNbJA7j144N76WPvh2Tyn2UlOynD?= =?us-ascii?Q?iq5WEVbjQ8bJujxl5erJ5hs1WghuyFr99t/3J2ecT6N8MZB79suKY1PHqoPw?= =?us-ascii?Q?qjHyZXyJaKoYbQ4IRnamFOSctnJdzEo5Xp8ZUYywJtGI/s+cNuE3bh87FKQ4?= =?us-ascii?Q?lqSO+PNDe7Ji+F9OdC9NQiE1+36uUOnvK9mxNh5tqemQbh7hGGZxgS+LmgwV?= =?us-ascii?Q?rrHWGNQWcxUisZInPz0/gBti1+vzBkp59fRjefr0PpYxkqnWVrZnljdLjh6h?= =?us-ascii?Q?/WraoF7GrPMzwQGOMHnpbxAr4IiWleTRfPyKmRya9L4TqPN8zjZl6gFYArTD?= =?us-ascii?Q?HGF6UxnM8flP+RJF3Suf6ESrs6n+id2p3xkYX7Fx/17La9aLt3gE+Tcu9aV4?= =?us-ascii?Q?PSTr+AKAlpNStA9e8ZhuRNCTRCeysP+f8ROQxd6cieweStSJBEApAQYygcDW?= =?us-ascii?Q?lZmaY4fC2QZw2gC0c/Pg8ZBE4aH7CO3kUMpPShLgmZxpRkwtftITelIvqfdP?= =?us-ascii?Q?w+nIsEMOL/7WWa2nQEEau9/du0Df2w5HlCrSCzLk/j7Q9fFQlJyUTM1SsEm4?= =?us-ascii?Q?zK9Ht05QdK6iqry1lPOX2cm+zcAjU/ECoHofkoqnoNAuaksMj1Y58JOZrj31?= =?us-ascii?Q?lLGWkS+IIno/SBTGiVMor9CWEuCjb703dbJhzmNIijuK9mL41S/gQRjE2ufr?= =?us-ascii?Q?74ZaWX8C3zbK0eeJW+DPTkFHiym91XNwOUEh/rICfLEzcovp3mm1hcQ7Y6+n?= =?us-ascii?Q?98XY7wBM3iQe+GuOa2/RPdo4rzFlJEDWHLjo68NbOHUTpt5vf/zKV2A966Ae?= =?us-ascii?Q?aqCd2t+BvXZTbip1AlYuRe4C1XRNCl5/JBKLJ1DDi7Ch5cBhdMqUhCZP2CsB?= =?us-ascii?Q?f40DKwfyqTyLX1rTDeK63jUaa1JnrZWZSFVUx6FiBn1bh25h8j9w+zNRtLnq?= =?us-ascii?Q?nXdX16jYdZUW9sN7ECwFcSlwayuH4A2ykta/YQNU4w2EXhdKJ/d7Z+BF+P09?= =?us-ascii?Q?Em7p+xR6sEqAOYrbDZF/SEIKEsIFv2f6xfq8C78PMdrXFdDhWZa/pTxG1n6z?= =?us-ascii?Q?HVR3i3j2HOYFldWgXjjv/8rkS6gHv1yjG2dTI0+/aGRuyc/p51UrMKh1LD1c?= =?us-ascii?Q?1Y8IYkC5rmALC8So+Sd6sHgURQeMevNPf2cSxoJe4ciwvOj6ftpRU8YThXj/?= =?us-ascii?Q?NXp/SErnuGYqtmFs5iwmMy/93dC/u2YJBquO8a8jJaXXcVa47NuNkr2IRzTo?= =?us-ascii?Q?v0b5NH/IxS02B97WhGi9y3VrVhkHGHwK5NJB8I8N5BULGD/UD+ssNLok7422?= =?us-ascii?Q?kGjPrcNrsQfHNJ9jWUc=3D?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(82310400026)(36860700013)(14060799003)(35042699022);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2025 14:25:52.1973 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 60d0521a-88bd-4892-d577-08de1e098e3a X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028D06.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMDPR08MB11652 Content-Type: text/plain; charset="utf-8" Add helpers to issue reset commands through the PWR_CONTROL interface and wait for reset completion using IRQ signaling. This enables support for RESET_SOFT operations with timeout handling and status verification. Reviewed-by: Steven Price Signed-off-by: Karunika Choo --- v4: * Picked up R-b from Steve. v2: * Dropped RESET_FAST implementation as it is not currently being used. * Renamed reset_completed to reset_pending to align with underlying logic and fixed the logic of its callers accordingly. * Improved readability of panthor_pwr_reset() and removed inline ternary expressions. --- drivers/gpu/drm/panthor/panthor_pwr.c | 50 +++++++++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_pwr.h | 2 ++ 2 files changed, 52 insertions(+) diff --git a/drivers/gpu/drm/panthor/panthor_pwr.c b/drivers/gpu/drm/pantho= r/panthor_pwr.c index 6dff5daf77d2..57cfc7ce715b 100644 --- a/drivers/gpu/drm/panthor/panthor_pwr.c +++ b/drivers/gpu/drm/panthor/panthor_pwr.c @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -32,6 +33,8 @@ #define PWR_RETRACT_TIMEOUT_US (2ULL * USEC_PER_MSEC) +#define PWR_RESET_TIMEOUT_MS 500 + /** * struct panthor_pwr - PWR_CONTROL block management data. */ @@ -76,6 +79,43 @@ static void panthor_pwr_write_command(struct panthor_dev= ice *ptdev, u32 command, gpu_write(ptdev, PWR_COMMAND, command); } +static bool reset_irq_raised(struct panthor_device *ptdev) +{ + return gpu_read(ptdev, PWR_INT_RAWSTAT) & PWR_IRQ_RESET_COMPLETED; +} + +static bool reset_pending(struct panthor_device *ptdev) +{ + return (ptdev->pwr->pending_reqs & PWR_IRQ_RESET_COMPLETED); +} + +static int panthor_pwr_reset(struct panthor_device *ptdev, u32 reset_cmd) +{ + scoped_guard(spinlock_irqsave, &ptdev->pwr->reqs_lock) { + if (reset_pending(ptdev)) { + drm_WARN(&ptdev->base, 1, "Reset already pending"); + } else { + ptdev->pwr->pending_reqs |=3D PWR_IRQ_RESET_COMPLETED; + gpu_write(ptdev, PWR_INT_CLEAR, PWR_IRQ_RESET_COMPLETED); + panthor_pwr_write_command(ptdev, reset_cmd, 0); + } + } + + if (!wait_event_timeout(ptdev->pwr->reqs_acked, !reset_pending(ptdev), + msecs_to_jiffies(PWR_RESET_TIMEOUT_MS))) { + guard(spinlock_irqsave)(&ptdev->pwr->reqs_lock); + + if (reset_pending(ptdev) && !reset_irq_raised(ptdev)) { + drm_err(&ptdev->base, "RESET timed out (0x%x)", reset_cmd); + return -ETIMEDOUT; + } + + ptdev->pwr->pending_reqs &=3D ~PWR_IRQ_RESET_COMPLETED; + } + + return 0; +} + static const char *get_domain_name(u8 domain) { switch (domain) { @@ -429,6 +469,16 @@ int panthor_pwr_init(struct panthor_device *ptdev) return 0; } +int panthor_pwr_reset_soft(struct panthor_device *ptdev) +{ + if (!(gpu_read64(ptdev, PWR_STATUS) & PWR_STATUS_ALLOW_SOFT_RESET)) { + drm_err(&ptdev->base, "RESET_SOFT not allowed"); + return -EOPNOTSUPP; + } + + return panthor_pwr_reset(ptdev, PWR_COMMAND_RESET_SOFT); +} + void panthor_pwr_l2_power_off(struct panthor_device *ptdev) { const u64 l2_allow_mask =3D PWR_STATUS_DOMAIN_ALLOWED(PWR_COMMAND_DOMAIN_= L2); diff --git a/drivers/gpu/drm/panthor/panthor_pwr.h b/drivers/gpu/drm/pantho= r/panthor_pwr.h index 3c834059a860..adf1f6136abc 100644 --- a/drivers/gpu/drm/panthor/panthor_pwr.h +++ b/drivers/gpu/drm/panthor/panthor_pwr.h @@ -10,6 +10,8 @@ void panthor_pwr_unplug(struct panthor_device *ptdev); int panthor_pwr_init(struct panthor_device *ptdev); +int panthor_pwr_reset_soft(struct panthor_device *ptdev); + void panthor_pwr_l2_power_off(struct panthor_device *ptdev); int panthor_pwr_l2_power_on(struct panthor_device *ptdev); -- 2.49.0 From nobody Sun Feb 8 21:21:35 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013067.outbound.protection.outlook.com [52.101.83.67]) (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 E7F7B329384 for ; Fri, 7 Nov 2025 14:25:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.67 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525562; cv=fail; b=DSYAzXB3inTFz9O6WaOyQvePLX7gpY1Ds8JzALeiXJ9lAceIoXZimvk7ZyrrlBt8If5TaS9pqhad07hRFPKUwyHXbzumEkWffWSMjCRsvhxjcgr4oHtiM8HFV8bT8FZB6XiS+qTREsiyaH0PCT/sSRxEPOvrncR0H6mxnIuNQTQ= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525562; c=relaxed/simple; bh=qpeuT5rDdCYjK1BR6ND2TM0voGH35yieyRqGrr6x/Bw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QrhxQ522Yj45vsrd146Tj/+iMwIEPYqXaN5OBcCk14M7QMPm3FF8TVneyex3lSxU0+cOjn9ZGG4oalf8ZdE7Ep5YgfzZtoguTAPiU+pvoFGOS8aZu13oRVkI7qmtwOzuMvUEEtAOK9DWqN5FF+5lGQS3Oemct6CLPJlmzvNH/TU= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=OAIEStU+; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=OAIEStU+; arc=fail smtp.client-ip=52.101.83.67 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="OAIEStU+"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="OAIEStU+" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=larxTAA85U/oJ1MEnxstRBCzbwaCBniF7MsGJvJzGUGEBRq5ewM1aAlA+lMuyhZ8tqN3EHUsjB36MmUHLHOz1HLrfDSfH7+BFIBpBJrEeX8IfK1p9EOD+uLLa1Q7W4tdEZhyeFB0IP69cLT1X/6ZpER2iINpzFfJ8Tq/QXt103TvjWcRIunEpW/zrkmNjCAhic/lxdJwmMDCxdwUbRNhbw4zTTLk6S3s0IYfJ/c6MqhwSNTOYYhmzp3oeGjYA4Fhqa9CfxKbfwjOl6NIV7gYsuL4qUECupAGze+K44h0jMoPyCpfYGf0oVIXJQVhopE4gIoNg+6/n8nYhi1UnCLblA== ARC-Message-Signature: i=2; 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=kJJnioYh015k1OUfawW9USWrx1lWTBPRtn1PHF187eQ=; b=ch5jwSq3Ct3HyJMoaKaACCfDJozl1x5CNYIVBxKU5aQqcLm9rEaH9qfFrYPQ0E7ibXqht7YSrVzpJgPEDyb5dDh1s4DnAaiIlNBMWuKEw2ZPhDlVJIgWSgH+up8R+CpOgTvW/dWeZ8LRPwvgwnzsb5WSVsY9cA9EfR7bTGG9Q8UYHXDPaRN5FvdoGgkXJtlOpJqkijZhKl7D/nSbFzJKq8YCusFRXhhG3WdQWmY67p7wwfqFfLIhG4xhxkccmkL8oMQ5jWaVfv/fqtuvtLiVbPOnZfS5AkDp24vXqvE4F64jebHhsc/ROFf8a2qgVrlrGSbDk76m5k8CMjL6UbE0Nw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kJJnioYh015k1OUfawW9USWrx1lWTBPRtn1PHF187eQ=; b=OAIEStU+6vZTuLS4f4rXwThLHbWvhCwqpwJS3tLFyBtR8HGlrNbWHovdQfBP4GCPhDQ0p/enFHdgI50d2r5mHWSh+OVA3Rj0HDTN5fPTFpmaZ6Z3ADbyRlS7d3AJuDwxdnf+Hk9sPvFJIkzzu/LwEiZnkNs8/WsI1txT26OZKJc= Received: from AM9P195CA0002.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:21f::7) by GV1PR08MB10669.eurprd08.prod.outlook.com (2603:10a6:150:167::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.9; Fri, 7 Nov 2025 14:25:54 +0000 Received: from AMS1EPF0000004B.eurprd04.prod.outlook.com (2603:10a6:20b:21f:cafe::b0) by AM9P195CA0002.outlook.office365.com (2603:10a6:20b:21f::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.12 via Frontend Transport; Fri, 7 Nov 2025 14:25:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS1EPF0000004B.mail.protection.outlook.com (10.167.16.136) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.6 via Frontend Transport; Fri, 7 Nov 2025 14:25:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jme+r/eNhZKagjuwe8aAVbZ+auyeTW+3IZ+K0GlbbawbM91wStQmYrj7NEF+WbE6tfs6e9pQ7p+BA/AZK15qwYNosrXCp3q8sczUAY1fC02i+C27EF9GopEtqSUF8eUUvrXJLpx6XSDdE6+7B0WKosNQ7XNRAEv99VuQO7PI4NzsDO6ie7tdhyZqqlUEg4yPj2D3J+smFuVk6DpzwN3jU5qTgAwJe1nDnpbI1z8sfdQ9eSoRsAOipGkBsxA5eCugqMg+DSAAQguzRsZruS3UY7R29vsuijGtuY6ic7yk06HsMhw2UB3pxqwXEmEuBFq8unjmbbc1IR5fUwxXhZOriQ== 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=kJJnioYh015k1OUfawW9USWrx1lWTBPRtn1PHF187eQ=; b=teXp8/5DPURk88XazaIdWe0+xIYXO99h0h6hzsyPBapBVXN0SqugBenmZXF77e3MHD4989JpSjtbk0t3x01sDR44TG8x9Csm0uOC4Dt+AS9eknulljNOWQwBhqRK5biCFsDZYOqpAKnATI6M5hp0iuiIcEnjvaiKVDrDeypakkjA5ujA1XL3aIYINez2L6fWNOZvNZxYljq9fTiwLEH5/w+2wgE2QrFZ0tEpbtUQqrHZ4zX6zsUon0938RIuI20/+WdaVzYBmgzdQ+yzygTPLvdiDrFQe8nyVuj0ph7nPAOyfQ+P+ThwSFGf6vyBswTN1YiCDqPs4Psyg51mBIRCAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kJJnioYh015k1OUfawW9USWrx1lWTBPRtn1PHF187eQ=; b=OAIEStU+6vZTuLS4f4rXwThLHbWvhCwqpwJS3tLFyBtR8HGlrNbWHovdQfBP4GCPhDQ0p/enFHdgI50d2r5mHWSh+OVA3Rj0HDTN5fPTFpmaZ6Z3ADbyRlS7d3AJuDwxdnf+Hk9sPvFJIkzzu/LwEiZnkNs8/WsI1txT26OZKJc= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by AS4PR08MB7505.eurprd08.prod.outlook.com (2603:10a6:20b:4f7::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 14:25:21 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74%7]) with mapi id 15.20.9298.007; Fri, 7 Nov 2025 14:25:21 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v4 6/8] drm/panthor: Support GLB_REQ.STATE field for Mali-G1 GPUs Date: Fri, 7 Nov 2025 14:24:38 +0000 Message-ID: <20251107142440.1134528-7-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251107142440.1134528-1-karunika.choo@arm.com> References: <20251107142440.1134528-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LNXP265CA0044.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5c::32) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|AS4PR08MB7505:EE_|AMS1EPF0000004B:EE_|GV1PR08MB10669:EE_ X-MS-Office365-Filtering-Correlation-Id: b57dad7a-9c3a-4733-3afe-08de1e098f26 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?I4VsM6MBJh5eXYs5bk9FwSLdBEC9HQaqdCuihtP2w/Gs7ZoN6xLYa0xDwLhH?= =?us-ascii?Q?2uv0YtlL+U+tj6Ns4gzCF2rSaOCpQVkRoZdW0RjJnDpphQ43xNwMQ8ROozKT?= =?us-ascii?Q?BIYghtSsUdfX6Lz2cD1KcKaNj8N1jkE9IVEAIMSwuhlMh1l7KXBXC1+YxdUz?= =?us-ascii?Q?e+xJTlNuosuvnlJ2GM+DSFpXbnICRNhjRRpSoJ+KjKwV3cJqVSF+tw2ON59I?= =?us-ascii?Q?URdAadsfAOp1Cn+8/+E6+891KM/Y+LbkAg/Y4ElcwpMf1nhW0eNM+VDepLo6?= =?us-ascii?Q?zqmWneT1d8VLjs9PtJTJ7X+xLaYdjzhyuvAbjF08XhEua4WE/ocVPPkl/m1S?= =?us-ascii?Q?aIgTJOhBjS7v25mWCa/aHb3QF/NBc4hLGlVTfZw0rr1PztS7cxDmBTDPaleL?= =?us-ascii?Q?8I5tHbmiNvIQGsvgS2gt/pCrMp8nJ9HGNnFX09GKcSFmaR+MMChb6VG00AIq?= =?us-ascii?Q?owyVxCHmsHn5/XZGbNc+LSjCo52AUNSKJV7fkskw/yM9yIQ61FlKT5pF7/Dx?= =?us-ascii?Q?ES4h83P9XyinvkFP50H+RRb81c4xBJNn5RpwBs5kBbe8v3yDLHwaLw5gFfqH?= =?us-ascii?Q?hrmsKw1mqu4fbrnG/vXGr1Un0u0IQvY9+N0pyVllesIr+9MY/VFUfOGGA4R2?= =?us-ascii?Q?UyvqTLXYC1uvUEvTEnHdEAvaGxR6ZmJVRDDrI7B4NvGChREmWtzRWNpXNSS7?= =?us-ascii?Q?djiK4c7RkoGyapYNjE79B2Deos24HpIhrGgPIA879R5NMfuPIW0O7fpi4xb3?= =?us-ascii?Q?vqmYHPH0y0TqNvJw15ZOFz2wsRSeLBSS7bB/s7ObFlyx+q7Xm8xtbFAOI6AV?= =?us-ascii?Q?Ks6mCF4XptejSMfZCIK+1PDHXaqzogV9O3mWgBk53y9fEVmIJv+isNiILnHq?= =?us-ascii?Q?Z8YSYgKxvjEHOFPCNfO6yQy0ecgVWU/Zf4+RyuLsAhniyKYZXUilzPYTCrgE?= =?us-ascii?Q?ZnkrqZoEz4j+6WAvQ/3c84M0wkCickg52bgLP/q/obJdIXXGL3VddFOIQPGD?= =?us-ascii?Q?QcpGaTgru6YWB1315PMcchCt1x8YlMiHcBD1OOoHqiwXYPLHYx+KdCPWZzyo?= =?us-ascii?Q?d9M1hGLK18lDyjKteroPYzyBPydTtTn0275s6M+uR/y1Ig+eiscueM7h6Ekt?= =?us-ascii?Q?NezxCDpPKZDGoXmVzF772PpPyPPNmFaeDP4pZ+31TElHyaRyVxHvND7uvHjA?= =?us-ascii?Q?KzmBmFyelFRWVnpvbcBzvVvEDbe71C/OQYs1q9KqMn6NVlA34KPWugMxn5EY?= =?us-ascii?Q?x/ZbAGuRV9fVkimEpINhX/FXHeefRU98f3jpj9r8XEMqA2nEl/CZyO8VyojQ?= =?us-ascii?Q?PYJzkKshelvIoKN3mLXuZNqFANx52jTabWXu5+E92sfdkZzK7c8WGnE6Js29?= =?us-ascii?Q?iIFLZpUsZXbljFQfMp9I914YsB/ReAVjD90t9EtobWb1mbDF2HWuWaTuxPrn?= =?us-ascii?Q?sbrWHe+1Rf9asg/rIMGaqL4Ilg05vTNM?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7505 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS1EPF0000004B.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 43b14c11-3d08-4cd3-e8db-08de1e097b70 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|14060799003|35042699022|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?zY0tc++rqq6DtiianT5eYOn0lCYtErA0g65zZpEtBLtTE7zLk4qMcwzdNgpb?= =?us-ascii?Q?pdGPzMMfhg0+wz10s+TVp44RYjyqWFI9DVjH6oQPh7u45taiMWbi4whm8omA?= =?us-ascii?Q?Xqok8SW8x//Iv5/zLWNvaFRysyBHbAFRMYrN5Rra8HQ6bjiubcokdGMNfxHo?= =?us-ascii?Q?3LgC/ygwdtcfmbV0ti+UXcH+vL+LQ0jCnlOuZHLLOm889AeCOdwEMy0/gfxf?= =?us-ascii?Q?2B8efWOOajdpvwhKujBeAwJIjc7Rm5e/31vFs6ndxYY29dIVxhEGLJEfPBLJ?= =?us-ascii?Q?FnMK85RAnTBcONu8hIf4Z4CNVes3cnRIcWa6566XRbo5MWJdESXV2nKNv3N0?= =?us-ascii?Q?vgw4/xXoVN2b6V6FtbD8SUatp28wkXkAipWbtrnIx//Pjv8fXaCBW7tQQDcJ?= =?us-ascii?Q?OwsE6tt6qG7aNUAYhhk5L/6tclE+UpRFI0VoSs7SQD6M/co3gbZ0HCUDh54V?= =?us-ascii?Q?u6hJVt+C9vuOqrhLhnnp8ld1vBx3y2gh5M/qsxSIXH3qxWiyKmYogWDpz1BE?= =?us-ascii?Q?zOYphRKmVrWFcTENwst0YlZF4pqslhE35u4UWI8rEKdkmz/YQ6Ci7lu7ppDc?= =?us-ascii?Q?Mhz+mnTt+5ggXVaYX4PY9vtTyGyMtvBiGlv9Zhv4be8pmmfsgS3BBS6MrXSb?= =?us-ascii?Q?v+camSfG7kn1q9OpFl7Wuu3iB78UQNDulYPEosI3zDbE7cDUv19xSDnXJwmx?= =?us-ascii?Q?9XzPjynBixFt2w6Z9OmLEhXuP8w5n/QySKYGFPqJT5Wspok3+DwxbovnNxNq?= =?us-ascii?Q?anttV2v3Zze8RjDBCoYZAxcwnD9kv59JpMFMrG8MDQgAkeXvVj5PmD0c3cN5?= =?us-ascii?Q?ftu3tBkNAKjFK1CWgfCHBy3VthGM6P8WGBngfrzToBYj6V3D+u0qQBmYy2wy?= =?us-ascii?Q?0mhasUb31ZXP6P0aEiaRlTzyt2xm8aTbgOoqdrfpcIecCxsAejnGm1LRpKf0?= =?us-ascii?Q?QcKgYQpusKV5EHP4QaJQ2/E2tMerespvdLI53IEUuqaiaHZLxwELSXmrZtG2?= =?us-ascii?Q?B+7/v2sD0wL7OKYDZHJg6nj2Cgdo6YYcLahixurehxG2jL6+j6KS/qyv4vnu?= =?us-ascii?Q?EIofiVPYyfbXOrRls7pKdchdIaphOShHigqNhVhfPVA381zB6pf86zjwPJaI?= =?us-ascii?Q?vXl6pgLomIEUYU56lGg7rQoVOKt9EsZbkHR0JqZpO7dIXcYDpFaHWFhD0kWl?= =?us-ascii?Q?/oNSewD0YRJWh68TLmqkzDV0mtCB2VL/Op4MSsgX8FgOJAnYj3qYlq6gPxl4?= =?us-ascii?Q?QgwFRuXZOFkXYGODMzLTdh902RNZ8J41DF42YPTgHqT/Ot3/1S2tr9QFpC0w?= =?us-ascii?Q?Zb472rV8ddpOCrpUiws+ruZH4N0eCX2vfOQAJ9zA9v17gnI+zIcevyCeQXC0?= =?us-ascii?Q?aNTYQuGYp4xjdLJut0IzjtYrBg+iz7DEZ9wFDMlV/8rwC4k4jNxylzR4VCy1?= =?us-ascii?Q?CGQoS2/gf+3UIUe4RSFYnryuUMi2KC9fz2HVWJwMqr54so12Id93MLwZcg0p?= =?us-ascii?Q?sTditTacY57goGV3gL1VOeW4+dI2B6IrAaefmiv9ivzme/tTuKQj3yXq4YYW?= =?us-ascii?Q?URSfGVOkAoSvn+tHbpc=3D?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(14060799003)(35042699022)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2025 14:25:53.7239 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b57dad7a-9c3a-4733-3afe-08de1e098f26 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000004B.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB10669 Content-Type: text/plain; charset="utf-8" Add support for the GLB_REQ.STATE field introduced in CSF v4.1+, which replaces the HALT bit to provide finer control over the MCU state. This change implements basic handling for transitioning the MCU between ACTIVE and HALT states on Mali-G1 GPUs. The update introduces new helpers to issue the state change requests, poll for MCU halt completion, and restore the MCU to an active state after halting. Reviewed-by: Steven Price Signed-off-by: Karunika Choo --- v4: * Picked up R-b from Steve. v3: * Fixed missed CSF_IFACE_VERSION check with pathor_fw_has_glb_state(). v2: * Reduced MCU_HALT_TIMEOUT_US to 1 second. * Wrap the CSG_IFACE_VERSION checks for v4.1.0 with panthor_fw_has_glb_state(). * Removed use of undefined panthor_fw_csf_version() MACRO. --- drivers/gpu/drm/panthor/panthor_fw.c | 89 +++++++++++++++++++++++----- drivers/gpu/drm/panthor/panthor_fw.h | 7 +++ 2 files changed, 80 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index e6c39c70d348..fb1f69ef76fb 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -33,6 +33,7 @@ #define PROGRESS_TIMEOUT_SCALE_SHIFT 10 #define IDLE_HYSTERESIS_US 800 #define PWROFF_HYSTERESIS_US 10000 +#define MCU_HALT_TIMEOUT_US (1ULL * USEC_PER_SEC) /** * struct panthor_fw_binary_hdr - Firmware binary header. @@ -317,6 +318,13 @@ panthor_fw_get_cs_iface(struct panthor_device *ptdev, = u32 csg_slot, u32 cs_slot) return &ptdev->fw->iface.streams[csg_slot][cs_slot]; } +static bool panthor_fw_has_glb_state(struct panthor_device *ptdev) +{ + struct panthor_fw_global_iface *glb_iface =3D panthor_fw_get_glb_iface(pt= dev); + + return glb_iface->control->version >=3D CSF_IFACE_VERSION(4, 1, 0); +} + /** * panthor_fw_conv_timeout() - Convert a timeout into a cycle-count * @ptdev: Device. @@ -996,6 +1004,9 @@ static void panthor_fw_init_global_iface(struct pantho= r_device *ptdev) GLB_IDLE_EN | GLB_IDLE; + if (panthor_fw_has_glb_state(ptdev)) + glb_iface->input->ack_irq_mask |=3D GLB_STATE_MASK; + panthor_fw_update_reqs(glb_iface, req, GLB_IDLE_EN, GLB_IDLE_EN); panthor_fw_toggle_reqs(glb_iface, req, ack, GLB_CFG_ALLOC_EN | @@ -1069,6 +1080,54 @@ static void panthor_fw_stop(struct panthor_device *p= tdev) drm_err(&ptdev->base, "Failed to stop MCU"); } +static bool panthor_fw_mcu_halted(struct panthor_device *ptdev) +{ + struct panthor_fw_global_iface *glb_iface =3D panthor_fw_get_glb_iface(pt= dev); + bool halted; + + halted =3D gpu_read(ptdev, MCU_STATUS) =3D=3D MCU_STATUS_HALT; + + if (panthor_fw_has_glb_state(ptdev)) + halted &=3D (GLB_STATE_GET(glb_iface->output->ack) =3D=3D GLB_STATE_HALT= ); + + return halted; +} + +static void panthor_fw_halt_mcu(struct panthor_device *ptdev) +{ + struct panthor_fw_global_iface *glb_iface =3D panthor_fw_get_glb_iface(pt= dev); + + if (panthor_fw_has_glb_state(ptdev)) + panthor_fw_update_reqs(glb_iface, req, GLB_STATE(GLB_STATE_HALT), GLB_ST= ATE_MASK); + else + panthor_fw_update_reqs(glb_iface, req, GLB_HALT, GLB_HALT); + + gpu_write(ptdev, CSF_DOORBELL(CSF_GLB_DOORBELL_ID), 1); +} + +static bool panthor_fw_wait_mcu_halted(struct panthor_device *ptdev) +{ + bool halted =3D false; + + if (read_poll_timeout_atomic(panthor_fw_mcu_halted, halted, halted, 10, + MCU_HALT_TIMEOUT_US, 0, ptdev)) { + drm_warn(&ptdev->base, "Timed out waiting for MCU to halt"); + return false; + } + + return true; +} + +static void panthor_fw_mcu_set_active(struct panthor_device *ptdev) +{ + struct panthor_fw_global_iface *glb_iface =3D panthor_fw_get_glb_iface(pt= dev); + + if (panthor_fw_has_glb_state(ptdev)) + panthor_fw_update_reqs(glb_iface, req, GLB_STATE(GLB_STATE_ACTIVE), GLB_= STATE_MASK); + else + panthor_fw_update_reqs(glb_iface, req, 0, GLB_HALT); +} + /** * panthor_fw_pre_reset() - Call before a reset. * @ptdev: Device. @@ -1085,19 +1144,13 @@ void panthor_fw_pre_reset(struct panthor_device *pt= dev, bool on_hang) ptdev->reset.fast =3D false; if (!on_hang) { - struct panthor_fw_global_iface *glb_iface =3D panthor_fw_get_glb_iface(p= tdev); - u32 status; - - panthor_fw_update_reqs(glb_iface, req, GLB_HALT, GLB_HALT); - gpu_write(ptdev, CSF_DOORBELL(CSF_GLB_DOORBELL_ID), 1); - if (!gpu_read_poll_timeout(ptdev, MCU_STATUS, status, - status =3D=3D MCU_STATUS_HALT, 10, - 100000)) { - ptdev->reset.fast =3D true; - } else { + panthor_fw_halt_mcu(ptdev); + if (!panthor_fw_wait_mcu_halted(ptdev)) drm_warn(&ptdev->base, "Failed to cleanly suspend MCU"); - } + else + ptdev->reset.fast =3D true; } + panthor_fw_stop(ptdev); panthor_job_irq_suspend(&ptdev->fw->irq); } @@ -1125,14 +1178,14 @@ int panthor_fw_post_reset(struct panthor_device *pt= dev) */ panthor_reload_fw_sections(ptdev, true); } else { - /* The FW detects 0 -> 1 transitions. Make sure we reset - * the HALT bit before the FW is rebooted. + /* + * If the FW was previously successfully halted in the pre-reset + * operation, we need to transition it to active again before + * the FW is rebooted. * This is not needed on a slow reset because FW sections are * re-initialized. */ - struct panthor_fw_global_iface *glb_iface =3D panthor_fw_get_glb_iface(p= tdev); - - panthor_fw_update_reqs(glb_iface, req, 0, GLB_HALT); + panthor_fw_mcu_set_active(ptdev); } ret =3D panthor_fw_start(ptdev); @@ -1170,6 +1223,10 @@ void panthor_fw_unplug(struct panthor_device *ptdev) if (ptdev->fw->irq.irq) panthor_job_irq_suspend(&ptdev->fw->irq); + panthor_fw_halt_mcu(ptdev); + if (!panthor_fw_wait_mcu_halted(ptdev)) + drm_warn(&ptdev->base, "Failed to halt MCU on unplug"); + panthor_fw_stop(ptdev); } diff --git a/drivers/gpu/drm/panthor/panthor_fw.h b/drivers/gpu/drm/panthor= /panthor_fw.h index 6598d96c6d2a..a19ed48b2d0b 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.h +++ b/drivers/gpu/drm/panthor/panthor_fw.h @@ -214,6 +214,13 @@ struct panthor_fw_global_input_iface { #define GLB_FWCFG_UPDATE BIT(9) #define GLB_IDLE_EN BIT(10) #define GLB_SLEEP BIT(12) +#define GLB_STATE_MASK GENMASK(14, 12) +#define GLB_STATE_ACTIVE 0 +#define GLB_STATE_HALT 1 +#define GLB_STATE_SLEEP 2 +#define GLB_STATE_SUSPEND 3 +#define GLB_STATE(x) (((x) << 12) & GLB_STATE_MASK) +#define GLB_STATE_GET(x) (((x) & GLB_STATE_MASK) >> 12) #define GLB_INACTIVE_COMPUTE BIT(20) #define GLB_INACTIVE_FRAGMENT BIT(21) #define GLB_INACTIVE_TILER BIT(22) -- 2.49.0 From nobody Sun Feb 8 21:21:35 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011070.outbound.protection.outlook.com [40.107.130.70]) (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 43A0E32AAB9 for ; Fri, 7 Nov 2025 14:26:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.70 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525565; cv=fail; b=TCU5mBVhoulfYORGSg2yDBIpXVc0DGug6Rqn2jzZmCaYFqXtHAZdPdG20N8UsyysxnFDrMens8U5VBO9QrkqOQUxBDaAePdUxOf3kF0WXm/hRburGWTmlnBkRabcyyC7A8E4wIjNg7y5oGW5Sj+b7KkP4q3/aIGsCLjy8tRM/hI= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525565; c=relaxed/simple; bh=EYekF8QmpmrmdTdWGZPpkI42AMSgIEYYhOQoaJjKQkA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=l40GBH3jjbkyJe3zuKrBe2skjxKz0GY7MsGCP/JbMkH3fhGb8Dcim3FJumsQJqfzWfRs3wPwXPjtpwkQPy8GsBzO7t2XV2cd5EixkBSZY0PvpvIFE7KaQ/WajSYB15/wSxO059Bl+PN32iYYnAzbKM4cW1NlYGrwB5j+0nvz93M= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=qbVYjQKN; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=qbVYjQKN; arc=fail smtp.client-ip=40.107.130.70 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="qbVYjQKN"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="qbVYjQKN" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=X1/B6bC3Zf9L0zJgsu+fmO/CPWDjjxi56YsSV0VmmHWKwlNVs4Phm/GNWltWOt3FZUzjlsCLhSWubMRJVc0xQ4mK4OTw5kQAu6uqtdA+o53YY3H79+Ii1erLPVO4OSlbT115YDUWduBVBLZLSHQFwahgx+aSCMNNZ1V5vm4oQSnBE5gqnyRQ/n/OB3OE+WfWFbI3hKbfHsUo5uaZ5RXWJMnBVcVkKFWL8Ec5obOQ5Q55upU7QBvLqoXl5eJPszC/kIPmrjzc3oXuucxJ3fpXQuvV2BX6zM0jRbMkH0+rptjRgCRrq/uREM4f7CI6apvN32nZ+UjZYikPmFzjncgBaQ== ARC-Message-Signature: i=2; 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=1RCOejdss8AxGUVSnfnSHwp9QIoVg2l4egJtmEIwohg=; b=sc5PTlmnJ7wccSmUUNWU3cfiOeY1o284jiM/bphaPvEXRn0tklrH3ZrZzaq2tuw6KEFSsOENeRF2DPoHJVgzH4mlnJ6goDXbTTSNJ3kmqo6fqExLlfvUOjQlehA7hAmYllo0y5/vK27lfY+H2KopXA5AStYPrnd6CiHjZVn29L1ZP29jmzYKi8AL2Q+crCzXDY2+etWCb2NxHxI7jYd4M14tPB3yz/0Wvwl6A/uLfvEyxa7SvowwiYXFdZaaWB6EhsIt8DqzMJ+ayygzNHEyp5N2Ab75qjUDWipAvUm074eFYnQSqRYKs5usUSj3Zd2HE6kqw704Ii1UzioTESZtQQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1RCOejdss8AxGUVSnfnSHwp9QIoVg2l4egJtmEIwohg=; b=qbVYjQKNUunvzaEJj3Lz/5pN2kIKUGK6SqLaty8g6JqyMI2pVI6ZQSa0vkICyst3/MXhfflWFvL4Cw+9e5rNYbt6jjf0CK6F3mqCpIieYZVTSr2T4GaPNbmSchi065PZNU3luUmyfhWMpe+wQTQTldLac088tgWntGN114iURos= Received: from DU7P191CA0010.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:54e::35) by VI1PR08MB10148.eurprd08.prod.outlook.com (2603:10a6:800:1bc::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 14:25:57 +0000 Received: from DU2PEPF00028D0F.eurprd03.prod.outlook.com (2603:10a6:10:54e:cafe::62) by DU7P191CA0010.outlook.office365.com (2603:10a6:10:54e::35) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.12 via Frontend Transport; Fri, 7 Nov 2025 14:25:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF00028D0F.mail.protection.outlook.com (10.167.242.23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 7 Nov 2025 14:25:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Yq4ovleqiq165LTaChQo1TMStOqOhTnt7QP0pIxngKe4zxsryohRoIuzRDM63YWjedYUByW/DfTdfCYKH9U6drrV9qPAx29Q/2h2EUt38eHYOWNgjmHeZygaVRJfaM1eA371G/OEkvEMan77GJ3YIW3ChGNF5u0b/c4IImo3x1Art6tNrL5uTZ4R2T+SHiIduZgmNb7htPu0YFb7EgM+BFGwbr4m9ruI5OleL179g75cXRppCJAkXKDgIbQ/H7EmE4oZGmnakjApDwb9vWswaDL06bb1AjB212xj1GDChHrPj+41tUkxkp3o2YnH+nBMaRFPwCi27V8oEWAtkGIpeg== 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=1RCOejdss8AxGUVSnfnSHwp9QIoVg2l4egJtmEIwohg=; b=rmnaTVFHV9V8DI1DF6q0JcZeX3B9l2bY0lXiSonUqqUk24/BTpDvBK0FqRWvR34glC6Uxle3u394ctB7+PTR2vsDsxPTaDuvsLq8o1q3GPxHoOrkdnphIaPlszXuAL0RUb3keAvMyCAiLmn1eX8sMuXnEftEs726tenYgp0RUjYdkpALc2ZvkPIAsXL1felEEDNq58aBsVRS3FCYVp4Bsy7P0RI57frX6i5lXv1shEUFuYqml8p96TrJGfOr6luZ1EeO3JcvM31y6HNiAcJ3kFw3s88WsnZhuaiHcFRN32VVgvIHejDY+/nasyCUK2euMKwmT1beB0megH7StH4LSQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1RCOejdss8AxGUVSnfnSHwp9QIoVg2l4egJtmEIwohg=; b=qbVYjQKNUunvzaEJj3Lz/5pN2kIKUGK6SqLaty8g6JqyMI2pVI6ZQSa0vkICyst3/MXhfflWFvL4Cw+9e5rNYbt6jjf0CK6F3mqCpIieYZVTSr2T4GaPNbmSchi065PZNU3luUmyfhWMpe+wQTQTldLac088tgWntGN114iURos= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by AS4PR08MB7505.eurprd08.prod.outlook.com (2603:10a6:20b:4f7::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 14:25:24 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74%7]) with mapi id 15.20.9298.007; Fri, 7 Nov 2025 14:25:24 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v4 7/8] drm/panthor: Support 64-bit endpoint_req register for Mali-G1 Date: Fri, 7 Nov 2025 14:24:39 +0000 Message-ID: <20251107142440.1134528-8-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251107142440.1134528-1-karunika.choo@arm.com> References: <20251107142440.1134528-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0023.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ae::13) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|AS4PR08MB7505:EE_|DU2PEPF00028D0F:EE_|VI1PR08MB10148:EE_ X-MS-Office365-Filtering-Correlation-Id: 00cdf630-e198-4a14-2c18-08de1e0990ba X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?ygDj0O+KBN8r/Fxtxmi590JHAZ9zu0cK9n4mbWRuT9r4e6Bh++E0TWeR7UWA?= =?us-ascii?Q?PMaSf6fx+Gp0Qp3IkG/255y8CCSprWamDENm7awzudWeMwixMp+uL/L7iSHy?= =?us-ascii?Q?Zjflh4Zya82vZjRrr58i/gA/ZbdcdSNRnHPD7sDw/208XDKKpmZcK7omyQ4l?= =?us-ascii?Q?S0XKqeGOQ0TOIEqSpCo5loLSKlfb1l4HeHhBYSPjYeF/fz8N3frtkV2VTemO?= =?us-ascii?Q?e1S/JQZhOcVPzdNooauSg44ciZET+dUr+et2CtlT5JbabuQa/9qpvpOOcvEl?= =?us-ascii?Q?ZRvTYn45e8DxKRvm7QkpIuv4fNMTUf192He4TmODIo6a229jKR+7k2TP1LKH?= =?us-ascii?Q?TYSWgnWN3rIN5L1HtaAeVX2YUQBVdNsgnkPcAm/XKMvZxcSRdy8sM0sphi8C?= =?us-ascii?Q?IPrmKMVwJXjvYtmTt9om3BXm8xgWWguVpNw9cZOlOHadTfXJUCVoloixxhMo?= =?us-ascii?Q?FAF9JwQ2e99buMEpxCjJLh7lEiwag7MIEnnCU1jHNGH5EUuLflnvYZlunoew?= =?us-ascii?Q?Hh6erzIb4Fb4aH/GIpgU8pXY4HxGLBaiSgpBhvN4hiV+1uYh3vCZVrB/hDvU?= =?us-ascii?Q?WqjgOtgOploUxbJKn6KJk9GKv3+meFu3X1eyISU+Sgh1TXolCt4tLDRhi/Ds?= =?us-ascii?Q?/nceJ9wofe2+fsiz3HrmlA+PdXKzn//xnbFovtAu/TVxxgHaWGQAbdDMoVTY?= =?us-ascii?Q?+25F7a1DBeTGzLQ6yRlh3VnYAnZCNf+JArf8O48nZXQ/aqjfcqY+UTZuYtVS?= =?us-ascii?Q?JtK2e4fzGad2nKCWbt6obEb8AlNMJ+k2P9LrHydndZw18xQKsBS0G7WV4O6v?= =?us-ascii?Q?2eXroaFTrWasO/SETXubfC2sLJ+0Ymgmu2pyx8o7spsvU2CAewU82Wl7U+Yq?= =?us-ascii?Q?xk8trTHJLGyRr4i1ABCJRqB29yEhvDOaIl4o42bagtwymJO2T7w0vUC2CEyx?= =?us-ascii?Q?1V9G9OnfURJmpeya5ZA0TQIFg5gceVytmM9kF6CSocgfsZMOtElJ8wqhmGo7?= =?us-ascii?Q?fuJo8XJjBD4bcXkigmxldpPuv2YyBfcdG0mZpnANQH7whw/vxjokE5G5BHJQ?= =?us-ascii?Q?Vm/dd6iWT2zf4+WxctcdcwZ8LZskqPr7xTu6d93fm8Pqv6KdoTEKOoWx+sQS?= =?us-ascii?Q?P71WcfQI2EXcnaJ+jmohJrQ4tJDEmrn1yPXwxjcEAI7D5gMLpmQt1qJPBBPg?= =?us-ascii?Q?TJKXSxIvVbO5Dzdp506QhPGff83PzYgQPcOKwNNHeHQ0B4yJrxZMxuhmZCZx?= =?us-ascii?Q?UOg9nKl2B76g6IFN8qVheFXZn3CQ1jzAeXmBvo9BgfOrUwmAgHV49xRozWT+?= =?us-ascii?Q?hXJwZs+V5UvtXqsfZaCxA8R8G8dBwMCYjzUD3sWKjxUuPp0NQ4jgc4ATXVc2?= =?us-ascii?Q?EoMt91lqam8zJAatxzEE/CKFwYvOmuUGaVwRqZumWDai9Z23jbu4d9Iqq+V9?= =?us-ascii?Q?SgNoc2xzBVUJ9Gt500wcja2AgcEoxgdC?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7505 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028D0F.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: fedc19e7-097c-43ab-d878-08de1e097d54 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|14060799003|82310400026|1800799024|35042699022|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?D1zBETDAmaKJQImQsvzQy9qB1zx11ZU9YdfD3RAsXd4/RwMmk8+lkK1c4EoE?= =?us-ascii?Q?zVTHH0VX4AwR5W53h5z832M7RMuqCcX42s9fZ5dC8Q6cE1Kz9rofSsJdIoMa?= =?us-ascii?Q?3244KfieueSX5Ret92UbJwgdv1ADSg2Ot+Rn4SaSJV0l9hrHMIYmSjP/qSxq?= =?us-ascii?Q?ReB6KaIHlApA2JZ+AxB9u/oHdo5IXJyyRzvbWrVBD1+1W3eiw2x3R1fe1YlU?= =?us-ascii?Q?b1pA4AMq7z9VesYTfrDSC8h7y7NOhxJadtTTH2VLxZ297y7DqxSDdDvzJDVi?= =?us-ascii?Q?BeiQijl21LTt1hivJPSnKEAUn3jTG6tXbfbeWwioWH9uVhBRwsua7nRHENLo?= =?us-ascii?Q?YziD6Z3JJSsjqkHs1Gv7JW8VcT/PYaZ1XRLSFE8wlnzduV0jChS5b4u+0WRD?= =?us-ascii?Q?9Mud3+6SZ3z3m4e4G121bLJJwZ8Ez3j2TzDOQlsMlO63W6j06UeMJhHxWDDX?= =?us-ascii?Q?xQp99/c8St1Vs4djT4CALr20aGuDvJU5iOOfS1Lw3Y75Zp3EoIw7VjOxXcdE?= =?us-ascii?Q?lSjBiSaB6Eoxf2HU3trYlUoQySoA446SzqJh69e6RtN1mDX/BDADt+lN+O6R?= =?us-ascii?Q?ic803mECnl+Arla7SOst2G3/osRTKXQONn2jRLON6XTuZnIPX5gl6eG9zf1x?= =?us-ascii?Q?Z+NeaYNSFXVzTqNskFJQhjLbPAlrqFfeW70/xg7SXVcyacEfsg6+BJQ+Y8LR?= =?us-ascii?Q?ZfqOdaDilQdXVzqYNDHlUC1siTUMX0umQZxNt629eA87PX2AhZNFp4Cd8ztU?= =?us-ascii?Q?ckZoQxlpbCFIigFnYV7UjKPMCnYc6WjzrMCDaUEVVeHIO55P0iMLNw1iQ2m9?= =?us-ascii?Q?TQm19Z+CHsoQyir/brlyGQZ6O9UwpdC/8EwZwUww8nYVw820C/G5VJaLlAgp?= =?us-ascii?Q?IQHlLpWRJrjBJEtpxP11h0f65OI5RXnJ5hIya3uRnqjUPAt2Ij4rhzEvq/I8?= =?us-ascii?Q?DalA5bKi8pJaM6Fm9njpnaV0FdvAUSVvrY+fKgzc+SExcuLnivwSpO0ZalSK?= =?us-ascii?Q?U2lnXf7h5pL1YG4p8DSwHRYlpzt4lKt1gczbfie8cM6UpXF3cWcG0G5Yw1L8?= =?us-ascii?Q?Yk2bReXS3Ns06i5wghswFonN66jgEvo+4ig5KtqeHQ/98ce/IliX48YjCaSh?= =?us-ascii?Q?uj+QwAyxoATZ+Uu+WH6utqJSa2tYKXog3jtQnRbhA36CeBHA/pMRDX7eRMFt?= =?us-ascii?Q?SCYHw7Wl7HOf72z5oSl//mr66OOHrf6r2ZSlC+dUulmQ4D+jieN5P8fCyx5l?= =?us-ascii?Q?ijVwbNgzljl7/9ky6jcDzoipv/QwCjligjt4OMbAav/P+fITJkguj7P8q2SC?= =?us-ascii?Q?fQPfma6MqnyHMPyGWslxkmN5DdhpGtcZzKMFlbu3mK3P6xr825H4bpjo3MT7?= =?us-ascii?Q?pDmZB2Xme1Q+LzSrJten7zIFS1FHb+MAZzvQ0xLPUwYLd2qCjlYLQmAX2fzc?= =?us-ascii?Q?ObIfQI4f5dZpmvWzJt+Wrrgios556KvNOYeWlR5lHX4F/tJSsNOrjryHTGsD?= =?us-ascii?Q?umYuovo0nKSJ2BkvKxh9qQq+MwOEJobgsNB2P6RuuBHZfKnBRfK8aGbu5V/N?= =?us-ascii?Q?MwZ24FkoIM4nY257Oow=3D?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(14060799003)(82310400026)(1800799024)(35042699022)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2025 14:25:56.3764 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 00cdf630-e198-4a14-2c18-08de1e0990ba X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028D0F.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB10148 Content-Type: text/plain; charset="utf-8" Add support for the 64-bit endpoint_req register introduced in CSF v4.0+ GPUs. Unlike a simple register widening, the 64-bit variant occupies the next 64 bits after the original 32-bit field, requiring version-dependent access. This change introduces helper functions to read, write, and update the endpoint_req register, ensuring correct handling on both pre-v4.0 and v4.0+ firmwares. Reviewed-by: Steven Price Signed-off-by: Karunika Choo --- v4: * Picked up R-b from Steve. v2: * Wrap the CSG_IFACE_VERSION checks for v4.0.0 with panthor_fw_has_64bit_ep_req(). * Removed wrongly included code from previous patch. * Reordered CSG_EP_REQ_PRIORITY_GET() and CSG_EP_REQ_PRIORITY() to reuse CSG_EP_REQ_PRIORITY_MASK definition. * Updated panthor_fw_csg_endpoint_req_*() functions to accept CSG iface structure instead of a CSG id. * Update endpoint_req variables to u64. * Minor readability and code quality fixes. --- drivers/gpu/drm/panthor/panthor_fw.c | 36 +++++++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_fw.h | 25 +++++++++++++++-- drivers/gpu/drm/panthor/panthor_sched.c | 21 +++++++++------ 3 files changed, 72 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index fb1f69ef76fb..2ab974c9a09d 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -325,6 +325,42 @@ static bool panthor_fw_has_glb_state(struct panthor_de= vice *ptdev) return glb_iface->control->version >=3D CSF_IFACE_VERSION(4, 1, 0); } +static bool panthor_fw_has_64bit_ep_req(struct panthor_device *ptdev) +{ + struct panthor_fw_global_iface *glb_iface =3D panthor_fw_get_glb_iface(pt= dev); + + return glb_iface->control->version >=3D CSF_IFACE_VERSION(4, 0, 0); +} + +u64 panthor_fw_csg_endpoint_req_get(struct panthor_device *ptdev, + struct panthor_fw_csg_iface *csg_iface) +{ + if (panthor_fw_has_64bit_ep_req(ptdev)) + return csg_iface->input->endpoint_req2; + else + return csg_iface->input->endpoint_req; +} + +void panthor_fw_csg_endpoint_req_set(struct panthor_device *ptdev, + struct panthor_fw_csg_iface *csg_iface, u64 value) +{ + if (panthor_fw_has_64bit_ep_req(ptdev)) + csg_iface->input->endpoint_req2 =3D value; + else + csg_iface->input->endpoint_req =3D lower_32_bits(value); +} + +void panthor_fw_csg_endpoint_req_update(struct panthor_device *ptdev, + struct panthor_fw_csg_iface *csg_iface, u64 value, + u64 mask) +{ + if (panthor_fw_has_64bit_ep_req(ptdev)) + panthor_fw_update_reqs64(csg_iface, endpoint_req2, value, mask); + else + panthor_fw_update_reqs(csg_iface, endpoint_req, lower_32_bits(value), + lower_32_bits(mask)); +} + /** * panthor_fw_conv_timeout() - Convert a timeout into a cycle-count * @ptdev: Device. diff --git a/drivers/gpu/drm/panthor/panthor_fw.h b/drivers/gpu/drm/panthor= /panthor_fw.h index a19ed48b2d0b..fbdc21469ba3 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.h +++ b/drivers/gpu/drm/panthor/panthor_fw.h @@ -167,10 +167,11 @@ struct panthor_fw_csg_input_iface { #define CSG_EP_REQ_TILER(x) (((x) << 16) & GENMASK(19, 16)) #define CSG_EP_REQ_EXCL_COMPUTE BIT(20) #define CSG_EP_REQ_EXCL_FRAGMENT BIT(21) -#define CSG_EP_REQ_PRIORITY(x) (((x) << 28) & GENMASK(31, 28)) #define CSG_EP_REQ_PRIORITY_MASK GENMASK(31, 28) +#define CSG_EP_REQ_PRIORITY(x) (((x) << 28) & CSG_EP_REQ_PRIORITY_MASK) +#define CSG_EP_REQ_PRIORITY_GET(x) (((x) & CSG_EP_REQ_PRIORITY_MASK) >> 2= 8) u32 endpoint_req; - u32 reserved2[2]; + u64 endpoint_req2; u64 suspend_buf; u64 protm_suspend_buf; u32 config; @@ -464,6 +465,16 @@ struct panthor_fw_global_iface { spin_unlock(&(__iface)->lock); \ } while (0) +#define panthor_fw_update_reqs64(__iface, __in_reg, __val, __mask) \ + do { \ + u64 __cur_val, __new_val; \ + spin_lock(&(__iface)->lock); \ + __cur_val =3D READ_ONCE((__iface)->input->__in_reg); \ + __new_val =3D (__cur_val & ~(__mask)) | ((__val) & (__mask)); \ + WRITE_ONCE((__iface)->input->__in_reg, __new_val); \ + spin_unlock(&(__iface)->lock); \ + } while (0) + struct panthor_fw_global_iface * panthor_fw_get_glb_iface(struct panthor_device *ptdev); @@ -473,6 +484,16 @@ panthor_fw_get_csg_iface(struct panthor_device *ptdev,= u32 csg_slot); struct panthor_fw_cs_iface * panthor_fw_get_cs_iface(struct panthor_device *ptdev, u32 csg_slot, u32 cs= _slot); +u64 panthor_fw_csg_endpoint_req_get(struct panthor_device *ptdev, + struct panthor_fw_csg_iface *csg_iface); + +void panthor_fw_csg_endpoint_req_set(struct panthor_device *ptdev, + struct panthor_fw_csg_iface *csg_iface, u64 value); + +void panthor_fw_csg_endpoint_req_update(struct panthor_device *ptdev, + struct panthor_fw_csg_iface *csg_iface, u64 value, + u64 mask); + int panthor_fw_csg_wait_acks(struct panthor_device *ptdev, u32 csg_id, u32= req_mask, u32 *acked, u32 timeout_ms); diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/pant= hor/panthor_sched.c index 0cc9055f4ee5..d6f5efc10312 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -1139,11 +1139,13 @@ csg_slot_sync_priority_locked(struct panthor_device= *ptdev, u32 csg_id) { struct panthor_csg_slot *csg_slot =3D &ptdev->scheduler->csg_slots[csg_id= ]; struct panthor_fw_csg_iface *csg_iface; + u64 endpoint_req; lockdep_assert_held(&ptdev->scheduler->lock); csg_iface =3D panthor_fw_get_csg_iface(ptdev, csg_id); - csg_slot->priority =3D (csg_iface->input->endpoint_req & CSG_EP_REQ_PRIOR= ITY_MASK) >> 28; + endpoint_req =3D panthor_fw_csg_endpoint_req_get(ptdev, csg_iface); + csg_slot->priority =3D CSG_EP_REQ_PRIORITY_GET(endpoint_req); } /** @@ -1303,6 +1305,7 @@ csg_slot_prog_locked(struct panthor_device *ptdev, u3= 2 csg_id, u32 priority) struct panthor_csg_slot *csg_slot; struct panthor_group *group; u32 queue_mask =3D 0, i; + u64 endpoint_req; lockdep_assert_held(&ptdev->scheduler->lock); @@ -1329,10 +1332,12 @@ csg_slot_prog_locked(struct panthor_device *ptdev, = u32 csg_id, u32 priority) csg_iface->input->allow_compute =3D group->compute_core_mask; csg_iface->input->allow_fragment =3D group->fragment_core_mask; csg_iface->input->allow_other =3D group->tiler_core_mask; - csg_iface->input->endpoint_req =3D CSG_EP_REQ_COMPUTE(group->max_compute_= cores) | - CSG_EP_REQ_FRAGMENT(group->max_fragment_cores) | - CSG_EP_REQ_TILER(group->max_tiler_cores) | - CSG_EP_REQ_PRIORITY(priority); + endpoint_req =3D CSG_EP_REQ_COMPUTE(group->max_compute_cores) | + CSG_EP_REQ_FRAGMENT(group->max_fragment_cores) | + CSG_EP_REQ_TILER(group->max_tiler_cores) | + CSG_EP_REQ_PRIORITY(priority); + panthor_fw_csg_endpoint_req_set(ptdev, csg_iface, endpoint_req); + csg_iface->input->config =3D panthor_vm_as(group->vm); if (group->suspend_buf) @@ -2230,9 +2235,9 @@ tick_ctx_apply(struct panthor_scheduler *sched, struc= t panthor_sched_tick_ctx *c continue; } - panthor_fw_update_reqs(csg_iface, endpoint_req, - CSG_EP_REQ_PRIORITY(new_csg_prio), - CSG_EP_REQ_PRIORITY_MASK); + panthor_fw_csg_endpoint_req_update(ptdev, csg_iface, + CSG_EP_REQ_PRIORITY(new_csg_prio), + CSG_EP_REQ_PRIORITY_MASK); csgs_upd_ctx_queue_reqs(ptdev, &upd_ctx, csg_id, csg_iface->output->ack ^ CSG_ENDPOINT_CONFIG, CSG_ENDPOINT_CONFIG); -- 2.49.0 From nobody Sun Feb 8 21:21:35 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011062.outbound.protection.outlook.com [40.107.130.62]) (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 A837232ABCC for ; Fri, 7 Nov 2025 14:26:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.62 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525567; cv=fail; b=ICXkAtmGkFSygSZh3LKKPhzPbc4TtUO6hn26bG/YgocAlWxIMquTx+ESL+a/xIKwdRrTWtQGkYJRZRZY8utqUCb6bk0y7g4UIrzN0Im1S+lbxszeX8NiO+sO2YaazmRWsSquMIYRl5RjKxrZDdUbd2fWND2QX8N0xp8Ldj3MuVQ= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762525567; c=relaxed/simple; bh=vX/fX4e5Fv5vW86wEUE2W2x9E900g3Qe2LW8L7kC9ns=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=MzHFTIuFV+mhfIOf7bNiBx/ZfWOOKRZegCDm56NjG1+S1BE7qpDaQ8pw755sQsqwXtWONGyycsJO4WQbmYqW4HCpnz/+mpDB8mGy9iU1DS+mlr8Y5dtGdOYSKXBvnd+PHSqeUQre076KG3rBAXttM3PRJVgXwDK8y8GiPbdkAhs= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=f/uCeP5A; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=f/uCeP5A; arc=fail smtp.client-ip=40.107.130.62 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="f/uCeP5A"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="f/uCeP5A" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=fK9wX3iRTphCiejfO/OS+CJ+6Gi3V53ONZRUfHk4zA7RldEN1VZiYs4aB2Tax/hzfyGgvAqrIUirESfZJFiA1/GLsl1WjD+TRGTPvRLdpj/28AruUmJR57V3WcE4F3fAXyxVQoz3rMImxlVtZZA3XVSQeMW0S3NkBRLgmAq862uzJHLxgKRE42/l8PVn86Z0OgorBSOZ/ODgmkd5zssDQp4SAlzFKVuNRAkbhuKppdljNFQAxupQOo/Y/oXbV6euZeZsruVQmj8gkT4lLDh2NS/iiL1I2QNBMC4lD9j6QcWMCle5lJz2kbBSNTn85DQp6o7VhZ+2XKJ7HcG7WhKiOA== ARC-Message-Signature: i=2; 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=UMAh1tjPsrlmYtEEPBbH0RkLV3sFJqtzeAb+QsGJki4=; b=yII/Q2p6rSKWGYPQmL366Q+Xy/TY0I/1lBOliq/Pneh1Q6q8ql/ecZc9fqTHbfaMlczBw3HARA+N/y0HK444VDuJjPE/Vk1obbB0ztqvAongo5EnB6vReLIFsJaR1weSYSlFY0vLyiUzCMKurGzUSQ3TPIyS51ls9J5Vq8Cs5WelkyG0PfX8DS3XL/F579ExnGPSJoV7OgkFf+ABK7rh5I/JbB5LR0vel1DgJfpEDYqLsV2mtwv324W+IfnFsTZEK+WLgFmTFJpbjFuc0EHLBAjuwLVgf+eJec6eoZ664NT0RcmTBQ3gAyGpvP3T73g5mlS/nUpEFPAUfL1ToBGUxw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UMAh1tjPsrlmYtEEPBbH0RkLV3sFJqtzeAb+QsGJki4=; b=f/uCeP5AzlDu8J032qyPnUqDUibMiofaIbgYFO3ob/tCRXz8SEy0TA6qX1P1kuvV5NyMUDRSYwQp7LV7kZlFNMbd1bEsrwhaRfRgxiteOGj1480f7qX4n+GiY0rMuc3BNAkLYu/8ZeGrepVknQWzF4XcoveZYnZsQAOMukrbuvI= Received: from AM0PR02CA0186.eurprd02.prod.outlook.com (2603:10a6:20b:28e::23) by AS8PR08MB10150.eurprd08.prod.outlook.com (2603:10a6:20b:62a::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 14:25:59 +0000 Received: from AMS0EPF000001A2.eurprd05.prod.outlook.com (2603:10a6:20b:28e:cafe::84) by AM0PR02CA0186.outlook.office365.com (2603:10a6:20b:28e::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.7 via Frontend Transport; Fri, 7 Nov 2025 14:25:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AMS0EPF000001A2.mail.protection.outlook.com (10.167.16.235) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.6 via Frontend Transport; Fri, 7 Nov 2025 14:25:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ibHjn47tNgpHXN1AR/7uAVn8NI16IzqN6tMY0XGoHm2XZG7tYYqA9cKkHtnBYp6F8oxI06yXXcHpyKhVXCrGVX6fcOQiVl+452/NOodXt6sPY+WY8+7k6qtrCxOHCMsPVnyMdfDKhBwkQagT1YSP6o2e6l8gwnt9z1/P6QsIQ76Lc+zLCgCsmUa6QicDVcnE3l8rY60LNk/5okLGhVOz+OMPJKBJrEV5d3YTloYQdYY/WlILcV361hn3m67eeytNkm+1Ez1q4BhqgeKIVX8tSzBmWj+BXL7GbrXEVFGvhksQYt5RAypYMYaO2b619ofHZUvPlxGQF7BI1O5VoypviA== 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=UMAh1tjPsrlmYtEEPBbH0RkLV3sFJqtzeAb+QsGJki4=; b=Mg1al2mf+s/Zp7+KVQUYldurUaTHZzJRLi74m8gIrDTIXz+QPBFKH8781tPrjD/89rPyBaTO8oeHQfer42a+7bHApudHH9krg2DPW5eH5HN1hfJytKuapCN1z4LLl8orTErzNkpo1N+VEJc/lHqTEGALsykNMXljmjKlZkNTb4j+AloSewk6ObaOAiNavs7Y8d916gZY6OpzpaJOSXxCnPRmiFXfsz1ZmnmKk5ZcVUEpOWhv3Wyi4GfdLMvNXeAb5gAKUjVPlO6s4HaK2WxqAdiOi0A46Aeb5sxllleY/yUz/onfjiSFk/47gurvQwVNdr25Yy47HsdEoDsC43lsbw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UMAh1tjPsrlmYtEEPBbH0RkLV3sFJqtzeAb+QsGJki4=; b=f/uCeP5AzlDu8J032qyPnUqDUibMiofaIbgYFO3ob/tCRXz8SEy0TA6qX1P1kuvV5NyMUDRSYwQp7LV7kZlFNMbd1bEsrwhaRfRgxiteOGj1480f7qX4n+GiY0rMuc3BNAkLYu/8ZeGrepVknQWzF4XcoveZYnZsQAOMukrbuvI= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) by AS4PR08MB7505.eurprd08.prod.outlook.com (2603:10a6:20b:4f7::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9298.12; Fri, 7 Nov 2025 14:25:27 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74%7]) with mapi id 15.20.9298.007; Fri, 7 Nov 2025 14:25:26 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v4 8/8] drm/panthor: Add support for Mali-G1 GPUs Date: Fri, 7 Nov 2025 14:24:40 +0000 Message-ID: <20251107142440.1134528-9-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251107142440.1134528-1-karunika.choo@arm.com> References: <20251107142440.1134528-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0670.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:351::16) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|AS4PR08MB7505:EE_|AMS0EPF000001A2:EE_|AS8PR08MB10150:EE_ X-MS-Office365-Filtering-Correlation-Id: 2dca91ad-d9c5-4305-de9d-08de1e09928e X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?1t2gzLZE7s02OdXZpDOqk1tOqs+N8a8DggMprjhY9rUD9GFl1IcsuAATNzsP?= =?us-ascii?Q?/z4VblaU6ZnqGErX5kCAB11HgjHelGOuJZKSOkP9DQRqcmrTVOB2oAGOah5h?= =?us-ascii?Q?aufmKA2u7qTmZ+4vYNhha1hTYIAZX1y0gspcbJ2xta922hDxNJ8FdcWshU76?= =?us-ascii?Q?RuxSlmXr/IAku7aKtVqWUBVKIt9OhqcWX9wxw8W4aImbvFP9O1UJ1PdXieN7?= =?us-ascii?Q?M9H/U14/d6sHH18tTkzuTskZWCBkzuul2TyGNRSM5hRh0Pb7ZWZDPlIb3WLU?= =?us-ascii?Q?mLm4GM+os+FB0qma4NGbkpNAN5na9g770hkpT06txVbxLjh12D4bE9qfGt0t?= =?us-ascii?Q?AP8pcDiRE8cWfYa5lnDZNzSLLKN2y+mZ2ZPKAqJl+plhsiKF6Ti4613MqbQx?= =?us-ascii?Q?8DCOi7ftSKTnxt3x8LlTt5hx26NoX1iCPT5971J1WAAy9TEYrCFpCYC24usi?= =?us-ascii?Q?lFd6Fl98V6EIRw+7POBrEpPU/tddmoxCyMsHrcMVtb+zYlY6tyihKD+HSrfT?= =?us-ascii?Q?N+4bAQ1zE8V5ozg9OpGB/bYJxT5+EbSUrS88wKuJFvK7UAm7gvdKJsCTzgWq?= =?us-ascii?Q?v9MoZHOWs+Qmi1OBWYqJi4gqRZChYraFF3z3JpDHIdaTxe5vzsJWsYOhtUyS?= =?us-ascii?Q?Jm1kYTqNCwDkvGmVNr1VH7Cf6+wLAy3RREBXw0jV2xyeYxZ3a/wSGHnqURPZ?= =?us-ascii?Q?Z5DOUdQ7w0xTUnQh2L4UTDyFBdGMuPPpSHDo1+w6/GQ7fBl6BQWztHe2P05F?= =?us-ascii?Q?HbVLkw9uCStgHnOmWinQy9V8CBfPGIdHl6+GX2LMLhpiVRjYZfpFdtyqaSWf?= =?us-ascii?Q?LyJMx4XTdeR0C7AK7GqVFvd4SsOYqr2frgZV8XcAGXb6FPqNlqGDrmOQYs6w?= =?us-ascii?Q?RxBJajWNCrJC0fnGFRx6JKlKct7u/EWFfEOViWbEWrvDduxJTJVeWjbDkxr3?= =?us-ascii?Q?NFgeABZ1vDuF47zU9JHQv4TMlx1htFcrJG2ZptdRM9zodYWjB9bVi3AorWZk?= =?us-ascii?Q?d+/Ba4a2LC0Hq1r3r+O3CCKpafgIRmLP8AEcAw+EIC+LUpTBhK8k4g0YAHo2?= =?us-ascii?Q?0vjRR/2/0NgA7JPP+WHgHjAJrap/LxUfDVBQLG6GwA6BOjv6d3VNS/wPWM8o?= =?us-ascii?Q?vJvTRjmtCVepc3R2Pg8NQCD57hdSsjwcguLymFjfQKkM7P0zXPDTcI4UowSq?= =?us-ascii?Q?lK6+5DNMBu/uRfNtPS2kJxJZKXwZM9uxB2p1CPsRYKb5jkMhKeVX45llA8Hi?= =?us-ascii?Q?zNmGrdpD+KtxYprv0KWUAofqaEHeVWtO58ygyP4cpvRJwf5ul3LYdgfWeOlh?= =?us-ascii?Q?ytFxgupN9a+5tN5wDcLv6xHMV/25bhZGCbG28v5ZRlrZoavTcurSVGpeTls2?= =?us-ascii?Q?EqkV2QUFTaNc3gtfK1uNHJsPb8H7mjSzbbIObfIgYyl9QhLAETkfxOw206Cv?= =?us-ascii?Q?qtZ0NL6+/V+RrWyU884tIxJTeWe/1jhW?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB11200.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7505 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001A2.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: c7bc13ed-ab0c-4f68-131f-08de1e097ef1 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|35042699022|14060799003|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?vt3dQkN8+AJ1x85xv/vyVn7/c0/NObv0EgarzJPyD79a7GK5hSleJw4RNOpl?= =?us-ascii?Q?ll8CoCLrkHHlz8MT9fLngL7u30Ri+KOnZbWSIHJXD7ycBu/oZkvLJdmIWPWv?= =?us-ascii?Q?b5hIawfZhrF3/hEKjcFolTlLTvGx1ChKy6vS3fxN23TWKt47INX0UjsHib99?= =?us-ascii?Q?hZUUh185bHp2FJvobvMWvULi6+LN9JNUn6MRv66wuOXifYKxJmjwO2HNHSiK?= =?us-ascii?Q?kwr2ZBUB0vADyCmJoZ+8WRHpl3xw1kscsRgxEyPQGZM2EdxwYyj6jEwjLnCB?= =?us-ascii?Q?7shG9TWDsX1NiE2uYYN0oXrkLG42iwWFLs3oX9AaENR15zwOI61p1iXTgfQN?= =?us-ascii?Q?D3Bj5mcSJ14/qZylmNVzoKjMfGQsnRSHty8irNTScDqb44LRwGIzn/GIjQU/?= =?us-ascii?Q?gdtwEcGWHhXDGzvYeMtqPcEbnlFfxi3IsCLn1jejzHZSR+M7BtxBsGjc+CWk?= =?us-ascii?Q?ZjQu8w2/8DGaXNl5pn+BGNh/5bpsQT+slFdQetwXRN8pUondW/051gjnnkiM?= =?us-ascii?Q?xV4dbglx5eH4dHEr8OBRdgVYmVU9eYmo/dDEw/3z1TinZHDCCLKrGJz4wu5D?= =?us-ascii?Q?EXn66wBZtaQsi0VoZH/ZIiYHWLvgSTFLTwYzp21Yvbsw1Im+2NQ1gxL2cD54?= =?us-ascii?Q?X1uxPXHfEcQbkrUPNeHy7g0z9zSN95Imn8uWdwj7y5SfXBiqihQo8olXhhSP?= =?us-ascii?Q?5vdd4lLmC7ZEsLLikv+60jHZqaTeqrineQOWS4svEX9fKgzDPMAAY/LXd35j?= =?us-ascii?Q?/YYXwRLyCdid7OScmWIHtiXEKXGC3F3TiSIuWivrc9v92i/CqQL7PytZl+ub?= =?us-ascii?Q?zfLQ/mzO3T+Mek02jQaN6C2QEvZLIxOnCtNVX6vve2F10mzJfJIyyqYKbbLF?= =?us-ascii?Q?UzOZnsVKToaIkKDucuVJnpP6hKkJOvcjCwLtHwCBSNEnvAAqHI26RgAwY4Wh?= =?us-ascii?Q?h3Us40RQNJsoikog3BUv7xF5YaTOqshEKAbMwtK4EdjsSSieCwcF1Fi6vnIm?= =?us-ascii?Q?fHPg9NkVdSXcDufyPhbUYOAxCuki9XiEMqhlow+PgfyEoc9hhe7xU27JRLiB?= =?us-ascii?Q?0hKhQtHimk4LknamhuAT52WgC0fDx0/k9UvVLjOMbT5DdrdQi74PWonrC18i?= =?us-ascii?Q?ArJlv2x2JE93i0G603TjdPmtooTdaiEmOkK0E6HxXYVyZ1Iju2BYAJztYY0V?= =?us-ascii?Q?jr+D6HO68GUKI8KkW/y43VRuKDvq62MVktIsThnxiOwLFqFO2+5V/4D0Qq6+?= =?us-ascii?Q?Eyb1DiqPrNyiQc9+gCIaqjyRvTN6F/2AvNu0qJDcFiLZO6v1g3cXw/U3+nlM?= =?us-ascii?Q?wO757oxe0OjX16Foy0p8O6nALJHBeql69F75qMMqU2j4fRf6gLpEAMPoOD1z?= =?us-ascii?Q?8bGNB78dlneOAJJViMuy8QBuYQSMgVYgXAw3HfouJTwIu9N2W4QMuZlsSatU?= =?us-ascii?Q?r1S4rKuVV9LNrhL3kPUY9kVjiAmKGjbWok8E0Zxyl2CfOaG7HTsAlvuhKOGe?= =?us-ascii?Q?yK/e3bVK9XZVk7d9yEa83Rcr3OHwNgCv4YnSd5SpJow5AgwQRkDT6dRSu65b?= =?us-ascii?Q?+DZQkUn2M+OU1/jENd0=3D?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(35042699022)(14060799003)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2025 14:25:59.4632 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2dca91ad-d9c5-4305-de9d-08de1e09928e X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF000001A2.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB10150 Content-Type: text/plain; charset="utf-8" Add support for Mali-G1 GPUs (CSF architecture v14), introducing a new panthor_hw_arch_v14 entry with reset and L2 power management operations via the PWR_CONTROL block. Mali-G1 introduces a dedicated PWR_CONTROL block for managing resets and power domains. panthor_gpu_info_init() is updated to use this block for L2, tiler, and shader domain present register reads. Reviewed-by: Steven Price Signed-off-by: Karunika Choo --- v4: * Picked up R-b from Steve. v3: * Fixed some includes. v2: * Removed feature bits usage. * Check panthor_hw_has_pwr_ctrl() to read the correct *_PRESENT registers instead of reading reserved registers on newer GPUs. --- drivers/gpu/drm/panthor/panthor_fw.c | 1 + drivers/gpu/drm/panthor/panthor_hw.c | 35 ++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index 2ab974c9a09d..9450a917e66b 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -1501,3 +1501,4 @@ MODULE_FIRMWARE("arm/mali/arch10.12/mali_csffw.bin"); MODULE_FIRMWARE("arm/mali/arch11.8/mali_csffw.bin"); MODULE_FIRMWARE("arm/mali/arch12.8/mali_csffw.bin"); MODULE_FIRMWARE("arm/mali/arch13.8/mali_csffw.bin"); +MODULE_FIRMWARE("arm/mali/arch14.8/mali_csffw.bin"); diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index ed0ebd53f4ba..421369aa3211 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -4,6 +4,7 @@ #include "panthor_device.h" #include "panthor_gpu.h" #include "panthor_hw.h" +#include "panthor_pwr.h" #include "panthor_regs.h" #define GPU_PROD_ID_MAKE(arch_major, prod_major) \ @@ -29,12 +30,25 @@ static struct panthor_hw panthor_hw_arch_v10 =3D { }, }; +static struct panthor_hw panthor_hw_arch_v14 =3D { + .ops =3D { + .soft_reset =3D panthor_pwr_reset_soft, + .l2_power_off =3D panthor_pwr_l2_power_off, + .l2_power_on =3D panthor_pwr_l2_power_on, + }, +}; + static struct panthor_hw_entry panthor_hw_match[] =3D { { .arch_min =3D 10, .arch_max =3D 13, .hwdev =3D &panthor_hw_arch_v10, }, + { + .arch_min =3D 14, + .arch_max =3D 14, + .hwdev =3D &panthor_hw_arch_v14, + }, }; static char *get_gpu_model_name(struct panthor_device *ptdev) @@ -82,6 +96,12 @@ static char *get_gpu_model_name(struct panthor_device *p= tdev) fallthrough; case GPU_PROD_ID_MAKE(13, 1): return "Mali-G625"; + case GPU_PROD_ID_MAKE(14, 0): + return "Mali-G1-Ultra"; + case GPU_PROD_ID_MAKE(14, 1): + return "Mali-G1-Premium"; + case GPU_PROD_ID_MAKE(14, 3): + return "Mali-G1-Pro"; } return "(Unknown Mali GPU)"; @@ -108,12 +128,19 @@ static void panthor_gpu_info_init(struct panthor_devi= ce *ptdev) ptdev->gpu_info.as_present =3D gpu_read(ptdev, GPU_AS_PRESENT); - ptdev->gpu_info.shader_present =3D gpu_read64(ptdev, GPU_SHADER_PRESENT); - ptdev->gpu_info.tiler_present =3D gpu_read64(ptdev, GPU_TILER_PRESENT); - ptdev->gpu_info.l2_present =3D gpu_read64(ptdev, GPU_L2_PRESENT); - /* Introduced in arch 11.x */ ptdev->gpu_info.gpu_features =3D gpu_read64(ptdev, GPU_FEATURES); + + if (panthor_hw_has_pwr_ctrl(ptdev)) { + /* Introduced in arch 14.x */ + ptdev->gpu_info.l2_present =3D gpu_read64(ptdev, PWR_L2_PRESENT); + ptdev->gpu_info.tiler_present =3D gpu_read64(ptdev, PWR_TILER_PRESENT); + ptdev->gpu_info.shader_present =3D gpu_read64(ptdev, PWR_SHADER_PRESENT); + } else { + ptdev->gpu_info.shader_present =3D gpu_read64(ptdev, GPU_SHADER_PRESENT); + ptdev->gpu_info.tiler_present =3D gpu_read64(ptdev, GPU_TILER_PRESENT); + ptdev->gpu_info.l2_present =3D gpu_read64(ptdev, GPU_L2_PRESENT); + } } static void panthor_hw_info_init(struct panthor_device *ptdev) -- 2.49.0