From nobody Tue Dec 2 00:04:37 2025 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010067.outbound.protection.outlook.com [52.101.84.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 6CFD2320CA2 for ; Tue, 25 Nov 2025 12:56:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.67 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075415; cv=fail; b=CGwqpt6oc5kXbudrDjrbArM6dZjexheoyRw3cqD7pg62KrC1iHHSSPiE28PUNZO/oVYM1bXtZOlsKLTe0kW3HXZpRu9G1C2EaffoWddgzkHtzP16NHyrEcsmWvW3GwB+s5QsPWtoYvcXloGhokhSpM5Yr7R5HA+syhuF301NQmw= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075415; c=relaxed/simple; bh=q2xk4WXHp7ho8H3EIxYsz8VbocaQzw1DZ3LK8Wja4nQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=kQIEGsRhvF0/dJo9dAfWu0Cg+FoEklPuF+dlcClOaO+XirBpodRlWoqwHQINos79Pu4gUg00PiXAtuRzCkwrSjmTZobYsenemdduvvw6rNHcTOKHrZd26wg9bkO1IELQrTBzcyTXW/paVSTJm9IF7eaYA2/DncOjylbHbdpgaMw= 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=Z7e5dii6; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Z7e5dii6; arc=fail smtp.client-ip=52.101.84.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="Z7e5dii6"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Z7e5dii6" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=LTuNkmmP1zqxuS85D+hkaY67dUzfPMeW1jG+oYNVtgg8t7P0uIyvbLbhuz4M73+rbXNEeXIwrybFldoLGq9CQ0USXW8gMqmHNgFDihLaB7Yf6S4Z0rs2kG65M7uJ6+ZO3OlCvj4rt+ebPD3t2VRE4XDabYBaeuinj/ebE5iRUfAxEkMOXzv6QjIpjnn/ZDCXNwlqQl4pxA3gr3MDCwPcIoBf1EzddiC6g8s0BS92tz/PMIq7oULv5Fz4tMMDG8e066BeiDX+D+noqCgNuq2LFXl7o7KzcUQC9byshn48DRktUIX28YXL7ZxRoroCsbgHsc9jMN/31Xs0ytm0kqX6sA== 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=nKDmgjfd4L9QeLr77TvdrYHtok+xXxjBTbn9Qqr4pZA=; b=pPsyOUxqc9yoyGmSKcVRYhmXyX3faX5dqMJH6qqxnTU+KvV5/0yzGlCC5MqjCffQDWwWQeq+ZyJ0HafZcq6kTYhQgfwfCkvKphgLNoHtl4rdgXut9Iywbf/o80PiRBjaqTbxErO4a1ySLMkDff53woer8sGFP49bBmgLJ1BfhrMcHYosoqhT0PKPVtgVIt+6K0ITnbOIbfl86F8K4U0MEAxeWDCd/YiaQkuz94/V+CGeWHb1E/rjNm3j7e7f9XurshjnDlCLFXLTwM4V2MVy8E3K81qsUZvMNyPTweyv/0JXUaYKsQFB6Fgc192LyRYKRYSFrq78I1S01DFGrdKpCw== 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=nKDmgjfd4L9QeLr77TvdrYHtok+xXxjBTbn9Qqr4pZA=; b=Z7e5dii60GSVFbYQ7nlXOXKOXz90d/s31Ow8QdSRvJKo6W+dh8Q2oOzTFk1VFPxSpvWW5B3lEouwrF9slkzEnyOJdtvvHZ3KLHBJSO1uRkHUtjdCMUUniIQ7DoqU4H9+Fvw9FxyLBpTAO8oC9ndVviaiQMCzpNTBxWVNP5MzOCw= Received: from DB9PR01CA0021.eurprd01.prod.exchangelabs.com (2603:10a6:10:1d8::26) by GV1PR08MB11027.eurprd08.prod.outlook.com (2603:10a6:150:1f5::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.11; Tue, 25 Nov 2025 12:56:45 +0000 Received: from DB1PEPF000509E3.eurprd03.prod.outlook.com (2603:10a6:10:1d8:cafe::be) by DB9PR01CA0021.outlook.office365.com (2603:10a6:10:1d8::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9343.18 via Frontend Transport; Tue, 25 Nov 2025 12:56:15 +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 DB1PEPF000509E3.mail.protection.outlook.com (10.167.242.53) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.7 via Frontend Transport; Tue, 25 Nov 2025 12:56:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xxsaO8ZRWWUYKpA+uG3IR4XYWEK4jRNc9MqZ0Jj85gyhYRavQ7wSyA18yhLJ/gdBMj/y+Epty4fCyHOPKEYnF8Ud2yzihVe/z4dlxojqq4dXnrfKsJi+HXy94MzvHrn7mK5ce0HEdvKpUZGdIKqS/Yrad+FyWPjgSoiJITXY+JbG3Ijci6xDkGqnyFGw2ZwxxJhCsAMhODlDwDJ8ISs9fwRnG96kvrZei0jqGbCm4VOqydQ1/THceAhZ55ccyzlT9ygTCaBoT/0wB6hXQuigU+rDOp3LtnKO8BucB9vi0+TvqGd3gs66wV1bGz4IfpIxU9eFPzfMJwDHuk3F7fJgpw== 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=nKDmgjfd4L9QeLr77TvdrYHtok+xXxjBTbn9Qqr4pZA=; b=XzGpI/aRSLEcEJX/rhWIw402MIIp1Zsoj76+JO7g96GYjQ330tBLXq6ThTKrsTy0xRN3hbTKKtGPFfFel0a0Ld7yfsEyEii9xvVSdGvRbNaxPcFix075o/HqgVThNEpCDbSsefM1SEvbLxTagd3CwLCgDTtgEvQYOk19YvgVAhSRcoJKdc1f26EaONorfJNtX6ovr2BdJY7bAa1j1Z2HCU0W0VckvMB5u+whypM5Ab3oj9O56GtkYT7xDoADtsdlDI18GK60VdOILZ7bnDdT/EVffFJp3hJnlWofZ27GRWgowgSpKQd5fNWduiFbTrKc0WVE3xlr7WXpboxRKChM9w== 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=nKDmgjfd4L9QeLr77TvdrYHtok+xXxjBTbn9Qqr4pZA=; b=Z7e5dii60GSVFbYQ7nlXOXKOXz90d/s31Ow8QdSRvJKo6W+dh8Q2oOzTFk1VFPxSpvWW5B3lEouwrF9slkzEnyOJdtvvHZ3KLHBJSO1uRkHUtjdCMUUniIQ7DoqU4H9+Fvw9FxyLBpTAO8oC9ndVviaiQMCzpNTBxWVNP5MzOCw= 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 DBBPR08MB6108.eurprd08.prod.outlook.com (2603:10a6:10:1f4::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:56:12 +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.9343.016; Tue, 25 Nov 2025 12:56:12 +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 v5 1/8] drm/panthor: Add arch-specific panthor_hw binding Date: Tue, 25 Nov 2025 12:55:41 +0000 Message-ID: <20251125125548.3282320-2-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251125125548.3282320-1-karunika.choo@arm.com> References: <20251125125548.3282320-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0340.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18c::21) 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_|DBBPR08MB6108:EE_|DB1PEPF000509E3:EE_|GV1PR08MB11027:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c2b4e2c-ae70-4444-f352-08de2c221628 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|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?FD5juwKdp6Y5JE+/iKqYG6kMyRSHM60iug6B88rCShJJsYS9GqPdyAmmIJQJ?= =?us-ascii?Q?4HAILL7T8axM0Mfx5miikOqFbU1BtaFqKnkucPZOirOSVJt2Q36wRjWoAjXz?= =?us-ascii?Q?+JV/sCMXOz3a08HxOmugUzru89+3r0RcAngfgBdWibvwNZ66UbmzVUB8qSK1?= =?us-ascii?Q?ELEqBx4TdgfnY3m9o4NtHt7MGVBELmu8QEGKtlY0zLDD8+ygo8kA8GnvH3ET?= =?us-ascii?Q?qbz0H37iZ5X+zkDxGaAfBVj+Sm3mc+yu/Ymgua+g0848zsq1WNSbkJNgcy3x?= =?us-ascii?Q?Jd/KgiWm6SJZsJKILKEUWSADZa+VsnIzIi8tYQ77aYuoQEEXBSV9JBn1k+9R?= =?us-ascii?Q?1YzFgIYwz0RJIKKV+mh6qkPSVOCbKA2Ah5f+/lefKBAk0qtV8rZSpayWAvfT?= =?us-ascii?Q?mNLsaprV0A3BnAtP1JdA2CL40Q1qmDAZSqLzxz7wmx616jw+HIlWGf38BkGk?= =?us-ascii?Q?CdpOHKtWG69MZod3r1A9k2Pl4eHl+k5MppbQqjL1oHgpdoVqobJnqZMc1idN?= =?us-ascii?Q?opWWMJRkjlGz5sHZQ8eKLFxsdTUOtOzh6netJ9la4t3jcWKlQzPavsyKp8hL?= =?us-ascii?Q?BBvZ/Xf4nmJVB0FWXyLo0CoqJKy6skTWwm5FfuGRTwH5MgMQy5kQWwbnEyrG?= =?us-ascii?Q?8HNm1pL9ipLJTEhaNJ4kCVY1+tWlFiiYvI2d7Ce3UgMx6fMHEdSyHQhMeQn4?= =?us-ascii?Q?wohJOhxExYN8UJOrW9wT0QflugdB3jkhOTmNE279vp7YXMS7MizjVPwxE8wk?= =?us-ascii?Q?RnRPZfBepQCaoPN+Vo11xeWMuH/Tqk2PbBlN+dGh71PlkssNZi70RFrM22tg?= =?us-ascii?Q?aTc9UeSg6mroYRdxqS+pz25r2fA4svdkh8tKkXpHugm1r8Sltwvx8JieOvw7?= =?us-ascii?Q?Kr58QvrBPyLZc+5VYU4eZAYDEl+hsiy4b3VrvDDD02Bly6lGNKzU75QGNTYg?= =?us-ascii?Q?DYcJtYrybheViKiiLA3Vv49EaIhFxenjMe+Enczs8V9OoxJ1JEUHG1kClOym?= =?us-ascii?Q?s51y8Y+y6Lo8NHbKNYcrKC607h+f868uyMo7FUUdpypwhNZBj8ysgxxmrGMb?= =?us-ascii?Q?7tU5NfXQw0zURChrRXqOrG9PXRAAuJCpY4KzMyYPtaVaKmu+Ms4YnD7irJU/?= =?us-ascii?Q?/5nuSlWLs6OpIQj8ccCHAZ0Vqgb09Ttc6DlsgK6WmTpTGSk8RWi6UwuztFuX?= =?us-ascii?Q?STkiq9x0E4+kRP3oQ6uKs8Zx2Xi22L+688VGek6Mf5kwbiBQkzHLv+KwlgQW?= =?us-ascii?Q?OWvTVXVwlEdktydqbqR1wY6o7XxaxN6gDYxblvd5Oe/8V5GjcGgwKbwRexUZ?= =?us-ascii?Q?I5akjflBZTmEhBBhMne2Nwx0IBHrwZjFseHD+r15RmKrKIFkjGUPSrN1ajJB?= =?us-ascii?Q?+0ZhwgfuEUsULM9+CQLkSLAi9qJNMvt5qj2RkX2qHaEpBZi5Vk4nNtUmDIcv?= =?us-ascii?Q?1pZQ0p5H21vUofuR7BHCFcYQsZTy+vx5?= 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)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6108 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509E3.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 43d06f3b-d792-49cc-dade-08de2c2202e2 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|14060799003|36860700013|35042699022|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?gNOKtXvsFprZKsy8+oPH1cnoesZlo3q3HaqPC/zfmtRdF8fi+v+MBfpqw8lF?= =?us-ascii?Q?s6fXhu+KUnTX20XKDrpoSvmvvHzT6SgdX5J1yT3r6WW1tWluqkTmcXKDncBM?= =?us-ascii?Q?qHxjQxiHGlho22E+B28wjPOFOFsxbHy3BylQVWUvL1bDW3fESRfqBCdgKyd3?= =?us-ascii?Q?eVJf66YPTlwN02hgypqK6dB+ESdHki9NG3sUpT00S+X/tFAwXBt5/5GKawAS?= =?us-ascii?Q?52cskikKeN7pb9UN5NG9QjwoOa92qZ3TrKhvUukRqGIZrjJydh0ze7VptUIu?= =?us-ascii?Q?teToPlCnMmgHdFWDaei8N1Lw/5NXKQwXDMki6DyxeCnw8V+gu7QgwXFOLeSp?= =?us-ascii?Q?9fpJyIQqLqK8SWFP3D30Ln8PrG/zqQ8hAf8j+mNQxiaXoPhRIOr8hDSZ8tHP?= =?us-ascii?Q?DBHumxbBxmMvniaGHZhZm2G815um+DT7c43OtSCIVWJF1tIT4pRrILWbB2zh?= =?us-ascii?Q?TFO3Uz6XCdXZE6fPwPiJKSy+WWbJ+I94FyaKuRS/reoJP36m/VJHZCbKxxd1?= =?us-ascii?Q?W+Q0oqpqTGIdN1u3b3DR9D1UIZ+2EUHArHnWTYkVTzjG8WrEBvd57nEi5IBu?= =?us-ascii?Q?GI68nzmQk0dYg5okSHsRSwXcTuMG/2wYATrNLaCpNzJVntF6dRZ91YwipSZO?= =?us-ascii?Q?lyccfw/zLYkV6Us9eMSkw3jIHs0kwewg3ujMXJzd3CD6+WwTkhaHHBxvyR+J?= =?us-ascii?Q?tPNwNnlKKwJiMvQ6mi8/3/dI2rRIgUvJRHLkKfP/O31euEYrP2wvBKclV16q?= =?us-ascii?Q?4m5SLR4TJdDjqOk+AVpt7aBpSqPvv0Zk5nfNhux2KfoSRssckXMCh5NzOEwt?= =?us-ascii?Q?yWln9ktVUe+Adb0hXYPmI0kkb0wG7OpC/mlSBUSf5vk9XO5inntBFYt6B92C?= =?us-ascii?Q?PpfNs1MPY/q+bqv8pGl0EXKVRSf/44B8OFnbJavf+DWS5bStY5glPx71HHQ5?= =?us-ascii?Q?Abhg9IIRCt9HduZUAEaWk5EYeGPtW4zq5SErSu4fHNWWlXXELAVc/+oZ8p0R?= =?us-ascii?Q?96Ir980D9Q4iAKc8+L7RASc/ed1GASBHtBKYHh78sDa3Tz8uj2NXBI6qBzRs?= =?us-ascii?Q?3xfV+Es8WcVK1K/6EgYQsIIZvfuaex0yVkJ+WObOaJHu0Otp9joYtGuiH2Xs?= =?us-ascii?Q?MARj3WGpm39XkygZEwMSJLShoeh/bHyzklvlYBq2eGe7uEd1gL0FUtK5Pb+X?= =?us-ascii?Q?DSqzOM9vcf+tMW2QMLfcqPSOzF9zEyQ4FbAKEXXSRCPkHBO7dHmCMpBveLFT?= =?us-ascii?Q?US4J/4+5TcO2SZfL0CopBWmpZWrwMolGQhFVO2zLIT5FcKHDwvC1KET9DFtc?= =?us-ascii?Q?Ed8QvMEn7rEKYnsZrEdHIvga9BHrOgPMq8x4qlmnRNcNIFrfqOc6540hrWQM?= =?us-ascii?Q?2xFv/8e5b5lybrt2QJ5+CIndaDP/+hZgibwGBD9NqG/5r7ehhjWpECxNNwx0?= =?us-ascii?Q?ydkODmhpQvusxqUjwLwbqJC+/R6f9l0RmcY3dOLJjsrJq73Ini3eJo3K90iJ?= =?us-ascii?Q?cLc38aBRCwCMoHl3TwNh905zPdUln8qjbG/6hHX0N7sRoeE7XOpuUqwfIkUx?= =?us-ascii?Q?KVHmV2pCSCATpKCiKUA=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)(14060799003)(36860700013)(35042699022)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2025 12:56:44.4345 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3c2b4e2c-ae70-4444-f352-08de2c221628 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: DB1PEPF000509E3.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB11027 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 f32c1868bf6d..f0b143732ea0 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -24,6 +24,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; @@ -134,6 +135,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 c44033a0bba8..5b5a82e15f86 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -10,6 +10,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; @@ -64,7 +86,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); @@ -119,8 +140,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 Tue Dec 2 00:04:37 2025 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011013.outbound.protection.outlook.com [40.107.130.13]) (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 D106A320CDB for ; Tue, 25 Nov 2025 12:56:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.13 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075416; cv=fail; b=R7xm+tiPw/6X42u1WbKrgOokz/uvm4TXWg8OD4M69JJ+rkFMbpspaJfDlBy3nEg3sJWz89o9qLFLtgrLMmRDjvqHkUOm/454auN9SSofAVTYXLiBESMcXUCsmLiPT7EeGJ4oX+CaSW8V6JowEEsLf+4ksmMr2GBKpdHIYJR2VzA= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075416; c=relaxed/simple; bh=hgK3slVSnDBj2hoCfCVL8324UuTkN8qJWEboC5fd/ak=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Z4KDu78VHl0j0Xz0akX5XBap367mYX9jJAURPv2p9JlhFsEgRGoc7hY71SmBD5hppNCVaiUpyfChKbxvwdLGnBer17aC1s4MkyaQGI6Qz+Tb1Br5VSyPwcevZ54orXCuyHnfUwWBw/irpxoHHqKXvBEI+Sht8UIQHRHwC+QY7PY= 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=jv1ZkWlP; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=jv1ZkWlP; arc=fail smtp.client-ip=40.107.130.13 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="jv1ZkWlP"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="jv1ZkWlP" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=LqMVg5mzzX6FOt2Z6gLPgNxa5AwSmLb1pFGuzKDWklENVUcNhCBS36bKqC/zF52lBkihznEnhhbznINDgWDF+XZZe967x8y1TKb8ai0TDsDtjncbisreiokLHcR26lBv9KxtIc9mir0fx3DT8YgVWZ+HtS7/pMtqOJAs7HCIX9SIr6QcTPDOOJ6eLBxTQmdjaqMY2cl6hmnT8MOP6gfdgF+GTXTcw54hhnItnLoQ227QxPLG5e3COcUpssvE7lJELROaL/P3/Q7SbxNyoMN4vABKIYiLKup5dVJ3GICMX5aPDVFbZR9ovA24DE/zaHli2+KAPLUmW1jZTnHwven1ng== 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=DjUXr0ZT8DBiX1rKXGvJKfG/SGWoGav+2lrw3HSTJ48=; b=VWMkENnUJKF04KzVOS6+NUtbENl/u4uTl9vIN3SfNFzkb6c/ZXBKnba8thEz5oA1gTbu38c1c4PKIxjVYxeCrw8cwjSbb2P/uil898yGctbJJg6EeRpREu5rHV3hbXQfa8xCG+ufE8E68r3Nsju+obYbOzdduaipIvSbet6SHbKDQY/eJ8bPe3i0wIOygavhhT6WK3HC3eisgUJ5FbtTksGsLhMRjeVGDcZB4BKjtBGIVY/lCtj4hud7I0qjRPA+q9C10ugnO+a73w7PegFzwqQkid24P9OQ7h+l4QeAS6eUc3hQhcGhDjNekYA3tvC9hBCiYp3YkqSU9RKop16Nww== 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=DjUXr0ZT8DBiX1rKXGvJKfG/SGWoGav+2lrw3HSTJ48=; b=jv1ZkWlPjnxV9TacWyvRFxtBEp2J0dyvypDVPl6PxLjlgbuLxyp82LbTZhA16MjZLD6gm+hZTBpU8QBA5w3uJv8SLcfWftIime5F7rfLQiJSCnhAbbvR4zcJK05An3BUa3Vn9tYewvelFHj3Zv6qjJVLXb6qjPbjzQVsE0WLE8E= Received: from AS4P195CA0031.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:65a::10) by PR3PR08MB5643.eurprd08.prod.outlook.com (2603:10a6:102:84::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:56:49 +0000 Received: from AMS0EPF00000192.eurprd05.prod.outlook.com (2603:10a6:20b:65a:cafe::e6) by AS4P195CA0031.outlook.office365.com (2603:10a6:20b:65a::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.11 via Frontend Transport; Tue, 25 Nov 2025 12:56:49 +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 AMS0EPF00000192.mail.protection.outlook.com (10.167.16.218) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.7 via Frontend Transport; Tue, 25 Nov 2025 12:56:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I72wvf9CRKy9KW8AphTw6th+F+HnKMOzjYjJ9FQwgp/pfUlYtOxvrNYxX6Bez5jOndrJOUCp3EO0GFyorxV5oD3pcDptL8Pege1MBc8iFdHXz8C0F2PpH2ncZn5g6Uk1Iffm7o3kxl3SceoAJxSXYSenRbg/LWr9bFlZQPnkOctgldDaJVZ33O/gYl5iTXp1lD7kUJji1pX4Hof1zaQvWzXx7pAng6bWTAAxq/+d9EKEk6g6zZdYmJ3jlHFz67p7PRHzHiHvuea8qOBJ/0EUlQk+OgNa6A3tCzrLUlgM6gU5RFvyploNMJWv2KJ7npWQKoyH3nq56qWy14ImcwcPow== 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=DjUXr0ZT8DBiX1rKXGvJKfG/SGWoGav+2lrw3HSTJ48=; b=FzzMMJHYtGHV1J1G+Kq5f/EMvBq81dSJ9vM1Y0etf4RJihVAJK160akCZK8gv8+6ZuFHolDMkZW6na/zBGQTF5kcfaCBKAE9irrSv0eEoIjieeq1LB8mhG5QP1smUjuAc1JibJItl5Lfg/znOGAPG4Fd+CaAHfeccZRxw6oEQeE9juC0qj6daTKJKs4G8WM6qLcpSuCGiv854OWfN/DHeH9jDulifOBDEovuMist8yvClSx9scfJzwnJ6Nt7z4wOe8Bp7FRjnlwOQcOO3IPZ3w8qSOFdRCOgR116eMhgrPXza+HtNsI4ccERq7Cx/j7YSAejT69oNNreAEUaan8zjQ== 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=DjUXr0ZT8DBiX1rKXGvJKfG/SGWoGav+2lrw3HSTJ48=; b=jv1ZkWlPjnxV9TacWyvRFxtBEp2J0dyvypDVPl6PxLjlgbuLxyp82LbTZhA16MjZLD6gm+hZTBpU8QBA5w3uJv8SLcfWftIime5F7rfLQiJSCnhAbbvR4zcJK05An3BUa3Vn9tYewvelFHj3Zv6qjJVLXb6qjPbjzQVsE0WLE8E= 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 DB3PR08MB8937.eurprd08.prod.outlook.com (2603:10a6:10:43c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:56:16 +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.9343.016; Tue, 25 Nov 2025 12:56:16 +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 v5 2/8] drm/panthor: Add architecture-specific function operations Date: Tue, 25 Nov 2025 12:55:42 +0000 Message-ID: <20251125125548.3282320-3-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251125125548.3282320-1-karunika.choo@arm.com> References: <20251125125548.3282320-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0677.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:351::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_|DB3PR08MB8937:EE_|AMS0EPF00000192:EE_|PR3PR08MB5643:EE_ X-MS-Office365-Filtering-Correlation-Id: d305acc9-e6cc-4335-41df-08de2c2218f5 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|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?MsuwXNaqwm66zme2SbGRpkU71jwJ7dp+S9EHa0VJKIx5E+vdBzxaYtK0Zl61?= =?us-ascii?Q?U7Yb+aGIHZX0zn4yiE6iX3opleLcsLAJtTv9/YIb+KBY9Gg4sMf3uYxKI6vq?= =?us-ascii?Q?xMyrhaBiZrxgBpUfw7TwKTwV2AhE8qJQkVjY6g6RLAPL/Sj1bJmiOuj9HTh+?= =?us-ascii?Q?ZUrXbrFGbq4/VwsNX6cHYLrMImRe94UqaZl4QNSE8dSJYobq2I+OCsfcZbEN?= =?us-ascii?Q?vdDCG5xCET02kF7yloGAr8WbBa1sfoBA5/ZBUn5Cnxpk7MNIUN3pJOOpQOaC?= =?us-ascii?Q?1der+tsntebhjM4VaQ+LQ6dBElrro1O1TBjfWHY4j5NVXQki7RH13WXZ0JBs?= =?us-ascii?Q?WO3gQfRW4959lLI6DwNAKnIVGOzDW2+TX70W/eQBDCMibIpjHOnfNje7lxuN?= =?us-ascii?Q?kP+ILvJBUsov4kDQLCdcMQv9WWQxziDB3LGXJDMd+KcUPTe+2xZtVlYVi4JD?= =?us-ascii?Q?mpLQmrKwrIwNEDcJcQ5MolqbChsHc3MgJJ8HpRoZa+oFnqG1j4DCoxvgaA6Y?= =?us-ascii?Q?+4T+oaTryDMSqLUbCVgKZS81PqHEME4mm4/S2mX0fXuyZ/jETZkcHyPYM9D6?= =?us-ascii?Q?bkUi3cEloFblOM6GZgcjq3gdCCacOd+UwbWJ/UENpC4BwIio0ur27tZhKrwR?= =?us-ascii?Q?bF10ulsa4XAPri8dVR10uLUGPx10r8lHVDfqUE1s0OFw472tlDYTv0BFSfeA?= =?us-ascii?Q?+TddcALMO2nDgMVD0yAbailiqAtt5scuKBPiLYZ0UV84l2kgLqkFOaINO1D5?= =?us-ascii?Q?bnJVbbEJbh/loe0jfS4JoBNOLP+7XHGOJgnJ1LTB2hiBNI2kdnUMf8heIY4W?= =?us-ascii?Q?XeLSJo5GsWk2o+kGXd3XgdKrTTVNrDhEWlhRmq4gbRIKc+jelkUnZ1Zpc+AB?= =?us-ascii?Q?V8XkqNrTFS8lP2X6I/iT8y/82aPKPtKTevhZ7idglCkhrlZ54ZsKfCk897VV?= =?us-ascii?Q?LKuu5LK3hLDIMNyQpekYglooMCbfqXGRSpeWmD6FLeq0rjIuAvJh9IyGUJHM?= =?us-ascii?Q?QntZM16/b50rImpmN0kL4w3brZQF9p+TCo1ThdU5C2sZd9vmxLZPzJFoi8yf?= =?us-ascii?Q?AUbq2GahJbCvD4C99auKPti1KanNy2Ro8BA6Gg8N+wn7AC7sR9QGE/kcP1ue?= =?us-ascii?Q?OdOLNe1wF3fE8Z6sKueuRg29a7JCdbk3bxG1mrCgNBe/sgC/hZx/L1ieRgc2?= =?us-ascii?Q?dDkauspHnB3G7IARaCFWRXdN/VBX0kqHhI42HLMQkQ8YOCSbs3XUaU3zKWKK?= =?us-ascii?Q?wt9WN1pcnwl3Lv+OCTPPNg9pGMkgJZaAX95UyBGMA8hcD/HocnHIAaqOGO7t?= =?us-ascii?Q?qvEjQGqzrkDJwu7KLdxVBhbXjiHlbwyyGtuzHgVcaIU4LzWFiBO1N0XbaCMd?= =?us-ascii?Q?Yy1EXzv4C3LhDysz376AujKieHF8rQr7k09yM29yPm/XOp05vzd+tPOsnIuO?= =?us-ascii?Q?XUqYAOiK1OlBUQWAegb3aV+uBz9ODcrC?= 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)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8937 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF00000192.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 14c20cc2-f214-4f30-3494-08de2c220502 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|14060799003|82310400026|35042699022|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?zW43FiYbvv0kSlSO58sKKDFgzrFxlJu5CUYrtq1GXv2dn9E0KFh6FDFUJ+Rw?= =?us-ascii?Q?V40tPN+GXf4lSglg/BPewtoBlIj8pyUB43ds3+lpBHgDwLVFUJgkEECPT6Lt?= =?us-ascii?Q?iZWz3IP+b5MCwZJ5RZiNbT3OEoWWPC08U9s2mLMHcw9WCmCnxn6ZrH1BmNE0?= =?us-ascii?Q?WLaZtQxGwpgkB9nda/U+dh204oTmLaSm6kos5gR181QvZNltkX/FwaFdBFMP?= =?us-ascii?Q?D+ybKBIPpEKWj4/NaewjQjDHIDq5JdVE1F4+0z11AHwfT52hfqjZCd0P64Ym?= =?us-ascii?Q?iSnY9UiQ71tIsvnBByPf+kjtJbPT9Ijw4HQZn8lI/MMKR2z/iuEYvX1VqltO?= =?us-ascii?Q?sVejFQVw6hNBTDF84/HUGtPJqZG38z8DNh9jQYylW+40zEwcH88AUGDemznu?= =?us-ascii?Q?MFL59Nr6hBx60NW6c+c6y0cU6wgj8QELOYP7+2Abc1P/QJqLSFgQr9qxEmpZ?= =?us-ascii?Q?5ineGFEHd9yrN5cdEMUV993tolPP5nochjBGkdKUW9iklcCigzAs60WN2Ec4?= =?us-ascii?Q?/yxqwhrj1QPzCSZPm3pODH2dI/2Ju6ezsO3/8VlbJ1a/uxWE+9azgXYiZRlm?= =?us-ascii?Q?kpGDA7ZElF9iOgG/D1/4bHSTwjoVAAzLlPJjjURaBthEG6M3DI4hgYttu04x?= =?us-ascii?Q?FYNi9JDBtXrMeEL0p5atD1nBA+ylcW2Emg9c4QwL43DMIiiPehj5ZxjC5riy?= =?us-ascii?Q?cFdqxqiehHcK/PrYGrTzVwT4YGYG5rA7+do25sSYrFb+S63sno+Wj3M4lZSj?= =?us-ascii?Q?Q32DnMMZd6SxShr1/Y0OAp3SkSATyWxS83cEbz9eC/BnQ9aBis6H7BcA8+yg?= =?us-ascii?Q?B6IkfCdSVGLQ4Q/4bw361lx1NLZJPl1/HFeeTjZ/RmyCos+ocP5ll4GLMhY4?= =?us-ascii?Q?24PDw6PKT1BAvjyPHgcuIXxl+/ewdvMgx8PDI/S3KBA2AupI6wudZHO5IulY?= =?us-ascii?Q?BBAQZpOd4J7awPYcQkz5jVw5faspgBGEfOfYDSfxvKoCU85B2iTmTHJOBHhD?= =?us-ascii?Q?WWyF6lPo2+zo2/Qeyus+AxlQmG9dAev93h4CEH+zRhUs4NY9l+AORGlSRvVK?= =?us-ascii?Q?PrTqGrL/csxFD8DF3Vq3PR1TnAukZQXrMyohQa9/ZKpztkSltdzuDendw8wS?= =?us-ascii?Q?zJYDQ5HqnxW6rBpo1389bulFNk5Tea2Hv/LFbgMjzjoIIpndFczZtP8gu3Op?= =?us-ascii?Q?bWhrJYSbLemzO8qx0gSM5g7AVuvHMm7BaGcHOrqfisEWoi0Z5Ua3/pj3E1fE?= =?us-ascii?Q?pZV26+b62aUoki+QlAChf+CbMpln5f3Ro1ThsmJAGJ/Y1fmW62fVIPff0cMC?= =?us-ascii?Q?lDqWnaCVmqB/lmmTOEG/qJhDnBcCl3v4B8crF/2BiAOt6SjJeFXBQ2/ppJ8x?= =?us-ascii?Q?0GpdmoHHujT0jlznYz4PA2xIcL/Pe7mLOEtvtbScojvXMzThxY3HamqVAncp?= =?us-ascii?Q?dRc8iVN6nZAX/brcZZGa8KNkcMTqtaG6OnqyWth9qWN8niPzFnD7ezp9OMWR?= =?us-ascii?Q?vC+0xzlBjn3VGogQ+p0FV4qHbBFPmjU8BV9gwoR2e9gssJ38V0fpQladpA37?= =?us-ascii?Q?/bU1FauHdPeliimyFKM=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)(14060799003)(82310400026)(35042699022)(36860700013)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2025 12:56:49.1403 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d305acc9-e6cc-4335-41df-08de2c2218f5 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: AMS0EPF00000192.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5643 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 31fb8ed68199..0ecf552caa5c 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c @@ -152,8 +152,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 38d87ab92eda..027c4529f3f2 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -22,6 +22,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" @@ -1186,7 +1187,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); } /** @@ -1365,7 +1366,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 eda670229184..06b231b2460a 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.c +++ b/drivers/gpu/drm/panthor/panthor_gpu.c @@ -19,6 +19,7 @@ #include "panthor_device.h" #include "panthor_gpu.h" +#include "panthor_hw.h" #include "panthor_regs.h" /** @@ -241,6 +242,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. @@ -368,9 +374,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); } @@ -385,6 +391,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 5b5a82e15f86..5d220a0e2c22 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -4,6 +4,7 @@ #include #include "panthor_device.h" +#include "panthor_gpu.h" #include "panthor_hw.h" #include "panthor_regs.h" @@ -22,7 +23,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 Tue Dec 2 00:04:37 2025 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013069.outbound.protection.outlook.com [52.101.83.69]) (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 3A4E22ED870 for ; Tue, 25 Nov 2025 12:58:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.69 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075494; cv=fail; b=GiRO/nC2yH2eRY4fbWWWMRu+POaL40AbihZuB6mu+SHMZrnn6/FTtGFQ3rtL5s3SjJQ8AzqvKvPz2UjWJAor4w0XI4X5MP5T8pyljMIAwjZZkdA6ljlNZ/lhEqwTTbWy8g6HMI/6lu97wNHhpMXasJ/be6ZhZhI/5L1/ZaNRcZM= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075494; c=relaxed/simple; bh=CXZtun7C0PWWip1jZnz4XARiS970zDDDJqJuGoyuNUM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=kXz1qr07jBgaA/ZFSc+VDPGT9rrNiR78hChEtwi8IvXU/+rijc2AjScdxck1q3RMblpLMfRMmaG3H8A1vTG0iiE2VcRK0z4Y/S5hpZ75TSpG4Uo+otoVAo5VAtTco3WGyZgoXSoX5YYepV+E5VZtqvVCapvkzxzI6hCKtZv0L0Q= 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=EoSqwJkR; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=EoSqwJkR; arc=fail smtp.client-ip=52.101.83.69 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="EoSqwJkR"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="EoSqwJkR" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=sQtjKGIxEHoO7pXXVwIbbdJyD6IPMVK5I8yaSky7cs0VBRIVwVUBO3oPXLtwYwRWrePz0T89DybbQmrBlZzamYVCcNhaKn09QPcbPigQmVOxihwuiVYno+SfanTt+pY+wtg8DfbZwmYdEx0a0p1QsGVIFe/5umvFpmPFIcRadEG7645Ovng0s5QjgOVXHuDoAUOS9iJs5efOmaS9SRsx88Dx8XyZhsUFNhMnMpRqq88JizmAUCmwooZXYtHVGEqdRVMyVavO6ej87A78p+wBjJJCyHniH1T5871a6unfkLWYaxEHoKCJ5t7DpWSBXrL5MoHl6EMLw1zUPpJlrurhow== 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=qaqvFe4+UF2DN+CnWtGW3Pvp3scI3DabKQuzsiPEytc=; b=fezzMLKy53KWasPFFOKsV8HjOInVwmzO239bKpOEsatvwniEgQw/oRBPtlrvFNkDUdrS82R5ZaVGsoBc3R5PRpl9VRCGdU0dqmT2PpN36YldyYQPUTCGu+82J/yIacX8n6J+A79vyoFnRxqwarpuLsK+5WWwfFSGOCU9PZCP9NT3j2eIR+gAe5QQ/FXjtMeq7HE4tfn+3fb9eEE1VhgtR4CSMqXXniHS0DidUkL+LDUbeppO+YhwJKqv9DbXu6HgFmNuwkXVEtSgiTYPTH9CjJc1QiNIxUq0f4TqKdS2ZdlC6bwpymugZ/9lcUqmeXCRZ3Vvbimre8K8jnk7C/WRog== 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=qaqvFe4+UF2DN+CnWtGW3Pvp3scI3DabKQuzsiPEytc=; b=EoSqwJkRUPyE7M9z3rgG3itV5qUFdITGywHQVScyukJrwuVKrX0QduKoKtfcZ0/5pL0Nh/t2ZyfQntI4s8V9CJfy56/+aWE2N4K1VKhUh4cFankt5pqy5WkCyBL2OqrCDBxmbmDYMV5Ja+HPCb8r4GeOiO0MuY0uv5dRTJrCn2A= Received: from AM0PR10CA0040.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:150::20) by VI0PR08MB11450.eurprd08.prod.outlook.com (2603:10a6:800:303::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.11; Tue, 25 Nov 2025 12:56:52 +0000 Received: from AM3PEPF00009B9F.eurprd04.prod.outlook.com (2603:10a6:20b:150:cafe::9b) by AM0PR10CA0040.outlook.office365.com (2603:10a6:20b:150::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9343.17 via Frontend Transport; Tue, 25 Nov 2025 12:56:52 +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 AM3PEPF00009B9F.mail.protection.outlook.com (10.167.16.24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.7 via Frontend Transport; Tue, 25 Nov 2025 12:56:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=olpx5qrdSjGw5c0u0Q53+9IJV/FdOB6aXbz6/ZRPYei3z9wgqlRRGLkaDrqydKI9ldC4S065oLl95lAVN/qQVjqYBnwZ8zKhavH55bCUpe3aJ2QsQ8+3mqgpMWXlKbAMTYFpxui9De9aQs1/j2YLWyg/jYpv7ExKSLYQM1SLWzejM4tnkXPFOl739L+SyttsBDcaAiXOjTGt/tNFmcvXtIL320BzWJV/ERhtB7qcJta+tOW45pYvo+ZhozqTe9mrG8q9QXEjc/Q8ynuMn6oKkFB1uEIeqXLcKOrFupBAWRwkXnNUfc//njbnJb5EluuePf5scq8z1Nhdvw5tpP08QA== 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=qaqvFe4+UF2DN+CnWtGW3Pvp3scI3DabKQuzsiPEytc=; b=Z6U2JoE5hYS7FiicFtmkqd5jBRiN+miZVQT6sybdUGQbVZyz/CKofThmbeQER3qWD4luAe34PVBT8kReMs1nA3H4HwVsk/OYTkdMATYq7blmNOaLhybQICoz07eX6tzxRqhxUW2eVYFX3T5xC0E3tY15HV7w9J+fvvBBHT7n8w52lrPuBl6OlkhHzG3ybdUBWoT3tcR72dw9DPvLdozFbKLMz44NrpFNf/DrOWb3T6Rdn36gTVDk0vZpTE3h27894w+fMuAVu2qieE1ZvtH8Er+10ASE5AIcqyKTuH52lNlm772i/d5lpphsYeAqaztlm6Co8CpIxmNFmPFNoSJBvg== 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=qaqvFe4+UF2DN+CnWtGW3Pvp3scI3DabKQuzsiPEytc=; b=EoSqwJkRUPyE7M9z3rgG3itV5qUFdITGywHQVScyukJrwuVKrX0QduKoKtfcZ0/5pL0Nh/t2ZyfQntI4s8V9CJfy56/+aWE2N4K1VKhUh4cFankt5pqy5WkCyBL2OqrCDBxmbmDYMV5Ja+HPCb8r4GeOiO0MuY0uv5dRTJrCn2A= 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 DB3PR08MB8937.eurprd08.prod.outlook.com (2603:10a6:10:43c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:56:19 +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.9343.016; Tue, 25 Nov 2025 12:56:19 +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 v5 3/8] drm/panthor: Introduce panthor_pwr API and power control framework Date: Tue, 25 Nov 2025 12:55:43 +0000 Message-ID: <20251125125548.3282320-4-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251125125548.3282320-1-karunika.choo@arm.com> References: <20251125125548.3282320-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0105.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:191::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_|DB3PR08MB8937:EE_|AM3PEPF00009B9F:EE_|VI0PR08MB11450:EE_ X-MS-Office365-Filtering-Correlation-Id: cdfd83d0-9819-4b7b-bee0-08de2c221afb 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|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?6OZmgbagX5ebkEr0f0QWIf9U0r/gHcNx8I9++2+BY1GdcrWTFBzH6rgt7+rW?= =?us-ascii?Q?6vjqbGZ/iSmoT0uB0Av3WSqDF2cm7XBlU3/4647OPwLPndEKgmPEn3ZlA4D5?= =?us-ascii?Q?Uen44quTnQcKwbhaT5N4cqaGPsGenIxxmU+W6f09qQQ+JtX6b8KAuZ/A0Fi3?= =?us-ascii?Q?zxAUUh0GdO8QXdqO4AGoRAMiX2uSzSTybrt+sXUycQ5OswVp+M8R2SQwMp6Z?= =?us-ascii?Q?poePYXFzLoFgSHKKdRRDtS1V2jXJpcK5lPVFXfgwGTwQTskCps69cKaXq+A+?= =?us-ascii?Q?RDAFVVdyksP24i+r6RCEYD3qr5oW81wAuftBFiCCI/FgENg26dX0YzOua1a2?= =?us-ascii?Q?LKIso0jeAWvJRd2gigWqj/t+hSSte6DSA5ptV1ioPyFkNdP3XkQA8dYMcAyb?= =?us-ascii?Q?nRJVqPDjKh6Zo6M2Bfr9oAiwNTUsMrjCHmz/t40+AN9IR1vBGKT1USs5dEai?= =?us-ascii?Q?kh5vVwDnlr5lcGEf+MNBRicLf98idCumJBGsPkK1DttUa/5t6eeapfYeRgCe?= =?us-ascii?Q?w400b8pb4qrUmCGoMISBbKToNiOgQSBjn5msVZqI5RiB1OKiexTCUSYK3SX4?= =?us-ascii?Q?L8WwJTMBONdEKjC7MQrCMkBXeAd+P1ll05IR8hzoI/EOHH872w6ssMuBTHwS?= =?us-ascii?Q?O/Iv18pUxaAkSq8qde0ANHrQvEaxc/1rn/Iyq/mTAAr16kYQcO0STGssKj7s?= =?us-ascii?Q?FP5U0+R0wf2/S+24LumJH7Fl4hAjxv22SzV9iputVHs4/foLzLK729c0UpTC?= =?us-ascii?Q?+bTLm80FB2BNGi2yhIaHAr3fTL/KZjco7fJOkrWU/O6cBchued9ddasvnWB5?= =?us-ascii?Q?qhMaIfE/hyAeGWZ8MZmLdg3dcPQ+RaeR4k93Sow6BoAdAZwl7Jt0GqNYBHYB?= =?us-ascii?Q?FFXzInMDhitlX/zbCfVIY5QenDR7bOT9pjdMhzlYFqN1Cj9GDfMPbHJ0yt5U?= =?us-ascii?Q?dYEuDxaDraRhAeR2I0N8saDw8mcW4QamZ2BqKu62JQUFOAcvcF2bSxwJtxD0?= =?us-ascii?Q?TIvUHwm50/PAFhuw6ziOsAZMV5V80Bo+VIeF7J4SeOGT8pObOCwOjhatsPSy?= =?us-ascii?Q?iFbrj5gppVpBkzhhNPQFvjb8H2PO8p+CtwxBB13f477rjuKVW1RItSVSpny1?= =?us-ascii?Q?NsgrYmevBHSS26alhMnFBBmSDuZumm22gQq6FSeyMntpH9vsKep6BjL6eIAS?= =?us-ascii?Q?u6u+rpAg2h05hIvguU0FB+CsSJlxqv7TXAa0rdxctSEmbPMKH9X7ucIwt8cG?= =?us-ascii?Q?+gKnF4RuAhX+OdKGgVijy01gNOpCRR6035LxEaBzPngpNIqNmtDZsd8IAAmy?= =?us-ascii?Q?L8kYMTfHL0mhvCwgnFOOdS/Vn1/q7xLFvE5jqawF0Fg4Btfdek8IxFx4eS61?= =?us-ascii?Q?/qd4af67rLGgaveH5tEyrTiXRSsc3Ax5xSjPFDwCnb7k7Aj/nKeaxnmJioHL?= =?us-ascii?Q?WjxvGhVXYr4Y5a8Twjru0ptij3vGih/s?= 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)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8937 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM3PEPF00009B9F.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 728bcf40-2e38-4636-5abc-08de2c220746 X-Microsoft-Antispam: BCL:0;ARA:13230040|14060799003|36860700013|35042699022|376014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kWapF7ew5K+yLWE1+NEKWzH0tK/pY2l/z6BrDaMNfSlU8xmNbRkjsDp60QOL?= =?us-ascii?Q?kICaWBsVFpARgrWLCb7XE6bpYHaZwLZ6k9PIt7OpP8M9eevcRy9bTRTw3+9i?= =?us-ascii?Q?n1QjGCPcER30CJzCzW4yYHgleaihz97mlf7a8czuUxPU5jeY88vCe1FKFArh?= =?us-ascii?Q?ler5ImktaqUaOaqTfYeh3RbE7MSOHKK1Fp9J20c7gyWs5wCzmhLVtUm8a41e?= =?us-ascii?Q?b6cED/qMflBbRr2jlXfR2aHGJ9ogU4RLWDBr754ZX96p4rNTullNQQ+py4pO?= =?us-ascii?Q?dn1HDRARBKoTbXVgJP6fFPkHw1zcON+XlrlyOB5nMgQa1qdmeyPUD6Gk53qF?= =?us-ascii?Q?KGDwX6Iv9JHkuU4NWNuKQrOgTl/nXS1MS8dmXkIDqtzNmgTeEoGXHZPwAOwi?= =?us-ascii?Q?RAhfywVUeY/2UQ/zjLbnP5uUKvXbfYz15mhzL5+ER71yzuxpuu5JsBjZNokL?= =?us-ascii?Q?BxDhG3Fwi+CDuoTSwgm7qY+PcrY34bJsOSYQzofjBB+srk1+4BXfrdVogvk4?= =?us-ascii?Q?4qSi7BY8Db8a9zsgTjqY7tXXHNtO/aKoGAYtE3EdXY+nJt1sKN9dO+B10mOv?= =?us-ascii?Q?/yxb3efxT88GsVNfWq0xnvz2X0s+jO+sCl5OmshG0nwdyUIkJ0DHRBRJXmhx?= =?us-ascii?Q?NlLbMbjpfB0mJOuvDB6gL6jMM9Azhd7zK0KpaBjPd96m8HCz20tYrdl90zVJ?= =?us-ascii?Q?D4jRb+XW1HmWWzMC68u3N1exg1vS9pwyBZEWgaNQcZlvMZfq9/+/7aP9dTOE?= =?us-ascii?Q?6ijvTvB31zZs583wrbJ+iIKoRF7v5v5fwwPpCDWiT009QA4q4uJMJi+CfXz+?= =?us-ascii?Q?4OHyC2OSZRl7Bk7GV5ygKsew3UQLVLlKiNQKU94jZ2TCOKiGT26CVU0IsdkQ?= =?us-ascii?Q?2pbx65DqkFbkEW3IGesHs1l3d2tg9B5600j+aHf/rOR72sThSXOH5eGdDDvx?= =?us-ascii?Q?kDlTFNSK94xyWpcFTmpl1G0MC6YUZREiAMBDHwLaoz1ktQf0YHjX7lWhPYwa?= =?us-ascii?Q?eDKZ3u1c2fs7NKndhM2AKAoJ0wYeWz96b9XbToqR2gGHulYNSxb0F+zZoWiA?= =?us-ascii?Q?z1/0nP9e5fSXRf8CQ6FKJPVz/POR25jWlUYNqKRrn+T78XFpRQM/aTOJgE11?= =?us-ascii?Q?fBRU3M+ej6QWQ6Z4Ip7WsYY4lX5Jl1Vm+b7DBu/MmZZUX5npyfxIixyG7oey?= =?us-ascii?Q?mkJtB6tKeKn465ClF5Aaf3n9pRD2C0MRMKLsgkYkiI+BYai14gkPrTE3Kkdk?= =?us-ascii?Q?2lUqdClW2xwF+WVzy6ZLu6KkxcPq/cCNluZ3jgD8NIGA4uJX8UPukXKLdtCn?= =?us-ascii?Q?xtA85c52V8JsVIBEVn6Lr2US/NeXvd4EiVxK/sNtAsVxwAhKs/ExuFRHBn36?= =?us-ascii?Q?4W7SECNbNYe3BlbQkcnOagyiAjbiTizEuQ25Rgp7VpuTkc5Uj+GhCWOtdhZZ?= =?us-ascii?Q?Jqq0yRZQU46G7ZfwgGBsi5QnYADAhkVNIoj6g/jNpBeZfT6gbQn99Ko5qdpG?= =?us-ascii?Q?43HJdgfxJaCtruKt6kImODcZZECGCA5TVqtfnhn7T8S4uXxNUryke7r7lWJo?= =?us-ascii?Q?DJzSj3KpvvGpN9Zh09o=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)(14060799003)(36860700013)(35042699022)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2025 12:56:52.5314 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cdfd83d0-9819-4b7b-bee0-08de2c221afb 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: AM3PEPF00009B9F.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11450 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. Reviewed-by: Steven Price Signed-off-by: Karunika Choo --- v5: * Picked up R-b from Steve. 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 0ecf552caa5c..e133b1e0ad6d 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c @@ -21,6 +21,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" @@ -113,6 +114,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); @@ -268,10 +270,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; @@ -312,6 +318,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; @@ -465,6 +474,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); @@ -474,6 +484,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; } @@ -587,6 +598,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 f0b143732ea0..f35e52b9546a 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -29,6 +29,7 @@ struct panthor_job; struct panthor_mmu; struct panthor_fw; struct panthor_perfcnt; +struct panthor_pwr; struct panthor_vm; struct panthor_vm_pool; @@ -138,6 +139,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 8fa69f33e911..e47a89f24900 100644 --- a/drivers/gpu/drm/panthor/panthor_regs.h +++ b/drivers/gpu/drm/panthor/panthor_regs.h @@ -209,4 +209,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 Tue Dec 2 00:04:37 2025 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011062.outbound.protection.outlook.com [52.101.65.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 D1281321F48 for ; Tue, 25 Nov 2025 12:57:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.62 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075428; cv=fail; b=lEJVO/PpEfeII96AmqU5jlk1ilTGEJzpz9HEsrYQA7PPIwmeIQyfexrQScg6pdas/YvqRpjU4E2Dv0hj7+7qDzHQp25MPmbxAx2EIzAf8d8RHzkHMr2gT+afEuEaKg3GGB4hcPY4ylh+iAHzYtKcpX79gQEaUzKzwbv1yk4dnI0= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075428; c=relaxed/simple; bh=vmzkhu7ndOiwlP3s0J+sYeogzIHakYTyCXjujoLUgcI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SzMBB3HqjYlSbhx09/SzrZc82CB6PNPBcyPKoCVcbrmTOvjblOxFbKU68A1wvcP75dPFibCGlYplwQrE1Yh2opnK1gLV70lSFpDzl0462mWvqBSPyfZDY6ynblbqPqw2Qse+Df0yPfxZiHl6x4WezCiTlODhDWDeZtckyjXbk6I= 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=et1yQDr7; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=et1yQDr7; arc=fail smtp.client-ip=52.101.65.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="et1yQDr7"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="et1yQDr7" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=t5gPvopmEN7mubwt6x6OuTvJA2bE9nwiCvaEDSAie3jfeFkD4wO8BWaEytoO94uxfufgKW29iY2r8zCvDGHrUsRFE5sYqAQLf5dP9HBszpsQkxAhg7zOsgXozO2ByyNAtbkpnbqsapzSgn7cCk90vBcIuvmAnkpI9UggiWKWLDUb98cuseNtaHe/JdaVKDq3naeEYLlRCyDGskpj3+bIbS1HxLQTF46AZYUrupNR7gmcLjThFL84HZlqiKDhGtLN9GNEYswgEba522uLuJXpYjGdW/PLUBV2//U9T9y9ZgGCFh1/hqHKFUgwowoyueomwDD8ftXTVRSvQrMbDpMMZw== 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=bgR0SC+p8wI26428jHeUamdY/MeXuFxxJ2aFgLLwMoo=; b=LHOZHxZKGlkf01jSDNigHOORHTbT8J+k+9lxN4izhM8vxupGmGNxtO6aajPues62p9muM7TE3Z+WX2cgbZZdhatE8KU3hLUr63j1CBhZD5fA5IRsAbIY9yfLMgZuugFwKXqsOQibEA8Fn7WiQYUCru9ZnFxdAwWxWBRHNIaaeODd1cCYP+ydcgnE99yvay0/VRXbwxX3QuY8Qw0SuWXNhD5m9fW6MDTQWoh9nKp5Qgz/KU5XubUbxcgPsWMTCCwZkGRXyCcbn2+sSQwN+Ouew2U91pPhIaBwx6XhlIMF7tcqh8+uxf3MxZFZzgRbzbAUubayR5DZmaiYAZ5eccfd6g== 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=bgR0SC+p8wI26428jHeUamdY/MeXuFxxJ2aFgLLwMoo=; b=et1yQDr7h+zQvy2ocZxTXKKmrl05d3fiBzkla74jlZaPYRJqEwGoVpeJ4p9JKGMP2N3XhefJkxL7XRMQfjJ+S5cOUG+XVj49TxfAmbquI8AtmOIbvZHZNJ5fGE0YzlsVMQh077YRZgftwtSI0gwKprMlKCDrnBbkFeI5x5UBtD0= Received: from AM0PR10CA0056.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:150::36) by AS1PR08MB7474.eurprd08.prod.outlook.com (2603:10a6:20b:4de::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:56:58 +0000 Received: from AM3PEPF00009B9F.eurprd04.prod.outlook.com (2603:10a6:20b:150:cafe::c1) by AM0PR10CA0056.outlook.office365.com (2603:10a6:20b:150::36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9343.18 via Frontend Transport; Tue, 25 Nov 2025 12:56: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 AM3PEPF00009B9F.mail.protection.outlook.com (10.167.16.24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.7 via Frontend Transport; Tue, 25 Nov 2025 12:56:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=H3D2PfK1FghSSCqihvu3JAnhdSCcfz/Q0bsgZNzyjc3celOhFrt08xYCAQkrwmmaD1qEq5SyplDhm0BXptOLGoYO5zmEBqg19AxESohaQVyG7Bi7+3Fln26tMF7sNTZv1Ob5taczhBLot7V9pw0dUWVZ0vW0LSY2WtVDdn4v6Jn33c2qWCQAKnnmHHnVphohLqYoutCSghn0qtyczxqWOAxeDyTosxJcK/U8Kq8WkeJiKc6vPLq9PEE26slDFa7Wm8/m0hPtR2vyCKy2dE3sRcp/8yfB/GP+Gpx1fP7pGeMQmYYLcJJVf00VdlTz8qgU5ZU7QnOAtWon9vSwiPmXWQ== 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=bgR0SC+p8wI26428jHeUamdY/MeXuFxxJ2aFgLLwMoo=; b=Mt3zjrqbpgbVHfxxNIamfoy9j5z/qGsHGgX5tH3co21UlNyOvlJM/fcdTcuf0p0fkQA9I0PSa1C8a+PjaFZFfAQkivBylF4UF1xw/6s6NReSsMu3AyIn/lhHWEeSZghczr+pfZwg14dBBvmQ10p7NB3oGQhzCXsfhh1HLDaTAfh+C/1tyy0GZpC+nr01wAiTleHExtAy39mqsOrWlixVsNtnr/z+XgJ58wn32JsHmUXauLFID6zqgAtcAR5QhPYk8OYSXQ2JZz7cU0wFdGGtmnuwFFqI8vm2h05fZ20DMjESOntWrfnbCI2KNWaOy0NABYgbV5nX8LYNYY4s6J1Ldg== 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=bgR0SC+p8wI26428jHeUamdY/MeXuFxxJ2aFgLLwMoo=; b=et1yQDr7h+zQvy2ocZxTXKKmrl05d3fiBzkla74jlZaPYRJqEwGoVpeJ4p9JKGMP2N3XhefJkxL7XRMQfjJ+S5cOUG+XVj49TxfAmbquI8AtmOIbvZHZNJ5fGE0YzlsVMQh077YRZgftwtSI0gwKprMlKCDrnBbkFeI5x5UBtD0= 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 DB3PR08MB8937.eurprd08.prod.outlook.com (2603:10a6:10:43c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:56:25 +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.9343.016; Tue, 25 Nov 2025 12:56:25 +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 v5 4/8] drm/panthor: Implement L2 power on/off via PWR_CONTROL Date: Tue, 25 Nov 2025 12:55:44 +0000 Message-ID: <20251125125548.3282320-5-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251125125548.3282320-1-karunika.choo@arm.com> References: <20251125125548.3282320-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0634.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:294::9) 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_|DB3PR08MB8937:EE_|AM3PEPF00009B9F:EE_|AS1PR08MB7474:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c53f8ba-7a3a-48e8-8f2e-08de2c221e39 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|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?w5zVp9EPTRxEn4R770efBbn0eV7me/PdZFt+av/c0XO+qZIKqfY7PPeA/mis?= =?us-ascii?Q?2prbHuvd6znu7ewPRMlFs63WcWg4dpux2Z4SXF4bGumeT5JYAjRDXT9XzfIt?= =?us-ascii?Q?d7q9Z5G8O6dbXaSfseCZph6NmNGxqivQsLoT8nRHKrIXS5QqASiGOD3Sw6yT?= =?us-ascii?Q?gAqG37+5bimiJIdIUD3R8nXF8xScJquKA6FgklxVJti5ZSb/PhrmfMqEhOiD?= =?us-ascii?Q?x6eBR/gubtmq/R4T3ms2NJ09k4jS1rsCqb3+mur9H/qLA1sFWEWWu2C+gkw2?= =?us-ascii?Q?k5xnrTH+g+ZRNnJdatCe0qspdyFmyUEsAt2Snywl2sh1wmVUrqfIdWRcjqjs?= =?us-ascii?Q?0MbMIUe2KsTKMYLHkzbs0KS9dHi/cLxnhrHdnJbixnzU8bZ78J0Vdf3T6X4M?= =?us-ascii?Q?JF+7nITT84RxtCTrnsmVbqmdy8phckaUltBl4Q7gDBo5g9YRXyWn9Xie8lpt?= =?us-ascii?Q?Wlis5yHnPyeWxsdEVAigI8doI41h7NKCnvHO0xY4fmF3FsJ/s4Ft/++FeVYt?= =?us-ascii?Q?ZoAT2bfwm79UCGRAZrzjslRJGTfqNo6VMPakCzfX3b1nMUEdLwlufGriJRYq?= =?us-ascii?Q?ad2Joa3ULF7gsucQFv+1ilxNDazDfhswANeRWR/wzTNpcXmcBmIUVNxdyxrj?= =?us-ascii?Q?9NJ4u7rHkNIFcODHfZdbvf2M5zd/J+bg+ZXEA4SGpy1b+mFgvWDD/VEBVUmi?= =?us-ascii?Q?p3w6znty8PW4dllJyqgv8FTn+0qac/EvknI60X9ZB6tVzZqPSuxuuIFcgAR9?= =?us-ascii?Q?0pkcaP9nLj4iLt8MHWaZLe0FKcKRgWV+t3MlqQzfODTUhqsbGUS4XoXpHGdX?= =?us-ascii?Q?meL9tqyncSWqAxu/rscOJUAl5t85trTsSgXOACCOscBoRS1b6mpDYfaT4+sJ?= =?us-ascii?Q?wZzNQsNnmE3tQeLYi8f5UzC7/dvd4RLwiJ3KZ+EMqrbRxi5wPXd1j21uH+KX?= =?us-ascii?Q?C0Qkf7b0eo/vu0t5sPxPkXLn7BYPo+yOmU87YzCijhGQ10IFpDrHC1yOo3oo?= =?us-ascii?Q?DGQQQlAOeKkhJiMJJY/33YNj5OpYH5A3ZrAdVIR5X+3Q1qjmiuyN6Qqvot2N?= =?us-ascii?Q?7ydw27wB9m317Pc34TT91pslEcmDzeJJcOyUcAh/nxdJK/dcAGyqa+VDlatf?= =?us-ascii?Q?gVf/KdE+RSQMuzMbru7sVkPdETgNuBMHPNxem+xRVnqWQ2HI/b1CqVqHfwWC?= =?us-ascii?Q?We4Jh/LG/yd05mJ818mIY3035DWuxj6ZmQXNGgG1X/RNjXcHseDmEdi+GzNg?= =?us-ascii?Q?OaGmUOO8kytYA1j9A6CZl78CGv8rzgDYEWQAjfdj7i++mUGV7kH4iKHmhOGE?= =?us-ascii?Q?hJsv9tJyEF1AzBWlEEbr1DFc24LxV/982EAym2nDSm8d6xIMg520STaUMgIB?= =?us-ascii?Q?wUZnwCS6c3bj/gHFZhFQgRc/pgMlR2ucmWD4k3LEZqFzECmoC3hhz36QeDD3?= =?us-ascii?Q?uCEWyz+U0GBuNFYhHyflUhaojxoeuVPP?= 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)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8937 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM3PEPF00009B9F.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 2f593609-53ef-44bf-ec90-08de2c220a4b X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026|35042699022|14060799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?7Kbzc5oXcZ/gn48y6N37BaFvgqf9o+9qsYTEzVvNxSigKXatXk0jQVzdNSbH?= =?us-ascii?Q?fgYhx02ocgkz7Lpbu5Vl3k+GeQQBwi0oSrS0mS8aAlA7ftMOZX3XRAT0ytMo?= =?us-ascii?Q?6ObnVhSXpiFwUHsszX8xLyqhHRW9wTIt5V8CJa4+8vtTH2f2ufC4b0KJBP3B?= =?us-ascii?Q?3EP4Fn6zCOpAR+SsvR2qLavmlEGm9cgELhW+uoSasXXNSoE+oAkDrCCLGGH+?= =?us-ascii?Q?7LIg4dE48bZQ1Ys/bU46suGLhDG/YhQl72wsqXEYlyS//AtcKDEbsaQY8B8r?= =?us-ascii?Q?SJdIS6zsEnTk21Y4vSe6ILljav4rU01mpvBSlUe+hCtb/z7UYa3y338wA+Xr?= =?us-ascii?Q?/tAHWa9EC0qjMic0H6FIuyGGuuKZEfnfYaWRV4l5fUSUSiphdNUBgVDJ2rts?= =?us-ascii?Q?cHuDdHyujhZHAHMMrtVsEuS4qiSO/hsIIuRsgaP7Txqk3rajE1LExFQ182O1?= =?us-ascii?Q?tHk3PEjS/5G4OgmVwPdPxLj0UtkWdLgQUiRuTyW0X37wFXYM+0SdEE4kpWFD?= =?us-ascii?Q?pFe39MZk9tQhGgZSvLAjMFDvOo2SfhV3LbJ4SzotQpq0/SzUB9SpP5Xy3V0B?= =?us-ascii?Q?sWcu5O/SKOOC6e/FJg2oEEpNATgvONRCyY7i0Kx1GJnw4cQAaHHflObcnggc?= =?us-ascii?Q?Ui99Jx3Rjjq6yEqTWMoXdLwbzKd1xq2VFd2u6ozC0gnD9KhJTYi/1F8ZKxNe?= =?us-ascii?Q?i2VXRxz5ZyRERAJWkBwwSGD3pnsllvXyQevqGuNFJ8Mfhy8HNssj+LPAO3Is?= =?us-ascii?Q?C1vSvVj4umQtKx8UVamaZ519qq6XZCDLe/vs5GYYBv1a+yiI21k5wOo2WoVk?= =?us-ascii?Q?500Z8uDNa4tMtArwXb+BDTra8aPdL+LeZkbnPjmsOk2nL9luSQpDBew/JbZf?= =?us-ascii?Q?zrTQt22VrMQ+R2CJ1BTlZzBiWGq99cyNvxc1bv1Go1lTDIxuWGJnFn0f931E?= =?us-ascii?Q?3YlLlIeqDLrDdcCaKjXAPb3IOZpY1N+2BIzkFLub92kRvR/OAGcMshE+ypiB?= =?us-ascii?Q?Ms3ABYOxKgjsLNGeLAnckx5CWkGym4lkSsUM/F+MgmKH/eL2f761hyoSbGfG?= =?us-ascii?Q?/HOGBW9pqpf0VcwxYoltUqWYHvUVthHHvPA/n1VNRzGkAiAVt7olTZujdhdH?= =?us-ascii?Q?XAoC81YuYloCQLzqjvtwXtWM2PvVFy7M9ycKJ93G6tE7Jfow8T06SD60K/J9?= =?us-ascii?Q?prFSTt7GxM+CZFH3WoIJSZRip/D2R4rg3ERzlKWkerf73j/ietyF9BUZ5J9L?= =?us-ascii?Q?P3SztNm/vvXgCWyT6AHh3C2I/FBgT0/AophshUO8+f/l4bf8Ixh1QTs9qoRr?= =?us-ascii?Q?/lqKBdflwxBnb/38a9j0EhTt4SQ3QqCW8A3zSwNsdZJ4af28aYDMbxQUl5ZM?= =?us-ascii?Q?hNGnmHVhatylpLxquDZx0KfCks6qWa/O7y4AOFAOOgUT9sxrGvHjZ0V+UbDc?= =?us-ascii?Q?xyQ11DikPO5+JuZM3+qG9lD6JGYDDffhfURSOPti1E5zdIs1XYifiztBMrxm?= =?us-ascii?Q?k4IQAROYbbizOcnOFqNAxBwggOwyeYs3J73ilCv3aaZ0taqkZLJnNB2LetmL?= =?us-ascii?Q?lKtCzZo68ifTQjK1OoI=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)(376014)(82310400026)(35042699022)(14060799003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2025 12:56:57.9848 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8c53f8ba-7a3a-48e8-8f2e-08de2c221e39 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: AM3PEPF00009B9F.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7474 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 e47a89f24900..08bf06c452d6 100644 --- a/drivers/gpu/drm/panthor/panthor_regs.h +++ b/drivers/gpu/drm/panthor/panthor_regs.h @@ -74,6 +74,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 Tue Dec 2 00:04:37 2025 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011050.outbound.protection.outlook.com [40.107.130.50]) (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 47BA5321F42 for ; Tue, 25 Nov 2025 12:57:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.50 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075430; cv=fail; b=Za1EUoQjpH/NohEsa2miAATJOsCoNGIcztft/avAwYHJLS/3N5jCGJyaNoWjAtvI3jYv4POjiVFx8GVyGCDXB0DqYwigj1Grkv3wBubtjrvHuQQGvS3KJy860lL4OjSnLXeUvizdf6zgaEff5zchWA/EpZFRv4aNaFfjGMvHKMw= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075430; c=relaxed/simple; bh=PkdhUfaNCyNcVHHHiqJk8f7wQrOnYTzjyqvss49/5iM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=N8RUlQqlPlnA6b0L/PPBGSTfwuil/6DZlrFpVqrToXlb/9gxN6M+5avIJFttBbpVtwxsbFvO6BaGfcNlZ5+PI0W42bsA6n6bn53HfFakE2Lh3wafk3ioBzbd/ugCQ3u2MQbYktHi3PjaMuCHzz1HqNd4E3gZvwySho0h+lVgQqs= 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=QOQJ3QNq; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=QOQJ3QNq; arc=fail smtp.client-ip=40.107.130.50 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="QOQJ3QNq"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="QOQJ3QNq" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=eTwtvWDl4/547+e/KoDJtolaCpDdK7aKzvHiYu1qG6KW5wE8ZV3qaXHZRuR6XoXW7bvC67zRqH0bH3emW1ulHvlQmXK3WYWF85ruuwO+LU0gB8eHZtPJBGJhn86gzJb279/ANvlTAOx8B0fwN3MY4EuONFhBCioC8KA820eeWsIo5izA5QpGr6+Fv3GqvpHvoOVZT45sE2I8gbFsvUsm99SgViFKCf59xNm6Ch/X94wVavorc8j7a7OOaHch35ssV+3le/CQ2oeqcq6+o22LekKVObhD9xLAPjuoyczYOwmFdj9iX2Gl0vP5VZVcmsrh/2sJlGkXXsz5GE8dt9WKMA== 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=xA+SxZ9g+9OO11kMDnEz4pEyE5fbUsLJXOjifGQF5Qh2tdW5vEGT/ACrVobmocHssmH00RFPm5/BvWq2PDBg/+t+tabNDJhdNOWAHgVoTmhGw+fvV/EJjrUcvq5miKSLxg3ih//7/3nNGl7IloVsnrEE/Fc9RQB9+Z3MWkZD1dzBaZbmFZod9pcrZQ0XAAg0622HEq2yztiPVaDNyxO+rBIgMaJM4/sVERQSzwjWMJk3n8ux5effPDBYJiTSuwqv7OfYOuXSvTx0fYWIaIkdgQ4pa7Da8G9Qo+5xgU4zHJ2VSO6HJWqFN6p7qfX7njn/BvWEJ+6QqxfJuc57IyGzRQ== 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=QOQJ3QNqZQv6q/aIcTlIZtMDB3JD/qd+oHkvAFZ0zGuI0Jcyru4lf6n4XC+Y6OU8Mato2hFE5in32mYaUw3SZsdkc/AGhP1RJdgUG5VCjVE5Zp+Wgjn1zdj5E9epdJ93HlO7ukoR1XzVkCcWkdsiSCcFiMXvieADLxae/wrKO54= Received: from AS4P250CA0005.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:5df::16) by PA4PR08MB7482.eurprd08.prod.outlook.com (2603:10a6:102:2a6::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.14; Tue, 25 Nov 2025 12:57:02 +0000 Received: from AM4PEPF00025F96.EURPRD83.prod.outlook.com (2603:10a6:20b:5df:cafe::6c) by AS4P250CA0005.outlook.office365.com (2603:10a6:20b:5df::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.11 via Frontend Transport; Tue, 25 Nov 2025 12:57: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 AM4PEPF00025F96.mail.protection.outlook.com (10.167.16.5) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9388.0 via Frontend Transport; Tue, 25 Nov 2025 12:57:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pAYwUofXA1AcddeWu/jYXTN+fB11nslspW3aLvJlTT0OF2qHC1ahc96p2DvqELdwazXUHrr5Kxl7swboz6whFPMtBjqKRpcydANEy1b5d1SoPveYrn7rF1ZBC3fkODz/Vcguwje2/NgI4uJ2JRFnyEbVP4G0UGvvSbuulaDeH0tN6IliH5JbZ7R0N9tqL7j5pEe528IgfOJ9FPGlwNa9Lq0qvJkBELb1ol9vrkH/W+qvP4/r+d3WRUVHDnWEsuPocruJFKv94rf7JSiqUrx8Bqs1S4ujhL+Sm0n/68vOVmXS0FQawFjtpgFhH/N3JNGsFcefryw7frL0S9s55wyvwQ== 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=dlGaHpdJlmHFBlnZzvotsKBd2b0sDdSzVZ8dQtZYmgtpqZUllxlJj+aj6yH0XZ6g3iSywSzbwc0nCW8b1+itMShieuQPBkoKkS+P8zG4lUYJdcSuCCfoEhpnL3CmrV5sutnI+Rz8pnK0N5VAhzYilmZmxMUbNB3ButqzfFCihl6aOGiizcWgu+sWc+5LoB4bAvpKKWm7ADyO69zfuSUwo5+2nkPTxZDPiaMZE/X6GWxqV+VpLB2eDa0sgwG6HtH4p2XPbwC5zMSrcR7nEv45ZCFTqAOJ399EeAIr1ZnUpZ3a70Jwnp7WGssbvx7yFHYRk+qW9JDpwjstEbq4ZRIWww== 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=QOQJ3QNqZQv6q/aIcTlIZtMDB3JD/qd+oHkvAFZ0zGuI0Jcyru4lf6n4XC+Y6OU8Mato2hFE5in32mYaUw3SZsdkc/AGhP1RJdgUG5VCjVE5Zp+Wgjn1zdj5E9epdJ93HlO7ukoR1XzVkCcWkdsiSCcFiMXvieADLxae/wrKO54= 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 DB3PR08MB8937.eurprd08.prod.outlook.com (2603:10a6:10:43c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:56:29 +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.9343.016; Tue, 25 Nov 2025 12:56:29 +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 v5 5/8] drm/panthor: Implement soft reset via PWR_CONTROL Date: Tue, 25 Nov 2025 12:55:45 +0000 Message-ID: <20251125125548.3282320-6-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251125125548.3282320-1-karunika.choo@arm.com> References: <20251125125548.3282320-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0112.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c3::15) 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_|DB3PR08MB8937:EE_|AM4PEPF00025F96:EE_|PA4PR08MB7482:EE_ X-MS-Office365-Filtering-Correlation-Id: feb28709-baa7-489b-fc0f-08de2c222063 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|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?49PPti3nfPlz9o700nCik9vOx6SKFYh22thTvKzLTO34pT0jNOpMxu7c6NP1?= =?us-ascii?Q?/vz4ktOLvwqv/47g7ieQQL1s006GENofxT9kNUjXtv4DrBcUUzX9x41oS8Gd?= =?us-ascii?Q?wDRG7C/H6yvC/mCkdmUW4QmpjCIHkyI4sput9ihZ9/EqibnQmoh+X0pM8oQS?= =?us-ascii?Q?jmUDhpbweWKtThe8G5NJ+8ipgwnWUM12AUYQaTnGcmrycB5CuDpxuc4oCJ3M?= =?us-ascii?Q?Vj1Sy5JabkOhOMwZO26zwOpBxi8s9jIgUqtJCRG/tw3JvPGnaMzvhHTaJUPI?= =?us-ascii?Q?QNcJNs/k8UuUCdBfRHu/BESW231o4NMXDLvo2OUdAmqIS4oTvz/g9XKq3D0w?= =?us-ascii?Q?d0i04J6pyd7+Io3Cnuvl9aCQ9WXjZi+IVn28vhumDVYp77X/prrWIGQscmOW?= =?us-ascii?Q?yuncYOHvRPRDepgTm3YcuPWi40uPo+n6hp+ONQsLpJBNYW/FVQEYqsgBZ69h?= =?us-ascii?Q?vAXdpuAFrP3EweS+wd7bZTLyYXiFujtTEf1pYtVFaSrtXW2gAh6u9N8NN3lu?= =?us-ascii?Q?r/68nSWSHj1VB0CtQCyKTll0GnRkBjclph6pfLxb/sQtsa0KQU69xl0eOH7+?= =?us-ascii?Q?2KYSrqBUx/r7k1ALyQ2xE4FbChnS/ce6vFDNu8MdjCqbLjBsQwGix4FK5oRJ?= =?us-ascii?Q?wNSzQycCUCzesm5WytmTRZOef0JXHyaMtKFHCouHg7bg0U5WRIileJUQ4JN1?= =?us-ascii?Q?bP92g4qvKOloi0MgAR+bDoW06dd/WTmRwwtGFI8C7ykfIA+NyRi55S9+FUSM?= =?us-ascii?Q?JFdccwfBCGfPr3VbtzN8C7UkxzgPzch8X93gIq2ppG1UI8G01kFliIYaiFPm?= =?us-ascii?Q?/fGilZxqT9IvGSq7SVKtL93/gaygPfBxnhsaF5JAn7Xrm/aNeHdGArPb/7wd?= =?us-ascii?Q?e7B3YXjdTxy/AMcWGqd5pjgy8tfBXvcs7hcOrpU18LvXGjoq2Cpirs+2z7Lc?= =?us-ascii?Q?dNryWSO6LYJTAdc0uXHcLrW0w/CkF491keXIR3eKmQE00kHzwYL82nvjME9+?= =?us-ascii?Q?LlFx8vwuIMHzsDYs9Uc4LEd9HBehco6sIczjybeM5n3cW4mKj8xnrV5VSfSv?= =?us-ascii?Q?ldigjqcKfcSgUEBQLXYv4IHl+7LgTOXOxotr+mZNYflaV/qbC6X2J1gwe3Gt?= =?us-ascii?Q?oDzDYSruB+NrzZnDhqWosK40tylEJiBE5izwEfknVPzyE5NVWTT3ARrSCoPF?= =?us-ascii?Q?nFDvlb8VF43631/om1qVGJNmloF3L3JFGM/66Lieem9zIa/IH1P8kGVoAwV2?= =?us-ascii?Q?OY78RQKeMTr7eYm0/T5zRoS/cHYjQ4vme744jMQyxE1pZMnrfLdx9EC90T7B?= =?us-ascii?Q?hYGsKlo+6EbKGHFR7JNiDlrSUW1+MGAwFOnNmired/VgU5F/d+N6rQbonw2U?= =?us-ascii?Q?2PcyJbttmKJNwdX7+a4zkKmxBrRtxSGA4KwEt/eU9kPi/JLUexLqb+U8wSS0?= =?us-ascii?Q?ugfvwWYP45sWrDcSCKxeebkHwzSb36yJ?= 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)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8937 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00025F96.EURPRD83.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 9ee131c1-965a-4acc-63f2-08de2c220cd1 X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|1800799024|82310400026|376014|36860700013|14060799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?b4F8rfwMF2QjjymWsh/2zbxyMuv/VhnUWWRMIPRABpiQYIjzFw1FgDN/DTqL?= =?us-ascii?Q?RpBTZKz5goeJeG4P8lBW2ZgaQ3tsTHC5HsR+TrjvheiW552lkvXxQy2+LslZ?= =?us-ascii?Q?MkY3Dhg6d1oGSl6kcuJ9EGcJ9ek7ruyS3wDqjxDP+79/lmzUXuXmpw9mEjQz?= =?us-ascii?Q?LIJ6qkkhVJUsGhKjqyl2W+fM/nY0qcEmzSMM9avRDMGG19W856V9+lVgxIRD?= =?us-ascii?Q?kxCQinC6Oyl3TnnmpsHIIKA+evQ/BdPrcof1TNcMO8TMZ9EX6Q5ROzA4TZSf?= =?us-ascii?Q?K4GpepujC0Od5Lq2mjJgR0z7zlu6yXztI+2Lr/wkkvU/r4B05WcJ52bgKYGV?= =?us-ascii?Q?773pXlr0Yjvw6paljMh3iyB90E3Z+JqKrMslLkTInsRjQE0rxdctw6okDoTU?= =?us-ascii?Q?ZeZnjZ4KR5QiTfUprg+qHbWAciho83ZVCsTbwG566T4XWOpwbk3iOiDMrmwU?= =?us-ascii?Q?sWaBKjw+lXl3XeQgGD0HIhSetDzzWyLrN7LbmysHTwJD2FaOp6Vy3AbqS95n?= =?us-ascii?Q?9NCD5m3BpBvz/GXJ5LWs61Iha6FsrM8nENLpxiHR289ooFOSVzJhEPOQzwD+?= =?us-ascii?Q?wnYMrK1Pl++IwiDQNwe9ajBSoN4TryaYskvXnN2LCvVY9HzQo0Kql3rlWapG?= =?us-ascii?Q?A2hpK6lCYgfNKOQki48YQvf/WXVSggGwRvrVsMBKy788bTKoQOHbVbtFHQ0r?= =?us-ascii?Q?jtnOdz/E3T3IfZgEk+Q3MpbyLeR3OOdJQZt2SQJRtEl/N1YIpFw4sEAiPN+/?= =?us-ascii?Q?t7rdz44C7GAVgZ4xCuNVFVz3r6YFjg3hLXL8g/Q+yGBBD7HVHcFfJiXDCTIa?= =?us-ascii?Q?SZSFP4LREI1rxa4S9qQzwQmQ9w3kFir25HZApFln+Bbe4CA3vEv5O5I2rCLF?= =?us-ascii?Q?zI/A4YY1wR37TBzqoD8wi7ig0MWlVhkl3IrZsbLZz2zFCOMp/2zHhUZVfc42?= =?us-ascii?Q?innHXawzyjeFLzV3aloEDqm7ODXLIo2UsbGU5iZYtMWCmeHTkRD6nU9AcUxw?= =?us-ascii?Q?cO3QzHePO3ZolexUZezfWG3bHYiR0UtBrwQ05VDepeueKs1h4kc23C+rcUpi?= =?us-ascii?Q?Mw4QxWbUtUs75nere+z8/YYpaiwBVC/7v3PgNZA+G30N3Q+jCUY6op/rXENp?= =?us-ascii?Q?JA74gx/es33IsM1gJ99BZAs5Uq7m5RKGZR9mXExsNIPfcMMlNYRLrr3hEMWu?= =?us-ascii?Q?Ray7yxceEjkfLkoo8IyOw5q9rWluySujMD9cniRS3kcFR8WHYVZseVa2XJX3?= =?us-ascii?Q?KHzGiod1hFRg7nHfHKAJO1wPjOf9t3/94efEpa6BelxL+1VWWUmTXIZ/0rqc?= =?us-ascii?Q?E/IPJSbLpDdyGaFYrViRvRmTKXssIp1Dkg3zVly7yUJMneW6rG48pBIvARo6?= =?us-ascii?Q?qXn3IXtzfBwRJQBg+ipbqOzjsesXix7nBxYYRa6ZYzjxGPSeO4ET/L9lEfZh?= =?us-ascii?Q?xvkDrgEtoKuO0sXG0cqcen4axPPviR87pRVU3na3cLAGM9dHPEXVm0spnERZ?= =?us-ascii?Q?4Zh3NGSAnedjRn17yyeWtbs1J86k0JkaFg60P9oFmSTjKYj+1R24rDsp/KAk?= =?us-ascii?Q?jWBT7cT53zeBuYfeXXU=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)(1800799024)(82310400026)(376014)(36860700013)(14060799003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2025 12:57:01.6274 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: feb28709-baa7-489b-fc0f-08de2c222063 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: AM4PEPF00025F96.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB7482 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 Tue Dec 2 00:04:37 2025 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010047.outbound.protection.outlook.com [52.101.84.47]) (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 5C4D432255D for ; Tue, 25 Nov 2025 12:57:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.47 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075431; cv=fail; b=f+G/PamtcdCF3K165bUorUV5VBkrF81nEx5fD7MH464br2kOtGUKrXoPqYKkvrODOItzEkvSTu1lqCbYJQlE2rX59M/OSMXrA56jCWp3xKZjIzwHPSAYdP6lTIKhgQwgZfyj/KtxNzvc54243H5kWke/c4fULOp+CH9EOG3bdGA= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075431; c=relaxed/simple; bh=sz9tkzYSGeaMrEmj/j0A/LganmlbRyD0MWIn+zCsQHM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=IbQ9xLWMVbvabdulydgWXNZPRrqDPJ1hXE/sV8ycv5AAAE3DWwhg3KT0GheMROEcLsNBQOq+pb4ud2sijfDM5ERmY7xbucJuxCfueQnY3DITZcE+WcUwIp4PiNMSW+EgcjM4KpFGix3a2C6ODNz5MesVIMmymNLWGeDh2ayvM9Y= 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=E5T64jzO; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=E5T64jzO; arc=fail smtp.client-ip=52.101.84.47 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="E5T64jzO"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="E5T64jzO" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=vCZclGIUMug3awm8wIzGbrx9dExRInnun9v+DHAyOJPtzmeAZEhHiO4vJXZjVTK5H4dN9hS7WlzDNVAofCNb6Jx1TO/Vu0F/aVMVbPQuS7yFmWH40pqhnv+nj9gOc48HI7x0+OMzeVDZAazLKBUnuf1uCo6sUaRNV9tRWiISvrVEukjBHiY7jcF8EqN2gFwMi8PMQ+IsJmRtUzPEcLgtOR7SLZp73IyTk6hOXsSdwGKxFVHgXimOgY8iwmPH/SA/WHMGP/g0yt6SU4pB7czkxzdwcBX+e8d7i/3SlsfigLTgQjg5hrZOXQxuuTcrnxjyEpKkZdUBxpMZQkvoL1X7Tw== 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=dpTkGTjR1iA4L6AoE7Ljy8734+Z4IVx3PHkDNwRgWpc=; b=UcDbVixg4wYm/gdHoFjI4UVDxi+pJBV3wi70EqSyMV+Ud3w18gmQXm+h+/atWjrZBXe8/9JPQgKE6aEo9MsefuddRJhaFyGCJpTBGiQF/VztYylc898v/0TK/xi+M51KfX3cu/kT/Lu5DlyZ86yrJlSCm8tPqXoMLnwik5In8mB1QfHEULzdYLeuI3bCplhyd5qh8TMadMjiCVUA2vmek7uG6MwoisurcpgFgJR4ysrXwvfqkNKAuHAFXKkray+B7SfP5+FQqn8rBZv2nCEuHGG9Kqxn/lO5t/GoViCYBx2E//YsYPEvY8cn3MpnQgrlrGAJcBQohjLjyru4PLxabg== 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=dpTkGTjR1iA4L6AoE7Ljy8734+Z4IVx3PHkDNwRgWpc=; b=E5T64jzOvQF+I01FED0aB+WSBKfoMbDx2paw+n9h4wbnoUOjC5UDSgIV5yI2TyflLoNl+MhcQHb3PXLWvuJALbywptUQJb69z/xI0/h9HyJMdw9cJJ9X3HGu6Q45vWRh+uqlA7FcpoOp2lZL9Lh0aYO+GNaiOfP10qfYNT9M8N8= Received: from DB8PR04CA0021.eurprd04.prod.outlook.com (2603:10a6:10:110::31) by AS8PR08MB6311.eurprd08.prod.outlook.com (2603:10a6:20b:290::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:57:04 +0000 Received: from DU6PEPF0000A7E1.eurprd02.prod.outlook.com (2603:10a6:10:110:cafe::46) by DB8PR04CA0021.outlook.office365.com (2603:10a6:10:110::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.12 via Frontend Transport; Tue, 25 Nov 2025 12:57:04 +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 DU6PEPF0000A7E1.mail.protection.outlook.com (10.167.8.40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.7 via Frontend Transport; Tue, 25 Nov 2025 12:57:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xWQePck2CE/ZuXXDa9Brv6hCAdS/7G7WyQOyvinfvLCKptN3cWMF/0lOrIAGejdBLH1EVW/C6DZVEFt7osdRq9reQVR2LNQZkTqu4zmVKlr507vYxKjFMOrS39EBqM4rb3F2PwL343QAz6lzDht19Q2TPkV2qoeOhUobPLHOjuSal+8s7xxtXrU1uh3klLFAhoNaTGtCWUsMdmztxBC+64gcjtX8uWQ15YLyZnp+hKXNTxoGwkz6FSbGoN6PlsW7rNWx1NcZ+sCV13VV3tuR+StPl54WOkxT8XJ7UqZs8fWCaFSXHpWOAjc8RLP/cogo+yWor6r51znW1PM7gAvpfQ== 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=dpTkGTjR1iA4L6AoE7Ljy8734+Z4IVx3PHkDNwRgWpc=; b=zKpj0o9QGezREVUv3+7le3s8ZocL933M145AZCutkcBH0dB4RdJ2Na6MwtkOkNVFN7Nt2ZMq9p2Zjdupofuc6sT8z+ZbDG9+xOSmzc0T/nBh723lLe5CiZfoGMRXgUOfeM8jvq3NRwazJbuP+HX+7iEFNMT4y3CVj7hOmhmVsP2E2b6v5NgCIf5xNMytfTFqiiGQaOK5ZVToS8na92ADYyPlNRHh44dqeZh1svlpUv6JqXxqBhBbF7i4H0IQXGIEXhJMSfxytgqMjZY7UbDSkE/ZeYpzZ5FMZHdtr2vpPYzGIpaPTq3BSu7EDLSamSUZJ1kdss43FGA6MpjLOh+vZw== 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=dpTkGTjR1iA4L6AoE7Ljy8734+Z4IVx3PHkDNwRgWpc=; b=E5T64jzOvQF+I01FED0aB+WSBKfoMbDx2paw+n9h4wbnoUOjC5UDSgIV5yI2TyflLoNl+MhcQHb3PXLWvuJALbywptUQJb69z/xI0/h9HyJMdw9cJJ9X3HGu6Q45vWRh+uqlA7FcpoOp2lZL9Lh0aYO+GNaiOfP10qfYNT9M8N8= 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 DB3PR08MB8937.eurprd08.prod.outlook.com (2603:10a6:10:43c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:56:32 +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.9343.016; Tue, 25 Nov 2025 12:56:31 +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 v5 6/8] drm/panthor: Support GLB_REQ.STATE field for Mali-G1 GPUs Date: Tue, 25 Nov 2025 12:55:46 +0000 Message-ID: <20251125125548.3282320-7-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251125125548.3282320-1-karunika.choo@arm.com> References: <20251125125548.3282320-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0409.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:189::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_|DB3PR08MB8937:EE_|DU6PEPF0000A7E1:EE_|AS8PR08MB6311:EE_ X-MS-Office365-Filtering-Correlation-Id: 4dac8019-04db-47d9-ec70-08de2c2221e9 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|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?QLqSWqsP1UhllFefWwTAi0JxhRBo7/ALLdHN51UTToEtlQ7C1XENwgFo89Us?= =?us-ascii?Q?26iDHDxXU5SPwxO62wsFa3sIIfPf4mOOY3pzhxly4KwNHfFS+U1SeCtNHoMc?= =?us-ascii?Q?tjvgkfuI5ITfeQZKAQ0zNWc+ZnRbSQSaLXb3Sfj1oC/E9X/VK7usXouWMCKH?= =?us-ascii?Q?hbb5qd3QlliVl4hvJp15l9PPOEhcq5SPYxRWXHzSI+VAJZZpLuHPiUWTjEGF?= =?us-ascii?Q?eCBgCJJ6NczY5H1UxT/mxcnjA9wxzgKcWiTq9phqRQP6l2bvXq/tKAy2Wcur?= =?us-ascii?Q?xcNvJ1fs55Kq69oeo+fCYAiOewaK+7bL5pKQBIms3Fbc6WeAcp5B5ptgwqJZ?= =?us-ascii?Q?BuWQRmPk6HzY+VAa0+fjKEBC189nWJYz4HiUecA90Bg7ytbYFQRmu0DibEZx?= =?us-ascii?Q?qk4OEbskhLckC7WKNnGRO9z3qVu4IIBuixTWBF0ma8v/zWT4p0mYdQM1nNyn?= =?us-ascii?Q?oTZpLlMpH+UaqjqqgIILMIbM497Ds0nwqVra0apPUfj4z26nHELGiP46iZVs?= =?us-ascii?Q?2xqyAhvJz29MzRQGNKDUTzJ5K2Lu5MZvhTFiI4C1b1Nw1exGw548w5t8s4Gi?= =?us-ascii?Q?wgrasGvv1LEQ7FKquyMGfWaj4VihN64CLeBvnA9CPft5gqOcvLHZiyGD88Cc?= =?us-ascii?Q?Ykh1EXnWxWLotpfaegLFVGYR1kafJWwCUgcNuHYHtyohsIayc/1t8PIcq6jN?= =?us-ascii?Q?GpoEeJP5/9dnwFBbMtXOIftMdfsC/cDy+Cdt3AgH/d7e0vj4wCYqa5ldiZPj?= =?us-ascii?Q?0+dk88MEKqvI9ATRgSdSEwNqsE20qqLP3XkyL5ODim/0sJUL3SoSPOXKFYuT?= =?us-ascii?Q?cTeHb2b/A6wxGEMK8nbwM2qrD7lJtdDulao5Ntx/g2n1Iq3AhngBIkgCi0rB?= =?us-ascii?Q?/A3udqcnLZ/aOYbtTd2shQVX7RCHoPYakOSDiCx/mDqKWdVUVsv0+o1N+Q3M?= =?us-ascii?Q?WmTEEEFMu4RBWJYBZMK+7fRgKK74Hsjzcm3INxCFdsUYYyWXjtQcay6MV/l5?= =?us-ascii?Q?R38Kz4ldkfeo3bf8LaA14K/PntdJnB51qiW7LVy3QHBicn8NdZWwQuDX/hrN?= =?us-ascii?Q?1A42wB3dqXDozQTdp4hef6+B6nJTOjSu6R+ib/ijaJxQhkOnJPOsCz7EygbO?= =?us-ascii?Q?9ctb8DSPXHPaVq54G1M8x1yxPkHhOBNngFoQMZqx/9sfPvtuDd6HlIn38/Vx?= =?us-ascii?Q?caAkmb9gtXlia2nc7ruAPLkQVi02W/dI6bRyeZ0FtGXBzWLWnrykwhbsRx/i?= =?us-ascii?Q?4oPCE1ewABrpC6u+gw/ABKLfZ1V0Nxdlsu4V4FfNAQRLXkqBLjrAgn7+2pm3?= =?us-ascii?Q?oXg0XmolcOnr3P0s9wKGKwRaVIhq6zwRRW2eXTzj1WqJfkCggtaNWmgyUx5A?= =?us-ascii?Q?rBvsAFdEuo84lwWHYOdNKRnitSEcc3P8LFx4BayTY5AwyLgef5enBDDGbgYx?= =?us-ascii?Q?EK2JF5gtJnDIqvRMeAOUJ/snGD1U7yzH?= 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)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8937 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000A7E1.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 69c13119-51c0-4519-4bcc-08de2c220e7c X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|35042699022|376014|1800799024|36860700013|14060799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SH9AMWA/+MBCRvF+1nxqM6EYdTAi0gAR8iPcnPo0c4fYWUdEfMHQjclk9dC3?= =?us-ascii?Q?dUKB6KWyMyOc7TG1QXH4/AOU8ENOT+OHhlTVOjYmZKTghRM6+CtIXJ7NebXY?= =?us-ascii?Q?bch++nM7M8oKMeSCY5iazzNX8WhnC3w4ljTcIRJwZaMrwY4xl4IFobhEYoc6?= =?us-ascii?Q?gLw+S1n+zyVOCSC5pv9VbcUKhe3GoQWCPfax+flxwQTqnUoNW9iGApL5nNhK?= =?us-ascii?Q?YOoGu/T3X2+TYpw84IoUyAqjRUAGUfFSj8Qn35BGyWXdozRfgsFzPL30enBf?= =?us-ascii?Q?xOpSdh/YWR5ppxz/KIGaER8JkbeRA6bpMgRB3yCcJjOfnsO5UmXgtgkQTDuS?= =?us-ascii?Q?udfsUknWo3fUNAG401TQAkL1jtoociNQTw1RNa4nTthbnxQjQGUjW9leqyU3?= =?us-ascii?Q?FDV+GLYVQObYhZdlyitdAIzqFpABDNdCj/ZhHpWCIMnkrNJpKSlzHxmXD7n5?= =?us-ascii?Q?E7+UayD5B0FAXcocl87Q+XQbnIHhFELUw9Wuu/KeAOHRGVGfnwdknkNiqzmN?= =?us-ascii?Q?PF+fB00jUjWMygEbNkrWYcSWw55N7Gj2VPSeNepQRxbTCSvfCWbgWVoVjNQ+?= =?us-ascii?Q?u8lB9rX+chlS9I3iux8bkWSl77IQrVjEkPiDBJ1xHFgSq+4hNX+e88nlSNto?= =?us-ascii?Q?Xag1x3wIz3GpurvI6SlGeZUTQ1kRIdMJUAIXeLkzKcqw5B9L1LwOIAQ6LKgL?= =?us-ascii?Q?Sf0jWMATngLzqtb1wLgHygGC48pdw9mfPji3oShl9xbb/s7hBm0vdXlkYA8m?= =?us-ascii?Q?FxvjJDyn1rVK/XPzCHGmgDKimbqR1yNUuNCzraI4fgk4uM9lp1as1wRRXPXw?= =?us-ascii?Q?bpJWMCMfkV8Dc26SbMamLTkMgA76FkWuU01jlgzHbmFZ2WZQlmEApeTgBgVq?= =?us-ascii?Q?jx5mqAf9ZnIvSSuKG0QENKxsv/IWGA3sRi8gIelXdZAukW4/gGGplQ/FpO7y?= =?us-ascii?Q?xKWW+2diCkUrrQ4GTmCEA4o4V52bLMSkznNgRM8spwE4fLwVw7Jb5BJwKDMv?= =?us-ascii?Q?IZat4lyR8q83LcjSpw239IDZeeWtswXsq7TaIvQFFfuO1CNpLXNIA3f4wuVj?= =?us-ascii?Q?8g6mxEJGPOfNSeIcKXu8fF8RuLj/8m7McP/R/aIiS2rnDUV1JA0+M9P3cTx+?= =?us-ascii?Q?7z8o49ulsiEpnoWTBdScPBrongv6tekq/dSx+aHiN8IPKYFSWRKga3m83spy?= =?us-ascii?Q?Xa9+jdC+j32kD2PCvtZOIAcF2RGKJRv1wx3UAdWecClkqUZ8yXLMGobhkh3I?= =?us-ascii?Q?1pWGL637ifgHlxcxY1YRFHq/ZAkNS0GciiJ9IGc0fHZsqvAZBiPWsDfRy/ID?= =?us-ascii?Q?jDuj3g5IRWbotR9wrnH4Ljk/oNJvIqTuG/TmD7rKPHSxctc94KD2wJG2v2wO?= =?us-ascii?Q?PejyEGozTaH6lUUJv+Twh/Z+/IW7G/gQ7HHD0ISCzsJlgLruEsz5lgblhhY/?= =?us-ascii?Q?rzUrju/aEkNrSyTnUevS7YGWO7zauNRft1fI198Gjui/d7ezeetGJPGzbQf8?= =?us-ascii?Q?9v+C0JfKz5FCIdqbII6aTEUYZ5CrbozZ/4UQlFSaL9Ifr8u+Za1HBGU9Uzmk?= =?us-ascii?Q?PTpUO2VNsPKgg+p8BCQ=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)(376014)(1800799024)(36860700013)(14060799003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2025 12:57:04.1558 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4dac8019-04db-47d9-ec70-08de2c2221e9 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: DU6PEPF0000A7E1.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6311 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 027c4529f3f2..6b89821ff1dd 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -34,6 +34,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. @@ -318,6 +319,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. @@ -997,6 +1005,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 | @@ -1070,6 +1081,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. @@ -1086,19 +1145,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); panthor_fw_stop(ptdev); @@ -1127,14 +1180,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); @@ -1172,6 +1225,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 Tue Dec 2 00:04:37 2025 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013066.outbound.protection.outlook.com [40.107.162.66]) (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 44A643233F5 for ; Tue, 25 Nov 2025 12:57:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.66 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075436; cv=fail; b=cGr0soLeWVQo9L8HkNQQZKP7toF3VG1CTQyY9+o2nT9p54NQSfP9wN2pGw5RsT9K0+3NPOH+dBwvHqR3G66iWmLeDJWJrKcl2QoeEYLAv5qei503PkM9tiLdP2ZM53Gu4X3wPg5EEqd4SH6H+gigRFuCJgBVLZkXIS+lkqW5U4Y= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075436; c=relaxed/simple; bh=DhvR9fGzMWAkCGE139z/DxnGSS6B7QsSy9CYbbJxhqw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Uv9pUr+nKtwY3eNmb/4QvJLzv4btBafN6tTqsOCYO5+zhzSjLhzAwa9V1MhqLy0woTo42aPhAtwIVk9BbIqngIVyHIuOSQw73WDvJdZ6kYbBtIBt5HKWTfJB84QYdLNzlyGBpsip5MojOEA8S9pQDrQ9+YcVu0zZ7RGuKUtIFy8= 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=Npi/i4wb; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Npi/i4wb; arc=fail smtp.client-ip=40.107.162.66 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="Npi/i4wb"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Npi/i4wb" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=yh9PQl5BZYdBbeOR18uLZKpcFJVj05LzLprS29w4dRLaJm3Rwody7Rky9DujF2gG251VF7SlRnQjgQZSBuacWWAmq1wWFjhKtmEPWwYdd3778xm+sX2M0xU/uDL8FZDaAn1AjG23Udg/lHYlNmppB8U+2Wx9qNccALfJwpEU4Wszh7tHQ6jjFyDh3pNYMLYZfvzD+KXTRKHc/wRejIBSEw/Clej4xMR5qYew7ZVKKxKhdTOVi1dtjovp00WUXl4UGumns5Hb3RgQCgdfj2PDGd3blK9Bo2csBCBWnPXAptnPkOwln8FcnzxoNF3vhpkVPtLMwWHvWRDEYhT3z9bilw== 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=r/B4pcF678qCCbgB91CdC8x2ZMTKOsMfMm3xNQcpdcc=; b=Q9ft8FZJhJ/7Xitg7odRjLOlAW6K1PWBXHnOWcmWkLlXnaqmrhJQepPdOkyfNZqSng+zfMrx3SWQpIzDvBQOqk38TAkwcOTF9cWTaVzoL9iElsdUS+/Ly3H36o2sIezn9zhi1p2srF3ZVtdDW3ZLPVsyQW9hyMwPhFBqIkL7PdIq0p6XG6zkcUMy+vKYA1/WGg+EyYD59cMCwLBJBcOZPU3+TKqpO4BPNpva5oBUxcua9GwMQ0w93L1FKgxcFmDp8S/JfiRtRWGjh6kTC6hvO8cOy1EcpiXPYGNmZNQGxzujhWBY4vY3PbUc0jsKRK0r91CvGzIQkbbwYJ8ZBJUgew== 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=r/B4pcF678qCCbgB91CdC8x2ZMTKOsMfMm3xNQcpdcc=; b=Npi/i4wbinfPCifo5/ytoTS7FwbXqhd2cBlvGIiKtzdneXGaWwgoCIBB/TiMJ73F9/Ovho5DOVA4C8aY+Qi+eC915gSNkmO+otUHgH4N6NyI/bWpWIeG2JLWPXU453VTdRsZu1KR51IRzSybmnbPF9R55LyHJrSUjAxIGG6cX5k= Received: from AM6P194CA0045.EURP194.PROD.OUTLOOK.COM (2603:10a6:209:84::22) by VI0PR08MB10777.eurprd08.prod.outlook.com (2603:10a6:800:201::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:57:09 +0000 Received: from AMS0EPF0000019B.eurprd05.prod.outlook.com (2603:10a6:209:84:cafe::40) by AM6P194CA0045.outlook.office365.com (2603:10a6:209:84::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9343.18 via Frontend Transport; Tue, 25 Nov 2025 12:57: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 AMS0EPF0000019B.mail.protection.outlook.com (10.167.16.247) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.7 via Frontend Transport; Tue, 25 Nov 2025 12:57:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Qdy4Bq9pJSBFEVGlUd9QboDPVVL8liU+dlxLUiGmY0MFvkJLh0Ux6+TyG25lWPhJEBlM4DY6Xf2s781k4T7pO/4eRRdgkwyrqS5aDWW9Z0uVj9Ld9S8SIICHbZCOQ52rDagrjcHXd5Ak+xY1WzpSztY572nMGPcsSjCfPqkgmnVbTcWh8Zno9/uTRKbpUPFe+jl2P0KUGQZe56NTlcUHm5H1gSa5CYr25PEO/VX4RM+6fW+xx9a1n53Y7eV96oXj7K4o0Y90TPVgyz9MbKBHt0FQ0pWsUvniF9DWyRB11ZiDlFS3quJkBQqgx1X/mTDxeOmHr++/OtUfzqr7VQ0Emw== 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=r/B4pcF678qCCbgB91CdC8x2ZMTKOsMfMm3xNQcpdcc=; b=xXX1brYyVDvBmCSKHK5sjl8FPZQXO3Ptr65dn0cgjldEemDMmWpg71l12f2hofPlu16qixuaASCWlnyKkobGBXFHUUV9qu62pljphorG/aCd5nazx6FGadDMNidkNuwDZO9Hn01XYywToGQE8M8PI8VBreebc8A8A+WnUQKnr32DKVrrfYSCPaFjr9wp6Rw8qHhfjyOtlvFplJxpqZNxXjQb5Sx9soIMLOoSPFE3u9DOKP/QAhBjrf36Bnfj0s7gdLGKXjlEXMJiYt6a9VicRYGl7nWfREVSHTKesNNW2T4Wxz+nRctOWtcPAlOzGjYF5XEBe8fdq2yf/Sz8GkDUAA== 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=r/B4pcF678qCCbgB91CdC8x2ZMTKOsMfMm3xNQcpdcc=; b=Npi/i4wbinfPCifo5/ytoTS7FwbXqhd2cBlvGIiKtzdneXGaWwgoCIBB/TiMJ73F9/Ovho5DOVA4C8aY+Qi+eC915gSNkmO+otUHgH4N6NyI/bWpWIeG2JLWPXU453VTdRsZu1KR51IRzSybmnbPF9R55LyHJrSUjAxIGG6cX5k= 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 DB3PR08MB8937.eurprd08.prod.outlook.com (2603:10a6:10:43c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:56:35 +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.9343.016; Tue, 25 Nov 2025 12:56:35 +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 v5 7/8] drm/panthor: Support 64-bit endpoint_req register for Mali-G1 Date: Tue, 25 Nov 2025 12:55:47 +0000 Message-ID: <20251125125548.3282320-8-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251125125548.3282320-1-karunika.choo@arm.com> References: <20251125125548.3282320-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0236.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a7::7) 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_|DB3PR08MB8937:EE_|AMS0EPF0000019B:EE_|VI0PR08MB10777:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d1f8df9-bec5-44a8-babf-08de2c22247e 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|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?oOE7xxvTEPBkIjBUKZ8ofY2h5EP/DDL3vwjGoRlnDtNuOHfjzG5MM2Q5idYc?= =?us-ascii?Q?i2OegzW78kL9EoJE/tZE8DRzqYKpQe0UROwPmS6a543df97332dQQ0O26o8F?= =?us-ascii?Q?Keyw0K+L9tEapLzxEZSQ0kH9aG3oz8wdULiE3oezzifCibUSyy60b9dJsSE8?= =?us-ascii?Q?9bPw5Fa9x0BHlBNnFEGKl07i03Q/O3yLAMhXf6LgnUUyu2EzU+adIorZ+eCG?= =?us-ascii?Q?sDFCWO2EdCD2L9Y9iFcZlLK4hHXI63A+DrcYywXdtWH45mkl3LYFd0RKA2eG?= =?us-ascii?Q?dsIfLNPsqqp259nIIq6WGrNpXMscWkWi0T7la1/QvS1l0cvQEnccjHO+mjKA?= =?us-ascii?Q?NCOt47v2jHDDaLa+mSl2X34oUw+8sSEvcz+5usyrHIw6QfFEgZmblhQ2dlb9?= =?us-ascii?Q?XWYjjcDKeZ+X3bMW3XQrWpGtzF62/VZ79XHiUSds8VoxhyQARqfep0WrOots?= =?us-ascii?Q?OsG7tABiSHTFdC2FJD5K6ZdGgijxgzzmXh61DOsE4XZV/PtUfX7DjmMEWTVC?= =?us-ascii?Q?klZfk5FGhrlBjAGiigV+bIQ81gp86GP33T5T3iDFj1t/c0eONMrfPTfqfzi4?= =?us-ascii?Q?fjAUmAavqmHxgHEgb0MMVmta4Xnwa9Wy3uZhcfx5o4QristwR1hPAde2j2jr?= =?us-ascii?Q?AFIfNOaNo7VgQ+fz3oi8B20/9z9QvzkSk49DVLa+n9s2ckXpiwotqncx3rD6?= =?us-ascii?Q?5ky0YnnRFs4tuA5w+FjD2UELWziijk2l+ntl67S3twYU7VPDE7WXlAFKdHfA?= =?us-ascii?Q?TmdxYGmtFe0bfZo56a8vxWCzB8ugEPfkd944mA7IARjLHO/0sMA9xsGLP6MS?= =?us-ascii?Q?ktYPv/P/rpHLLRgSqHxWbB/81EvTgDTU4b+/iz7yVz6vB30/xPbqIC44YRV4?= =?us-ascii?Q?RgS4EpqokS/iumXGCLRKZy/5ChfQUeoOTqE1gzQ5osHVoQusDULBgcBtFiDB?= =?us-ascii?Q?kUAjFLNOVhGJhVWytb6dMUaRerwojmsrGk6S2gmuDEB7nGvW/CLMeDzHZBpj?= =?us-ascii?Q?ST/0RniHeRcP5jFQGs5ITg9aCL7LWv3cviVWtFnHPu7Ca0wnRfCG1fgdbvF7?= =?us-ascii?Q?hc1M6HNdksyn+6ExF673uZPBjqg4WiIHjw2EAkUPHUST2ATqW6YLC0NTNsE9?= =?us-ascii?Q?Ir+oG+I88tVUeeoYhm5QEBKM7IvvsCEWYVlWCLXsXWfPkGApHcfOHtvgIgeD?= =?us-ascii?Q?oteWV4WYuHIlaqT7wxFjlJAw26mtii5kxnS0LfI3qNt65aXYBgBfDGdBnudU?= =?us-ascii?Q?ah0RHudG3nO9dAS/tbywZPso5+9fGWXu6ALBXTB/MfrG0NjtO2LCKrlytqeL?= =?us-ascii?Q?NjB9TVbCijomRNc5ReNpRz1rmRupo/UVtDzSRAiYXOkSS+/ph8SKg2cSaG8k?= =?us-ascii?Q?sF9DqnSytLfrdbkNq59uPoG8JYXIZSCtVuFTayL17pfUReLlZTj0DKZzXX50?= =?us-ascii?Q?4mPd/nIpONwknlEexfexuyiQ0YPd+mPU?= 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)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8937 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF0000019B.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 7afc3842-9cd7-4f4d-a686-08de2c22103b X-Microsoft-Antispam: BCL:0;ARA:13230040|14060799003|35042699022|36860700013|376014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?C8AIRURGT86NxtHDA8NinTAgW17cP2gE1tdJh4pYE+Md4efl4q5OIROyf6/t?= =?us-ascii?Q?KqYAqTXXSfEjUW9ENMBUGpJulmctJzQPxBq/LlWvJAhLKM0wCWAgg3COepaL?= =?us-ascii?Q?FpDMmsXhe0zeAzoRpmUxnKkoRs+e8qke99hVKYplgIAR5aVhI5+fOJcWyxAw?= =?us-ascii?Q?yRx7Svo5Bm/hFUao5bXqAxy3qmeDjsB0YI2fJCJVfwrckvKLJCRxSgp2ivl4?= =?us-ascii?Q?Q6jDm1Flo5Q+rtnnYhnLVFyFaagZrK/1Q3AFKGA9I9lsShb5o+51CKkKb4AU?= =?us-ascii?Q?Z5vhjpPPyL3c29cQpTNpr2C+5ymgkes/D1m3RVYO0js4++rDO//drJ7JGB5D?= =?us-ascii?Q?1MinAmBP26+/afxkKFI9sdrtzmagxRT0rlE+5m0UJmPteOjl5g/yIAfCFLH2?= =?us-ascii?Q?GWvjvXCp8hVi3xjNII5rHYtLJu8PDUWqZjDVagHCWYxLinvpG2gDbrz915Vv?= =?us-ascii?Q?iIqZWq2aUc0pzQ6M9id0mZQkUt2KjxnFUOo5IFYKRGLO7UprVkFz77HrTKxt?= =?us-ascii?Q?pZQeUY2cx1tGYbW2ZaEsS2/eCGJCN9w6gD4wpKjxZdUP94K8CJuPJxTu8NBM?= =?us-ascii?Q?H/BQ6+zysp0FfClT5Q7QiXn4RHbBFlD24pWNIZH403HxJJbwr7IIXNRXSEV2?= =?us-ascii?Q?+RWuMR47vtrBdlrdnLUsfUl76Ygdm2e7rx2nTo+Bnq4h8qflb0+htiTPM6Lq?= =?us-ascii?Q?9CIbJCdYA6NZzL3d7kfYvs3kQPkPpOFIz7etP+N0O32/ndyMNuH7Et28vGD7?= =?us-ascii?Q?9Z5iAgSBmrDOH40FbFeQhpTjHV+5O1ptVO/KXmJFI1Mg/80YYN16Pb+g6j2L?= =?us-ascii?Q?opkI+UoUs9Vt6iOGeuMTJrrM1F+kVm1aTv4KCm+/UgRkLSxS+YsYrQrvc2Wy?= =?us-ascii?Q?Obaiu7qRBobu88CGmkWmbyB/Qux0NQOzV5M5lzQH6Ic07qVJsSwbLNHiYb/R?= =?us-ascii?Q?nQZvhQ1SkYNZV4ShLY17v2cCGmSb7gbMjtwnKOZ5c7QuCt7NDbjyzadpjXXg?= =?us-ascii?Q?4O9ebEua0xHYoRN2LTD8zVSYn7NzkfJRsa5Qdgc85ikNoDbDi8PCqj8izNcH?= =?us-ascii?Q?V5u/KF09U4x0/4fyRjliRBoYp8dabGk3l7gof0la7zcZqT2NWqTZUcmTgpH8?= =?us-ascii?Q?HYQF7bQYhXEMOAAVcCEr2wbSc9sCiVzPuNGPXe36VxBRQhbLDNjMjSbzRfrt?= =?us-ascii?Q?wTU7e7JwiWQoz6MaJeiAYLGkRyCrV4K+vVxfARePAV5U+Rp73K4IasVRBC1N?= =?us-ascii?Q?jvobPHotQEzzOrVQyHXh/OulnpfnYP9yvQ5oShoTWgQcQ7PYro+1KbvlaSpG?= =?us-ascii?Q?J/L5ACEvxujrP44nwcrydTVbXxu9Lz+rygQqTdPxpAfmtmsOhHip6TVJxiK/?= =?us-ascii?Q?yRFld1H2dPVTxhuElFTtN1UevtLGRynMBrZ4ToHU26JqFV0047DPv0uSHDbd?= =?us-ascii?Q?jyOdiNCFGEQGOwzosEEFXJZ05atsK+/WUhMVicUiDsH/xNY1ZYXlQaAI1LIm?= =?us-ascii?Q?YgkmBHlgykO+e5TfXiQtl4LxipFNVmtw6tIotJa59mS4h3mAPDObjkMJIGDr?= =?us-ascii?Q?BG/TJJ52rTTSHRAt0ds=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)(14060799003)(35042699022)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2025 12:57:08.4968 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6d1f8df9-bec5-44a8-babf-08de2c22247e 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: AMS0EPF0000019B.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10777 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 6b89821ff1dd..0fb33489069a 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -326,6 +326,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 e74ca071159d..0012e7a1bf59 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -1140,11 +1140,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); } /** @@ -1304,6 +1306,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); @@ -1330,10 +1333,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) @@ -2231,9 +2236,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 Tue Dec 2 00:04:37 2025 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011027.outbound.protection.outlook.com [40.107.130.27]) (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 B616D3242C8 for ; Tue, 25 Nov 2025 12:57:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.27 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075441; cv=fail; b=tzrqJAtmXfFPCe0TlugAx55Cb39rxLAMr6o9PKzlBv7Tk1DryaKWwvTbnV7pQqBIdNYZZYIvXJRTC/55/6R2ibsq2YCgkVYmr7TFnVZPnruDiWZRcvKiHuhk048w/M34P7ne4V9d3UWQiB8fig3gVzKDKKMKUN6pJSNPLl7Rc6U= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764075441; c=relaxed/simple; bh=ZFKdOfAKgm0qJ054Zb4venPv/8T7HpEmSBnvdaBy58Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=JhutwycQAHg3PQMBQVqu2F6DlDFeM8VctW8hr8ItvCHXSL24/v4kohygwBYo6bs88QvAcpcY2C59mcyfYOWpth6vuclIlAgnFXMc9wSEW1BmlHlhnEaOEC5NICpk76Ys9GCQhZNxt++ghne1IUgllEU6LDyAfL0DNblVgiyjbw8= 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=pDYxJ1Zh; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=pDYxJ1Zh; arc=fail smtp.client-ip=40.107.130.27 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="pDYxJ1Zh"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="pDYxJ1Zh" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=NcaPc+9Uz7exfPe2gjVy/x4NXGxSV90dlzFB8KQlYMcoOX8md9ggJQB8E+Na5JGNRwGptKwsLUzBEAXmk7yQTCsKbDQQwPuneEGZVsJWAT2N2IzT2YUQOxXNqsutlNhVDVF9vqJVRbx2a2hVxxc6lWIpB/Y9vZGpcN8NggVbiZ3jojH97mCMjJzoO9j+zBQgELFCQPZNnjDR9OXVFufTvyuFWgdPJeHFsPw1bj+bAMUfaVfJllqtc9E2fK/bfojtIyi7Eyv89t8kogWyV+MF3Kno58BqQpzx27XrJqx/vQyA5X659tbgLmVL4b0E/dKcHT3uBfLU/X6UVk+FKvbOLg== 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=QMFPGt4N5ACZ5UO3NOOkC12mjKn+FZeeABbrRbdYPSY=; b=nJZXsPAH5baadePSljHMGKbAUhTldwgHTQL8AVwuvSmcr8VgH2geQuky7ON5S89Ikk7VVptwupYMHr08olkeSqkDafufwwZQOGeK3yr/kM/Nmvg7aXsXhpDRj0h9XwfhSg85a2OEtLPKEJg3X7Tb2bc6ZnIUMGArFqLl7ViIUKa7mIRiq6aPD/EkU4aXjAtf9FKCmF1WNF/pnMSrrnJagAjsTG8BNGXOOGzYbxP31bWivztt7/B0+pNDMTFAIr/mvQqTVAeZYu5h5dEEiwc5MdZ78/HvMYeQhDrKG+sQUjd5a9a1J8hcQyAsCtkRvdruHxz+Arw+NR2Jdne5XD7d4A== 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=QMFPGt4N5ACZ5UO3NOOkC12mjKn+FZeeABbrRbdYPSY=; b=pDYxJ1Zhc86+F0l9o2ZXXUSkqxfRf/S6n6Z2ZSdr7wyn3WnyZqrtWQOM06Tbi+MpEYuTZ37P9Jxmq7jP/tJnJ+KBvPW60jF+6dBFaqXxG0uYGrW+t3i2J+t0PHVuy5MNjxw8EBE78XVpMw2uQErvDtK0SPzky9PlvIQ3v3sRzE4= Received: from AM8P189CA0019.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::24) by VI0PR08MB11514.eurprd08.prod.outlook.com (2603:10a6:800:2fd::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.17; Tue, 25 Nov 2025 12:57:15 +0000 Received: from AM4PEPF00027A66.eurprd04.prod.outlook.com (2603:10a6:20b:218:cafe::83) by AM8P189CA0019.outlook.office365.com (2603:10a6:20b:218::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9343.18 via Frontend Transport; Tue, 25 Nov 2025 12:57:19 +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 AM4PEPF00027A66.mail.protection.outlook.com (10.167.16.91) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9366.7 via Frontend Transport; Tue, 25 Nov 2025 12:57:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MyNJBHtKox84Uv8Cc1A9nZpynM7jJaRdw7JHfl9cM+Y0N95r/QIvVagLSIwDfv9fKsX8u1AU5QTD1Y99/roF96WwVm4SU5T0C7g1LlGcqQR0a+yVkaRksWKxUhlgD1qbloHNcc+e/1WjR2ZPLqezmILhH72ZqdIVDbKTPWofc8xnrD4rkUpDXH2hLtySsGTV8YNgfxdIjVHlvN9D8EFmUY+PXzvmgvTmcbBrThPspd/QXLkN0/Th5l4BiV3MfY/zcZX2nIrE9nkOWYByVnnj3zeRgapesW+McDQCHvqcTcvbzo292dNKflyyTALCSNK2HCGTv2vtem45oa/uHfM41A== 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=QMFPGt4N5ACZ5UO3NOOkC12mjKn+FZeeABbrRbdYPSY=; b=UewIRgjHQTBKtP4DyNxL/CmJUNqc2vn1L/acmjzY6cxTRgqdGkkfCFbIJGbKh7m4vH75ApEnVFDZzvq/3bHhscAWhGgKZ9ZnnXI6uOjgSKCclV+gViiCrDUeNvdjJYl77lEyychWkxuRrx+9Etf1MQwWrgb5QP+rjvIswzMLVH4EM2IUZfWhOc7NY8DxsduPFZLAd8DcvDjgz85qaYdYPKpSldVj5JN6Ge7DhkIWECiCVrn1MeSF8pGpaiQ0tzSk+TdI38Sx7SpRARWy7R5ECwFtlAR7yM+dnPLjxKq2CzlPplmqlXq2ldcm+1cHs8EI9RnpzWBEtVmgtRJDWJOBmw== 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=QMFPGt4N5ACZ5UO3NOOkC12mjKn+FZeeABbrRbdYPSY=; b=pDYxJ1Zhc86+F0l9o2ZXXUSkqxfRf/S6n6Z2ZSdr7wyn3WnyZqrtWQOM06Tbi+MpEYuTZ37P9Jxmq7jP/tJnJ+KBvPW60jF+6dBFaqXxG0uYGrW+t3i2J+t0PHVuy5MNjxw8EBE78XVpMw2uQErvDtK0SPzky9PlvIQ3v3sRzE4= 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 DB3PR08MB8937.eurprd08.prod.outlook.com (2603:10a6:10:43c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.18; Tue, 25 Nov 2025 12:56:38 +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.9343.016; Tue, 25 Nov 2025 12:56:38 +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 v5 8/8] drm/panthor: Add support for Mali-G1 GPUs Date: Tue, 25 Nov 2025 12:55:48 +0000 Message-ID: <20251125125548.3282320-9-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251125125548.3282320-1-karunika.choo@arm.com> References: <20251125125548.3282320-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0241.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a7::12) 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_|DB3PR08MB8937:EE_|AM4PEPF00027A66:EE_|VI0PR08MB11514:EE_ X-MS-Office365-Filtering-Correlation-Id: 26a73ceb-675d-43c6-3255-08de2c22286e 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|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?WZTc3WAowDl3zXy4d3AvceFUXZLIjZ27YRImb8x3BxQzJ+McLLKlO45+ZgfL?= =?us-ascii?Q?RJs90slUhERc04ttE39Et+T+BYthBZ2g5aVL6NCg3qnghtgvVIGwLZeWKjo6?= =?us-ascii?Q?N4ulZdH9bG5aZi+tbBktpa2Okzv0/2l4l5qeoPpUJP5gd951bptXBvensy7V?= =?us-ascii?Q?PlI2ggPRj3hAKuMPcz80Nc+U8jMNRidqc9Tjdjz2mvUydiJ/qjmy9yWZ8d6q?= =?us-ascii?Q?dxbTuWAqL1Bg49Hn1sUSYHMMbAfUOIwCXxm+sMINQGfHGgnTCzrsTQuS4tBG?= =?us-ascii?Q?NL5PtGmdqs/wNYAtxf0WTO9uxL134YWGXq7lE02IJM93MbosYUXOiZwl1zoV?= =?us-ascii?Q?ayAVJroSyWIBCTH3n3frT+kHj0P3qDD+s8QJPsiTRMtNbmF3pR8EBf4V83iu?= =?us-ascii?Q?pXXT42eynw0BM3+eQJkXhYuO4VlpYVilQ5pvR/cOzH0J0z7ZDOitGOsFMvua?= =?us-ascii?Q?TRwvkioZCE1979o5m0sucKGkIbc3DSpoC2Hc9o0BNQ0bWfzdtxfrhoe13ROW?= =?us-ascii?Q?T9zUPp4a9Ykk4tX24xh6P6g76fQtR4GNIzUdkVSVM2Zp/Sr2t2CS0sIhyEa6?= =?us-ascii?Q?vT4nYh4KWX1G+c91RN1CE7cz19S2E+VuyqsAbZO9DLyksqIueZ9aA6W1ywTy?= =?us-ascii?Q?OLqd8jZxzgkNuxtAHa/LZ0ujfA9R0Equ+tjKRBqkvvSm8Kvx6qXNdMCjLXLk?= =?us-ascii?Q?5PVFpJsnjeE6XVRVZX4PFM3csikglbpldHewNPqgUKXTaE3OCQKn6dCT1E7b?= =?us-ascii?Q?koG60uaWH7GdnrXbgvXcjChE4WT6OUNNLjzY2Y/IYJVrkahse5YMidtjIAkl?= =?us-ascii?Q?hyfUDBLfnR8N+N/ptMx0vguCiyPf2Q0NvVVbkd1gHq8p3dkzMx3Sf4DOkawv?= =?us-ascii?Q?U++DW/r3mrKeFB5OjIkGn+W4zKnFUUqhS1kueWKMo37UPp01zxfhvYvHox0a?= =?us-ascii?Q?TRuWdWBlklx7hPHKbfmkMI4kcDQA87dWJunYjTcLHoyvgYAnQwgm/tjsHsGr?= =?us-ascii?Q?Bq4WaWiAlp1S06w1AWIkFPQcmzfeSAPnVdgC1QUwpF+yms+htwhGmuwT54ir?= =?us-ascii?Q?9CK2It/nF1Yb3/k8IBogasQ6NBEXmcyho8QiGpyFqwBi75ZUqzvsaIXq9lMF?= =?us-ascii?Q?fbpuwhutKVvLN8oJPqwUwqFa4rc5u1+J2w9jPp0slveXN44DB/hLBSAjvkeg?= =?us-ascii?Q?ePFdofmnju+cVMr3PUwi9l6wnEepk3OL+ayDnUOVTZFlmiPakelV5ijKQIZw?= =?us-ascii?Q?Qa7nvHMVAbZNqlUu7y7dyiKm3AIJJdk2YkR9m86cLtB7lzrAlCq5pBwTfU7D?= =?us-ascii?Q?e5kLNRjakSnSW2u1xvP6lRAzshZo4AAq0IFzAybP9SPSG3XBVALQCJ/gK3/0?= =?us-ascii?Q?KjJNJhGVqxbiAU8DAleZjYeTSTBhj4ywrf0EPWflWFDs3PG8fiwoT+o8wmdj?= =?us-ascii?Q?lcCBvKzA/2RnLZVeRYoK+aKd5UZdXrno?= 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)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8937 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00027A66.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: aaf4f314-e7e1-4750-40de-08de2c221224 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|35042699022|36860700013|14060799003|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NxmAzCveAIvbZBLZKt7mgGnHdqL/K9iRPuX1turZOuE7+nnsSJQh+QIIbtVI?= =?us-ascii?Q?Pj1ur9yJDHYUN9Gd3nZyaFF/SSRAl88E25HuZ53Pcor2YzL5T/uRQBzwjUDl?= =?us-ascii?Q?CutEyEStsxJWc747w1R/3d6HiY56guIQ6pxphyiBqJ1F4+4R86j5h0ONyWh+?= =?us-ascii?Q?cHue0dhYVr2NTrpnajMLWHSk7IDlB5N5rZ0op7QWHz5adGbyklmhDwZwKaYf?= =?us-ascii?Q?alANtQiqafeUz+ZoL0S0oI7JwldZBXmP3H7BB6dRXv+5a3F9QKgENEtBLw9r?= =?us-ascii?Q?tv3E3Zoqq1C8Od7PiWB83HJsHa+sirQOlZ05xFn20azkfe1N2uNlT2dyTqe4?= =?us-ascii?Q?26Sfbsdy5kSJjjI80eynmPRvRyqphdRffaunh2Yqkw3fB70DoyVh8+BZROKM?= =?us-ascii?Q?ocn3W7Nzd/x0mO7MY0pDi9FjD6tkS/UR2etZ+qmydeZeEI5w7Rl1muodbY+g?= =?us-ascii?Q?JaOrRTNW01GPCkl+gEuqVMJdPLo0rYgn6JZfArDi/azQhBc534MdyeF8Dy/e?= =?us-ascii?Q?mCB0Y5F1dVvx4j+fG59KItqLQvqbPs+J9A7CG2CR4zkxKMy8PdISeCj3521+?= =?us-ascii?Q?tTcsHIet3BhsEEq6n9g1TCug1tdOsYDsuiXjeN3ECUJsgHk7Led60EenW7Nw?= =?us-ascii?Q?0raDFprbHETgkAajcDlvPP+eaXPIaelpgF25TU1h3/YrZdwAINVImBs24lCR?= =?us-ascii?Q?rh5qrmc9rUoX6zMiR4eqtyN0sts6OscsVoOOARvONY3fPBawYzfbbBG4yqvX?= =?us-ascii?Q?aPbdH1K98HRNP45weJe707oiJ0OOSylSVY5+riKZMHJGsEpXDYwdB6sroK8M?= =?us-ascii?Q?Hh8JvEUOgQcBwOXY7vsFKgduN/Tng1FvdVgospUzXJhlIzdZPBIZsFayvOcd?= =?us-ascii?Q?T4jDdtHLL92928cnlL6WzKh29wHmooOuKi8WkC2tfpBWmX48XX3d0E7EHD/9?= =?us-ascii?Q?7zGvC8QPPh5EnM93KPNh1CqZSOgGDUlyQlYDNvwcpG3I1W5o9TuCopdEgl+L?= =?us-ascii?Q?LXFb/yGjgc62xSEOkSdOUK9Q+phswFFhBLP4+SEhGuqz3SJgXMdJckOWFACb?= =?us-ascii?Q?tu0BY8Zvd9SgBN4npqNzp2OSfKk+K9mt2sjzbMSNnPHW55JrWvT5Ihr4UeuF?= =?us-ascii?Q?lUeqcN+6kzZ2DAnyPZZ6eKU9FvJsxBCmx04OtroiaO2+UpD3Uqg3vMo3rBW0?= =?us-ascii?Q?2utqSNyqD8LrHevQFF5ObuvZJDtYf8L2G+KiXPtQnRZ/NZFbE1ktBWETmaMz?= =?us-ascii?Q?ZJdLnaC0m7864TRjccWz6B85q25G6fKY3Vkqg3W/pmnoAD+q6yhcPcn8m8tb?= =?us-ascii?Q?EqNX3t7AU3pxDAgn7GuMsHX2LahOEDeDexkXrnXgcWU1RtUcqVVZ9m3a0c/k?= =?us-ascii?Q?aJ9VUxhOxkp17CngrANsvDzkErdi1rTnsn2aIqyloFjPfCs8oaL6GJngqObN?= =?us-ascii?Q?5cFNH8CPQp6DVWL028LL9mJGbLUliX+TRJuMM762iconJk6hJU7JhjWBeBqp?= =?us-ascii?Q?EodjYo7TWNzorIxYDcNnQG0zbRBBsBZlBdys1rbR41+YHqmgXwfzSKza+KDy?= =?us-ascii?Q?LwqEPi6fv5i+dWXOmeg=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)(35042699022)(36860700013)(14060799003)(82310400026)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2025 12:57:15.1065 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 26a73ceb-675d-43c6-3255-08de2c22286e 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: AM4PEPF00027A66.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11514 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 0fb33489069a..1a5e3c1a27fb 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -1503,3 +1503,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 5d220a0e2c22..87ebb7ae42c4 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -6,6 +6,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) \ @@ -31,12 +32,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) @@ -84,6 +98,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)"; @@ -110,12 +130,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