From nobody Sat Feb 7 08:45:22 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013023.outbound.protection.outlook.com [40.107.162.23]) (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 E4A1C2EB87F for ; Tue, 14 Oct 2025 09:44:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.23 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435083; cv=fail; b=Hqw6OilkhhdqWqA3MZk0pzNXOl53kTk3huP/kLvfZPjacbR9lWxeoSR2FmCkhgzETMjJG6FuKq0p9SZBcrJPUciA/F+/R9jhYyXn1va26A5lVdwsfGsAI+8da67vV/K7Ni3fdg8R/gPlXosb3EOxiAhczjneugM2Hv2dSFJuosE= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435083; c=relaxed/simple; bh=ojlGQ2fV3xEpT0T0+lJIVaNZcBo7On061xO60SNS4to=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SOI4JG95Atfo+/3trtqzfE7+I+2eOldje2vQNq7eGmxdWGIkJWsWyfIatFPpmDtjrlnQItt2UGcP0zikjQQMpp/OMo2utp8H4tCCD4hI2aijy3J9rWjuHzShT6ZeaOvfcDtwjLuRxyKx5gboshQJUGeNAMC25IiVYDoIHmzUZ1E= 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=Dl+8w5u6; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Dl+8w5u6; arc=fail smtp.client-ip=40.107.162.23 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="Dl+8w5u6"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Dl+8w5u6" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=pOUCAOW8kHpPdXiaFZkJ825x2RW8A8p4ZKMPfvE9u8B9NLP4jejLXgL13T4xtnhRi482L6GOUF7fWIsKJ+q/B6mNIAp0qdYzdFtiTuemTmmsCT3cqoNQUOVlTFpaXPW0RwSnj0W+imppHYIE1UPhBqnQAf9zWcvRU3EQsJ+Or6ru9eQQOTWHhJzT/QqnsR+d9I3nhArcssuawDVkvw/W4qcZjOymqx/V3iW8UvNGTgxy3jSKUo2GFCuZKG29Qd1Oj/JBbCzjm6YCWBSsNEWqRQps3hKz3HdoSaJAwldbusAhLWAAZwnlTSTEjTeg6YESHc3Ly/i85R/XiAITiWJeTw== 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=rsjZL8XHamlS2s9X+QsrJHGoMCmcD+Vy/Rbw38rpbZ0=; b=Zzk2qqdU0aV8VgY8oV2uRkHMtvEitWUsAIMjaM/nCOxYEIPlLKxeWmfbNEiRvIeN+1Utmil3d40d8rh88fKKDKKITLjzf3kYCjDVwtdRPTC2HmReyrlgN/JIjv5pU76p5uxH4GDsQ0PNkXO/eWlwq/oiLJzXfiZJcaGErl5KTKv8hlNCEAjNK+ivhUZWEtHEHvZWDduqRgAPnOOhkivCWCGzQIIRtdKj6uDPSlzcJAxty/hism0JLclrrhRa4tCRHuzi9WlYFxL5uyATvBYLyk4urjSFi1ADjzCx/2IyVEwEaFiuviwwonA+OBYD5t0oi1pPhfEMqHH+mE5rZbHwFg== 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=rsjZL8XHamlS2s9X+QsrJHGoMCmcD+Vy/Rbw38rpbZ0=; b=Dl+8w5u6wBvdw4Z1KEnTqPZ7gTXuTG9bgmYMhbqhEWd8OA22dMVDXF1e5DM6zoxjiidRPDQ0BFOMorJ+EkwHtK0xYpoxjk5UA0ZJxXVv8yOr94UxpNNSNwjUp9IFoQ0OhmAJ07Z3GgZkHQoVAf6vSPVsGSpQtGGO8vpqE3dA2lk= Received: from AS4P189CA0036.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5dd::7) by PAVPR08MB9063.eurprd08.prod.outlook.com (2603:10a6:102:32c::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.9; Tue, 14 Oct 2025 09:44:36 +0000 Received: from AM4PEPF00027A5E.eurprd04.prod.outlook.com (2603:10a6:20b:5dd:cafe::7e) by AS4P189CA0036.outlook.office365.com (2603:10a6:20b:5dd::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.9 via Frontend Transport; Tue, 14 Oct 2025 09:44:36 +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 AM4PEPF00027A5E.mail.protection.outlook.com (10.167.16.72) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.7 via Frontend Transport; Tue, 14 Oct 2025 09:44:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TkZ62YjbtFcfH/MivOmmlMJmDD/cqiMJHvfMj9pVNrovIYYZFJAkhdfslsdgNT6EqYjUKaoZzVdGULgGOEgCk7D5DQ+UdRhAUC5yutDsmGTK8hYrLqYBlNqBKKmdOe2PKbCJ3d2OCi6eKl7EfBfC1dObhUd2UE2lAd1Fqz+D5TsVv1AckivVAazVkKhtWVJsa+6KuBGN7w2zstIx4olvq/i1OyNzmkvRxwBRVFG/WCn0QKvhVJ79hH5+Vrn9cyo0fWUlqqQUFhj4gQf7nxcV6MKjxj+rUpGH4TEF8mFlL8zeuU0IuIo4liLGaUxWUZcX8xSWudrDTGnw2WY8t5uKvA== 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=rsjZL8XHamlS2s9X+QsrJHGoMCmcD+Vy/Rbw38rpbZ0=; b=emAW3ll7LMocVoA74KDdHwWmTJawqWvsy1Nw+2oE4BdpGiZxlnVitXK64aAGpG4WDC2GRJwCSw2LvkND2YC3cxV3bZ4cahU8SFzHIYDN5eD49cdfISrnbPq93Ljx1ug0eGCVW28qmnBrTGHHJK9m3YJW7YoU22HOa9duDgvj9GEUQn1Rx0YsGsOn7Fhk0fmwCeYUrU41U1wdN448n067FdgCBVqorKgIN7p148UFvv3X1dJUq/DJSnp5uVMbHb5EPMJIJ8ZCtCVGIBZ/6wT/Hm3VF3sWzcqN0sry4e0Pvl6WZDhufdsoWceUwaLqJIpHhDmEVNvt4kAuDrXBAyVV2w== 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=rsjZL8XHamlS2s9X+QsrJHGoMCmcD+Vy/Rbw38rpbZ0=; b=Dl+8w5u6wBvdw4Z1KEnTqPZ7gTXuTG9bgmYMhbqhEWd8OA22dMVDXF1e5DM6zoxjiidRPDQ0BFOMorJ+EkwHtK0xYpoxjk5UA0ZJxXVv8yOr94UxpNNSNwjUp9IFoQ0OhmAJ07Z3GgZkHQoVAf6vSPVsGSpQtGGO8vpqE3dA2lk= 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 AS2PR08MB8286.eurprd08.prod.outlook.com (2603:10a6:20b:555::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13; Tue, 14 Oct 2025 09:43:59 +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.9203.009; Tue, 14 Oct 2025 09:43:59 +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 v1 01/10] drm/panthor: Factor out GPU_ID register read into separate function Date: Tue, 14 Oct 2025 10:43:28 +0100 Message-ID: <20251014094337.1009601-2-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251014094337.1009601-1-karunika.choo@arm.com> References: <20251014094337.1009601-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0041.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:34b::19) 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_|AS2PR08MB8286:EE_|AM4PEPF00027A5E:EE_|PAVPR08MB9063:EE_ X-MS-Office365-Filtering-Correlation-Id: 86d19a81-5de6-42cb-f6b6-08de0b064882 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?nlpITphDu088+nX/GgoZulaiuQ5+yUyJ9qb7Zlsq1OQaOHG+SIG/CgMM/l9a?= =?us-ascii?Q?ZB8xVNgq1cdJYwBAHwcT9MDHjQxeCoPNUIkicp53cfyzlK6yQLVoXZZEjO9j?= =?us-ascii?Q?Hwf2cfkmH7yzsO1XspStdxMIHeBSEjVHes30bzT7V7kZEVejJt/0HCRt5EdR?= =?us-ascii?Q?dsXPV1tQHv2RgIIKBMbrJuihpaklylXTfoq+4QQT5IoQcX2fYQw+9sJWnWyO?= =?us-ascii?Q?CzB1G5v4CMu15fl/0nKkjLSGrBLNyiIlKyIDJmQgPGdXw/LfIZ126gA+s34p?= =?us-ascii?Q?z6jEPUO40AGnYDbUaSNcLTnYRfzaa+LIt2smo+XwHAYnytDK5mjMhZ7mAW4p?= =?us-ascii?Q?AglG1ayoXLkifNMODMo/Swvfd3iVpKOlRyqfNre2A7bqE3wHbRAcORJg/M79?= =?us-ascii?Q?NSgllLK+LlsBOOie06x6vVEVPxAvgdQQm6ikJg1JHd9YCIJJau7JoOp6fcnK?= =?us-ascii?Q?j4BCayNWNLI4Ew4LrIf6rm+eWATzaUTLMTVgePcKvD2pld+fuIsi4De6iZZ2?= =?us-ascii?Q?bAFEEdiBhfskNQJ8CD0TLq7jEFTPsMYlY9CT7xtS3YcipeuLCHsE5t1Xfch6?= =?us-ascii?Q?BT76EYIScoHj3ClM2kCvZET2LaQvnYGvWkMZ6QhEQ/ziOCSyzZSI4sONQNij?= =?us-ascii?Q?fariAlyZ0BMlWL3g4/OiXtFLegji7VBiTAaJ1MTAcmmabUPtGjUmL8l/d9Mt?= =?us-ascii?Q?iCnZV96hNSoGdOwbR9cFZzvAibhaPmZvhef1eHAH6oLfKBOp747LhV7qddFp?= =?us-ascii?Q?GCx/qLRewcM5/CBBuumRCiw7m6JVFs+nmOP3Qr9XMYOJexB9W9PjQ7CLyrN4?= =?us-ascii?Q?G37ze0oppVrvxSHvolEHl5GLyj58zi0YuHghZO29LatcnHzfu5tbJzMBEnnM?= =?us-ascii?Q?vEf8XTOAi5SMVEIYlFW3bmXVXHPUP9yuqsrX79v26RKnHa5DlEolYNXGjs0o?= =?us-ascii?Q?z54a2mGKppS8xQuXLyAd9zaAcSkVSV1FtYVwEFvIxIwRg8pOt/aCSAdDN+dT?= =?us-ascii?Q?GM8d/RZt1ewEYUQ3H//CtEz7zNdC44awfv48NQ1yZj0vZBPMybS9v8S0cMKe?= =?us-ascii?Q?p8sX21fKNyL6GFM00YajbI/6in8fXGJhuXpsUFdxjVyTmlOPktDFqikwuEkW?= =?us-ascii?Q?2YorZy+ehrRm8dP6sukThsjjpA4pprZBxpJe+DMX8mSpi9pfrMZu9P7F/ZZ5?= =?us-ascii?Q?/pZ0i2GVagmu/8/A2FvOqZcYoRQyGuu6yZtznRmDlakH9ADxXXG4iwK7i9u5?= =?us-ascii?Q?74uH2zx0RC94CwN4ZIHe0DVhL4FXH6Xh0cYB5Pt6Yr0tT5OkmjPivSuLdW+0?= =?us-ascii?Q?i+xMloRPFmb0MXC2PdWzboCGsD1GBcsLenZ1JqU4d2EPo2i1JH0/pAZgicCZ?= =?us-ascii?Q?WneSDz+GBrfA8uRY/ISRFDLNPUDJexrzK6+M8bK57YYCcIeOSuxFj0NDrFoF?= =?us-ascii?Q?OHR60m5s4bmGNIYQf4eNKmi9RjUQ2z4E?= 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: AS2PR08MB8286 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00027A5E.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 6935f146-46da-44d5-e572-08de0b063357 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|35042699022|376014|36860700013|1800799024|14060799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?pc4QsKOmuIrrBzx8TNBD7esj/ExMF0etHJmyS6CvLKoRsHJd1TiHMUzCALDo?= =?us-ascii?Q?yfWxMbySJ4x0Oa8uCXK7VxF2hGNUw5UqecJyIcrBaMKxqtqnAzgFYeZz2M0p?= =?us-ascii?Q?B4ftS4KfQPWkrs1IHrkjm23TXufNdzW+tjSB4fiLe46EDLuek+amClp7P0eg?= =?us-ascii?Q?/9xIdBNj4XTbCfpR+13rk8x+LlTkWQeI35Wr0TrOVpin3tBNj8jcTcICWFi/?= =?us-ascii?Q?YdLAaAOmc81jTZTA1EBcc3FKOXBnGC6f/UaMkgU3GQvwqZjY4SKmpLD5eNmg?= =?us-ascii?Q?7aUKaxEE4js6KpFKFQWX7q1RKsGcauXWJ5IME84mdmPA+DhlgQ8vOWJmfHeq?= =?us-ascii?Q?LYItCO4Wrxt82REZsOIRJ79XnYsVfOwLMo7f9PjvnX2+eXV2EyuTt5aRIvyT?= =?us-ascii?Q?bj8E15T5uGs1eayAuPSKlXOrJ/NHe1xs2WeMjAdLNj8egAvr8E915KcnHQ/4?= =?us-ascii?Q?2aAA4vHRQoqnCe5WufSsMXUT7LHCl2ByTi/c3TfZpGsOtQe4T7k+QeJHdz1P?= =?us-ascii?Q?MUVF0RgE8yq7CJ68tIF6h9nShwem6b6MFY7dfi/NELrUOja9RpxZvtzyURpi?= =?us-ascii?Q?azF0A2p9VOIy4g6z8LSnnvQeje5UF8Zf2YhUbpebhFw46+b+tH03wtdcutSD?= =?us-ascii?Q?GSJZkh5mV/HeSfrfn/kR/aOKpGCTaThNTwRA6t7M+Up0jGYD5GAVftEw3LhN?= =?us-ascii?Q?NgmWF3Nbxsx7w8XcESnBlPP5GqjLF/iSYxHtdjbuKbUn1LqnzWoYHLOutxAm?= =?us-ascii?Q?f0IqhjUEDLaQg9EDSSuHzny1QDt1tPlQsFs3ZDnA2rC8JiLmBOHpFfOrT14V?= =?us-ascii?Q?C4ISnD59h32VC0qPRjI/Z4Lmhkx4AsSUngy9wA+8/PrYAjrcmTgaYcf7eW/S?= =?us-ascii?Q?F2fXRBJ8wZVXqLvkO4bPXi6tNuCyE+TL3b1J2Rd7LJMUvxKsYR3qSxiwk459?= =?us-ascii?Q?aTneDO4hzYIXPJUYB5HCi4Kykj2OTr7/OxOcayNLGyaqhZomINvFKKjReAMA?= =?us-ascii?Q?sSZuPlfB8JiIBhZc6KrbyHS9bKC1UDRd4NRp8LApuQlRmvEEZ1qX+yjCVnKO?= =?us-ascii?Q?KE2A77o4TV4QMDoiQD9PiHTe0Y/LmC2HW+MJ/oNIvf2xFYBa3NmFC+H7g2yc?= =?us-ascii?Q?8s4D1yEyDgrVCS/wt/a9sGrSiZFEKCfM17qrUT+nRVHYerFl/gPnIWh38SNU?= =?us-ascii?Q?0bfCgIsvcI1JdDLatiO3qVepwHFeqbDOMCAWpztpTjXFNKq1077OG8KtrRMv?= =?us-ascii?Q?CeAv7yPILNnnI39sV8yOurUlzkjs4+9Y86V6ZhNTUU7VTvuE8HfqBqUufeEj?= =?us-ascii?Q?9ox0UXN7StrsGiSEjvqzUgu9ffsgfWR4vZrn9oAkN1fa/uCmbFcEYE07R/HM?= =?us-ascii?Q?DHXuroONj4gETaU78+QAiayYSGkJskth6rVnW5MqnXEj46jiGIepAWrAbpxx?= =?us-ascii?Q?iZyCc26EXt6Q+T1/vGpfYwt4xWzABb7o/qWi7UxYG+5k22dQlV+kULHH5bBo?= =?us-ascii?Q?oVQrRdCr2wdWmZ6yKR8ecP5yaZ/DVhqms/aWPUiN6tUxrR48B7kEYUMtr/Nf?= =?us-ascii?Q?7LRn0tFN4BIKDHbIAnM=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)(36860700013)(1800799024)(14060799003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2025 09:44:34.6542 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 86d19a81-5de6-42cb-f6b6-08de0b064882 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: AM4PEPF00027A5E.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9063 Content-Type: text/plain; charset="utf-8" Split the GPU_ID register read into its own helper function. The GPU_ID value will be used to enable architecture-specific behaviours, which may also affect how other registers (such as those used for gpu_info) are read. This change separates the read operation so that subsequent code can depend on the intermediate result of processing the GPU_ID. Signed-off-by: Karunika Choo --- drivers/gpu/drm/panthor/panthor_hw.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index 4f2858114e5e..326a9db0b5c2 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -62,7 +62,6 @@ static void panthor_gpu_info_init(struct panthor_device *= ptdev) { unsigned int i; =20 - ptdev->gpu_info.gpu_id =3D gpu_read(ptdev, GPU_ID); ptdev->gpu_info.csf_id =3D gpu_read(ptdev, GPU_CSF_ID); ptdev->gpu_info.gpu_rev =3D gpu_read(ptdev, GPU_REVID); ptdev->gpu_info.core_features =3D gpu_read(ptdev, GPU_CORE_FEATURES); @@ -117,8 +116,23 @@ static void panthor_hw_info_init(struct panthor_device= *ptdev) ptdev->gpu_info.tiler_present); } =20 +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; + panthor_hw_info_init(ptdev); =20 return 0; --=20 2.49.0 From nobody Sat Feb 7 08:45:22 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010055.outbound.protection.outlook.com [52.101.69.55]) (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 A13D02EB5B7 for ; Tue, 14 Oct 2025 09:44:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.55 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435083; cv=fail; b=p/bjKGruPb9xqdMATFSWXrfqp3VFf62B/FIWoKC62cLDFWOYkyv1RJTFHOA6lvLqi0+RU3hFwKrDy/9GlNbG4SKnV0jztHrLEf1UyeVg7svBgWlzsaGVrnIi3uG48Jvr5UJIx+nZw+EyJYsVPK3RCAyxZeBekd0e+4BcM5LadHs= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435083; c=relaxed/simple; bh=KqtcEbcx4G62NOoRnqb+cSdc4JlSQj1ezjeeSBDvNrM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ncKJC4cc0Y4m3mHyw+/EowsSexq4KzYq/QfHee36FqnVOnhC+Weeg4xhYMCwurGVCgXJhjrdTKha2IxT9ThrilLYyq9INW7bsv/EgsUoJCrJ3j+FEVO4qWZ39xuQrIKor0P8HyYaHDNCTQ3sMvWgaV5HqkpZEfnnUm0mYq4LkbM= 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=my1CuUzP; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=my1CuUzP; arc=fail smtp.client-ip=52.101.69.55 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="my1CuUzP"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="my1CuUzP" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=lPIzqBSpveB313uJ7YWHSd8FfiPX8qdRRSzYbbAGFNWK1msySCxO28RZdnoMwyFgHoPn99SSUl50OcYn0vqd0QbeYJnon952CwG1So1RR+QEtoJhjQkjuUQvLchutRNCPvdLD6GPrON/DXEgWFZBHBGm1Pu4OheWhZkzI7sAwWAIPtPVdpyrpz3Az+nea039Fti77U75Pa3nLWIBPKaoEbdmRTByayKaZmoLbtxApDDwVHU5UFJnpSD963JXTpteHeCNWrOvgnFRPjYBDjXjWFntzoTDUgHGs/dV/oxcrqA8KMm/wc9XlFKIsObhr9o3aFtRpw13oLpFGWXiqPmTFA== 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=3Xy1gjZ6FnR0v3NIhsRyhaeMUq/yYza3/sxvGWFcg94=; b=rZItee8gkwUMGSWklToh96L37NvvQsapd9fkoCIviHOYHg2sTIoapwP0hnPkT/OMxAol+Q8Lgolnf15/sjW6IwNtm2zchh0MmO5nEzhMlZgrFZedZc/jQJsZxEgiJdc/QTzWmuocemThbow8JMT+eXObJ8hZsGGPaT3iPL3JAB3nZqpww7tTGi+6wsFOudkvjORYbMZRJkwx/2iREdgu47fqQXTS/amA8fHWbzeJbUOKQ3Ek7hfXryzK3a2coHqvDkzdBnr/6Ib8D/jzYn+mzuPDHKD27P5nisao6jN/kuKffIp9/QMTXxItHRC3TNTXFsoNQ+evWVyzofQ0DpOt2g== 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=3Xy1gjZ6FnR0v3NIhsRyhaeMUq/yYza3/sxvGWFcg94=; b=my1CuUzPzCm0y2TE5LS5Rv1UvssSD8Lun0N5DDmmxyh165Z9QprluDzU15MTmniwIwpS6x1wR/64FjBtS9j9HC1Zc3zYypvPomxm098YjlkZjHj2T1Wo38ahVJhQl87+Ok71WCQ59veYhOLgK28Su/LEiVlv+UkxDBMhFzzzZSI= Received: from DB8PR04CA0027.eurprd04.prod.outlook.com (2603:10a6:10:110::37) by DB3PR08MB9010.eurprd08.prod.outlook.com (2603:10a6:10:42b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13; Tue, 14 Oct 2025 09:44:35 +0000 Received: from DB1PEPF000509FE.eurprd03.prod.outlook.com (2603:10a6:10:110:cafe::a2) by DB8PR04CA0027.outlook.office365.com (2603:10a6:10:110::37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9203.12 via Frontend Transport; Tue, 14 Oct 2025 09:44:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB1PEPF000509FE.mail.protection.outlook.com (10.167.242.40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.7 via Frontend Transport; Tue, 14 Oct 2025 09:44:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lV1o8AexSz/UUngyGONIxXNtFd2D2wzoxFZ2CbjF6DGfUx1k+5mc2NyCPEEOR31TALzG6u3LXX8105z+32azDXcYzZyxdjkvJhIQq5XmFF2SPRLZZ/Rb0hycsD9TTCi1bKEQKAEk9sQBnIym9Hgi/24Is7TqurHi2KqycLiKOmJdfuDVZ2ymIG89A2GC4YyL3+X/nS1h+Mqb1Y2vuLD3oD49ZjRX7ah9PTpu96q2LqVGfLAzOvdMXTSYoYRdJoB0lOw5C+uUgU33+juLF5d68VJk97nS6rDT2TCfxvMTw9QYoC588JhxDsx8ugRJaoGP0tpSzWqjp+0LuCNF/e5ALA== 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=3Xy1gjZ6FnR0v3NIhsRyhaeMUq/yYza3/sxvGWFcg94=; b=ybX6vRLRmNrJK9Y0ibxuV31C4kbjx4FYiRGvzrozXcsw/IQfZ9Td6/dxl4kwQ2C1POKLXSXx+VLn+DgTHjqD22PXGWwtXaC27v1/VnJLbJ3ToA6EN5pYWITENF68AqbTWo62YprRU9jIDnChoDaeccx/92nmpLseF9Gz/jlOx0dKhFFBIZvMkEmvPxlC0q0BX4whwYv7MtBfBzS1MyT7mwrxX/xmo6AVcbbRyTnZo6KmILO9743W+AZTQsBkJRfIR5evD0m8tVEmYHNRYjRkhyKpVKr8G611ct+0K9yVfV7w3istKwMyrrs5Of0glEYI6JFT5cYQbCrNkFeF6dh7yg== 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=3Xy1gjZ6FnR0v3NIhsRyhaeMUq/yYza3/sxvGWFcg94=; b=my1CuUzPzCm0y2TE5LS5Rv1UvssSD8Lun0N5DDmmxyh165Z9QprluDzU15MTmniwIwpS6x1wR/64FjBtS9j9HC1Zc3zYypvPomxm098YjlkZjHj2T1Wo38ahVJhQl87+Ok71WCQ59veYhOLgK28Su/LEiVlv+UkxDBMhFzzzZSI= 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 AS2PR08MB8286.eurprd08.prod.outlook.com (2603:10a6:20b:555::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13; Tue, 14 Oct 2025 09:44:02 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74%7]) with mapi id 15.20.9203.009; Tue, 14 Oct 2025 09:44:02 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v1 02/10] drm/panthor: Add arch-specific panthor_hw binding Date: Tue, 14 Oct 2025 10:43:29 +0100 Message-ID: <20251014094337.1009601-3-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251014094337.1009601-1-karunika.choo@arm.com> References: <20251014094337.1009601-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PR1P264CA0146.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:346::11) 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_|AS2PR08MB8286:EE_|DB1PEPF000509FE:EE_|DB3PR08MB9010:EE_ X-MS-Office365-Filtering-Correlation-Id: cb51c262-8d76-43c9-a216-08de0b06492f 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?AXoyojNisQwkzNeSW6flg1m5YoCcuvRu9Pl1Qobz0d1GaDbiw4ChfS4qTwpl?= =?us-ascii?Q?DFATJ/zh0ijGTEq4Frgmz+QLYKnBAULswG0MWnFCaVP+PyTGjSOHgiA7NbCK?= =?us-ascii?Q?El+bL0mmkUA7EtB/jvd7rI5mEXkB4/IJUyWYLPVfP9ncucuU38Xn67L9OZp6?= =?us-ascii?Q?1HQ/x/YS1JkpvI37RWc4o+O4Kblfrv5yEu3ht6TG8Q2czE2K30Cv4Ubmfbxp?= =?us-ascii?Q?+okOpD21HB8QDHb6kU74aq1m5NRM9a/WW6ctaquHjeTuvRd2d4pSuCjRo9XE?= =?us-ascii?Q?+sRQhaQ+g1oCJ+KVJfIRbckf9LjG+qbcl8bagCvxFQdz+sF8PVZf/JuIuOt/?= =?us-ascii?Q?5HXccgVyM2g8KQ8ItBmAfhpK4TgsAdu3RIFHi1cqbV3HlU2ovvKf79VaPGXN?= =?us-ascii?Q?Cbr6AyninEcGHGlH+BwL01GGyA9EoeG+/1ZRgpXnXXLsMzJJFpzISGU5mjlR?= =?us-ascii?Q?Kz7WIj5TkqOlzB+Pee2xB14tgID0u016tzJF1Xfc8k6+OB4eWIvMYH4We4zb?= =?us-ascii?Q?ZKectnfqnZnDadBHhFUxBnfh3ER+kZp1UUudC4oMup/V7aoxsp41P5stB+U8?= =?us-ascii?Q?o0+7koaOhq3q4KJOb8peFPZp71df5AQ5V/uGE7gJliDxXGUY16vzhcNM2uTx?= =?us-ascii?Q?Xs8gX0B6CNinLVjodiv9uFKyO2JiKnCAlFDaBKNugvwJ4ZSsuUJRy0b0w2mF?= =?us-ascii?Q?c/O5CjFLAhQiPgfj0HkOihR/E6pXwBWGP0VMQAz4kSWglXoGgrmKIeH+BL8R?= =?us-ascii?Q?CpSdOBGeeRT3ie2vYoG8MJR8CvASnfwLER+9oQO4iKa+5pUVfpYHdKJIz/he?= =?us-ascii?Q?NQHNMvLLfXFN15S2F5x9MIOPu1s7somstMZlcCgzOeB9ntxdcXg45AAUc0yo?= =?us-ascii?Q?58nblfp9fckqtyAdSCFB4qtzzY40AvqU3kHZmmNrpX0/xCexZ0B14C8AB/T3?= =?us-ascii?Q?ImuiybCfkq3cwcUD4lwTeqQilmr12Ee2UMYC2MDDf/s5PzJqdCColz0Y5xd1?= =?us-ascii?Q?QTob2aXvIiG87OPKAKQqIMu3K7T9/TTDVlBKtoLeXQpkToTLsT2Mmx4Y2Smh?= =?us-ascii?Q?4FhuzEguYl6QQVGBw9m4jHgiteQ/N4tsNl34PSD8oC18iRPKR7Zp1X360H/u?= =?us-ascii?Q?sa0OOlbJnAM99BnJJL+H5sLJWG1wa8jexAWoiDPmFEIoKGvMdfw+wpzGfqOO?= =?us-ascii?Q?Kwo5ajwL6+wXlizm9VqxXMF08Wkr+jexI+oYp8uPDClsmBgaguz++zmBLHs6?= =?us-ascii?Q?yisNOsBd4HqXHpR2KQsWCk1Q+dk38bWCzOmDsn4erRAmXhHNp+RR8Fqy8/Of?= =?us-ascii?Q?2p7un8MafIwEPp83kTh9/iXNem5DlJNxdzy67v4wAnjI/RrRK3sngiChi0cj?= =?us-ascii?Q?j5/Ku41FlQK56e0v0OlIHRMnpYONuLxe8H764S4o6xRWXnsMAfYytA7xVPC0?= =?us-ascii?Q?T4oAhPgnl5+rkISSWGgD29qEWXhtebhr?= 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: AS2PR08MB8286 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509FE.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a0ce177d-29a5-4b8e-846e-08de0b063556 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|35042699022|376014|14060799003|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+nRLzbqkRH6TyBTZE0WKyHfN068Mk9CR024/WTmAftIjwYKcNBXbjcyPBRCW?= =?us-ascii?Q?5ne+XD6AwdUAPQ/NxixO77bm8Qxf64da29R7IIXikVtxg/X9KUnCjAl5DYsB?= =?us-ascii?Q?vvh6NyZ4floYk/h3D4EL1RKCxNvZbzeUzddsP7Z9x5KcYSfK+dZOz1gp0/ue?= =?us-ascii?Q?lgC4eorsoMbmiwN3QVXhxufLqoIZcFN5MWdpzniw4i3CWd0t77/ALmvp2dbp?= =?us-ascii?Q?to9lmiLoHFMswbxS3YT3FkKFmMcB5NQN4iV4jAVJBHt06Xkz2OfXcX9qm70f?= =?us-ascii?Q?N+EbGs8WRgXzDt7FSARSrzVEh19H44aOIMTH0TJXmCS9hvBiy6sqHcAZIYYA?= =?us-ascii?Q?OoLLRvcH+oPyCfIfGC3p4NYHKeEfdwGwjknkx9vOzwCQrpx0mju+tesoRbIA?= =?us-ascii?Q?echZwxaohYn3UOteesyebIwGmQgjEbBugYFTWNmSMmlEJzRqJjCPZ79WCiFu?= =?us-ascii?Q?ogbkTtDU5oWwWkHYWVgit+Sm11nPnE56LJExrbGSiaAErl/gczmhga5YlVJ6?= =?us-ascii?Q?KgZIIjZ4s9lDpp6nU5CwHF1dwTgr4HMyqhPQBCnkBlHMo7AEe6+SuNZ5LO/F?= =?us-ascii?Q?Ct4PWkiMOwYTDuDP2rQIbBAhZ85YdmnpKoKvUIieprJy5wulUGtpB9GkaRGq?= =?us-ascii?Q?RvBn5DDLyxA1WZ0EnhB1A6oGxhoh0MkJrAnGRQNoXRxsUMXbNiwU2MDpG7JZ?= =?us-ascii?Q?Ibd8Gjl0k1RSoQwYsAeg+ZiYbgfoAAApvbkAzQsBf83wBNzJNAP/iuh4h+0R?= =?us-ascii?Q?hNfTUG3x3movWCCB52+SP2cC6p1aE4FZxNvtFwlLT6p4oc26cG49HMBWTeQK?= =?us-ascii?Q?N5wQM/IIQ38YU/mObE9IfHEKxdjxwGX43VRKGIK1Ty2yg7frmBo5+AJCuHsC?= =?us-ascii?Q?HJcWNdqJbUnkmrY7QrGh5JeOeVBX4ZTjHLuWOnwjBtbkJxVEiJ82MkmxiTu8?= =?us-ascii?Q?EsIm2PEOoQhT98mVM6ir9fB5d7qbh7OAbDcU4wPqEV/V+U5GEDdrxxNlZfRq?= =?us-ascii?Q?hSQKOvnBWAwPU0xckQ8AZ+7ctPMgXbid6GOPJ/jym2dOzDPykhkd0WfqBCC0?= =?us-ascii?Q?U/5zyaXTXKBi3jwWmkgmcgyrJvcor96IgADLPa2xpdCyHRug6e7adE8wTKPo?= =?us-ascii?Q?XT2cCi0jz4ADMZHEtpvjeqnOset3Pz6lSo/87sJbWFEX9zIA2c/smtm0lPb1?= =?us-ascii?Q?OewKJsl2rbsRNX4DdHGjHVInLuiABsH+uwfr0GLMsxbCXMo4iZxQ4YT0UCRH?= =?us-ascii?Q?jyLrQQ3jhYPVT2HJTfeuKsGNDD0NidK2/TuYqu+27+AvpTnfnT0SSRdMpnWf?= =?us-ascii?Q?MciympbAG4VyWIM9bIRsN+uvQh9+0RBkiBrFUK+37aP8hGMcg66ONWqOmtQF?= =?us-ascii?Q?Igpq5sie3VsCktJynQKUvPcKnNnAla/0dT/xwbql7MvPU1A8iG6Kl5qeF5w/?= =?us-ascii?Q?oRfKa39Cqf0TNbQO9MJoWtUecZ7wBoL89cYCwPV8MDGs0avDNod18TNNzXhE?= =?us-ascii?Q?McKJ690ELLvTNIpWQJiOzelB3HU94zkvdR7YymE+krtFYtaVCnu+nNA7XxXA?= =?us-ascii?Q?jIM/Zl5dPr8Ii+2s4/I=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)(82310400026)(35042699022)(376014)(14060799003)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2025 09:44:35.7796 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cb51c262-8d76-43c9-a216-08de0b06492f 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: DB1PEPF000509FE.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB9010 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. 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. Signed-off-by: Karunika Choo Reviewed-by: Steven Price --- drivers/gpu/drm/panthor/panthor_device.h | 4 ++ drivers/gpu/drm/panthor/panthor_hw.c | 49 ++++++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_hw.h | 6 +++ 3 files changed, 59 insertions(+) diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/pan= thor/panthor_device.h index a764111359d2..1457c1255f1f 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -26,6 +26,7 @@ struct panthor_device; struct panthor_gpu; struct panthor_group_pool; struct panthor_heap_pool; +struct panthor_hw; struct panthor_job; struct panthor_mmu; struct panthor_fw; @@ -122,6 +123,9 @@ struct panthor_device { /** @csif_info: Command stream interface information. */ struct drm_panthor_csif_info csif_info; =20 + /** @hw: GPU-specific data. */ + struct panthor_hw *hw; + /** @gpu: GPU management data. */ struct panthor_gpu *gpu; =20 diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index 326a9db0b5c2..b6e7401327c3 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -8,6 +8,28 @@ #define GPU_PROD_ID_MAKE(arch_major, prod_major) \ (((arch_major) << 24) | (prod_major)) =20 +/** 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; @@ -116,6 +138,29 @@ static void panthor_hw_info_init(struct panthor_device= *ptdev) ptdev->gpu_info.tiler_present); } =20 +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); @@ -133,6 +178,10 @@ int panthor_hw_init(struct panthor_device *ptdev) if (ret) return ret; =20 + ret =3D panthor_hw_bind_device(ptdev); + if (ret) + return ret; + panthor_hw_info_init(ptdev); =20 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 @@ =20 struct panthor_device; =20 +/** + * struct panthor_hw - GPU specific register mapping and functions + */ +struct panthor_hw { +}; + int panthor_hw_init(struct panthor_device *ptdev); =20 #endif /* __PANTHOR_HW_H__ */ --=20 2.49.0 From nobody Sat Feb 7 08:45:22 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013031.outbound.protection.outlook.com [40.107.159.31]) (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 BB7D82EBB81 for ; Tue, 14 Oct 2025 09:44:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.31 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435086; cv=fail; b=QV4WKtIin20zVNPc2y4RrHjQdCtWcpUHVUWh4PSG0yo8YzLLs29Z6YremFeabBOBajxDG7WlYm/viHJSB7RSLV0/sjX9luKWiqIvN6IfVpXCsOVXNdTbGFiaPfx8qxnviQJNxvnrbLtN3JGl8BybA5rkXKnuFR+Tuw9u9kYRjas= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435086; c=relaxed/simple; bh=DZJgElcVprW+5DDfPlX6iK8yYb8Mvk5bO6OU3d9HLkM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PonNaILY0i2jqKXYjYH8XzXNAruw83fI0oMTdd4J8ztkeQKc6198kedvYYyK/gC5s51fiqM3Bjb5dFGj2c/TrL6B2TW1XqWFDtN8Sde7Fcr3T8UohYilSFKiRUK/uC9MgUjHvfbhfRY3Zox3Zr/wPK72GNv0VgFW/aB8wy5c1R0= 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=E9xidlXs; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=E9xidlXs; arc=fail smtp.client-ip=40.107.159.31 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="E9xidlXs"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="E9xidlXs" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=kmKUaWDLgVjwwLDPMLva7GHTLaZyd7M0ju65xQyDDsuPBgZ9PnmkypeiG9B5ASlkRKAN8TQJbbKgC/QPWv7U8S5PStTv+z3b9y5NlxOWZQT4e9U2+vo6FThA+806xPodX5CIZiu3M7cbT4Ma7cM8XaycfiJls0FlVf2FEft4rZL6hGUkbK4NG+yQVM7LtnWcMGiLu0LmcV2bkW8kqxEW4al244uZBjgDd/1T07Bh7Gvd7IMIwbCUwKF0tiiF0vvjhAMwEmtNQDleEEhR1IHuGazJOwf/vrLXhRe2bIzqdyY/PBd8dHtqJxQ1/6USRIpde72xRN3PdYondmjGZMBjXA== 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=hfH+6B3fwjdIugmrRJNP7xuDJ1cMcjvXCCgBV3UdjbQ=; b=W6AR9Rl5ZUHFOrlowlb+PIcQTjty2hFMh/5HZpLUy4VIiCgB9c6+rJHIySGlo2cdxj3q7DYSiz/KD1y5FHZ9LkjSSJrdSY7m6DAXHYkHKOeL3YuugqgGCKhS7bEyL+RswQWloFPMhjbi3sjFmMQu9Oty+hYqLaoyL1lFYkMIK9P8UtYXBqEU7OJmb1cL+qfpg8AHx81R6xjztwq70x5rUUVEWjffakJrsZEAf6SM0VCRKlbvgTKD3xUu2hZ/QNj/xNS99ra3XRNcI4/emhvnwX36asbgjYuMuU/NG/His/0/auqOy790KMu2FQpW+9B5+jb/mucj55K42OXcHc7lCQ== 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=hfH+6B3fwjdIugmrRJNP7xuDJ1cMcjvXCCgBV3UdjbQ=; b=E9xidlXs9mZfO7+IZWz7SWX+MV6yk255mN5ItKluJ5HJ+pQ3dID4h+22EeUn1antZ5CMrWUjHa4WaHiOoI8gVDXdNL30VTE8OVOU20JLhy69jekjFx4MC23rhX8GB+8Et3sUDB2kU+z6kdbfPeakZZHKPPWdzm7jp8DE6UfT3rc= Received: from DUZPR01CA0289.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b7::20) by VI0PR08MB11136.eurprd08.prod.outlook.com (2603:10a6:800:253::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.12; Tue, 14 Oct 2025 09:44:40 +0000 Received: from DB1PEPF000509EA.eurprd03.prod.outlook.com (2603:10a6:10:4b7:cafe::45) by DUZPR01CA0289.outlook.office365.com (2603:10a6:10:4b7::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.9 via Frontend Transport; Tue, 14 Oct 2025 09:44: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 DB1PEPF000509EA.mail.protection.outlook.com (10.167.242.68) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.7 via Frontend Transport; Tue, 14 Oct 2025 09:44:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=x+8TAy20ywj+aN5JTu04unhveXPFCK1p88Sm0Xugp+07MER/oI2vfOqkJxHRtsVlbgIcGWIJ3/4Y+ziB6JIc9QPOEnLe47mHL2kQA2eXlrXts5R+arLV5EZJU+Bol5fmDCfkf0HtMWLNXn0OM+0aNPifXwitU4fOZ5O1PaVzda8fcW6D0n0VKJyuWfuNru3ZZeTlVxqkBvi2iOZXmGTrk6CThXlwD7JneJzgvUNseg0IPYZJWBcwh7BRAlpSoGfbQunWfwRp5QcH/CsygYuGNPCugDz5Q8NjvaOiFiNz+psMqsNDCz99RDAUe1AWeXaJ4KF81JDM3hUgFAZTuAUqQQ== 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=hfH+6B3fwjdIugmrRJNP7xuDJ1cMcjvXCCgBV3UdjbQ=; b=CxSbAOqrVV55JzYv1lSB+kje2660i0mjSqi1QPdwm/OpzDJw5mThiAfyKoclGofwLBKrOTdmt+Q7G7Iv81AdF+UXAbzMgpKf2zPIOaG7KXLUuYrz8bnn/j4f2WEKBjRZ6RITEdXQa2EAd+YSEz7C8NCnloELwwdDnv9wpafnoEBxe+VZlt5L83LAfFqA2MfrGVy3kzKKdbZHobIZ2vFnZoKaKZ94qDqlcfIL0td1sPQ7lhiSMG3Yk/2nrpRYjb6CPPt29h5I9dwEuf3tWZuW7Jyu8Z8UFmXhl7JXOlx0uR5YpHwElLx06KOt7QYWaW4WWjGi1jnmzOwV73GSnQbjxg== 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=hfH+6B3fwjdIugmrRJNP7xuDJ1cMcjvXCCgBV3UdjbQ=; b=E9xidlXs9mZfO7+IZWz7SWX+MV6yk255mN5ItKluJ5HJ+pQ3dID4h+22EeUn1antZ5CMrWUjHa4WaHiOoI8gVDXdNL30VTE8OVOU20JLhy69jekjFx4MC23rhX8GB+8Et3sUDB2kU+z6kdbfPeakZZHKPPWdzm7jp8DE6UfT3rc= 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 AS2PR08MB8286.eurprd08.prod.outlook.com (2603:10a6:20b:555::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13; Tue, 14 Oct 2025 09:44:05 +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.9203.009; Tue, 14 Oct 2025 09:44:05 +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 v1 03/10] drm/panthor: Introduce framework for architecture-specific features Date: Tue, 14 Oct 2025 10:43:30 +0100 Message-ID: <20251014094337.1009601-4-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251014094337.1009601-1-karunika.choo@arm.com> References: <20251014094337.1009601-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0039.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:34b::8) 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_|AS2PR08MB8286:EE_|DB1PEPF000509EA:EE_|VI0PR08MB11136:EE_ X-MS-Office365-Filtering-Correlation-Id: cdcb9f30-0858-4378-a3c2-08de0b064bc9 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?Ipbb/jbUDLrt+LBxOson88BUh6B5mEZbav4L4S1VFO0iIOuPEoRdubjtBhcy?= =?us-ascii?Q?tE/2CZSB+PwwIrE5efYosRPSjwk17YvnY22+rD34Zfd6s1XjCwiwZ67jhEIJ?= =?us-ascii?Q?JJbEdlJEpl9yXKHGcBIq25jslFPpk3M6X1QRIl+SPI7nB1uRhpNuYt0JiafH?= =?us-ascii?Q?qOwsf634fAQPjZz3iTglJ70n83K4W/eapbxEVGTvE4YeFdN22wCxU9hu8uPZ?= =?us-ascii?Q?f0SQ4KD27ncgjkf9HZTtegKttrpwctb9b8FTrej7OGDw5IrRLSPBAeXJag8W?= =?us-ascii?Q?4Wm9mSgiZkZK/J439V7Q7v08dj9KSHgI1MOuOIoZnjDvdNQ2+QAALRM3YQlt?= =?us-ascii?Q?XrFlXr+II2yr/V4QxjMYiNpvUorEFsxLxnL1xBiHnpTqz+NOStmEQ0J4JrKU?= =?us-ascii?Q?tGmd03g+/NYsmzGIPFFuBr0a8oy1VydrN/mP1s7zU/vdbYHu1lFTk3YKliuI?= =?us-ascii?Q?P13Dp3KllKWhDqF9ip1HL8EW+cTDdXOcFWokW9kNecrAyqw5wXJARNucYAni?= =?us-ascii?Q?8U+m9iHt7QLJO0Xy1xCmBV/OjyLFz85SNAT2pofk7VMqgSxP5K3V2CnIQDpq?= =?us-ascii?Q?Rq37LkRtTKg7Sm/NkHJz+WeK9y3KdZK41azc6VIIEAIgm+GFDqh9NtmIv3dC?= =?us-ascii?Q?HGKHhhutNP6950R+QSTpqUrija2qbJ2tPxBxKyOztRi4uzbMJIfoItEJiBdk?= =?us-ascii?Q?L1ZNAdAyZkN7aFOLRv9yeMLD8jgXfXPA35uEsttnFcedZ76uWjpoMjKzIWCB?= =?us-ascii?Q?158Uz6HMoPaYwr1WTDjgQPiX62T5kGGVRLpU7TAKqZqBOxXw+qW8AOLmWyK8?= =?us-ascii?Q?r8GK9Zh2I4Ga8FPMm2Gg8MFK5pj5po5U96s2S4BV1VHmWzZkStv8cJpmLQe2?= =?us-ascii?Q?9aoajWzW0oRCmzdUspGm3A717l9ACkm5kD/HgtPdojWMlbekcaKmxW34574Q?= =?us-ascii?Q?9BIs7D+5AGuec3pgrbjvqWuXEy70O3XU1uzZpN7qHxEdKJ9YU3q9O6GvpTo6?= =?us-ascii?Q?QZhTMM3bWrgKxMbRud5BG9/XbeUXH2mYx5rH2gmMl3L4nM+q/Oi93TjtOJL+?= =?us-ascii?Q?UEbaFBTijuqrU2LvsWWxrPJJZzgXFZUt47RoPvFpreEagt3XXy+x475YUy3E?= =?us-ascii?Q?bf5E2IeNfCmFmo4fzlvEcmx54ey0K+Q0gXbSpV/6oOvEAzD44m2Z5Yoeov4l?= =?us-ascii?Q?5hZytgQ9+sOpilJtcq5XaAy798SI7DhwPH8no4N2a1NjUXZ833ZS12qxqjeO?= =?us-ascii?Q?W+4DBEBJ7K5mPoPXuHyDga5/RXgYXtc/mV4fLRDIUMVu/d6lEUDEkFZeQJvp?= =?us-ascii?Q?J+FZIp/rFoUWJ+KR8yUaYm5ZQKnEF4qpKouVJiPjaxeEy6BxVbu0yG5ZWlw6?= =?us-ascii?Q?T1ADHuV0FBZTQh/lfuepmx4o9PUgtszP6WDubCN8igKgiv4rIOnaCYovl9SO?= =?us-ascii?Q?IzrDzxqKgvtMw1ognDIAk0l0yi+M4Afs?= 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: AS2PR08MB8286 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509EA.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: c6f57e3e-89c7-46fc-aaef-08de0b0636cd X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|1800799024|35042699022|36860700013|14060799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?XdfojZANrsTRGVr9MUFpB+viPXMB3ePjboThRlMBvAWF0ZLuRzfrE63hshb8?= =?us-ascii?Q?HhEa5ThTKSIQWkxDiyIlywmlReduKWJu6e+YhNkFhw04aM6cW3O90Zpoqc6D?= =?us-ascii?Q?+3eCb9T0IZFbUBzkivuFts4vqQTesSKwfGY4VA3jcbvfjw1PD34BLRIrZea8?= =?us-ascii?Q?S962pUECU+tSuizSdgBXgI8wr7nBl5+nWHwfpSMrtX46DynmHrRxX98fpnp7?= =?us-ascii?Q?7WbeREgcibAk1jWUWCtvclgvwzxABTzCViGoZ7R16EOjTFdL0BSqN5+THaRN?= =?us-ascii?Q?7oVjcY2Jk7dq7gmttnxL4dhIAXlTB5I8rIwEe6HjG0nIzPllMwIVNRUWggeB?= =?us-ascii?Q?HZtq4l23/KMryvby7lpnTdgSylf8QC49R/omNqt49bu7yyAQqWxhqcumKEEu?= =?us-ascii?Q?iTldsrTN4bVWdKR3WsJQN+ollfDAA6jzPJn5Sle6mIAiIyo4KBxVdxrJfHtP?= =?us-ascii?Q?Ee/XH8EvzVFFSbAeIMtcjWpsob0pxAvhFN2pwInTjxAMzYlq96B3Aqd8YBde?= =?us-ascii?Q?fVCtoAtMVcEqkvjnP6WDZYL20bIBJL/ifWv8Yid31Jvru2Eh7DJ2F7pbUR8B?= =?us-ascii?Q?UBEj1C3lFzOk8p8RHkjszr4RTDL1uE/QYNai4UN6hl8Ng79bY05Ehuy7PYjS?= =?us-ascii?Q?GdtgBWNfFiUiwoUdzeD7lSQkg8DepIjoB/cgjrZA6N3bWajzQUXWSDyVBY5L?= =?us-ascii?Q?yRbojt1klZb52dKxYldOhaScIkke5KJBxAGO1MGhEpIr2/af1E7cIzSOZn+V?= =?us-ascii?Q?wuVkizrTFGTYVGIPqd8kWIK0XdesG9mLuP0hwvIdRxhCcepRit0sGkwFVoyk?= =?us-ascii?Q?4AmMg1UmdkCax8bhiPAMEHUZl9R6kIggUiRl+gAKel6r5gLdhTgyD4/CjViZ?= =?us-ascii?Q?N9LA3lB0OA7zL9QDRlO3Qc2DIfTkxTpajX57V4r/CRtw8ypULobpEcOYOVCR?= =?us-ascii?Q?+yipZT7qWT9dzRErcTgFuBV7+Jbq/YE2ZQZxScuxEkKR+GnyS7hZJzx0cdjI?= =?us-ascii?Q?qupgpRv7fWie0s5l+wU7izks05mdRNEme8BrgNmH8b7SsyuOTenGClJdSzwo?= =?us-ascii?Q?RzP1BKp4pkTNUfLFtSAPeERX43NiARDuJGyHZgbpLNfIbUqKrM5pqY280KLJ?= =?us-ascii?Q?A0DP3QB6d32b108eGLMtzIalB55YKfovFlQ6Gd+0La4N/0Oxorvz7akdXtts?= =?us-ascii?Q?dFgO7WMSy2MLyJoUbjobioKziBlyuK63AXWpI2o5BAZfv8GqlXp6DwgPB+8c?= =?us-ascii?Q?OdSVSTF1UTjs2z6iovkMaAOfQrOiDBZ6GJ9lNCTQ9ZO4ZDnKrPk8Pem6LELv?= =?us-ascii?Q?Qm2RxX0v7FOtzBj63Ox1U5PcX35jZtx/jscKi850eFtUhMF78tXB3odme2Pz?= =?us-ascii?Q?GsGIH7Pqzn5/kPvrJDQUBFRrmVHIu+EUQH/7+IqMOwRNnpD/XU/IHY1E5JcQ?= =?us-ascii?Q?w7T9s4eI4Ks9ntZc7xA2kZ4ld+PGXJ9FFAxv+Jz3ZspdeSg8YMfcr9ue/qyJ?= =?us-ascii?Q?aymQFFWe0iKejEp5/VoE87laPj2bcSDLwfa51YyXgTro5dmZUdQo+2mPuI7v?= =?us-ascii?Q?wsaaHvPBBYxiYnLnt94=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)(376014)(1800799024)(35042699022)(36860700013)(14060799003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2025 09:44:40.1349 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cdcb9f30-0858-4378-a3c2-08de0b064bc9 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: DB1PEPF000509EA.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11136 Content-Type: text/plain; charset="utf-8" Add a framework to support architecture-specific features. This allows other parts of the driver to adjust their behaviour based on the feature bits enabled for a given architecture. Signed-off-by: Karunika Choo Reviewed-by: Steven Price --- drivers/gpu/drm/panthor/panthor_hw.c | 5 +++++ drivers/gpu/drm/panthor/panthor_hw.h | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor= /panthor_hw.c index b6e7401327c3..34536526384d 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -186,3 +186,8 @@ int panthor_hw_init(struct panthor_device *ptdev) =20 return 0; } + +bool panthor_hw_has_feature(struct panthor_device *ptdev, enum panthor_hw_= feature feature) +{ + return test_bit(feature, ptdev->hw->features); +} diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index 39752de3e7ad..7a191e76aeec 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -4,14 +4,32 @@ #ifndef __PANTHOR_HW_H__ #define __PANTHOR_HW_H__ =20 +#include + struct panthor_device; =20 +/** + * enum panthor_hw_feature - Bit position of each HW feature + * + * Used to define GPU specific features based on the GPU architecture ID. + * New feature flags will be added with support for newer GPU architecture= s. + */ +enum panthor_hw_feature { + /** @PANTHOR_HW_FEATURES_END: Must be last. */ + PANTHOR_HW_FEATURES_END +}; + + /** * struct panthor_hw - GPU specific register mapping and functions */ struct panthor_hw { + /** @features: Bitmap containing panthor_hw_feature */ + DECLARE_BITMAP(features, PANTHOR_HW_FEATURES_END); }; =20 int panthor_hw_init(struct panthor_device *ptdev); =20 +bool panthor_hw_has_feature(struct panthor_device *ptdev, enum panthor_hw_= feature feature); + #endif /* __PANTHOR_HW_H__ */ --=20 2.49.0 From nobody Sat Feb 7 08:45:22 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010014.outbound.protection.outlook.com [52.101.84.14]) (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 5437E2F0690 for ; Tue, 14 Oct 2025 09:44:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.14 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435091; cv=fail; b=Lk27RiAHdTqUx0SOoZkNCnCV3WpHwpdBwt81dcdJxo5hD/w2QF/nPoMJCjkotXjKNAd+yO5DzpsYnCkrIrFY0j3co2mBeYb+TQ3COnMWMdosat9Hljp1e1Ra0xo5cyxdZxpCovqUzHqREmns0ULywz9BWUSrR4mryFMMFvT7SZ4= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435091; c=relaxed/simple; bh=hxkNczKBaikjC71MQowckPHFd/ZzspR6CGqfhZbd4yE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=gvWZwf3yvbUcSHgCSkAocbMyb7xKxb24f+5S2qRnmTK9jgJUQmBQWEU5j74cHG6qUUpu1QC0DuoP3e5nXOrTY1ln4YkKoneK26dEguPSyoSkhZLbcq5JFowYfhxbGQiZdpbxOWn84iGi/J4H74G6nyZP8RCcXA0i52eSrMJrxyM= 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=YjYuOKKB; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=YjYuOKKB; arc=fail smtp.client-ip=52.101.84.14 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="YjYuOKKB"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="YjYuOKKB" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=e4EMWasCt9g5HDyurjjB4KKV9MZa07MdvycpXDWR8vgWbZc8ZzpEHHHaRTPkwCyJ1W+dBoDQ8aZ+Hg/4cvp1jBj3YN7qq7rJ61klkq4Q8oNAusCOaxp5Bvt/uQsm+cRDpccWsLNnx4SSt28gvSuigSvr2JKpN56CQ3iBK5VZSZfKjM2rB0i8jVWjU9/COMvzGn3rxnGR5T8OSyzgv/TligZtvCDUa/zWDbAha8RRKe4kQk1Bf6UmHRVhU9f9ayqAaFRmSG4E3a7WzAo5xj9a9LTEb2aa6iX6nwMOj0DFzg7agedzHgik0UoWmE9PAVQrVa1BM+08W73H7O65UrDYJw== 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=FCUKKsvPhipuAzajm7IEzThtaIfKt1fk2izws/hH0C0=; b=NSH7ki5asEcB8i1QnSkRkDBl/oC8/vKIcZ8VB4JmYL8uG9Iy41HpOmJYSk3FR2Dm68f4jA6U9SKaM/jhCKjeZYjm5VuxB7dEn8Jhpe/bDrbzcrzhwPEekMXTuLXx/c90U1WvDiCJ6HhKYLBdTlqoKZZ9o5wGQKokf2ccUvDnBCgUx/hhbN5fJJyy5C3N1e8WhVTcEr+dGt4mMMUTwsIQD8H2252o1G24Rp22bCA2Td+uw576H+a7UqX+RKN7xzfzLpNmRmwckylg9TKL7SPndwBsh14rjdMFex5ikcGJoqysfPFbA4GYcF6r1grkdyxGyZovAumVxE3TDPcBdlEb+Q== 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=FCUKKsvPhipuAzajm7IEzThtaIfKt1fk2izws/hH0C0=; b=YjYuOKKB8y//OK5vxPegjCdzRuMhJe7qnIo7RMHcRU6GOZp/c1RquK3HUvkXKMVBHVdczJWieMQFHhCDggM+NbT+gt3pd0n+jL3BAWeoh1tTAQj3M+ObyjGuRUetoPAMFAvFPf0rO/TVmRMuzdwf/VcjIbR9mJLaT9NqEwz+tcA= Received: from AS4P189CA0038.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5dd::10) by GV2PR08MB9232.eurprd08.prod.outlook.com (2603:10a6:150:d9::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.10; Tue, 14 Oct 2025 09:44:43 +0000 Received: from AM4PEPF00027A64.eurprd04.prod.outlook.com (2603:10a6:20b:5dd:cafe::8b) by AS4P189CA0038.outlook.office365.com (2603:10a6:20b:5dd::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9203.13 via Frontend Transport; Tue, 14 Oct 2025 09:44:39 +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 AM4PEPF00027A64.mail.protection.outlook.com (10.167.16.75) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.7 via Frontend Transport; Tue, 14 Oct 2025 09:44:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IaAZt3dSnIQh90RdTlenvZEW7noUYyh+MkkRB7NZ5BHRcNayVH4APunfE0Z5+yjiUlQeF2/4bsTrvRqiidkLfZraGGt7sUYYhKbKqKaeuiLkLJlpk49rK//0l5Q7ElWDHJHbkERNrT0NgsU6QkC5sM+P2tIhz0gNtlIIoIQr8DWcmXtAb+BnWNrASbb4rW8wYFvCbcEHyCyL6gwtIMM3XOlr8gNI858J2n6X0+iOMshMo1iJwsIGXHdi/hzPOuUECI3SKRL99fmINpPhQM7GJTSdPPPJibJ00jCr1uaHAV4q+BZqy+7nJIvIyFFbHLpxLfveGMbSyxpeNd0x1VB16A== 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=FCUKKsvPhipuAzajm7IEzThtaIfKt1fk2izws/hH0C0=; b=XVQk3QYddlZ3Bq8+Gta4XN4VSQpc+WTSgd5c8IX2cbCnYgQu/WxopLHXRs6wJf7jhpuwYwmyr2kRfgwORE2Uy9sMzal3HmNv/vBwKL0B4tK+xiLWR1z9n94/Jl050YROVoj27vk5YHT0OWkUuz0tLKbj3n3Hn0Mwd8CD2YUvxSntVVdnW5ZCO6zXnWq9G6lAgLeC9ZQdL9JVHBKIC1ozBQh4Dv6Pb/Rs+LyBfJ5mg01dmQS5HMhpV/3i/7mPPZUigYduze1h7I1BbXcy3S7dDwPx/GZS/KkeWPY/1UYcGoiOsqcwP/t9Vrhv5gbDmINkEgfZs8XEZC7ugjR6ge0TQQ== 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=FCUKKsvPhipuAzajm7IEzThtaIfKt1fk2izws/hH0C0=; b=YjYuOKKB8y//OK5vxPegjCdzRuMhJe7qnIo7RMHcRU6GOZp/c1RquK3HUvkXKMVBHVdczJWieMQFHhCDggM+NbT+gt3pd0n+jL3BAWeoh1tTAQj3M+ObyjGuRUetoPAMFAvFPf0rO/TVmRMuzdwf/VcjIbR9mJLaT9NqEwz+tcA= 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 AS2PR08MB8286.eurprd08.prod.outlook.com (2603:10a6:20b:555::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13; Tue, 14 Oct 2025 09:44:08 +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.9203.009; Tue, 14 Oct 2025 09:44:08 +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 v1 04/10] drm/panthor: Add architecture-specific function operations Date: Tue, 14 Oct 2025 10:43:31 +0100 Message-ID: <20251014094337.1009601-5-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251014094337.1009601-1-karunika.choo@arm.com> References: <20251014094337.1009601-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PR3P192CA0015.EURP192.PROD.OUTLOOK.COM (2603:10a6:102:56::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_|AS2PR08MB8286:EE_|AM4PEPF00027A64:EE_|GV2PR08MB9232:EE_ X-MS-Office365-Filtering-Correlation-Id: 2b10bd68-5291-45ff-d682-08de0b064de4 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?TQiDSbuDWx7c8sluxxbXF6HouWTc7niLsr6/QdHjX5IPX8TSDkZADCBwTwVO?= =?us-ascii?Q?iGQxRJM/UH6iDdpk2rfMKIXtqJpcEXEIR9Mx6QInGhE7VTHMnYeIHVomrNab?= =?us-ascii?Q?kgO2j2gioPB9ObXFjh7icdIBn3b/OtC6D1QjQ8FsizeDZ04AxbfzRTjdoA9Q?= =?us-ascii?Q?ymnai6VIQhXmXZil8Yp2SanZYGY6ganNm0cCtC5y/2K+i/AHeKtQXi3M2UaO?= =?us-ascii?Q?Oyp5huiKklz0jmqXkyWKWJspua1gnCyddO0a9zMVgCA3xqz5aPnfX79MbCSv?= =?us-ascii?Q?g2RSPP8bonWOTBhwu+ohbiqKoP2qbWEUdwJozwYMNrjajvDpKQQMXlG15JGq?= =?us-ascii?Q?mACIhcibvlNU1uIU1zorA06MPrOtZS8v4Tfo3KDoTD4EvUd6sSWaPUqFWww4?= =?us-ascii?Q?yM7rjnRSiQnCU/h9wBsxt1ExhNYe9ObM8uCLhsSC7o0BQiLQh3DZhJ2A1m8Z?= =?us-ascii?Q?BOhoYeb2/SgJa63Dad2ZrOV/Uyj/GuD6WROli00OPbNoB5fuW82zw3oOuxPt?= =?us-ascii?Q?NaDIguinKl/mwALnwhKc6T3utIsUZv32VeF/dM083Y1NPUmOOvTmh0jyO5QQ?= =?us-ascii?Q?oDT2kumn788Z0IgzeZohHkn9yBFdg6HzKHtnSsZArovXPj6oFLfZPNEcBe9C?= =?us-ascii?Q?/Bac2IgH0L//CydFwKE4idQU4GR+gki6BYfBMmSaczV4g7S85Sh6m8qlLiT9?= =?us-ascii?Q?PvFdQNcQLVrR5QIvaI3xAOX/yaBKcun3iFq8dEj/NHsAloGjNrV/YPnEvAJB?= =?us-ascii?Q?EOJq1z73yQGj7PtuI3i1Z1l4qL+4Lmi4kXkFPQPpkYcXAUOujNu6a2cb0dSf?= =?us-ascii?Q?5Xp2yV5GFX8Jfa/NF/t3DfBfjlMyRRkOzeobH9cXrQnwEY1v3o6shQi/Kt8R?= =?us-ascii?Q?dKDzqxvVcXyMQFFxkQpP+l+njU8Ex+5v6NgIEHNOPnPJ8zwA85eLkO2CaF4L?= =?us-ascii?Q?AcfqijffexeN8AuGLrj1UV1yy2vVdzS2PLOMPDPhA+UAyvNXlpcYZSW3CNiW?= =?us-ascii?Q?ThFZOQwPxXbGgG59NLreb2J5WQiFgMc+aPbB3NO0vm93yV9E+TYlqoRVaG08?= =?us-ascii?Q?wMML0+tI6SuJyfuIGdNaz5IgMdklGcT1vZrsgn+zKHbAr/TbZZlOlsehoY9j?= =?us-ascii?Q?0aJ1Lk6Oo7ZdoCRXRAuHQmRdr2fzhllYBYLab9zQImxxcRHSq/51WzgI6byK?= =?us-ascii?Q?6ojhgUI5O8PjphuRY3uXwzAxso52AxxdgaDPTNvkVFX1iUAFQEJdhfjAIgjJ?= =?us-ascii?Q?bD4Uwn0L3f9ylrBocu5ByBncrz+Ro0+iw1AMiNgm2OGvJ/T6A6o0BLjof1ta?= =?us-ascii?Q?nZ1A36Sm+H6jgXSzPca/IeWMx+KV5EfyhlQ11oGQKRJlqSrh+p1DraXGfwUe?= =?us-ascii?Q?KqVzLvpa4LdKglnLVwhmPE1NXWAZ/FMF5XK8FHRqQuZv+lJVAczcBVffAnQ4?= =?us-ascii?Q?+1wtMPKiZvGq9TSn0OcD7pg4lT6uCzJo?= 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: AS2PR08MB8286 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00027A64.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 7f88f847-053a-4a78-385a-08de0b063836 X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|36860700013|82310400026|376014|1800799024|14060799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?U70Y54Lm9mFLL1GdUJ4TQ4l+E9QPgey9lH8AmzVmuX7z1Mgfbf3nsWR6pkLK?= =?us-ascii?Q?Vjq17yJKjeCKz45d44CSZ0JO8e1KGJU+wOPA1e+D2EemAxawoQEeZu2FmbpQ?= =?us-ascii?Q?qpLUNucMM+s63VkyFA09n7YfIPcvv8t/X07q6PK1PkU52R99Gi387x2Gpmbv?= =?us-ascii?Q?vFNdBWLeJIUEx9fzBJOD8KOZhW/OkLeDbtjl4Je7qgP90ukxmCh72YLJNqfj?= =?us-ascii?Q?Hv3AlJ1qDLQWLTwa4rdOvuLMdvNqvu+RZ8NLDZ8mHKnooSNy+fyjC8YOJkMx?= =?us-ascii?Q?XRZzOEuQgoRY3mrpBe71Sb3OAE7pV7+QTX4uql/5ZU5Mr3vbTV6Ksa/MvtDL?= =?us-ascii?Q?HDfFn1U4mw+kvgd3BrmIel5Wn/PkBFJO+Avc78KunNJMv4jUF8SeutwpOT9v?= =?us-ascii?Q?n9xRlyzDFE1cQckKgef0EJJs2oj269Dw93FaRCG5SEM0vySszxvn90dKK4tF?= =?us-ascii?Q?wionm2+p8KGp0dKhD8QwZxvLK+/agz8RQrUzQiT4ADmOY1ORbh4y2lZf91ik?= =?us-ascii?Q?tVOnhMdE3StXVml+1lKBVjJ2DCGzTob3gpF2bvprQMA1CAyrDlNjY9STP5xs?= =?us-ascii?Q?hgV02J2bTHI94xn1ZRJBzcWnR0omUR+V/rIh1yBLH+oYCdE9KwmExts1dDxO?= =?us-ascii?Q?VNZz8rrVX1IqcPBhtlfDpeHezAJlwp6AzItlRxG7JVb9EqT3RkJZyDxDxPZA?= =?us-ascii?Q?BBLVGh/5jp0Wzy0hm4tWSMWkjWvZjnAUlQIKojUx3haFtpomEHo8pvXdyfmZ?= =?us-ascii?Q?CI5kWgfhK0lo08o113r0QkQVt6rvSaQmHkoTcYKerFRljS2I95GaSEDpv2O0?= =?us-ascii?Q?LMfsf4w6OVcN9/Od1m2lVrMzvuInRIK23ZnFTZ9iCsNu5SbfzJbLVU62q3Wn?= =?us-ascii?Q?23dgA50prA3myjwPXvXP4NS8YCCZcD4AlgxkRhUy6cCUI37Z7rBI08Uzv/W2?= =?us-ascii?Q?APQZ/BneprT+zGiPN1ILnW9mLVn6+4J1JnHJnA3SRIbLggTEuQLDVu1r8k9M?= =?us-ascii?Q?3t+u4h5UZmjzpYV8Bjyd/nBHERnRSBdUbepmkxoWnjWqRlYgIQvar7ZcRP7k?= =?us-ascii?Q?b/v2sDXKBUz0SkglBeBcYEDmbMT1KYhszOv3HkjgGZyKl33jR94EVW9p8ZU5?= =?us-ascii?Q?jCsOaQbF9eyoeWSXdAwc22dbuG8KVa3r9MsPG0bUqZWH2mNP058AxQj6xRyN?= =?us-ascii?Q?g9TPhQSwxvJYpvAxzA1cAFvepC28ggAW2AwgQBT9+I4xIP519xacfRTPyOZj?= =?us-ascii?Q?SmXBGbMJux0L3CmM0xsR+SHaefc0K2KLmICu049I2a2IJOZH4nMu5xk+4/Wj?= =?us-ascii?Q?ij7d/vJVNwP3fM9r58wYalNH+5qqN+hRMc1Ug3+Lu5wlsnS6tAWu07HmknzV?= =?us-ascii?Q?gZVkj4HlCFGC53mIZ3S9Me6bVwv8AcaUUD1uwTmq/gs7gnixjuR8MpTb87k8?= =?us-ascii?Q?JnNA+Wths9rzLWMo+y1oL//y1FOZnB48W5ImaM+PkeJ0nAaApWNX8NDgS2Pb?= =?us-ascii?Q?SyhgCWyvLqD47ArU+5STviglvsyL7cCx1MaUIw04M/Ncg8ptw7Ytk0NKWrpp?= =?us-ascii?Q?0tpSNtUy7/2yZIAROlQ=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)(36860700013)(82310400026)(376014)(1800799024)(14060799003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2025 09:44:43.6739 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2b10bd68-5291-45ff-d682-08de0b064de4 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: AM4PEPF00027A64.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB9232 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 Signed-off-by: Karunika Choo --- drivers/gpu/drm/panthor/panthor_device.c | 4 ++-- drivers/gpu/drm/panthor/panthor_fw.c | 5 +++-- drivers/gpu/drm/panthor/panthor_gpu.c | 13 ++++++++++--- drivers/gpu/drm/panthor/panthor_gpu.h | 1 + drivers/gpu/drm/panthor/panthor_hw.c | 9 ++++++++- drivers/gpu/drm/panthor/panthor_hw.h | 23 +++++++++++++++++++++++ 6 files changed, 47 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/pan= thor/panthor_device.c index 81df49880bd8..847dea458682 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c @@ -141,8 +141,8 @@ static void panthor_device_reset_work(struct work_struc= t *work) panthor_sched_pre_reset(ptdev); panthor_fw_pre_reset(ptdev, true); panthor_mmu_pre_reset(ptdev); - panthor_gpu_soft_reset(ptdev); - panthor_gpu_l2_power_on(ptdev); + panthor_hw_soft_reset(ptdev); + panthor_hw_l2_power_on(ptdev); panthor_mmu_post_reset(ptdev); ret =3D panthor_fw_post_reset(ptdev); atomic_set(&ptdev->reset.pending, 0); diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index 9bf06e55eaee..e6c39c70d348 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -21,6 +21,7 @@ #include "panthor_fw.h" #include "panthor_gem.h" #include "panthor_gpu.h" +#include "panthor_hw.h" #include "panthor_mmu.h" #include "panthor_regs.h" #include "panthor_sched.h" @@ -1184,7 +1185,7 @@ void panthor_fw_unplug(struct panthor_device *ptdev) ptdev->fw->vm =3D NULL; =20 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); } =20 /** @@ -1363,7 +1364,7 @@ int panthor_fw_init(struct panthor_device *ptdev) return ret; } =20 - ret =3D panthor_gpu_l2_power_on(ptdev); + ret =3D panthor_hw_l2_power_on(ptdev); if (ret) return ret; =20 diff --git a/drivers/gpu/drm/panthor/panthor_gpu.c b/drivers/gpu/drm/pantho= r/panthor_gpu.c index db69449a5be0..431ac866affd 100644 --- a/drivers/gpu/drm/panthor/panthor_gpu.c +++ b/drivers/gpu/drm/panthor/panthor_gpu.c @@ -18,6 +18,7 @@ =20 #include "panthor_device.h" #include "panthor_gpu.h" +#include "panthor_hw.h" #include "panthor_regs.h" =20 /** @@ -218,6 +219,12 @@ int panthor_gpu_block_power_on(struct panthor_device *= ptdev, return 0; } =20 +int panthor_gpu_l2_power_off(struct panthor_device *ptdev) +{ + return panthor_gpu_power_off(ptdev, L2, ptdev->gpu_info.l2_present, + 20000); +} + /** * panthor_gpu_l2_power_on() - Power-on the L2-cache * @ptdev: Device. @@ -344,9 +351,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); =20 panthor_gpu_irq_suspend(&ptdev->gpu->irq); } @@ -361,6 +368,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); } =20 diff --git a/drivers/gpu/drm/panthor/panthor_gpu.h b/drivers/gpu/drm/pantho= r/panthor_gpu.h index 7c17a8c06858..bc67546f3f6e 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) =20 +int 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 34536526384d..77fd2c56e69f 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -2,6 +2,7 @@ /* Copyright 2025 ARM Limited. All rights reserved. */ =20 #include "panthor_device.h" +#include "panthor_gpu.h" #include "panthor_hw.h" #include "panthor_regs.h" =20 @@ -20,7 +21,13 @@ struct panthor_hw_entry { struct panthor_hw *hwdev; }; =20 -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, + }, +}; =20 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 7a191e76aeec..5a4e4aad9099 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -20,12 +20,35 @@ enum panthor_hw_feature { }; =20 =20 +/** + * 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); +#define panthor_hw_soft_reset(__ptdev) \ + ((__ptdev)->hw->ops.soft_reset ? (__ptdev)->hw->ops.soft_reset(__ptdev) := 0) + + /** @l2_power_off: L2 power off function pointer */ + int (*l2_power_off)(struct panthor_device *ptdev); +#define panthor_hw_l2_power_off(__ptdev) \ + ((__ptdev)->hw->ops.l2_power_off ? (__ptdev)->hw->ops.l2_power_off(__ptde= v) : 0) + + /** @l2_power_on: L2 power on function pointer */ + int (*l2_power_on)(struct panthor_device *ptdev); +#define panthor_hw_l2_power_on(__ptdev) \ + ((__ptdev)->hw->ops.l2_power_on ? (__ptdev)->hw->ops.l2_power_on(__ptdev)= : 0) +}; + /** * struct panthor_hw - GPU specific register mapping and functions */ struct panthor_hw { /** @features: Bitmap containing panthor_hw_feature */ DECLARE_BITMAP(features, PANTHOR_HW_FEATURES_END); + + /** @ops: Panthor HW specific operations */ + struct panthor_hw_ops ops; }; =20 int panthor_hw_init(struct panthor_device *ptdev); --=20 2.49.0 From nobody Sat Feb 7 08:45:22 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010055.outbound.protection.outlook.com [52.101.84.55]) (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 D67382EBB83 for ; Tue, 14 Oct 2025 09:44:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.55 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435100; cv=fail; b=dVieGvZ1UcCLQptrVGko085y7TlBpQIlSbFU+Fs0qI3zT2LkK4eoC5ocsQqUgs6VkDKqu+4AQ4hx7yMpLoJcseMORJfjyvPZvIPfrgBOzjBwzKdH308AVY5bxovhYUU1HhRiDXb0+/Vdj9kPe63t5/9k67mmL1RxBxl3+ms8Ilo= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435100; c=relaxed/simple; bh=laLSoxzo5IBwo0XpcFrf8yChCEufR2vfaJYl+uFDA2c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CtYrv2id4QgnCJJWCn1urk9LbKaTAi02mrfzyWVc7pAL4kkVTmumLsBxWFFYjvT+p1A3jFuORZNQCsUbVUE3r8ejHCgJgq4/Zi26Tirab7sOatJ8ewsoPfJ+MQ4qo54msTnA72E4/An53q9d0IATmdw9wuqn2G1HApcyfGiJru0= 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=N4mTUSr0; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=N4mTUSr0; arc=fail smtp.client-ip=52.101.84.55 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="N4mTUSr0"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="N4mTUSr0" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=WUWI8SR1RAKNzQGNCTrsmDy7c+3/Fu8NZasNdwrH3BHK23o6ZmkeDGqi63hUQIbGRPaiJzxiRWvGRK88amSaWIYYLP85f8YucIIHok+sJaJC1SDdZch4bLdOdp0JQl+0NE9bLacDRT84ce/8MIYMsFJej9xd8kT9V3zlCQJqEbwwgEDEMRUq8V8Zx8VJoolqDVrYqIlhEH1I93Pe5Rg6Kxc0h303+kOGA9VsJfMQva5bgeS9PHfykcuhWsEf9WwSn751ZndvK+hwGt3NvEprCjX9X484Bs0hNQXw8x81db1dP2vLYSb3rk5aRftcCxpQukvA5jUgGlicHP/My1eLHA== 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=CHf8jhFO02tY6q02C5E50gvV4LZaJQSBPmcUlhVOKK8=; b=FUs85irKZLdOJir+oaeXM8sDcDb0yuuy+pCG0Hi1BMzuqdCZOg007AO+j+5m/dwEW/wcdryTbepuPAYPg/3omFhy1nuBbjGvUw+oD7E8PukiJjM/VNYZpSpa2GvrwyogcvYtkRXUs/KjS1/4rTp1aBIK8tbw5d2NU/WhsW5hZUqUcAbkMJSoYiEBpn7zpJVwU6x0W0qqneiot041UJi9dz8BQTnOHM2DQnTO6aUB3Zc4xyKvis00AOSkPXszBQD7g17cvzZEbmAA+YJxe/+uG26BuKQOdvfFw6O11IhpSywd89aEGhxQqEuQBjBrCLrVrdboJ9I449lH2t7/n8HxcQ== 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=CHf8jhFO02tY6q02C5E50gvV4LZaJQSBPmcUlhVOKK8=; b=N4mTUSr0ESf7dQopyi5ozRxmOpEtL5Qygu+UOJ+lZh76aOGYF6JcO2YY4X8jcVD3ese0rqAdsl6tobmgbquyv8nZDEAWA499mKLBSJJ2UR74cIIK/rxK+p6vFs0VeoTNKzYhDkg+xXFQyVjd8Qv0VD0pdCcZL4iBBHP77uKDHbw= Received: from DUZPR01CA0090.eurprd01.prod.exchangelabs.com (2603:10a6:10:46a::8) by AS8PR08MB8444.eurprd08.prod.outlook.com (2603:10a6:20b:566::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.12; Tue, 14 Oct 2025 09:44:50 +0000 Received: from DU6PEPF00009525.eurprd02.prod.outlook.com (2603:10a6:10:46a:cafe::12) by DUZPR01CA0090.outlook.office365.com (2603:10a6:10:46a::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.9 via Frontend Transport; Tue, 14 Oct 2025 09:45:24 +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 DU6PEPF00009525.mail.protection.outlook.com (10.167.8.6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.7 via Frontend Transport; Tue, 14 Oct 2025 09:44:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fj5dFvUutkLBSXrTLokS8eB/AukbTxqelMCCuYjqGDSv2LhDGhzP3DykYDwtMVQnHLqsJd3m8QyS1Ldpa4QeCRmTb4RxP5b8kr3TR/2M1E0koxk6xhpLFFLlZ8SwEUZPS5AWvQYrsFqTy1AcOnj3sUWtHoLVbSoYJPkBXzFaFKqHdymBSdsTgT8cWMg2tXO940z74E6ehGraiA54z6MlBQ2u9BajCkEYCSKHfYfGU38H/uV7Z+9nn/c7aBoLudXHxpiJh68mcfo2jEnWyM/mYelNmfxWTQOAgjtcUi1SiGYmmywi4pI0+ldGfKBcBj7vZIGNE2ZgTzdcSqsUn6eAWQ== 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=CHf8jhFO02tY6q02C5E50gvV4LZaJQSBPmcUlhVOKK8=; b=ews67tHddQh22+rdEsce6Y4FS3ARwrKa4cjRzHHGK+GGrbVnluTH9tXtK11kAZ4jEiWkTVQwbkrB0UYIW8EmtfV1CiCOCV1Hb49xE3WKakftrdhfoGE0RojcHrfhveVpI4zNNEvweI7PPyX+lRfwuGIq4pyaPtuGVfMyjM0n2eV6ixRvNTR9LKaSSwbnCb1ukptVHUu0GwBuJ1bEUYOthCHebka1HB2AmmaUNVnNFr5e0suTwRfPnysX/0Wc8xtnzZ28efmkFKyLyeB5ge837LxvJyZ2Ai/kBQAW+rt/l0p0hr5iKz+7WMLpS/a26PAN0E8P5drz2GiKrWKx4/pdJQ== 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=CHf8jhFO02tY6q02C5E50gvV4LZaJQSBPmcUlhVOKK8=; b=N4mTUSr0ESf7dQopyi5ozRxmOpEtL5Qygu+UOJ+lZh76aOGYF6JcO2YY4X8jcVD3ese0rqAdsl6tobmgbquyv8nZDEAWA499mKLBSJJ2UR74cIIK/rxK+p6vFs0VeoTNKzYhDkg+xXFQyVjd8Qv0VD0pdCcZL4iBBHP77uKDHbw= 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 DU2PR08MB10039.eurprd08.prod.outlook.com (2603:10a6:10:49d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.10; Tue, 14 Oct 2025 09:44:10 +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.9203.009; Tue, 14 Oct 2025 09:44:10 +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 v1 05/10] drm/panthor: Introduce panthor_pwr API and power control framework Date: Tue, 14 Oct 2025 10:43:32 +0100 Message-ID: <20251014094337.1009601-6-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251014094337.1009601-1-karunika.choo@arm.com> References: <20251014094337.1009601-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0281.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:373::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_|DU2PR08MB10039:EE_|DU6PEPF00009525:EE_|AS8PR08MB8444:EE_ X-MS-Office365-Filtering-Correlation-Id: 42962946-4fed-4f6c-2f08-08de0b065040 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|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?47ncGPyQz5VRYce+EO8lDpgFnWTzhRO++373PArEfvWNBllZPPBePjrODuNj?= =?us-ascii?Q?Z+u4bxpIGo/M6cD1z2bNNb8WbEY3lB1N7NEI5kPSclPSq1MvCaXGQZKQ3zaP?= =?us-ascii?Q?lYw/Vj8bqz2H4OIYp14uNUYV0m3QiqilV+ErF5TSoqDiLgtZa4YFGQkz+F6h?= =?us-ascii?Q?8rFiK8IlgjkMHIH1nfzM3OZfOGK/5c3NclNFGTl6YIl/R2UHQFpyLBaUb4m1?= =?us-ascii?Q?WB3s7kJsIj0zVnqGJaxuRTXktrIKseBETiXlizaSTbIjlRrpz2Ej3Tpyju7n?= =?us-ascii?Q?ZmbVuLvMLu/dFsBFzJ0LsNW3z7grDQHz1X6bfkXsXqJ0jB45GR/J8UeJi/Uj?= =?us-ascii?Q?iIpqfAJOjf1K7FCi5cfhEZcDXWkWGsADMF7OHJ5iOlIYlE9JmJUZdQem2qJB?= =?us-ascii?Q?Eik7a7d5F0nABmhVcACe6eTIOI9bUDEux8c3pDVwejtqawsgyn4rCG8YlYOW?= =?us-ascii?Q?3tg5IqqIjNZlxEZZsLXz9G/cXPnY+gbg3QgAjwdHolCGsw55hUXujKZpx8iY?= =?us-ascii?Q?2Oydt/v9+BBWL5Ook3XoUcBrrwfTlmrc2EngSnYvITN1RQ2ehHGL0zOQUXyX?= =?us-ascii?Q?c+lxOnI/NeCaYIHQd6rI1s0H1w7yoRHi3Ig1N+W/ilC/13uHS910/u1czsLS?= =?us-ascii?Q?4qe6O2vx+RyLyZwxgFG52Eu9mx8ajDyDdqly7UyvxSZEYuoO88P3tbgAohzc?= =?us-ascii?Q?66w49YJeNxLgM758YfWjB3//iBNQPLl1BM1WaUdhOq4BgT/dAKDJsFXienqV?= =?us-ascii?Q?uFEQg0hHy1/yCBu+WdtY5Onhu9nyZlD2L4umwQNiw9ime9Nj/oWUVSvcsE6h?= =?us-ascii?Q?mHhowodHaZesAjq5DYN4gpZObiMCV8/iLI46S8xdgIP88wqstXSQYhp3OUxQ?= =?us-ascii?Q?4O9+LGZ3Y9TO0bLUZTLB/OXHLE65pqvRH+qvQqevIfKlTTfIW6bSGdq6fdSr?= =?us-ascii?Q?JhQ3NU6SZx0jsfjZ7GNZypxBjO+IYPblvXYbTo3Fd0ytNsrRdbLCXRhMFgtH?= =?us-ascii?Q?F3Pk3ib/+RlB6tV9AardCQDo4gE5pt4sEeUVpB7M+sSLZlbTPa6uCS0VpnYc?= =?us-ascii?Q?ARRjznGASjsxOtKc7qYJemYuU1unbvuiJRXx0AQiJPMMl3+WG6LJGFimuQ5O?= =?us-ascii?Q?/Pxqi+ZbzlSCmhGBw8O35z/tZmHB037AdxajCH+KsuWNQXyHFIuY7oJ/oOJr?= =?us-ascii?Q?+4nSA8g5pm1FhXR5xuU0VuPxxFh3SDJ50vUAubBDpHbSA2AhxQC0Ikq1/axc?= =?us-ascii?Q?xD52LEzb9TsuPsBcUxmAug5aB6ROQzq/aAmbKde3EgPwtOpuFbVJ4vTVX14N?= =?us-ascii?Q?3q6gZoesiWpa72J5Mp89JX+zNrSy9JM31ScX0aFZfw3XfuN+4gNalHa9ursE?= =?us-ascii?Q?1vDRaAtN3LS3/zHAkr0S54OlPZsE5O3lifr3JxvfFZuSh7BkeEjyrFnOHwHq?= =?us-ascii?Q?AGmnbBnroVy6wm1/AGE+qqLeSXjqpSs2?= 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)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB10039 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF00009525.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e6b806c8-b5bd-4832-750f-08de0b0639cc X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700013|82310400026|1800799024|35042699022|14060799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8CZKVVkFtMqoEheTg+Bwjjidu93fSAG3Fqc02qWGLuGGCbN0GkJv0WiaczbU?= =?us-ascii?Q?qxJkCMSfbWhtGB+qmD2rrTD/kOgMBMZSJXL2bqpGApQlYpwwJl6pVlmtu1oR?= =?us-ascii?Q?doxdTC0Y/OeWSK7ZBGWKhND2FQC/Sx4jeOPJteKotyuMoFTumtSMBR8jvpvu?= =?us-ascii?Q?VO3j1ZHeLj63qpNEbCNDsI9JNOqVtZcqyxuC+wCoxomQxRlUKv2Ahc06KoYj?= =?us-ascii?Q?EzwuO8S0QDpxWhJD1ld8q+2X7YnDB4qCs08vUWxTfnmtFKYJIPJC1cXPSMpg?= =?us-ascii?Q?PWm8G3J9AVJ4d7syq/D8+gvV/dzyDZJQCJfASL7mlnQyPtSuerhCgH2kVICL?= =?us-ascii?Q?72a/Fk0QWTvMrOWQqQMIiSFcWPqaiC2qCQ5UTy9F7ri92hu/KwW1KVJO3V78?= =?us-ascii?Q?gRptMAJlV8+QWawP1H2sXKP6PxWafeBM9tklzPJHa/9kalH9AxuyX4Vi/QdH?= =?us-ascii?Q?FlCjZiS5Q+nptBKuKrpPmLJD1AavoNlHC16nNBR3taj5g408YGflJ+OyqgzO?= =?us-ascii?Q?cG2nbRArIEn665JCYhkqgZaDFbPk4IdoAu2BSqv5mNkPegoE17IiEVOkVEsy?= =?us-ascii?Q?hiH+Ercn2JzELXdBjyjKgg1ZO/Or82TZUk5s65du9ig+ZBQcwZNMQ09aAME0?= =?us-ascii?Q?KSrjh1o/AqDdI2a/cSV2iHyCq8nJmp0pYnYx4gWqZ/9RJe3sb71hByGBr2FL?= =?us-ascii?Q?snpr0B559BgYbWvEe92anauVqCzw1JTL/C6lQKGG8IOPuJdRRNzUdi+XX0f8?= =?us-ascii?Q?ayR6C63sBoTXyX0dCbHSlHU4atEYWPF6G9uVqsuKvM/EB2/5yKybx6vtIKUB?= =?us-ascii?Q?4y3xOOM6oGntgIQSp11VTdvaPsu5OXzn84C79XB9wf2cR6N9UH22uxyZ3TC5?= =?us-ascii?Q?PPi5LtYPPhnPlMjV8l86YqLtuNSxE0To0kGYiczqxgc63Znbth9dYyJohZ9w?= =?us-ascii?Q?391PuR6yaLo5oshxdzogr56HnLu7TStkpNJAJ70R95oHgV1wlhJuENafk2nE?= =?us-ascii?Q?SUrBUqZHMyI96JDTopm6vvHOMSc4Yo7JjMkG+MiL+oakfbiXXxFdddgqlOjQ?= =?us-ascii?Q?J3NdLu5cqbeiZxZL9HBO4ZqgcMrSG1huMqzqIy9yw4N2+3ZOWhv4pfw2+f4b?= =?us-ascii?Q?AqBy5TUqZUXYsn53i6qrrPgUbr+YT2P+CJjCYaqJv00rWHVJlmwpy7z1QZWc?= =?us-ascii?Q?+Ummpd0JchsFrtXJRl/m1Wc5fs5dULW0HYrkXDjkPc0/PrXM3df3wZrRCpKG?= =?us-ascii?Q?0fne6U481Cp/+utDmj3CW2uN6Xv+83KgUwiqRsXZu7OKK22cOuxXBCbZZhYG?= =?us-ascii?Q?Na7mAqTlPxlMyKRCb6aNx2V2MB6EqnnzzryH/pgAKudUez5FcsKcZJBlthrJ?= =?us-ascii?Q?fEWyYqLg84UOJF0x/e/ZCrsBhUJ/yv/toFd1K1Ud/FKXk9DkOoJjhK7nszX9?= =?us-ascii?Q?FFM6YoPZwTOlUZFm8pfvtspxynRLYLiTbFizqLrhT1ix6pfq+geQnkrdc56i?= =?us-ascii?Q?gprzqXNgSvFHAz8A1B5okaCHi+JK9GlL+XGHPfENAh477eftj9aMAQZHSKw9?= =?us-ascii?Q?p9yyqomd7fx8PxBjW0g=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)(36860700013)(82310400026)(1800799024)(35042699022)(14060799003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2025 09:44:47.6201 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 42962946-4fed-4f6c-2f08-08de0b065040 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: DU6PEPF00009525.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8444 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 defining the PANTHOR_HW_FEATURE_PWR_CONTROL feature flag. The patch also integrates panthor_pwr with the device lifecycle (init, suspend, resume, and unplug) through the new API functions. It also registers the IRQ handler under the 'gpu' IRQ as the PWR_CONTROL block is located within the GPU_CONTROL block. Signed-off-by: Karunika Choo --- 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 | 3 + drivers/gpu/drm/panthor/panthor_pwr.c | 135 +++++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_pwr.h | 23 ++++ drivers/gpu/drm/panthor/panthor_regs.h | 79 +++++++++++++ 7 files changed, 258 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 =20 obj-$(CONFIG_DRM_PANTHOR) +=3D panthor.o diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/pan= thor/panthor_device.c index 847dea458682..d3e16da0b24e 100644 --- a/drivers/gpu/drm/panthor/panthor_device.c +++ b/drivers/gpu/drm/panthor/panthor_device.c @@ -20,6 +20,7 @@ #include "panthor_gpu.h" #include "panthor_hw.h" #include "panthor_mmu.h" +#include "panthor_pwr.h" #include "panthor_regs.h" #include "panthor_sched.h" =20 @@ -102,6 +103,7 @@ void panthor_device_unplug(struct panthor_device *ptdev) panthor_fw_unplug(ptdev); panthor_mmu_unplug(ptdev); panthor_gpu_unplug(ptdev); + panthor_pwr_unplug(ptdev); =20 pm_runtime_dont_use_autosuspend(ptdev->base.dev); pm_runtime_put_sync_suspend(ptdev->base.dev); @@ -249,10 +251,14 @@ int panthor_device_init(struct panthor_device *ptdev) if (ret) goto err_rpm_put; =20 - ret =3D panthor_gpu_init(ptdev); + ret =3D panthor_pwr_init(ptdev); if (ret) goto err_rpm_put; =20 + ret =3D panthor_gpu_init(ptdev); + if (ret) + goto err_unplug_pwr; + ret =3D panthor_gpu_coherency_init(ptdev); if (ret) goto err_unplug_gpu; @@ -293,6 +299,9 @@ int panthor_device_init(struct panthor_device *ptdev) err_unplug_gpu: panthor_gpu_unplug(ptdev); =20 +err_unplug_pwr: + panthor_pwr_unplug(ptdev); + err_rpm_put: pm_runtime_put_sync_suspend(ptdev->base.dev); return ret; @@ -446,6 +455,7 @@ static int panthor_device_resume_hw_components(struct p= anthor_device *ptdev) { int ret; =20 + panthor_pwr_resume(ptdev); panthor_gpu_resume(ptdev); panthor_mmu_resume(ptdev); =20 @@ -455,6 +465,7 @@ static int panthor_device_resume_hw_components(struct p= anthor_device *ptdev) =20 panthor_mmu_suspend(ptdev); panthor_gpu_suspend(ptdev); + panthor_pwr_suspend(ptdev); return ret; } =20 @@ -568,6 +579,7 @@ int panthor_device_suspend(struct device *dev) panthor_fw_suspend(ptdev); panthor_mmu_suspend(ptdev); panthor_gpu_suspend(ptdev); + panthor_pwr_suspend(ptdev); drm_dev_exit(cookie); } =20 diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/pan= thor/panthor_device.h index 1457c1255f1f..05818318e0ba 100644 --- a/drivers/gpu/drm/panthor/panthor_device.h +++ b/drivers/gpu/drm/panthor/panthor_device.h @@ -31,6 +31,7 @@ struct panthor_job; struct panthor_mmu; struct panthor_fw; struct panthor_perfcnt; +struct panthor_pwr; struct panthor_vm; struct panthor_vm_pool; =20 @@ -126,6 +127,9 @@ struct panthor_device { /** @hw: GPU-specific data. */ struct panthor_hw *hw; =20 + /** @pwr: Power control management data. */ + struct panthor_pwr *pwr; + /** @gpu: GPU management data. */ struct panthor_gpu *gpu; =20 diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor= /panthor_hw.h index 5a4e4aad9099..caba522cd680 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.h +++ b/drivers/gpu/drm/panthor/panthor_hw.h @@ -15,6 +15,9 @@ struct panthor_device; * New feature flags will be added with support for newer GPU architecture= s. */ enum panthor_hw_feature { + /** @PANTHOR_HW_FEATURE_PWR_CONTROL: HW supports the PWR_CONTROL interfac= e. */ + PANTHOR_HW_FEATURE_PWR_CONTROL, + /** @PANTHOR_HW_FEATURES_END: Must be last. */ PANTHOR_HW_FEATURES_END }; 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..d07ad5b7953a --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_pwr.c @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: GPL-2.0 or MIT +/* Copyright 2025 ARM Limited. All rights reserved. */ + +#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_feature(ptdev, PANTHOR_HW_FEATURE_PWR_CONTROL)) + 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; +} + +int panthor_pwr_reset_soft(struct panthor_device *ptdev) +{ + return 0; +} + +int panthor_pwr_l2_power_off(struct panthor_device *ptdev) +{ + return 0; +} + +int panthor_pwr_l2_power_on(struct panthor_device *ptdev) +{ + 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..a4042c125448 --- /dev/null +++ b/drivers/gpu/drm/panthor/panthor_pwr.h @@ -0,0 +1,23 @@ +/* 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); + +int panthor_pwr_reset_soft(struct panthor_device *ptdev); + +int panthor_pwr_l2_power_on(struct panthor_device *ptdev); + +int panthor_pwr_l2_power_off(struct panthor_device *ptdev); + +void panthor_pwr_suspend(struct panthor_device *ptdev); + +void panthor_pwr_resume(struct panthor_device *ptdev); + +#endif /* __PANTHOR_PWR_H__ */ diff --git a/drivers/gpu/drm/panthor/panthor_regs.h b/drivers/gpu/drm/panth= or/panthor_regs.h index 8bee76d01bf8..84db97c11e68 100644 --- a/drivers/gpu/drm/panthor/panthor_regs.h +++ b/drivers/gpu/drm/panthor/panthor_regs.h @@ -72,6 +72,7 @@ =20 #define GPU_FEATURES 0x60 #define GPU_FEATURES_RAY_INTERSECTION BIT(2) +#define GPU_FEATURES_RAY_TRAVERSAL BIT(5) =20 #define GPU_TIMESTAMP_OFFSET 0x88 #define GPU_CYCLE_COUNT 0x90 @@ -205,4 +206,82 @@ #define CSF_DOORBELL(i) (0x80000 + ((i) * 0x10000)) #define CSF_GLB_DOORBELL_ID 0 =20 +/* 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(0) +#define PWR_STATUS_ALLOW_TILER BIT(1) +#define PWR_STATUS_ALLOW_SHADER BIT(8) +#define PWR_STATUS_ALLOW_BASE BIT(14) +#define PWR_STATUS_ALLOW_STACK BIT(15) +#define PWR_STATUS_DOMAIN_ALLOWED(x) (1 << (x)) +#define PWR_STATUS_DELEGATED_L2 BIT(16) +#define PWR_STATUS_DELEGATED_TILER BIT(17) +#define PWR_STATUS_DELEGATED_SHADER BIT(24) +#define PWR_STATUS_DELEGATED_BASE BIT(30) +#define PWR_STATUS_DELEGATED_STACK BIT(31) +#define PWR_STATUS_DELEGATED_SHIFT 16 +#define PWR_STATUS_DOMAIN_DELEGATED(x) (1 << ((x) + PWR_STATUS_DELEGATE= D_SHIFT)) +#define PWR_STATUS_ALLOW_SOFT_RESET BIT(33) +#define PWR_STATUS_ALLOW_FAST_RESET BIT(34) +#define PWR_STATUS_POWER_PENDING BIT(41) +#define PWR_STATUS_RESET_PENDING BIT(42) +#define PWR_STATUS_RETRACT_PENDING BIT(43) +#define PWR_STATUS_INSPECT_PENDING BIT(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 --=20 2.49.0 From nobody Sat Feb 7 08:45:22 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013056.outbound.protection.outlook.com [52.101.83.56]) (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 5631A2ECD14 for ; Tue, 14 Oct 2025 09:44:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.56 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435095; cv=fail; b=XMq68CFGIH7Gi2++rl/BXezNVfr0Yvfi2S4uVs0pJJlh4qjnNz7fIkiryew9aGgKdmf4BRrJPOsWAyMfYkehq+/plyeaHoIlCLRwCwZSCYI5tw3FkLmrRjsNZqt6g5I5htPWeWL+uscvNV36fRQDDQ9h2ITPxTkDWQRvBdYfaBk= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435095; c=relaxed/simple; bh=MZcanAGJA7x9lUGRDCyKmAF8vkh3jdqiJeNHaCKI/5I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rGMKpMfeIl9576pcK4JMlyi+3Qfm8C7AYfcCCECkkvi5Vbhq5VnBHd0i9NK1x4m0odHuS4C1jM/EZQrPlPSx6AQ+z5pbuNsJ5b4az1hlttEXZTFzEEK0J3SAY88KUcizdTssNFMYUkOD9hFf8qJd0RQArXdc7teyz9i6RmrBcw0= 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=N4YotU3l; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=N4YotU3l; arc=fail smtp.client-ip=52.101.83.56 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="N4YotU3l"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="N4YotU3l" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=HsQxdFzHe6253BvWu4//0OcVEAHvYwRJuDyu+oSHC63v6yv25ZuEEmVHLD/qXBQ51rD2UzjvMy89LBEsoeYRdUzzwzFvKaldtDB08p4ovx7HVMULDYnkVO9E2ImbYRqkNRYH3rxcR2A40GVkRwAavpkwhFpu7qvI3xI3PdZNM/NgrNubDEGprWhRfdbxSzz0m7l/fR0mBiGo6ls33WAkOsfqfaSs5yl6+iNZ9+SjIBGDytgSfkILcCy2zA1WoOUEt73DzipgZ2W4Kyw0V1YlHrfkm2XqbtVODlLdJWW00mQFXi2pLFwnAyjhU9ATmbFHHd2a2cbgO14TWSsbbO5tvg== 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=TiX0pIsoSkBZoRCmlPPwtA/U/0uvT14tJcmjT/YqG7I=; b=p6W3h7UyxvBVxpsOYCv2fc8j9vY4L4wX/OApHkX/zzxx4RQDVC1dUIxdc7u9HO4SwvGq8pGCKQL2LjtdCq4AA9dQbnO2onE8xWc9HOccteycMG5Cw4oOsBILd5inuTln5Q9eIJzJCq92lEJm0OYY9VyB+havNabYWXT0MIzcjgADU1DjFsBKpxpRJWkwzKbdYVrOL6XD1lJAeoEri9aW64TXE/3vOqI4BTeUiQLWFrD1rJBwItP2Ex7liMLf+oWglJNEnm8Oc/IRjT9Nv+TL4fHXaUvTPRMNGEWPMmtN6RoRMdcEItkz7r9uYeuwmMhqurD9ihG3Zb2eSXhJs+KrIA== 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=TiX0pIsoSkBZoRCmlPPwtA/U/0uvT14tJcmjT/YqG7I=; b=N4YotU3luAVrznKpfnxfuYYNK6R7xn75jUs7B7B6Yq70LRWzaH0Z5vfsfJ8WMKx3PUxPkKvC45dn+i4GXd3SWmQtUwTucXSPuqlbwOzxslpHxoAcFUvy2RaUh7sFEJM/WMTCQbk6vTiLrL2P7HGqm8k63IK5PSXS3R+3xPn7I/w= Received: from DU7P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:550::15) by PAVPR08MB8799.eurprd08.prod.outlook.com (2603:10a6:102:32b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.12; Tue, 14 Oct 2025 09:44:49 +0000 Received: from DU2PEPF0001E9BF.eurprd03.prod.outlook.com (2603:10a6:10:550:cafe::db) by DU7P190CA0019.outlook.office365.com (2603:10a6:10:550::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9203.13 via Frontend Transport; Tue, 14 Oct 2025 09:44:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF0001E9BF.mail.protection.outlook.com (10.167.8.68) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.7 via Frontend Transport; Tue, 14 Oct 2025 09:44:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yEuBB2SHvhdejA7Z3aUDDZ+yaW5ro29Xx3DNh/7JBDlPNqGVkcDKip7wEuWXsSoU53mjNrvHgRBs49WBlRAhATpPD5LpjljufL3IFilej5HIst2o4SO0+R+zKXTH+ftYr78tZ4YLhiICUhg6/XTL6vRyO6eWfvHJRuIydAdkicmXo4kVIJhGIG979XbqqXEZ5N9iuGq+7eckK1iUF4RxTqLFQELWk+tR9cZbu94lA0+1e0RTp9/3l/srddsJmPH0ota+ksqBg/wczjf3goyLe0Pt+kfBBzFuWO5hvmHH6t7AM9nz6casVQmETeSBv3sh6qz+u2FCcQkR/MIgnkV5hA== 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=TiX0pIsoSkBZoRCmlPPwtA/U/0uvT14tJcmjT/YqG7I=; b=bRE8Xj3uZhZUXY6c2WilaIGUjh6nBFUAYml+/L8ptaBCFZQ4UM1f2lGtVIM2KOTaeo44qMFqsU7JtsRGhSrHUCBbzekOjFLLkkXaMR0nJl7nGldF/oumw3gacoIOSJzrF6OJT+Amy3fSUpZelbv8y65sJsjBf20WsFZnxc+q22xlnBE89dumJmKm7HYKEHtKzSZjrH6HkZrie5bgHbaxW3kl80fqK9RrW2mPg46NmB+xaS+87urT051uGGQ9dWb+8Ostj7/NcRkbCt13fq6fgpGPlY4sxuH+gDlojCsC3izXS+2z6rD4aGRn8U25k8793ZJxD4FiNh89N10Pus1Zyg== 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=TiX0pIsoSkBZoRCmlPPwtA/U/0uvT14tJcmjT/YqG7I=; b=N4YotU3luAVrznKpfnxfuYYNK6R7xn75jUs7B7B6Yq70LRWzaH0Z5vfsfJ8WMKx3PUxPkKvC45dn+i4GXd3SWmQtUwTucXSPuqlbwOzxslpHxoAcFUvy2RaUh7sFEJM/WMTCQbk6vTiLrL2P7HGqm8k63IK5PSXS3R+3xPn7I/w= 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 DU2PR08MB10039.eurprd08.prod.outlook.com (2603:10a6:10:49d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.10; Tue, 14 Oct 2025 09:44:14 +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.9203.009; Tue, 14 Oct 2025 09:44:14 +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 v1 06/10] drm/panthor: Implement L2 power on/off via PWR_CONTROL Date: Tue, 14 Oct 2025 10:43:33 +0100 Message-ID: <20251014094337.1009601-7-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251014094337.1009601-1-karunika.choo@arm.com> References: <20251014094337.1009601-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0403.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:39b::13) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DU2PR08MB10039:EE_|DU2PEPF0001E9BF:EE_|PAVPR08MB8799:EE_ X-MS-Office365-Filtering-Correlation-Id: e792c95e-ebb4-4770-b2e0-08de0b06511f 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|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?d6/E5X2F4snNp+WQK1Lc/0zFSgJvB7N/FN+lnPCLqe0AyuUIvMB4agSUmJzF?= =?us-ascii?Q?043+v9WhBhKT9gW1ZTZzE0EfaiAizJQT3L2iMRIyjP9CjzSHkgICQjGbPIkU?= =?us-ascii?Q?jh5XT1CCBzsuzjZzgy6EKgkXOH0izUoZLTvtdEqfqiA1Ojov2rL9PfYZdd6Z?= =?us-ascii?Q?kUIvnCM8Y4V8sBxBPtNWgKCUXLIp/AoUmxswy99MyPBb5xS0mPOXQBZA9BqJ?= =?us-ascii?Q?kTzvolpflK8UsvAFYuhSY/QGWC2XR8hOS5lQFx5l24A48q91vwggq0Vu+RQa?= =?us-ascii?Q?uH5+MY62JLpvOs0caAFcaIZZucyM0oRFLhWrzmlcBAvPbOs71Hq5lBm9uoR2?= =?us-ascii?Q?PAXunBYUszXFHjh1OLdIIk2kAhXN5Lpp+Sp9gDvePL0RZ5Hr51Os7+RlzHRR?= =?us-ascii?Q?DSMGKQ2byfDTKZEGAwWQrTkWyU7YrtK7v1qIGyd6PyTXxlG8R5Epw++WFzIB?= =?us-ascii?Q?3QhryNEXVYXJZ/9HAi50IGAeuKYokLqTilaDz8U3drAnNMVP1qeLDSHz1zob?= =?us-ascii?Q?3h2Mfui5Resn+joaS/tY8GSY2I7ku7nVC787P/4Zuy4qytAC2Zn+zsE1IEil?= =?us-ascii?Q?rYdbB1H2oCl6Zi0b+MFsLW66SK+eEbHImJx42DYtNU8ZG4iInwF2XRPlJ806?= =?us-ascii?Q?2WhTJ9iAecn9VUu2/kXa6l+luCUXUnfDMzu0S3scckFDmrby3bJkJkYPE15s?= =?us-ascii?Q?7JZC1tqUpia4cXOt6j0KZa9ElImj57tHjzr+vCJ1JgVfi1UR5Lg5dcqDpbZE?= =?us-ascii?Q?wQNQCEwEGg/oO7o4RvUoze0E0Hukg1JGHvIy3EzEyWZkoj8QGJ0eX+IpxAv0?= =?us-ascii?Q?nm7WkLQ4fhrY+gYuFVMD/oAbr8aOwGC7YuQlYtegA3SE7EL/t17ch2bYroO5?= =?us-ascii?Q?B7pLUoSP1JweVB4S+73fJrBAu0DX77uAody+hyTSl0LWG4OXehmwbMVqAZg0?= =?us-ascii?Q?imjiH9Rkmiv08PzlJ7ZqZNMH4hgk2uGPAbtkctmL6RalI5ZgvtaO8JHIMmqM?= =?us-ascii?Q?pK2+obUe1N8CG7YGU0bVt/XFCV7SNENn7Ktj05k9DTDcqepoio6rSWykuf/J?= =?us-ascii?Q?/91k5i5lPDEXksFC46Bk5yZTPYBsFSAe7mgs6Ow437O5uIVTUgB0eibF7FTo?= =?us-ascii?Q?Gl/kTCxAzZdgclMNoJ4xRiBZBRVzmkxT2pJDrW4neRFrYb5IfrmD4xwOroYB?= =?us-ascii?Q?jaeRQ/pR/lMunW/YIpiJGslPWZMRQrp4vwsDhKjfKAEDcaR9MVwB8VFT4muo?= =?us-ascii?Q?+qV8ZvrPEDFdO9pCKpUNW6TYPNzCMJvpWPPfqB09MCOQ8ajkEI6bJYtaKitA?= =?us-ascii?Q?5ZBXk3fCLGaBj0NiDZBjRB/Rr1ZShmc7/452S3JR1voGaq9mtS8/i8K9x5mh?= =?us-ascii?Q?TLesuoz0BA7nTGwXGmXuSafgsw+RCXvaSfFDg8974oKA1/vWAQRYPDixat64?= =?us-ascii?Q?Uk/J5vIAlMIau4kRZSWJH6YaoCTRXZHa?= 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)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB10039 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF0001E9BF.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3c1219e7-3d01-4d71-2898-08de0b063b5c X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|35042699022|14060799003|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?jAi+GUlCm6BnhU0D7Qrj6oirL2uH/yh2uQ57cCOWB6qHTdNhXNH/j2uqozfM?= =?us-ascii?Q?8l+fD2RlV2qFZEcDoHZIVzeM1o5z9Co9B2mty4Fxb42wnB/ePQXYMRRGCXXs?= =?us-ascii?Q?ooUzVoSAZq9U92KplbEuJd4aYgcu/xCC5quiPw11UAGHvqFLH9qVWjwn1c8R?= =?us-ascii?Q?3jRUpONhxWxLdv+m3wCN8ZM1+Z3xaPyorJKXCpdOQXT/JwifYXJvbp8S7sNi?= =?us-ascii?Q?GT9gQfLTQF1lwS7B4C9QacR8Rpx8+Dql0aYvPNMYFlch93B4fHavc+6R7/Ej?= =?us-ascii?Q?FIMPhzH8jS5cz4VgSBGad4C4UEwrBQJbQea2Hdof6xCFN+cBx6cbR6a777iQ?= =?us-ascii?Q?2ozBAA9ELa1VAN9YNgAVtCGNnjH6g9z5vg0qfBMe+zDgI0wED+1E5jNNy7xM?= =?us-ascii?Q?ivJZoPVWyodN7LXsebusow2nSf7VdwZgh/+uKzt8tVAIq+Os7DZxV9H5OJp1?= =?us-ascii?Q?WhQE7n6ZERc7Mbm34EkbLZU4PAnpnJhtavvX99yXNrGWNiNTd3AQIPGqQtr1?= =?us-ascii?Q?Ly1kiqZ8iViO02YXitograWerZ0LHJCBKKtwUXUlLgJxCv3misO6tMcjzuLH?= =?us-ascii?Q?nAMohzuk+b7E7k1xfycUMqskHdVwQdhBf9TbEjTy4jJ//q65PzjpzJ1dMGy+?= =?us-ascii?Q?YmRyp7nOPoctQNbHwi3fw+f1m6UldbEXXNQiP2qpPGZhqsJFyy8LY6hJWwwX?= =?us-ascii?Q?IJ8w5rUE0SXAVW0Lk+hwmj0X6Hg2Rq0ixJYjns8HHF7vVPQKCL7heC8D7Xcm?= =?us-ascii?Q?tW0THk42Y7AueFOr/p0LO4pyuDZ97caj2XGmnDwY1cI+L11jLhs6JK6yalKt?= =?us-ascii?Q?PkZjQZO4kCk/+GDW0oGpmBYMZNy1qXXxmkbc1X59emObSaNSweM6t4KBSZnH?= =?us-ascii?Q?A0llmBeYwf/FO9GJayuIKl9HR5a+500/AF8KwKIds1Veu327qVtrLIAKc4IT?= =?us-ascii?Q?qEoZJ3ZGXctLVN9eL1rR41ab+A8Qqys5FM6mYx/ygs+71+T4W46k8nN72SPP?= =?us-ascii?Q?IHhEqf/IWbYXk3QcPtwQ2otd0+Juuiw2tZ8DWRnTguu8zuZk2SPlPXKGTRSP?= =?us-ascii?Q?yz3aeefgcBZLNfkR5LIFzfPj/Mq6WmN+/PEay4mri0ZFJz5y+TB/EmNvPWW9?= =?us-ascii?Q?hE9CIvVS++Y6KSGPJxg0RJdVlGBrp9KH1xJiomX0b9Cpc/3YupwjeI63VAbD?= =?us-ascii?Q?zNjAVhLMTfDRauqEQvNPgzbMHkqq7XqJaNbR0K3m4KZhmVwo32Lkxe8jcynR?= =?us-ascii?Q?9CvCFcb6qT8xfhf4wX9OC3C7LRzFB5l576SRXaRApgqQwNT/P8ezX9FbXlPI?= =?us-ascii?Q?NUipDwlLwdfRIP3YUf9sOdF93s+0ymLbPFzHanhgcDIZ2uXR9WXZfMEARSIs?= =?us-ascii?Q?b0Ktn5COeAOsiw/bAMFtryl9ez5VjHE5rW3/obw7/aaAuR33tvgSoHlfqqIv?= =?us-ascii?Q?/uMtjfsHsXecl8k6K8w/fvW4Ue79ML907A0/qxolvmYcFUW3bGHZtWspPJam?= =?us-ascii?Q?Pxlfzx2fAIu5gdAn4H8y/4e2dzYNcmJQ7JWIiuFX2eVzhgjCXxKOx8RgFeIP?= =?us-ascii?Q?Y9ffxvspB8SXBlD9ge8=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)(36860700013)(35042699022)(14060799003)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2025 09:44:49.0843 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e792c95e-ebb4-4770-b2e0-08de0b06511f 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: DU2PEPF0001E9BF.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB8799 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. Signed-off-by: Karunika Choo --- drivers/gpu/drm/panthor/panthor_pwr.c | 390 +++++++++++++++++++++++++- 1 file changed, 388 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_pwr.c b/drivers/gpu/drm/pantho= r/panthor_pwr.c index d07ad5b7953a..594181aba847 100644 --- a/drivers/gpu/drm/panthor/panthor_pwr.c +++ b/drivers/gpu/drm/panthor/panthor_pwr.c @@ -23,6 +23,14 @@ PWR_IRQ_COMMAND_NOT_ALLOWED | \ PWR_IRQ_COMMAND_INVALID) =20 +#define PWR_ALL_CORES_MASK GENMASK(63, 0) + +#define PWR_DOMAIN_MAX_BITS 16 + +#define PWR_TRANSITION_TIMEOUT_US 2000000 + +#define PWR_RETRACT_TIMEOUT_US 2000 + /** * struct panthor_pwr - PWR_CONTROL block management data. */ @@ -59,6 +67,302 @@ static void panthor_pwr_irq_handler(struct panthor_devi= ce *ptdev, u32 status) } PANTHOR_IRQ_HANDLER(pwr, PWR, panthor_pwr_irq_handler); =20 +static u64 panthor_pwr_read_status(struct panthor_device *ptdev) +{ + return gpu_read64(ptdev, PWR_STATUS); +} + +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_info_show(struct panthor_device *ptdev) +{ + drm_info(&ptdev->base, "GPU_FEATURES: 0x%016llx", ptdev->gpu_info.gpu_= 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, PWR_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 cmd =3D=3D PWR_COMMAND_POWER_DOWN ? 0 : mask; + u64 val; + int ret =3D 0; + + if (!is_valid_domain(domain)) + return -EINVAL; + + if (cmd !=3D PWR_COMMAND_POWER_DOWN && cmd !=3D PWR_COMMAND_POWER_UP) { + 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 %s, cmd(0x%x), arg(0x= %llx)", + get_domain_name(domain), cmd =3D=3D PWR_COMMAND_POWER_DOWN ? "down" : "= up", + pwr_cmd, mask); + panthor_pwr_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 u32 pwr_status_reg =3D panthor_pwr_read_status(ptdev); + const u32 delegated_mask =3D PWR_STATUS_DOMAIN_DELEGATED(domain); + const u32 allow_mask =3D PWR_STATUS_DOMAIN_ALLOWED(domain); + u64 val; + int ret; + + if (WARN_ON(domain =3D=3D PWR_COMMAND_DOMAIN_L2)) + return -EINVAL; + + if (WARN_ON(pwr_status_reg & PWR_STATUS_DOMAIN_DELEGATED(PWR_COMMAND_DOMA= IN_L2))) + return -EPERM; + + if (!(pwr_status_reg & delegated_mask)) { + drm_dbg(&ptdev->base, "%s domain already retracted", + get_domain_name(domain)); + return 0; + } + + ret =3D gpu_read64_poll_timeout(ptdev, PWR_STATUS, val, + !(PWR_STATUS_RETRACT_PENDING & val), 0, + PWR_RETRACT_TIMEOUT_US); + if (ret) { + drm_err(&ptdev->base, "%s domain retract pending", + get_domain_name(domain)); + return ret; + } + + 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 u32 pwr_status_reg =3D panthor_pwr_read_status(ptdev); + const u32 pwrtrans_reg =3D get_domain_pwrtrans_reg(domain); + const u32 allow_mask =3D PWR_STATUS_DOMAIN_ALLOWED(domain); + const u32 delegated_mask =3D PWR_STATUS_DOMAIN_DELEGATED(domain); + u64 val; + int ret; + + if (WARN_ON_ONCE(domain =3D=3D PWR_COMMAND_DOMAIN_L2)) + return -EINVAL; + + if (pwr_status_reg & delegated_mask) { + drm_dbg(&ptdev->base, "%s domain already delegated", + get_domain_name(domain)); + return 0; + } + + /* Check if the command is allowed before delegating. */ + if (unlikely(!(pwr_status_reg & allow_mask))) { + drm_warn(&ptdev->base, "Delegating %s domain not allowed", + get_domain_name(domain)); + return -EPERM; + } + + if (unlikely(gpu_read64(ptdev, pwrtrans_reg))) { + drm_warn(&ptdev->base, "%s domain power in transition", + get_domain_name(domain)); + return -EPERM; + } + + 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) + return ret; + + return 0; +} + void panthor_pwr_unplug(struct panthor_device *ptdev) { unsigned long flags; @@ -110,12 +414,94 @@ int panthor_pwr_reset_soft(struct panthor_device *ptd= ev) =20 int panthor_pwr_l2_power_off(struct panthor_device *ptdev) { - return 0; + const u32 l2_allow_mask =3D PWR_STATUS_DOMAIN_ALLOWED(PWR_COMMAND_DOMAIN_= L2); + const u32 l2_pwrtrans_reg =3D get_domain_pwrtrans_reg(PWR_COMMAND_DOMAIN_= L2); + unsigned long child_domain_mask =3D { + BIT(PWR_COMMAND_DOMAIN_SHADER) | + BIT(PWR_COMMAND_DOMAIN_TILER) + }; + u32 pwr_status, child_domain; + int ret =3D 0; + + if (unlikely(!ptdev->pwr)) + return -ENODEV; + + pwr_status =3D panthor_pwr_read_status(ptdev); + + /* 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 0; + } + + if (gpu_read64(ptdev, l2_pwrtrans_reg)) { + drm_warn(&ptdev->base, "L2 Power in transition"); + return 0; + } + + /* 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 before powering down the L2. + */ + for_each_set_bit(child_domain, &child_domain_mask, PWR_DOMAIN_MAX_BITS) { + u64 domain_ready =3D gpu_read64(ptdev, get_domain_ready_reg(child_domain= )); + + if (domain_ready && (pwr_status & PWR_STATUS_DOMAIN_DELEGATED(child_doma= in))) { + drm_warn(&ptdev->base, + "L2 power off: Delegated %s domain not powered down by MCU", + get_domain_name(child_domain)); + ret =3D retract_domain(ptdev, child_domain); + if (ret) { + drm_err(&ptdev->base, "Failed to retract %s domain", + get_domain_name(child_domain)); + panthor_pwr_info_show(ptdev); + return ret; + } + } + + ret =3D panthor_pwr_domain_power_off(ptdev, child_domain, domain_ready, + PWR_TRANSITION_TIMEOUT_US); + if (ret) + return ret; + } + + return panthor_pwr_domain_power_off(ptdev, PWR_COMMAND_DOMAIN_L2, + ptdev->gpu_info.l2_present, + PWR_TRANSITION_TIMEOUT_US); } =20 int panthor_pwr_l2_power_on(struct panthor_device *ptdev) { - return 0; + const u32 pwr_status =3D panthor_pwr_read_status(ptdev); + const u32 l2_allow_mask =3D PWR_STATUS_DOMAIN_ALLOWED(PWR_COMMAND_DOMAIN_= L2); + const u32 l2_pwrtrans_reg =3D get_domain_pwrtrans_reg(PWR_COMMAND_DOMAIN_= L2); + int ret; + + if (!ptdev->pwr) + return 0; + + if ((pwr_status & l2_allow_mask) =3D=3D 0) { + drm_warn(&ptdev->base, "Power on L2 domain not allowed"); + return -EPERM; + } + + if (gpu_read64(ptdev, l2_pwrtrans_reg)) { + drm_warn(&ptdev->base, "L2 Power is in transition"); + return -EINVAL; + } + + 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. + */ + return panthor_pwr_delegate_domains(ptdev); } =20 void panthor_pwr_suspend(struct panthor_device *ptdev) --=20 2.49.0 From nobody Sat Feb 7 08:45:22 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011034.outbound.protection.outlook.com [52.101.65.34]) (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 05A1E2F5A2D for ; Tue, 14 Oct 2025 09:44:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.34 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435100; cv=fail; b=S+TAawc8Rh5Gt0R7oeZGXTAljqhu5FDlxOyqAxY6CkqnVuyFNhb5hNSSkvM7LpbxOZ1L9eVuUHV2sqgj0gspECaZxQIVuLsC4HW16FSCRiytSmV2mvXY9sd67MJOr1KP4Q7xrqWGaNdbcNn6U5Ush5n5O01J+KbrKC2ZBMGuoPY= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435100; c=relaxed/simple; bh=SDl2TqEtxDf19kI4DiTBpcl9qsZVQUm1zurYwaYO8f8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZYU3MY8iA97yWL1+rf3jOfBc8HZAq0vhKPAhdg0swddTNiCDdo1rTNQ1OxsntCbeDsU6sUWb//ajmKB5cMAAyJ+SRAhWDlDqmUeNnzOQPbYQvlN0n9fkG+iY+lPZ4usTZ6NqqkuiBubVNSnlEc3af6MTD7sq1kD2GrSs9Nx95pM= 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=Ru21CcwH; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=Ru21CcwH; arc=fail smtp.client-ip=52.101.65.34 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="Ru21CcwH"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="Ru21CcwH" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=rFmeo+RN+kmLry2sjHzWYaIQD5MPEjMtBErd57HHfDf0G/EcjakEV3fuy9NEbh9/RTKNheaBpKYgXAkqahNKns5vH8iF2rVg1z2kc7SMMQs3u0vaE9/xMFXHhPC4QQ3FBzPq3WPVd+oGGTEepfydcv/LMCAntskUFO0ReyqBgNHZY7qIvb3qJ0WBmlSPa/bV2fcs7xwQijZYSXcbOlAl5JKLS67p2N3GzDcA+4fsoZyWqMGk7JcdZ9MWdyycxYwFsYnS9ls1jWUTJBf/w01CvUDTdjo+Dn9mjkiusTbRyvUpNfi1dlIMAXQjJQIClK2N6fQm02Fygy1AZvwivVjHWw== 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=UZtG4djRjwn3yd7lKDT8XDd+n7rVeE6lacQWVRDKk6E=; b=a9JF0kVAEfpmFC21rYMX6bd20087ooVJBcMeaJgrSO9vOeym6SyPfxkOD2oW+OGnJRWKxUb2l14rnYB99oory0GOjBX8+yHI6lpshLPyiqEY+vTgyQHYtFSdiBPjAzFD4vKpQcHyTJVhh/FpxVvXOWgwLIg4GbYV1PxTK+G/TmT+pXrA9xcMHXeyC5vWsjZk7UFJ+axE7TGDfxAjytpwPyIG9wB0co01CQADgoV0z+uyUN9c+bTna/HMEL7K2di7zKeh76uWEP3WuwuLihIi9GDSL2wskSMra5IiP4jdDndoxqqAcqUjUx8pQdA0EakX5A5cTBpnTdhuX3biPKL4aw== 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=UZtG4djRjwn3yd7lKDT8XDd+n7rVeE6lacQWVRDKk6E=; b=Ru21CcwH7E0s/RAVAxozm2R3oriVCUMkZBMZREuvS4mrurDe/arpr+wbY+iZYV+Z7/qQ/jEZ0g8dVCVaJeGkfHB+/MpuKq7bM8y1M9ie0PWpVd6MKQizJhilE4qGHhvCAfWCnFbroMOq0Cd+CyZkhuhsxgSMcaouxhoozQ2vuww= Received: from AS4PR09CA0021.eurprd09.prod.outlook.com (2603:10a6:20b:5d4::19) by GV2PR08MB7954.eurprd08.prod.outlook.com (2603:10a6:150:a8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.12; Tue, 14 Oct 2025 09:44:50 +0000 Received: from AMS0EPF000001B0.eurprd05.prod.outlook.com (2603:10a6:20b:5d4:cafe::5) by AS4PR09CA0021.outlook.office365.com (2603:10a6:20b:5d4::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.9 via Frontend Transport; Tue, 14 Oct 2025 09:44:50 +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 AMS0EPF000001B0.mail.protection.outlook.com (10.167.16.164) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.7 via Frontend Transport; Tue, 14 Oct 2025 09:44:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QiPJ5d+cVq7Uhi5KQrpEm6FHE7NkjpcfuXEgPb5+QwuMSJd8JS1nLjM+PpNJu4hE/kMVzDYqpPF1wZIDwUvieMQavwoIE7jYmMEsDzSiIyH9/s2TBC0ZPBy+o0G1DhOqsQI9vfM8UCH1rT9ohQzsS5/pY/4/FQikLDczKhN7arIHh09NHlyiZ/Jq5ZzKFL6WJHV7UM9Yhlb8+r+5m3ENLD9dNO7cVz6AmnpsxSbRTkDUa+d2oBpw3OUh1DUyQ3iTNnkj4E2FcGnUbRt7STDptY9/6ZRJJ5JdIL+YAOI++kutkChD3+YzIbnBeK50V5qDu717ZfGUqsrjm37Kp4elTg== 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=UZtG4djRjwn3yd7lKDT8XDd+n7rVeE6lacQWVRDKk6E=; b=ijCspA3/y3L6w7uILSbZh0Td22mcVtwCIQyHH1Te+H3GAZSNVnzlzCKiRGivSZ6NI+TfbjrBv6Nq2FWXDU+3sTsE06rCXqVzkwf1rfV69rDaqfzfkWBzlZ+B3Ks/llFFs4XGSkmh8vJDAQenQF+prrsdajAC6BjveOIGvbFt0FwEvRBxYq0KK/YOs8gnn/p+riojjWFft05nu5oRb+eMeRUduEyEolEcSbgidz3slb35/6hRs2PwyqurFpCh1gaCcBuU0OKg5qr8fOurZD2f7Y66/wtu5quwVw0setBVFd4h6WdRO0/JmEd6YfcKECmoYlPyL0uDZx7AJNLCHqsqag== 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=UZtG4djRjwn3yd7lKDT8XDd+n7rVeE6lacQWVRDKk6E=; b=Ru21CcwH7E0s/RAVAxozm2R3oriVCUMkZBMZREuvS4mrurDe/arpr+wbY+iZYV+Z7/qQ/jEZ0g8dVCVaJeGkfHB+/MpuKq7bM8y1M9ie0PWpVd6MKQizJhilE4qGHhvCAfWCnFbroMOq0Cd+CyZkhuhsxgSMcaouxhoozQ2vuww= 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 DU2PR08MB10039.eurprd08.prod.outlook.com (2603:10a6:10:49d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.10; Tue, 14 Oct 2025 09:44: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.9203.009; Tue, 14 Oct 2025 09:44:15 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v1 07/10] drm/panthor: Implement soft and fast reset via PWR_CONTROL Date: Tue, 14 Oct 2025 10:43:34 +0100 Message-ID: <20251014094337.1009601-8-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251014094337.1009601-1-karunika.choo@arm.com> References: <20251014094337.1009601-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0111.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:34c::13) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|DU2PR08MB10039:EE_|AMS0EPF000001B0:EE_|GV2PR08MB7954:EE_ X-MS-Office365-Filtering-Correlation-Id: ad44fe9c-7088-49cf-a41f-08de0b0651af 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|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?w8g5ByT1ymhR6BrVIDHbCzxNcufas90AZex6jY4SHTACsvC6Jy0uAwVyqgOM?= =?us-ascii?Q?QGuWorQHqr0stvgUeatmgYFqY3BxQeshOmHe2IG0DeztjRT99zwKmzYgNyzR?= =?us-ascii?Q?tvB1Y1iZI/ydx9LfWUCfJPw7d9VH9faTtjCYfkjQxtqp4Hopc+AkO2ypIOhe?= =?us-ascii?Q?f6MPfDHN1pl/ArUG4muIvAQWYg0imtElcB7sgAbd8q6a5DGJ4DJO0unws6Hy?= =?us-ascii?Q?CK29LXOfvvns50jEVeF3UhilMF/Dn54Z2pMVYwqaPjlU0/T3HkxWDn0gk9XU?= =?us-ascii?Q?HOL3VDHQCa5QIaELj2fcPVLGr3GkjIBPMb7WHVKUfe0qWW2ImoTUq35wrXQ2?= =?us-ascii?Q?yjYWSVoscHNQBdptWMoBrO6i6btzHBAcXEw0j7X7DRZF+pbbZLG4oyOMqd65?= =?us-ascii?Q?Zr50H0tn5u9ef99M8u3raZlh+c/YvlJoSgDW6uE+6fmsPIqxB7bx73LYB7e5?= =?us-ascii?Q?pLbCqKMHCna2Fm7gid5CZTeChyipJwim5srtbpISdug6aXANIzj3OHYkKKef?= =?us-ascii?Q?S0Y5NHIdxQxk3APFvkahwxyDciUSKpA5bgqejXM9+tgyOpFlvQWlZz5dpoGt?= =?us-ascii?Q?03sjxxH6ybZPYHxidCx02utXZ4VC6Gg5/Vl2wG3hXwdvipmhlUE/SiiyUJeQ?= =?us-ascii?Q?jM2P0bKczUi/K1wnzmx2psS+LnII9+VG5rPlzXMnyntXEEhCt6AjIuc3DaLF?= =?us-ascii?Q?kAOeNQGPbLTrhgJux+S9w9qR/1ivDe4CqnI8aSgGK85jNqkdtagsdpmNWJt0?= =?us-ascii?Q?aWXt0Ovfo1YncmKuPWgHkWAkqt1vtkuSJwt4tGsqj9PXekh/FkCuOFFBuPed?= =?us-ascii?Q?e1FXYZYo33gR1x5og7VgIv5zz0TVfs+YwwmRDVeCpIIDbQ2VE8lfkNGx2dJ0?= =?us-ascii?Q?M7EIndsXXYvI+OgrE3H8rLPfkPwqe4z7dVaH84dTSGeTp/OzudeVAg5koffh?= =?us-ascii?Q?pqT1frP/s7T4n174gd5LubAlX2VoNZDnNmpe5NFgrdtzk+3tF3wsTcMzg9Tb?= =?us-ascii?Q?Hs+ee2NLlM6UxonSVBIKaYoolrc4BB+aQvON5Z8C2UrlM1+9NgQ0GpATPVZv?= =?us-ascii?Q?XFbR48lfBgqEPZYpRttPTjthIxQkXE7PU0e7xyq4d5eWguWY13zXnZg1T0nx?= =?us-ascii?Q?Pc6OqoK8g86OO94VPC2alGNoS0Qz35l7xgkwvyFee3wu5rIcwXefepQcDrPk?= =?us-ascii?Q?5l61CwHK4w3HrbxQxzShLMlXvzeR/ctFEVDOxjQM2vUgG/JCnRdZSFfm8kTG?= =?us-ascii?Q?fknmB/Eg9es49QNgRYRQHKjCni6wCKuvrbmRPVhTZtDNHcnP+VSmIJJpos/6?= =?us-ascii?Q?Y7KC2DT9/u5o0w/rTgzT1Q/u3kUhMhcK+jqkdMpcS6e9uuK6zzu7txDkQV8b?= =?us-ascii?Q?ZwUty7v/KxOW28XYhAZpuy7beK2Mxlexk+1zmMsFYAk6wosSPNP3XwLv8F+r?= =?us-ascii?Q?6zlzLdn9jfGqcp9i3QEo2el8jJNXPbuF?= 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)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB10039 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001B0.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 0a409d64-10c3-4630-a762-08de0b063d1e X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|14060799003|35042699022|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?aruVsY8dM+erZ14ipVEAEQg7YuEihHbwdIDiQL6mSfzqL2marQ3OrdQpROPG?= =?us-ascii?Q?fGSAcPn/GUCHcrv6m7jY+Rde3UH1xc6s5qzoE01CMwv1qm5tzEka6e06tvNz?= =?us-ascii?Q?R5Cz3NE+lX/HkxGAHSAqaq/lawwEjeyrQwnDnyZQBRCe7/IAQFtYO+bXe/VB?= =?us-ascii?Q?kF3Ex6tUV11KQfgiboGAqDyYwu2vwwIRT+rS8RX2jC0N8VbERECyn+TWc3Zg?= =?us-ascii?Q?DcproyckSKgi1wE7O1ps6KoFv2fnIi5nU6FmGpUOCsaUuUJ+hc/ye/bagiJx?= =?us-ascii?Q?wcFIoB9Xe8BHtsxrXFuRKTsIhHI13mk7vJTN6X6NMCBRmU6eeYUd9jKp6UBG?= =?us-ascii?Q?/xhuRxHzcmJGt+KgflWIE1NH06MWPz9hfYTGLf2ke6HEXZDWlH8K/kQHWFbr?= =?us-ascii?Q?4U5GDOHfpErt1yFUMs0DEouxblyg/pBtQ7ywPcZE3mYiDp7Pr19hTNMVeJP+?= =?us-ascii?Q?Ab9U6M7bAkPI2EbOU7OEDFAGnRUmKXa0OwekJaVz88mMsyJUvP3SlGtwAlup?= =?us-ascii?Q?/FsQvM5owE/KhfnMBm7mAoH4ij8YXv5OboDCplxrVUXNqslqI9PS7LbJM5/Z?= =?us-ascii?Q?ATUSxFQXl6rUMe6zKO21qn/TqN77mNr5X2uDMd0+YNmaqvr68a/vFod9EJ5X?= =?us-ascii?Q?hh+g8hBo5sRrlKyyFI+XbfDStsHMNbhGKb6bD8GooP4RdCypJSBzKVxSjjzg?= =?us-ascii?Q?DCfmZSzra8HTJIKc8QJcl4kN+9XvfEnBn+xAaSvQ/nTdkj6+J8mmMkEwycTt?= =?us-ascii?Q?XdNRY68eUJ5hoBEMiODledDqCbesOiOpAptIztEEmTb6mCu0J0FZ9y/EQLr6?= =?us-ascii?Q?j07EGssftdbdyZZdwse4sismmDfc1zMgzjJ+r/LkJ5avhl46lgIWId6N/AJe?= =?us-ascii?Q?ZCqYdkSIsKH6bjQloOq3gb7x+qz/yNQ93nnezHnjm4XWqeyv2gx80MWKDl+F?= =?us-ascii?Q?kFofyW/hR1xR+fHpJrurKZ+UX7PZGT27aMcpxZrupfiDSP7C9qfWgxyO2jEZ?= =?us-ascii?Q?VYCuZZt/MM46k+VAdqoJhp7rzdYcTCHvNmmEU5mJiWcEj5Frv2XxKl8W0Bch?= =?us-ascii?Q?U/+6S4a6/5xngxIj/AcYuL0ub+XnU072/pKAPw/JWBWN4j0MPQpCoY6sDwxA?= =?us-ascii?Q?svMKYL2lTStUZAgb9Ia992RQyjzJ0im2ercvW8X6DXRLuYkikJWLvnjAKqdY?= =?us-ascii?Q?sBxlm+yE0Knb9uRJP6EEdUYwam/IiNV9na9rduuYeJ9evvBRsF758EkC+3h/?= =?us-ascii?Q?M7ufZlx2FnYlpLo8U/yIsbBB5h53MtviKLkofSyhoDz27kaJQRShhRguYZc9?= =?us-ascii?Q?VF2g/TeRvDwEnGDlApfHx2Xd8hcz79nms+ldbtf9J5g8GZd316BlT//KjnEr?= =?us-ascii?Q?ssuEutQOqY7keoXGZEzD0Ujtey5nmt/ttfsDrrbrXoy1Y3GmKHEiIf4Dkzm3?= =?us-ascii?Q?tYLlVU0rEc16Jx0GPVSfKoqUi6IvGMNan/K/T9rqWmsuuqIWARrfMLcteVVW?= =?us-ascii?Q?uoQEIAtQRyX6FvcHIxt2+zi6dqMFRQnNq8GySzYpaExWrrtN++mB2BdUJs8S?= =?us-ascii?Q?biEYsRvHSQ6+w+NI37c=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)(14060799003)(35042699022)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2025 09:44:50.0445 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ad44fe9c-7088-49cf-a41f-08de0b0651af 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: AMS0EPF000001B0.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB7954 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 both RESET_SOFT and RESET_FAST operations with timeout handling and status verification. Signed-off-by: Karunika Choo --- drivers/gpu/drm/panthor/panthor_pwr.c | 62 ++++++++++++++++++++++++++- drivers/gpu/drm/panthor/panthor_pwr.h | 2 + 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panthor/panthor_pwr.c b/drivers/gpu/drm/pantho= r/panthor_pwr.c index 594181aba847..ecb278824d06 100644 --- a/drivers/gpu/drm/panthor/panthor_pwr.c +++ b/drivers/gpu/drm/panthor/panthor_pwr.c @@ -3,6 +3,7 @@ =20 #include #include +#include #include #include =20 @@ -31,6 +32,8 @@ =20 #define PWR_RETRACT_TIMEOUT_US 2000 =20 +#define PWR_RESET_TIMEOUT_MS 500 + /** * struct panthor_pwr - PWR_CONTROL block management data. */ @@ -80,6 +83,42 @@ static void panthor_pwr_write_command(struct panthor_dev= ice *ptdev, u32 command, gpu_write(ptdev, PWR_COMMAND, command); } =20 +static bool reset_irq_raised(struct panthor_device *ptdev) +{ + return gpu_read(ptdev, PWR_INT_RAWSTAT) & PWR_IRQ_RESET_COMPLETED; +} + +static bool reset_completed(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 (!drm_WARN_ON(&ptdev->base, !reset_completed(ptdev))) { + 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_completed(ptdev), + msecs_to_jiffies(PWR_RESET_TIMEOUT_MS))) { + guard(spinlock_irqsave)(&ptdev->pwr->reqs_lock); + + if (!reset_completed(ptdev) && !reset_irq_raised(ptdev)) { + drm_err(&ptdev->base, "RESET_%s timed out", + reset_cmd =3D=3D PWR_COMMAND_RESET_SOFT ? "SOFT" : "FAST"); + return -ETIMEDOUT; + } + + ptdev->pwr->pending_reqs &=3D ~PWR_IRQ_RESET_COMPLETED; + } + + return 0; +} + static const char *get_domain_name(u8 domain) { switch (domain) { @@ -407,9 +446,30 @@ int panthor_pwr_init(struct panthor_device *ptdev) return 0; } =20 +int panthor_pwr_reset_fast(struct panthor_device *ptdev) +{ + if (!ptdev->pwr) + return 0; + + if (!(panthor_pwr_read_status(ptdev) & PWR_STATUS_ALLOW_FAST_RESET)) { + drm_err(&ptdev->base, "RESET_SOFT not allowed"); + return -EOPNOTSUPP; + } + + return panthor_pwr_reset(ptdev, PWR_COMMAND_RESET_FAST); +} + int panthor_pwr_reset_soft(struct panthor_device *ptdev) { - return 0; + if (!ptdev->pwr) + return 0; + + if (!(panthor_pwr_read_status(ptdev) & PWR_STATUS_ALLOW_SOFT_RESET)) { + drm_err(&ptdev->base, "RESET_SOFT not allowed"); + return -EOPNOTSUPP; + } + + return panthor_pwr_reset(ptdev, PWR_COMMAND_RESET_SOFT); } =20 int panthor_pwr_l2_power_off(struct panthor_device *ptdev) diff --git a/drivers/gpu/drm/panthor/panthor_pwr.h b/drivers/gpu/drm/pantho= r/panthor_pwr.h index a4042c125448..2301c26dab86 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); =20 int panthor_pwr_init(struct panthor_device *ptdev); =20 +int panthor_pwr_reset_fast(struct panthor_device *ptdev); + int panthor_pwr_reset_soft(struct panthor_device *ptdev); =20 int panthor_pwr_l2_power_on(struct panthor_device *ptdev); --=20 2.49.0 From nobody Sat Feb 7 08:45:22 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013035.outbound.protection.outlook.com [52.101.83.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C9012EC579 for ; Tue, 14 Oct 2025 09:44:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.35 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435098; cv=fail; b=Ou0KnFCgP+Pc8vHI3dF86eBco/OwuQ+pB8OuCbXbXg0uJpD2FEUR6OSAAr7LJFHJCxI8u4iYQjhJZ2c6tofkyggLR5WsMGAlDBp5B/Fax7Fi7ggJVbIzA/ZwNnyKXSPzHwA+XhB3e/L4IYiwSPLm2XSfTI7VyBnM/mQ8ot/bfwo= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435098; c=relaxed/simple; bh=oks2tL6q/QhHBS93TvNNjgyoAl5JBl3prbIaKiL3Mjw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=aeRlidUQsjB/iepTUPDnbwwFhe2eDNzXRmfypQzyDOKTCViYkdG6wCnvqSxmr6jx8/glZfjt1rot0eoNC7qxE6EMWHQpHW8l1BP9OAum9GQTbJM5Y/Fz82RGzjgbAJP+1bdMBk1RCut20w7EemhVnrj9yrHlRkuLEEgAKgk+h+o= 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=H7uSnM3o; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=H7uSnM3o; arc=fail smtp.client-ip=52.101.83.35 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="H7uSnM3o"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="H7uSnM3o" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=SRmiaVCJ2KeBriBkspEbuzwTI6e8XGgRMRqM1MBdJ6yvo9G8z+gUcMPJCSQqoxiSonof3QZ9iGa+4e+omBDcTvjdc3U4C50r5uiy6KWj8P6pV9gPk7vCBGyCd+DaGnni7e1WV2pWuzrgqh3i5jBXTb7GGhMomEF6b0s+EiwFxYtl0bkfxwHxofJQ6ZMOzWFPhLBjHUsIk7EN5IEWb5C/xFSzbCHIC8uLOu9Iaeh48ZijpWP1zaPH9elgYb/Tf2InrJenBl+xNqay29280yYbtIn1cN0Tgap1OS7HnX2rVaGRQSiDCIefhlWkP+Zkd3omm/1TaPoqQKmIzXfVrTf6xQ== 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=4qAPgLTxRGvmnXouIeiFxTIYBYO80mLSDXDKLZ/bWe0=; b=phVIqMwt6iiz7ENlDuV13UEFyaiPi4bEXUACAKxlXkRg/sTnkR3R4k8JIhrPHpw27giqAhoOWEr9Zkx/NwC8WhlSAfbamlZp83+aMXuofzjCRyuJKQWI+2CP2Lhd8FiO4cUK8hKrtqPrsvqa37a88Gl/+d+6DF9xQSRg30qYWuQTEOoH/3vpGEB4/XSfmvmYk+7LoapHlsiHArKvTnvlgxsGlIlZixEvxoqLlvE75OoY/hKQrrqCpDg3blAorI8zADbT8D5mZlFUgT6BTLMSCbEjO//LQllMsuEFvHifDBKmHHOub34gbxMXwsJPhyqgNcBrFYELzq8yfB1ejmWu9Q== 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=4qAPgLTxRGvmnXouIeiFxTIYBYO80mLSDXDKLZ/bWe0=; b=H7uSnM3odyAT9jKyWk5l6Qg9FdQHMfb45J2T2rWO9DWcbAPPc9xElpYUrtuCweD2WDK52xim2cWjqpeT/rdTifRHOc7B42oQQwCjHJd0jTDIs4DEkPhwk1pdi3LmDvNXxOjQBJC2YLBqTV+B0GDIbrotzygmGlIWqvVYxXBK/hs= Received: from DUZPR01CA0292.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b7::14) by PA1PR08MB11642.eurprd08.prod.outlook.com (2603:10a6:102:558::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.9; Tue, 14 Oct 2025 09:44:51 +0000 Received: from DB1PEPF000509F1.eurprd03.prod.outlook.com (2603:10a6:10:4b7:cafe::83) by DUZPR01CA0292.outlook.office365.com (2603:10a6:10:4b7::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.10 via Frontend Transport; Tue, 14 Oct 2025 09:45:37 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB1PEPF000509F1.mail.protection.outlook.com (10.167.242.75) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.7 via Frontend Transport; Tue, 14 Oct 2025 09:44:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FATPEPUu98ZqVdskwNqqQMo5yrnHETGfOnYH0TY43J3FBG1T4Z6qaUyN1LwVzW5M7CmnsiuDXVtFYgFhXdqVkXXKxzbHtmk7yzk30PhdLgepnJj+/0H+cG9RV8kKKaHbXnvMpU5J+E9l8hjoSJczTdGcI0BgaWaFvuMWjgKz8fO7QMGBZbXcJEpRLESMy9YI+kur+oZ3Z7DIWNAmAmFBo328yL5JaLYWAVXgFekYg6bOc8pBhRM82o3jTHdAwsszuRpIJD/Spj3HjKXLXkzVxDYef++Ew5R1YF4r8OgxS7FZrkSg3n9L1dnxPCAWeCW+L6hcj0mmA63ZQieywtA9ag== 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=4qAPgLTxRGvmnXouIeiFxTIYBYO80mLSDXDKLZ/bWe0=; b=RIvWs/kHyzOhAOdZZ+T3C3aT1nAHNQNTN7GUfPS1VpYtZY0O6vl4lHnjICtHKrkZ+FhCoNOJ+VfnsK/yuuVUKThV7p/9ISWJVrlq4BZeg1kpKgGoc79RtQzhs9p121U1V9nXOyytungZ5CPkIYQGl7+Uu7zoo4rw+mGByQY5M50xOPmWUmW62QtfwyvkkYw44Y8HZhXXfN+9jELuW0joP1w1DaStq1TnUgt6KYYHzr5dmYji7oUVt/l9zoHSD9biO/YPCRDej9W7RwIpFXq3TGaU1PjppVc8Y+kAON5LS7fbXHY7hE+KjEq4p08RhEyrD4UCX0ic0aup9c3VpPK1iQ== 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=4qAPgLTxRGvmnXouIeiFxTIYBYO80mLSDXDKLZ/bWe0=; b=H7uSnM3odyAT9jKyWk5l6Qg9FdQHMfb45J2T2rWO9DWcbAPPc9xElpYUrtuCweD2WDK52xim2cWjqpeT/rdTifRHOc7B42oQQwCjHJd0jTDIs4DEkPhwk1pdi3LmDvNXxOjQBJC2YLBqTV+B0GDIbrotzygmGlIWqvVYxXBK/hs= 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 VI1PR08MB5517.eurprd08.prod.outlook.com (2603:10a6:803:139::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13; Tue, 14 Oct 2025 09:44:18 +0000 Received: from VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74]) by VI0PR08MB11200.eurprd08.prod.outlook.com ([fe80::d594:64a:dfc:db74%7]) with mapi id 15.20.9203.009; Tue, 14 Oct 2025 09:44:18 +0000 From: Karunika Choo To: dri-devel@lists.freedesktop.org Cc: nd@arm.com, Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH v1 08/10] drm/panthor: Support GLB_REQ.STATE field for Mali-G1 GPUs Date: Tue, 14 Oct 2025 10:43:35 +0100 Message-ID: <20251014094337.1009601-9-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251014094337.1009601-1-karunika.choo@arm.com> References: <20251014094337.1009601-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PR1P264CA0050.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2cb::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_|VI1PR08MB5517:EE_|DB1PEPF000509F1:EE_|PA1PR08MB11642:EE_ X-MS-Office365-Filtering-Correlation-Id: 26330d3b-e8db-48db-9827-08de0b06522b 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?Ic4Uy4/SY2/DmWSJrHnAwzSoAmQBD12aHaCkta3OAQxBoxVVeMafKdOMA+s+?= =?us-ascii?Q?lxedPmHD1So8RtKXapsgeefxYj/FEmPggkBou1iC17MBcRuGST3gHe1ygJl6?= =?us-ascii?Q?POzQzhr4I7dCvhfPGwC7PknsiEYiaNU3vOa1jifZvYK8ineFFszD0prBCEFL?= =?us-ascii?Q?G874dlyFMUadBxJGyiBuRYeY/o8XaV8lqQQROP0z1VAWv/iAk5cd2Wtk/NSg?= =?us-ascii?Q?hlY5bVgwCgm4mR7Xl7PrsWLtk7Uv42Kf28ytjNIN4MFAiYZujEnIkCEoGd6D?= =?us-ascii?Q?kWtfu6VwKfaiCT0BWvUIjoYYnJHgkmleeqifIfpm+eP/pXKDjIImQACQqxF1?= =?us-ascii?Q?D7pmMkKRGnY/Rqsm3E5AVH8jiXIIFZeWNCeBtjPl5feQvf1jucJEezh0c0vp?= =?us-ascii?Q?vdztdUqg3zoXD0D7Hbz/7sjo/y0yBoDVTwZd9ZOoguRqaHi4+su24mrICQr1?= =?us-ascii?Q?hyUnbJqLOzUvbaLBGc/5NYQEH2fFrAWGO6fXRdaCiavLd8oPFCBfqXWqX4ol?= =?us-ascii?Q?DVQvn0wXaC7BS7Uzj34OIvaAMcbyGS+7UfFThkOr5YmPRRFIs49ya3Gte1z9?= =?us-ascii?Q?6Pb52PnzLUkjAKzYtpbCdam4jMmSb6fIKHzMsjmWBDrv5vRZ7pYcZGoP5Tvl?= =?us-ascii?Q?5nCW9sp9Q0ExJNNYKucjSTy3hL0NGG/xINng1Q4BqZPD1FC5yYqPb0SrlvPr?= =?us-ascii?Q?mmOSujcYygG0ugTOzOeJDlEV8XsnDgnEQwpVppRoBG/uqiIBh+BRPukyeJsY?= =?us-ascii?Q?laWCu2QRsEbjr4XSjc2AcmadaIaH3LwvbBRyEUkUBK+9FnddN2ngBCagVg4D?= =?us-ascii?Q?EY0ysoN5A6xrxqQhc2Q2ewT5byKYYjn/wfGTP53dxsiY65zbrNfPWyEc2vR5?= =?us-ascii?Q?SXiPiWi22dA4XfsMyTXjNWnXI60EpTMzqlSK0+z12aojr3zfn5NzcMm3H2JJ?= =?us-ascii?Q?G4fswJqGw2/871SzSGVCiq8/Uz5mQQRqbEPJq5Rr1rm6KgMAXiSrRbE+wMFk?= =?us-ascii?Q?J3rzvC+qFOwXgTUEKuRRJ3znZBHoZEkTDcK4z0pU78UoLYViGyBfFo5E7Lwl?= =?us-ascii?Q?Vdi1VnxHnQoXiEFXn+5j7Ak4EYEm9l2yaUaLHjzKUqcF90grGuVQPphhf62Z?= =?us-ascii?Q?IbeVckW2r7of9SlNBSjPMx9uSoSFRptVgchojVnFwLZPd9nWsumKOCADNwio?= =?us-ascii?Q?mqfqPsX9b2qg241BJelu5eIDiDrZ3FiUlL5w+XJLcbM9Z+9SwsLJXNBFFdQ6?= =?us-ascii?Q?TT1AEmZn1Ywnda2ImxmQSxq1MAVmnY5LdxlS1AaxZcgbKq3hgNWO7hN9UbR0?= =?us-ascii?Q?cuc0W2BZXYhI544ECxWlNh4sLZ8pWnzYjTNgK6FOVU66D0mrIxTxeJXKevyo?= =?us-ascii?Q?8jqlq1TBE5W2P2ZGQvzHE9Spzji5MvlgDGOCGDqjjWLFYiG+sdoZnICtwCWb?= =?us-ascii?Q?M8OdbKi355NxUirprlXSruotjgVFH7E6?= 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: VI1PR08MB5517 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509F1.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: fc0d878f-b3bc-45cb-6241-08de0b063eab X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|14060799003|376014|1800799024|35042699022; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?gl/997FDEw7+BplT0AvPYkQrvVFReEJ7GxEUqlhimiPpp3aYG8ds7RdYQ/Ge?= =?us-ascii?Q?vCmObcug0kQdZaMnqFStG4/7SWPEbxST91Uyzpb9snMa9EXobpLVc/SKNEEW?= =?us-ascii?Q?AE9tUeaj0YGzvPhj5I97V+EF4RaWzjfa4AWSL4/Nl9suTF4NQUbisFB8QHkH?= =?us-ascii?Q?gPNPYfXiiFM/JH2HkBXNLxUi0xrfft6J+mRkFAk8gnmaoez2khXM3YDcAWR7?= =?us-ascii?Q?DHLWvVFgtL+1GXY0zxgh4/L3KY989Ip+c/onm926VL2fCSJntoWVLY3ziFzu?= =?us-ascii?Q?51AZ9Qg60JmFLwErOaJKUubSDdcDNckPEKMEdUqotMTGBcpDramyLHK/y7r8?= =?us-ascii?Q?nqjZ7c2qU/cC5r+a8Tmw/3egz2Bb0kVxPv5Vo4pfhEKbT1C8BzqW/vqXgXNA?= =?us-ascii?Q?wje+0uMJZRa2JEQX7EgmRIK0f7VC+IcX7CF5MsMYEIfm/gw660bp0ZFG7oCk?= =?us-ascii?Q?iwdaFFbF7qeYuHTkzEULM2FUP/WzZ/2sqpYEo1jcXeX/Id5EfCI9Ds8HDpMP?= =?us-ascii?Q?wJGTHClSTmJgyDsKzWO6ylx/H+A4si81Vq2u0b4mcGHkAlU7Rp4QzQg7uOKV?= =?us-ascii?Q?ZRKSe75WOC5/G1kkFEGYRzGmh7rY9LlGfbbr74EnwBwXmeutxylp1TrImrRh?= =?us-ascii?Q?Uzdt2QcG8BicGp09rUZvPqC8yJqlnjhndItwN7D04OhGOEbQUrCaA3waYkIQ?= =?us-ascii?Q?n3nnCgu9EwklMat8Wz1RH5WPPUVhPhZQ6bIgRZIbcExlcIs08GU8kcQE1ykj?= =?us-ascii?Q?hbtvVlJFYSM+J+IOQJgzAI8KfjQd/PSpCS6Y5o6EACHd4ykyMhscksCDmn0H?= =?us-ascii?Q?4q50mWqNBMvPPTiOQMsNUTJ/9/gYLW7BFmBDnyt5dEMIUbbQyk0Jr8xwsQfv?= =?us-ascii?Q?kGHioEPmgue9wa+pNYUhrXIk/Y7FnrQM7CT4DCHlYlfOlJtQXLOQ+BU9vhK2?= =?us-ascii?Q?f3yLT8UVH8PN7cMVmz6q4r5QPfBeTiQtZMTh5bkr9waW7UL156URoTqMIa6O?= =?us-ascii?Q?pWbIdi6BHrA0e3HeiH9zgIreU+J0H9i/2MSUQESh+v8GWh5p92toHquB3KHd?= =?us-ascii?Q?BW6lIhqxzR+8ig258GS4KFvWFvEla3T1UbmbwdyoHnePw88Sgda3VO+M9AX1?= =?us-ascii?Q?4x+MUS1St5Xuc0yhk0OBRmZLD1KLvNixxFck8gD4PCPwyb09JfC3EGcuxpHg?= =?us-ascii?Q?Ui0YPQZegxC1hm+iH20+TdpER1puKcwFwpxVRj6USx3KJgCWR+rzOpE8+WMS?= =?us-ascii?Q?NYsOGgZL9cV1SjPXaDFiPASpljcgF3B073wBTlI4JdLTeqbXrinfLPRUiNol?= =?us-ascii?Q?AcXlsXoFc59RmpXFH6D/JmQhDWQfcCdPH6Dc/3tCJi7ur+xBr5c/e3pKgJZI?= =?us-ascii?Q?Yh6A0HWePA2wqT/GVk7FNpC8r8HZX1cywNtY3TnFCF66Zk1CQVW/oJ1HF6kl?= =?us-ascii?Q?baCVfKKAQRyhtVyH8lr05Gi7WcDmuiYulsWFpco108nZy4FNRpCjQrPzogta?= =?us-ascii?Q?+17u65QN5Jae+V1wMkOXNofoB9q7jDc/hfy6hu8DzI0NFIjf8D/lV/LLRP9E?= =?us-ascii?Q?IH5AuruuejhnngPwrpc=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)(82310400026)(14060799003)(376014)(1800799024)(35042699022);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2025 09:44:50.8291 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 26330d3b-e8db-48db-9827-08de0b06522b 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: DB1PEPF000509F1.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR08MB11642 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. Signed-off-by: Karunika Choo --- drivers/gpu/drm/panthor/panthor_fw.c | 82 ++++++++++++++++++++++------ drivers/gpu/drm/panthor/panthor_fw.h | 7 +++ 2 files changed, 73 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index e6c39c70d348..48bbae8931cb 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -33,6 +33,7 @@ #define PROGRESS_TIMEOUT_SCALE_SHIFT 10 #define IDLE_HYSTERESIS_US 800 #define PWROFF_HYSTERESIS_US 10000 +#define MCU_HALT_TIMEOUT_US (10ULL * 1000 * 1000) =20 /** * struct panthor_fw_binary_hdr - Firmware binary header. @@ -996,6 +997,9 @@ static void panthor_fw_init_global_iface(struct panthor= _device *ptdev) GLB_IDLE_EN | GLB_IDLE; =20 + if (panthor_fw_csf_version(ptdev) >=3D CSF_IFACE_VERSION(4, 1, 0)) + glb_iface->input->ack_irq_mask |=3D GLB_STATE_MASK; + panthor_fw_update_reqs(glb_iface, req, GLB_IDLE_EN, GLB_IDLE_EN); panthor_fw_toggle_reqs(glb_iface, req, ack, GLB_CFG_ALLOC_EN | @@ -1069,6 +1073,54 @@ static void panthor_fw_stop(struct panthor_device *p= tdev) drm_err(&ptdev->base, "Failed to stop MCU"); } =20 +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_csf_version(ptdev) >=3D CSF_IFACE_VERSION(4, 1, 0)) + 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_csf_version(ptdev) >=3D CSF_IFACE_VERSION(4, 1, 0)) + 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_csf_version(ptdev) >=3D CSF_IFACE_VERSION(4, 1, 0)) + panthor_fw_update_reqs(glb_iface, req, GLB_STATE(GLB_STATE_ACTIVE), GLB_= STATE_MASK); + else + panthor_fw_update_reqs(glb_iface, req, 0, GLB_HALT); +} + /** * panthor_fw_pre_reset() - Call before a reset. * @ptdev: Device. @@ -1085,19 +1137,13 @@ void panthor_fw_pre_reset(struct panthor_device *pt= dev, bool on_hang) ptdev->reset.fast =3D false; =20 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); =20 panthor_job_irq_suspend(&ptdev->fw->irq); } @@ -1125,14 +1171,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); } =20 ret =3D panthor_fw_start(ptdev); @@ -1170,6 +1216,10 @@ void panthor_fw_unplug(struct panthor_device *ptdev) if (ptdev->fw->irq.irq) panthor_job_irq_suspend(&ptdev->fw->irq); =20 + 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); } =20 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) --=20 2.49.0 From nobody Sat Feb 7 08:45:22 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013069.outbound.protection.outlook.com [52.101.72.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 00DD22EC0AB for ; Tue, 14 Oct 2025 09:45:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.69 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435109; cv=fail; b=f4MXkoW+suWFnuVBrx+p7jKV93Tnnrv+BfG/nPSzShONaz4tLR32yY1Q+yOZm9kFRXZfsKL644S0uo3HCUv9zGs91V7rIdLzVlfFgz03V3YL4jWmrArCv1uEBLZDgBa5hW+RZqCWPf3h4dRSN7YS7/YfszgGn8EfC9z5S+YXkdI= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435109; c=relaxed/simple; bh=Gb45vryqJZLoCpkK82Y7RbZ62doPfmPVL2kGjGB0PDg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Mj+ODTdUqb18DpKIna7X72McS3RCKQfM5jZWW6Y7vDa1IUji32cV381BAW/sovfqo75QkWf0QhUD9A0y/8S4ukRUM57yZMULEfIv3/U/q73entZmirWP4mb9BCf+5JP9Ms/y18nCY/xst35ZANnt78w7AgLSCt4iDAchdrC1C40= 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=bWx5DRd+; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=bWx5DRd+; arc=fail smtp.client-ip=52.101.72.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="bWx5DRd+"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="bWx5DRd+" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=lSxImkXHoArJ0DFSpMnrORWZD06LSkYkbHecg3dDt6ZtBReDamM7fJNnC0OhZdo4BT+lMgmlGp4pqTjUPKhcfRKwYp2Wz6BghDK9NygXzOqesBkeu8A/I3qwDWAb3528n8PKyTsPu0NvwAWIilVq8tHZci8E5yg8cgulonZdSmXHwhhuTrf4Y7viNNOytgvFGmTpHos+dv2HvrOZQome0ErSVZjcU+8pHIOKJ5cBSmbRxfjZ5tFePUI1d1S0yLdwJoAHH1SUnxCqhlfJrP6/6CpWoU0kAgQDjzIorvkeD/b3HgbSIeuCA+03g3vzE+iPC5P+sSNnU73sxWP4RngVOA== 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=A0K6L6Rv26DxIafxNKUlxtD96VftpAxrkL3rQfbJ8cU=; b=Jm+vOjUU4/gYMAKtT56aGFHCNTSr4viPSRDCbTWR0OKrkz9ajOcHUf/T8WFUTuTK1HKdpQRb0SAONNt345sJT1hIsh4AfRZuElumAYiu+iAopi0cLsRJN6hVWQpBICUTBe2oloE9h1bYm/oOl7QvH5Vjj3rIM0SFVMUje5iCbQTypnyhp6GIuBn9KoGice47k8Tmg7BMmiafvWTEsKy6ItQmBQLq4J2GOxNJjI4axuU8GIfL5CPh/yMSaVQ8jcdcpAK85F0eR6QTbsZ17WjpIaAVH44M3cGd8H7LNqKSC9QMKVJ7lXEl2/S38/PqDDizD7L/O2bAaYG2GAWW/XN4RA== 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=A0K6L6Rv26DxIafxNKUlxtD96VftpAxrkL3rQfbJ8cU=; b=bWx5DRd+yiSDkMDY/6b5EzhQTwNC1C4112oXPM8xOygnxImCXxxJ01NW/NvubnREmnkO8R7rZNJ0DkUdFjbxGBrxk9HQKjZkY8JsMcVLgWV+USh9kwhr81S2I27qtkhYvnThSYdoLl/PqjFrzY5xZ2OBYqzRc9R7uVSZqzyf2LE= Received: from DUZPR01CA0098.eurprd01.prod.exchangelabs.com (2603:10a6:10:4bb::29) by AS8PR08MB6680.eurprd08.prod.outlook.com (2603:10a6:20b:397::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.10; Tue, 14 Oct 2025 09:44:53 +0000 Received: from DU6PEPF0000A7E0.eurprd02.prod.outlook.com (2603:10a6:10:4bb:cafe::6e) by DUZPR01CA0098.outlook.office365.com (2603:10a6:10:4bb::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.9 via Frontend Transport; Tue, 14 Oct 2025 09:45: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 DU6PEPF0000A7E0.mail.protection.outlook.com (10.167.8.39) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9228.7 via Frontend Transport; Tue, 14 Oct 2025 09:44:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=h7/pWWp2d0YawxaTZ5GhdpYq5MV9LEF101NRJDR1P7xjAidDW/dw9Dg8Wi5+XREALWkqzrc+aNysFwI1YQge+5pS67zGTfLvjikauCQyshQxkMQKbHqnM3GGJv8kt9LvIrUr+38dNM2V1Zw5qAG48JzLLwK8GQZQU4uQbwTn29M5sCUYb9uIBvenZY/52QJULa+JwmvOAspMBclX3Qj8v2xlzZS5GCrEkBfG5hFcpKh9vkUCEbAVf1hcOc3pDaAYQ4plRySHr+xTFSK4iCkE+WpWbR5rSNHADUVPOPBN15KdC2gtnAGHbcPXhLcDiZdcnDsaGMHpWYm0RjcSf1WgIw== 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=A0K6L6Rv26DxIafxNKUlxtD96VftpAxrkL3rQfbJ8cU=; b=V0hbWoz6F4ozoNViXkCobKFK3dPV2J22nM1C3W3GF0Y75eErwT8PRImTrb+MLCa645KzqGPvfaiJaBlo0HlDJ3NXD2zDxXWTMfMBjBcnXKKERYzysT7zcdYKr2rOIXQ3OmsJFr4yz9FDD2XiqaXnL4xQpz1qv54EycRW8ijctxdbuf2ZYmykXVOoEZGFniEHPlEDVcVKEZ2gDLl2UClIV1fbCw/IsQMlVOe+pOfcEkJbD44RVUeEZmtl3mRMj1huRu26z82QrSOgDkLV1hNc6Ld4Q6AIVt9gs2P6srejkiTDd4YAjRvO3ZonvY8rEAo4iWsYGs+aLzuUaQB5zCDoRg== 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=A0K6L6Rv26DxIafxNKUlxtD96VftpAxrkL3rQfbJ8cU=; b=bWx5DRd+yiSDkMDY/6b5EzhQTwNC1C4112oXPM8xOygnxImCXxxJ01NW/NvubnREmnkO8R7rZNJ0DkUdFjbxGBrxk9HQKjZkY8JsMcVLgWV+USh9kwhr81S2I27qtkhYvnThSYdoLl/PqjFrzY5xZ2OBYqzRc9R7uVSZqzyf2LE= 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 AS2PR08MB8286.eurprd08.prod.outlook.com (2603:10a6:20b:555::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13; Tue, 14 Oct 2025 09:44:20 +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.9203.009; Tue, 14 Oct 2025 09:44:20 +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 v1 09/10] drm/panthor: Support 64-bit endpoint_req register for Mali-G1 Date: Tue, 14 Oct 2025 10:43:36 +0100 Message-ID: <20251014094337.1009601-10-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251014094337.1009601-1-karunika.choo@arm.com> References: <20251014094337.1009601-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PA7P264CA0108.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:34c::8) 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_|AS2PR08MB8286:EE_|DU6PEPF0000A7E0:EE_|AS8PR08MB6680:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b1de41f-e4ab-4232-4534-08de0b06538e 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?SRHfW4np2Y2Uk3Lqj4aT2zgEh+eBUsS7m1h5MOxkX0V0GjUdZxhEqXbwsJKj?= =?us-ascii?Q?9NDY943o7mTazhWQQkIwBihjo2eXMUX0YnAaKFtTKmJuO8Hf6aZFZWG3YVu+?= =?us-ascii?Q?LLyx5nTgZvqZqewbkxYK4X/1esi0UquyUdil7aj2aDxK2E74vzFm1lMk2WaJ?= =?us-ascii?Q?L6dHqevVFISW8lKenFnjWkYZ6zzYdEt1foz2EiYx+vTZc5a9FwZHJAIy6anV?= =?us-ascii?Q?jFUuHlJMXVIr7Cq2MZBrH7EC39wxVqQ1AAENAABsBegHx/hdlzEPZtsGAlwl?= =?us-ascii?Q?m+yG/c6+l8MY99njHcYPHDL/TeGe649V9G3balOdVVL8PPz3i4RfBWWyLTX0?= =?us-ascii?Q?4j8nz+DSMybDSI+YHpnARRwlpbpGSuxDv20t0f80C2yiL2cB5tmxDp8D4zuw?= =?us-ascii?Q?hpeHyfibhtnwyEF8Wt0vI9JRGfEnWeGaOVx0e9RqurtElqSHHaZi2oHYKeYI?= =?us-ascii?Q?lmUGw9SIfPoyEq1mhGPBnSoWd1Oo1z/KelBAnfMOY4uQku0v7/BGuokE7v9N?= =?us-ascii?Q?frYFz/5eakXMzaEfCtpMTpL4oSXHz5Vv1alrnA9ZoIRjVO59cpJVLUv3GRSz?= =?us-ascii?Q?72jxf1XBHHIYLqqjg66ZD2FKMKJWB0h2H2tvjIrHIuKxN0dJQO1lyVLN2Wi9?= =?us-ascii?Q?DccxJFxtHre2kctkDS+oEwh955hcMc57FtLW8oZ4KrQu1GP3xloNOdup8SbR?= =?us-ascii?Q?KiK2h/CeuDFyNWsWht5pxFz9sW5nZfpUk2iAeeAm+cDyehOYTSG9qi3Fs71S?= =?us-ascii?Q?627VP7nk2f0bqjMRc6pJoWp5FRp+LB+rOesm7PEydPEbRSAzrRduuKzJEgkB?= =?us-ascii?Q?Td4Q51FyrTfGjVCJl+hMpSL1zFwVLnouvMmtFsSBNf4LngAnLp9uvw6YaeBs?= =?us-ascii?Q?VTd8KsqQwV/aKEnRcfSSdM6IfbFViLIpXT85yiWkiyJ2R+6Q6WYn60OYbyt5?= =?us-ascii?Q?c30iMYO+RjasIXAsoeJekKo2Lo7YM6xU6eu0Btb/ye/oYr76ecqjqBfRYVtq?= =?us-ascii?Q?pS0rqx/D0TxcDyncgLvpioCugSVlL+1eOVc3hlXuP3kpYrTbw3/C77HueSYE?= =?us-ascii?Q?bfV7EcBt2niJDihq/oqgYfAWVdvft7VyejJPWEosPukrJN08G4jny+gqDAxu?= =?us-ascii?Q?+ckIK1ohutMXUuM+301nRIVZKDkzbUi6M8uIDAxHgiUQ6L1qq6MlSjYBA4z+?= =?us-ascii?Q?ZITFkphVhEOq/pmZbrEVBSo0CkuvPk+Ou9i4MaJ06NkPo+4eec+zskCEGMmg?= =?us-ascii?Q?1OF/pjRfGfELfQAAEa3Y2a7+h3q1iazDjEijZEi+SCf+rJ7i8vj5xwXPZjuN?= =?us-ascii?Q?0g3wuljPbFQeot/s3exT/4FNbNl8J8xZsoOOjjdkW/45dMG8Sh+E9996zzHg?= =?us-ascii?Q?i89H4JD9TedKupQbqw0Vjlag8Kclib6M4jLEPRzgrmFDh19sdZfz5Bpm0X3l?= =?us-ascii?Q?ZP0L6ONEPpfIQeTlQYBOtOdL1Pd5WIMC?= 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: AS2PR08MB8286 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000A7E0.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 213dc60f-1900-492a-6a8d-08de0b063ffe X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|14060799003|376014|35042699022|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?B3pAAmtS0SWZ9eIO+kaAdcTkcEB6iq4G+ZzkH/vgy5iYIDmXAXae+P1UnpY3?= =?us-ascii?Q?g+G0RBtfchZPQCMHXIgzIW/55kF9JHFxlYasrU7fEzynr7qWtPnCwU1HSP4G?= =?us-ascii?Q?uESpkQ4DNvAkRxGqlFmDN+ZstV6YDusdkO0EYdnJI3dMen4sqwa4/L/kTCog?= =?us-ascii?Q?olytWRxs5vZeUeOIlzCs2E8Era1nF3KVC0hd9F0KJm415Y/NsX+jvOGLhGeX?= =?us-ascii?Q?MDWYu16Z8o0xJP7aElSlREzjLw2w2us52eNBUotVzClG0Yo7FkA3s6ffn/X2?= =?us-ascii?Q?iX4wUSYJOnlvCzPREuqGLsY4VULIas4iL48iN4s2ld3FLq+abHVZZeYSDEYb?= =?us-ascii?Q?tswhaqKzXSkqLdoPrwBOc+aWmIpqAVkj7NdH6VW1T6mjAH1eVR2yNaPDOMxG?= =?us-ascii?Q?6IOkYhr2ikx+ez9CA1Zolkya19POGcKVcwNn00HQV9D2yw9yuqVU/rikFkk6?= =?us-ascii?Q?HH17CF+93odkmiBDGJaoH8Xag5HHFikxVhGvk4H987/Z3lSO6IlT4YUg8P/G?= =?us-ascii?Q?Ae7rJr4V5csr2bCNXcmsigglV8uN71P5KU0ao1dcJVPcHTPnhUBwOP7a9EhP?= =?us-ascii?Q?7mebTsJZPswN7q9mY8S3fy5AQErLS87GTOGd6EQ7h/4rtCT6aTjaCFqQP12I?= =?us-ascii?Q?vkCEntzLiaFWnu0ak8nkPEoALjHb3BPOrv6ixwkAWccO2cnNiEVgpF/ODl1J?= =?us-ascii?Q?QzLGAfga4y3POLbLMio/lFR25j9TVMh7bQrPtEDFEgjWXurnUuIi4sAp9o+Y?= =?us-ascii?Q?LQYK+9GPsI0al/ZKQKrWNvG4cLQkltnQp2jooCTmqlC9M7/ebB42X1Lb/I1j?= =?us-ascii?Q?d9FQbGFrPKFFE+PSguSs8nrr1oTMGeCBqO+2zSobQu+ko2AmZao8nerH2DEx?= =?us-ascii?Q?hmjHaCJPe0OFy1IE/gAFp2NswrCukhiFBuAPxwWadJc7oRwRkSAdvvhrAkvA?= =?us-ascii?Q?koi5FbVIQtDJYKt+EpqdogXO5SjvFp7r1c6hr66afs1M4iOswXa5Ra2ITXbm?= =?us-ascii?Q?bcuwIGEtcWc4l656+zdGD6BWhqG7UmV8i9ERfgpfxoN4FtucAP1PedgLs7u6?= =?us-ascii?Q?Ga9i3vbDjggn+KXfF6hzA69nTBRYkdoIBALbi12AP+Fqd0LiuTqsSYhWzCPs?= =?us-ascii?Q?aIRZ2yKbMk1BRc326Zz0nJO5B8RzjJPw0fOE1rWcTEhFr2aWb+AMPXKiC1Gs?= =?us-ascii?Q?EBI8mCNxqHk7cRLSaWEiqX4DK+xLSxjDD3JelidGFUnDmTFxblapb1aTjjyI?= =?us-ascii?Q?JegzB9E4NDigkYUoiavcG1c2KCChAml2EQGEL+q/+9ihUn0NIrD/54riGcJT?= =?us-ascii?Q?vS0+892Qs29ydYm025I287moK4ANVGeZWPrD78JiVc05xNc78UgohdRcFTUk?= =?us-ascii?Q?poH/y1cdeACHjerqyXrBFMTpNhVyiOrtF5dn/cZHXyM5jDAb69ufffXYkyJ+?= =?us-ascii?Q?acbTnSFeDQpTx/mEyPCwugRFiEVoB/rMVu8viQL5UuS0pVq/Dq0pEntr5n0a?= =?us-ascii?Q?ajKsg9DJk/qTZTJHygco0JiV2P6VM1omyZGJe2VEZrRFD4ZQLuTY1wrg4A?= =?us-ascii?Q?=3D=3D?= X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(14060799003)(376014)(35042699022)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2025 09:44:53.1601 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b1de41f-e4ab-4232-4534-08de0b06538e 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: DU6PEPF0000A7E0.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6680 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 based on the CSF interface version, ensuring correct handling on both pre-v4.0 and v4.0+ hardware. Signed-off-by: Karunika Choo --- drivers/gpu/drm/panthor/panthor_fw.c | 43 ++++++++++++++++++++++--- drivers/gpu/drm/panthor/panthor_fw.h | 20 +++++++++++- drivers/gpu/drm/panthor/panthor_sched.c | 22 +++++++------ 3 files changed, 70 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index 48bbae8931cb..c1b2fba311d8 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -318,6 +318,41 @@ panthor_fw_get_cs_iface(struct panthor_device *ptdev, = u32 csg_slot, u32 cs_slot) return &ptdev->fw->iface.streams[csg_slot][cs_slot]; } =20 +u64 panthor_fw_csg_endpoint_req_get(struct panthor_device *ptdev, u32 csg_= id) +{ + struct panthor_fw_global_iface *glb_iface =3D panthor_fw_get_glb_iface(pt= dev); + struct panthor_fw_csg_iface *csg_iface =3D panthor_fw_get_csg_iface(ptdev= , csg_id); + + if (glb_iface->control->version >=3D CSF_IFACE_VERSION(4, 0, 0)) + return csg_iface->input->endpoint_req2; + else + return csg_iface->input->endpoint_req; +} + +void panthor_fw_csg_endpoint_req_set(struct panthor_device *ptdev, u32 csg= _id, u64 value) +{ + struct panthor_fw_global_iface *glb_iface =3D panthor_fw_get_glb_iface(pt= dev); + struct panthor_fw_csg_iface *csg_iface =3D panthor_fw_get_csg_iface(ptdev= , csg_id); + + if (glb_iface->control->version >=3D CSF_IFACE_VERSION(4, 0, 0)) + 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, u32 = csg_id, u64 value, + u64 mask) +{ + struct panthor_fw_global_iface *glb_iface =3D panthor_fw_get_glb_iface(pt= dev); + struct panthor_fw_csg_iface *csg_iface =3D panthor_fw_get_csg_iface(ptdev= , csg_id); + + if (glb_iface->control->version >=3D CSF_IFACE_VERSION(4, 0, 0)) + 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. @@ -997,7 +1032,7 @@ static void panthor_fw_init_global_iface(struct pantho= r_device *ptdev) GLB_IDLE_EN | GLB_IDLE; =20 - if (panthor_fw_csf_version(ptdev) >=3D CSF_IFACE_VERSION(4, 1, 0)) + if (glb_iface->control->version >=3D CSF_IFACE_VERSION(4, 1, 0)) glb_iface->input->ack_irq_mask |=3D GLB_STATE_MASK; =20 panthor_fw_update_reqs(glb_iface, req, GLB_IDLE_EN, GLB_IDLE_EN); @@ -1080,7 +1115,7 @@ static bool panthor_fw_mcu_halted(struct panthor_devi= ce *ptdev) =20 halted =3D gpu_read(ptdev, MCU_STATUS) =3D=3D MCU_STATUS_HALT; =20 - if (panthor_fw_csf_version(ptdev) >=3D CSF_IFACE_VERSION(4, 1, 0)) + if (glb_iface->control->version >=3D CSF_IFACE_VERSION(4, 1, 0)) halted &=3D (GLB_STATE_GET(glb_iface->output->ack) =3D=3D GLB_STATE_HALT= ); =20 return halted; @@ -1090,7 +1125,7 @@ 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); =20 - if (panthor_fw_csf_version(ptdev) >=3D CSF_IFACE_VERSION(4, 1, 0)) + if (glb_iface->control->version >=3D CSF_IFACE_VERSION(4, 1, 0)) 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); @@ -1115,7 +1150,7 @@ 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); =20 - if (panthor_fw_csf_version(ptdev) >=3D CSF_IFACE_VERSION(4, 1, 0)) + if (glb_iface->control->version >=3D CSF_IFACE_VERSION(4, 1, 0)) 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); diff --git a/drivers/gpu/drm/panthor/panthor_fw.h b/drivers/gpu/drm/panthor= /panthor_fw.h index a19ed48b2d0b..25ebf0d31d0d 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.h +++ b/drivers/gpu/drm/panthor/panthor_fw.h @@ -168,9 +168,10 @@ struct panthor_fw_csg_input_iface { #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_GET(x) (((x) & GENMASK(31, 28)) >> 28) #define CSG_EP_REQ_PRIORITY_MASK GENMASK(31, 28) 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) =20 +#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); =20 @@ -473,6 +484,13 @@ 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); =20 +u64 panthor_fw_csg_endpoint_req_get(struct panthor_device *ptdev, u32 csg_= id); + +void panthor_fw_csg_endpoint_req_set(struct panthor_device *ptdev, u32 csg= _id, u64 value); + +void panthor_fw_csg_endpoint_req_update(struct panthor_device *ptdev, u32 = csg_id, 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); =20 diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/pant= hor/panthor_sched.c index 0cc9055f4ee5..25663de62b8e 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -1138,12 +1138,11 @@ static void 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; =20 lockdep_assert_held(&ptdev->scheduler->lock); =20 - 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; + csg_slot->priority =3D + CSG_EP_REQ_PRIORITY_GET(panthor_fw_csg_endpoint_req_get(ptdev, csg_id)); } =20 /** @@ -1303,6 +1302,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; + u32 endpoint_req =3D 0; =20 lockdep_assert_held(&ptdev->scheduler->lock); =20 @@ -1329,10 +1329,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_id, endpoint_req); + csg_iface->input->config =3D panthor_vm_as(group->vm); =20 if (group->suspend_buf) @@ -2230,9 +2232,9 @@ tick_ctx_apply(struct panthor_scheduler *sched, struc= t panthor_sched_tick_ctx *c continue; } =20 - 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_id, + 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); --=20 2.49.0 From nobody Sat Feb 7 08:45:22 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013054.outbound.protection.outlook.com [40.107.159.54]) (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 EB8942FCC1E for ; Tue, 14 Oct 2025 09:45:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.54 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435104; cv=fail; b=IGcGDBrLPjPOLXD5I1vKg9TU5wBTPsrCHF+Yp/M5kgmaQnrMVtX4C8MoQYK0daPffyMd27ds2025dHMapl2Qju9SXhEoSejjY+MXh3AZz5ocZJHBToeLu3vKIARxBTXyny8zDVDjUZ9Z3trXMVivHI87H/TFptIWy5ShrZiip08= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760435104; c=relaxed/simple; bh=z+lYmkjQjk9R/+teBnYRF4gXzLNq/RDWPllQ2Wfx7+0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Ycz6T72JlSjNmSDwSBjGYNjVLc2/LkIFiRUkUZlwBNAe8OlyzjJl/EsLmmPK9PD7S+Hcquungs/cKmFgajMkRPPkpjbWv89D+v3K9lDOTln1qYVye0MMRxLMBf40wbv0ydZAMcJA476exGl0e6a6AOhuKEm+F1Nh9yE8pEfc71o= 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=MwgbOqaz; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=MwgbOqaz; arc=fail smtp.client-ip=40.107.159.54 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="MwgbOqaz"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="MwgbOqaz" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=FQ5t1hM1v21egRVt38Y1Pcdf6bhZVnKpKzlR0gsrPKiXdOORacsjY5X/GjSv9PIbQj3pRvKWmhUUcqf8u1fD55EUWOT1oQd28fm9/eUp3CKmI4TmonXauQ+cH0OfXazFoPSYI7DBUwq/NXCnP384AYwd72NB986VTEuGVFfB1bCsA1t6/6rNayyKcsokPcZMU4m2MSzIZEmyaE5tT0AuED9mj/IDp/GzqdfeZcRspA79boXuUTZhFVTyyrdn5FvPE/vuAP1ELyT7p54B4H18B+2G5PxagkdYtZfUDKEAjbsqO+ofn8yDNc3RTkTYfPk5du9l8c2Ybe6fih7DdW1vaQ== 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=v+WQyoWWdQttPzpCRIvKIQtoSapG/JTyy56WIxHkkJg=; b=iRvWb3SF1yj0QK1/qT5BXo9XM5aQSQQP76OnB9XgTBy3fkeMlZe+KrdjCi3yX3JE2dPiFjrDzLtWZrhyBYTa/bh8aWEOxP1C+yOiX1U0IgunuAzvHhiAzUjXo7E6MpbUgLk8bSMYNnXaWX0iV+MJS1xfVYoXf7+kvCaLwLb2rCR+nx3NV7yMZ0V7EN2v5pssUjq5W3X0sZpmDN3cAHBa7qaxrXjheKLQHgeSZb5PwMNN1EcLC04GXyBrRrz2NbfWhYtFrqVA038SyZJsmvBjkyuE0SVcotg6IdvzoAbdgupRcZ0Gg3JCNFMT9j+/jDAGWM6V++o4hyIuu7HJNF3wsA== 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=v+WQyoWWdQttPzpCRIvKIQtoSapG/JTyy56WIxHkkJg=; b=MwgbOqazs+xOxPYD1Us0giLa1s/916tCgrWU2UalajYqp4dKQFgetcqwRKyz3rOn8L1G7ebhENj8SV8tDUdYacqHSpvaP+XtIruFZAJ1Pze3qBnA7+1mkOMunojp9I3KKUvgTPIzbjWIj5C3fykMHcesiGuzccP0+3mgd+LrqjU= Received: from AM0PR02CA0129.eurprd02.prod.outlook.com (2603:10a6:20b:28c::26) by DU0PR08MB9677.eurprd08.prod.outlook.com (2603:10a6:10:447::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13; Tue, 14 Oct 2025 09:44:56 +0000 Received: from AM4PEPF00027A66.eurprd04.prod.outlook.com (2603:10a6:20b:28c:cafe::1e) by AM0PR02CA0129.outlook.office365.com (2603:10a6:20b:28c::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9203.13 via Frontend Transport; Tue, 14 Oct 2025 09:44:56 +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.9228.7 via Frontend Transport; Tue, 14 Oct 2025 09:44:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FpIxc+6zCS/k4/eKDSke0pgolGMJJefQ9WXW5wmQdUT5VgJ00yCLr074Viavnlrjgu5iUQUzyRutn6A1aWS55HlQxnIGXpv+yXosQFYHtnkXGad/3h1BjWnpXkERgtF7P57cUbhQyNSHW+Ond5HbvkzmeTpgni1S3GRHBQIft9rsaKQcbNBi0F34ICwlOEtMJCSAf7OXJ6nM7MhlAKETJSocywW412J1c5fK9eoO646a/ZZj0VlZWiEDU+4Vs603Lg113jBVZSpdA91ugz/LhwdpFIgKtOc/J1156OFSUZJYJrvgYnPmKCGASgRkGbFM96Row/KXRtdL9dSjXf8xpQ== 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=v+WQyoWWdQttPzpCRIvKIQtoSapG/JTyy56WIxHkkJg=; b=NmXXnvEzTRRVqd++pGjMpICDrPEAIw2/NM7qHx58OKg+JcyBJnZQOIerDiWquxPpAbqYm6G0oL0zp4cMle68QuEWKB0OSyevfGWMIkWm81/umFVmKifo9V0FXa0njKNXilI93py7HGwpjx85CKJwDlECDS+mOol8+9tST2KlhHl4y9xAlJwQLchl9gmlRP9iKJRRcREz+7sSQeVzJS7il+tCabSCgzR8KRChASvWgBw+Vk8ttqvtFxPoIdCNVcl+tMChqchs7ykgbu4IdjDYp3P4Oyiwg1BWhsp4R3qdilzbdjzQgK84Nm7U+vFKhy8X5Ntpac1I5BzVULHU8Ves8w== 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=v+WQyoWWdQttPzpCRIvKIQtoSapG/JTyy56WIxHkkJg=; b=MwgbOqazs+xOxPYD1Us0giLa1s/916tCgrWU2UalajYqp4dKQFgetcqwRKyz3rOn8L1G7ebhENj8SV8tDUdYacqHSpvaP+XtIruFZAJ1Pze3qBnA7+1mkOMunojp9I3KKUvgTPIzbjWIj5C3fykMHcesiGuzccP0+3mgd+LrqjU= 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 AS2PR08MB8286.eurprd08.prod.outlook.com (2603:10a6:20b:555::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.13; Tue, 14 Oct 2025 09:44:23 +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.9203.009; Tue, 14 Oct 2025 09:44:23 +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 v1 10/10] drm/panthor: Add support for Mali-G1 GPUs Date: Tue, 14 Oct 2025 10:43:37 +0100 Message-ID: <20251014094337.1009601-11-karunika.choo@arm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251014094337.1009601-1-karunika.choo@arm.com> References: <20251014094337.1009601-1-karunika.choo@arm.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PR3P189CA0069.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::14) To VI0PR08MB11200.eurprd08.prod.outlook.com (2603:10a6:800:257::18) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI0PR08MB11200:EE_|AS2PR08MB8286:EE_|AM4PEPF00027A66:EE_|DU0PR08MB9677:EE_ X-MS-Office365-Filtering-Correlation-Id: 226ba0ba-303e-48cd-2ea5-08de0b065530 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?J3dx1CeFvrMZ1UZQK8mHa8y5zWj04JlcLpt6yjUVMm6Chn+H3xDK1et8rtmz?= =?us-ascii?Q?/INujQFaaiiY9kGDeIBRboIFcw5GHmIBs/j/4GfORyWaWYcCuSKrTBuildTU?= =?us-ascii?Q?KbyjHNZrLTCKVUpSk+k0NYHLh9ZVYUnowRp5GAzXSYVcDeYrG2csMfHn67LU?= =?us-ascii?Q?LEmXVzoG0KSqHaDc9vgIeJr7MN0IloVhohezLi/bJrxVlkmaLVTL4jVOJ4NW?= =?us-ascii?Q?71iZ2xFBgV+FTY3ZWQh91rBiKUgHq+y94qIjL2AzwRC2h/mN1zqYO2uRRF1L?= =?us-ascii?Q?lyeJzGH7lO1HpRToSNS58Niyyj4csyX4LiCRpkQNTDBTjCuD6ohfGxc0UdXQ?= =?us-ascii?Q?9orpLE0/zzuDuQy5mgQ5yjvINXaK9a3ZU7ip5GGeHh9sEjAzQ2GX4orJ4zTd?= =?us-ascii?Q?ZAJdRo/Od4Ych/d1kS3/I/GLYpxoUOLGfu7QY5GAXnzUWt74gr/DcUeREtCS?= =?us-ascii?Q?OrQlZzg/sWq65R/D67GWUUIzRGmvVUcEwjbH0MpkR+FAOc7YcEdsAcEv2GzA?= =?us-ascii?Q?mbHZrpWMcbEcs4E0Zyl40aKJsaFWOn0rb5heg3AUrngVTTM2jNfYK2uyTSy5?= =?us-ascii?Q?fUbADjmu2YtvwG0nitGs+DF7njA2Fuz8gGnpewaH/Xzpl3xpBANC3mEu46J/?= =?us-ascii?Q?2aJ5jUa8caljRpxfph5rABj7mtUHtn66K8BYuYXbBExtNoiU5nFRxou12kk3?= =?us-ascii?Q?VZbEjFLL2vFasHZvqwj25TsA+oq4bm9NRFx24cjE61Z+I1whaOasfiz58//V?= =?us-ascii?Q?jZBgDiiZrKZfEyNwB/Oqtq5EOD4VTrk3pA3zM4z2r9YC/eV9iPGEFSztDV4S?= =?us-ascii?Q?mBV9i7edAyFiWGFso9PjfgVxvZSeLGoNkJIJIfjf6vI/9KWvrn5+Ejj/UtLM?= =?us-ascii?Q?0q11e21E+ZHgrudgf53LfvbgoMnvh09OBhiqsympC6YnBJ3CND5xagzpDFh0?= =?us-ascii?Q?1DJBOMwX3g8m/6oIMxqyVWkWCvO8X7z/vUrqsrY0Q0pB9Z0IisCAFR15R5Jj?= =?us-ascii?Q?iRKN8uolW0z+TMu1bkBc2zgBH3t0vcObPV1/lm7V9EIJfy0QaIvro40Ls5ch?= =?us-ascii?Q?SgiRQi/R9ul7JmXXqPRjDN7gQn+B9NSyPgDKhuMukSXk6h6qL61P6wJOJzs9?= =?us-ascii?Q?wi/8K50RRs7lAVFbQXc/stTgKdUmJx52D2hM+mpBg0ta4L+rWXF2HtfHnXDS?= =?us-ascii?Q?AH2/QdX/Pywks/fHSGonxgMB6TmURLW7Tg4dypdF+M+FIybFRj8/pS+RPjEK?= =?us-ascii?Q?sEVS1rttEobkBObb0XlKkZx1K1D/IURpMUMoHK334S2wyRBY7jQnZbb7Ras1?= =?us-ascii?Q?X05tGrwt44/RxkNUIYmABgs3KYwjBONuN2W6PZ+Q+hE1n+t3Z1+V/V6Ma/Fv?= =?us-ascii?Q?33RKmDtltwbfNRnqdvTimqi/hGeLHwBJqjgo3L2CU/+MZ01QGQpbGGbK4GBT?= =?us-ascii?Q?wQ3YBmOD+k7AILkefMy65UKah+D8/+KV?= 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: AS2PR08MB8286 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00027A66.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 12a874c2-3289-4624-3487-08de0b0641a9 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|35042699022|14060799003|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?xvP6NmiwptmF6GVw8XzyW8/3gofTFXodq9R4pXCS4abmTmeI3jYQRd/m/nsZ?= =?us-ascii?Q?Van5WJauMiYlBwbeSdOJhEsaGcI0zl0Of7ZK4ZQTIG7zrmSJPIKbzqWH7O25?= =?us-ascii?Q?qh3UUUpOUHrp96AFB387gs+orfvNpzKveOyugDc7M9JJ3uiSd0gR5qpuR/4t?= =?us-ascii?Q?iZGpJo7yIZdYc5axZ/6k6CFBGTY3biDD38jIifGprhtvXKSvmqEx9P1UnMnq?= =?us-ascii?Q?eJPjVm/s7ojX8aY8N1JnoIu0TVW9zo2HtH82T2gHkdOt+CmaN5wKnc13XaHi?= =?us-ascii?Q?O2AoY7d3JdUYyedE/ZVqmxbihoevUijVH2wwIt3xvfE38EV6vkTF6hNasXkD?= =?us-ascii?Q?eOsUgje74VzFF4qQS189LFSI+P7GbYyX9oMwbsFsx7sjqQk+/E1k638b1uDB?= =?us-ascii?Q?pG2eacjGQWbbiLBQqzMVs+XEAzbKwdqUdDFZ9fM+hqDEC5ZH10Hfe+z100TZ?= =?us-ascii?Q?RbCi89UJ0UoHGyhSw0uy9MsQRGFuqKfwzsUXWZNFAOGax8ZDSFTi3AZkTssa?= =?us-ascii?Q?dJ2Ap8Ldl4LWHaVLFqSyf5gYIPoqfFTKpFk/fnfTNE+XNCPE2cWaNTGbZ3PA?= =?us-ascii?Q?/ZlAupLixLUDOuMdbP9iCHIbd3hBWvQoc5paYnqI/l55vNpOwPOw6FQuF3Cd?= =?us-ascii?Q?1wixwY0R7PIv5AHj9/IWJ/KpwEk4MlDr38YWYyKuvOdNdf4pbEivbZfju9xj?= =?us-ascii?Q?n1hjhpz1AGY5UsBV5tlQGfrdCw5ZWOGj9hV0V+BxOvOBlFNGVnxu6KmzB9te?= =?us-ascii?Q?wdyDQ+IBA+4KHYHVaFa5EVZM4yYOKulKlC+VU70OMbkSXLOzxZzrvKhVoIbz?= =?us-ascii?Q?qEhiu2DWm9UdxA7QLP4ZvjI1k+kknOYjrqt3GwJXnQ9BBXeHt22L8vB1CPAn?= =?us-ascii?Q?45xZ5+MStO+JS708tBfqxd9wwY9l1EKlaYge9tkFSmhaB/WhY+dSHkzyz25f?= =?us-ascii?Q?yMp9BHHDBAzMEKfOWg1s1YKMnwnUgIzi8iXh4YPPTsb3G91T37dMZUEBoPjN?= =?us-ascii?Q?xYhis8JImwgMhGhnnJRnIEjYToND8Ns4hBxQKiNFySAFm+FiVcoAjUtJkb8l?= =?us-ascii?Q?VcHiVuHmz9YKRc63ZKmyOtjW4bIRqsmW7CDWt/bcr+ci/PCMoyCL+Hu8STD5?= =?us-ascii?Q?7jQL+GW1GxzZL2wBeM456EKhPPdM7pDv789gdGHvDDWXaGBinJcQu4MX5qPT?= =?us-ascii?Q?S/Sbw78x9/sMMn90S3WObFyraKd5Z93U/JS0Qp8gRIWajLV9OMgj4kGSJ+Zc?= =?us-ascii?Q?/ewipp9U8jT7/x2RdBTLpNoFXol9cv/TpjoBaYgzX5g/BYsySw/MKfrA9B+p?= =?us-ascii?Q?jFd8xe59eAIwYU/oPq5J1m6H2secWb5ecrfC0UD6nhR7xa2neYFiJg87SsF8?= =?us-ascii?Q?DfCreMeGEi8dBIhFBfHEcJREiP+Rz4KvkW5NMCEC4xb4nAV4s2LdLg+69d7h?= =?us-ascii?Q?GqSudvlotrCm60FYKjL7Tu9Xu9m24n1okbbVRUpbYBxqVgWx2YsQjWy/Dis8?= =?us-ascii?Q?igKbjXKCtDFDLOkePPy5bBr5WfqgksVR4p/txUQf/lV7FkPJfpvxsQPMeYi+?= =?us-ascii?Q?Za0eWiLlgJERb/rCgzA=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)(14060799003)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2025 09:44:55.9261 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 226ba0ba-303e-48cd-2ea5-08de0b065530 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: DU0PR08MB9677 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. Signed-off-by: Karunika Choo --- drivers/gpu/drm/panthor/panthor_fw.c | 1 + drivers/gpu/drm/panthor/panthor_hw.c | 30 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor= /panthor_fw.c index c1b2fba311d8..dd5ffbea8cd8 100644 --- a/drivers/gpu/drm/panthor/panthor_fw.c +++ b/drivers/gpu/drm/panthor/panthor_fw.c @@ -1493,3 +1493,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 77fd2c56e69f..7a47414d246e 100644 --- a/drivers/gpu/drm/panthor/panthor_hw.c +++ b/drivers/gpu/drm/panthor/panthor_hw.c @@ -4,6 +4,7 @@ #include "panthor_device.h" #include "panthor_gpu.h" #include "panthor_hw.h" +#include "panthor_pwr.h" #include "panthor_regs.h" =20 #define GPU_PROD_ID_MAKE(arch_major, prod_major) \ @@ -29,12 +30,28 @@ static struct panthor_hw panthor_hw_arch_v10 =3D { }, }; =20 +static struct panthor_hw panthor_hw_arch_v14 =3D { + .features =3D { + BIT(PANTHOR_HW_FEATURE_PWR_CONTROL) + }, + .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, + }, }; =20 static char *get_gpu_model_name(struct panthor_device *ptdev) @@ -82,6 +99,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"; } =20 return "(Unknown Mali GPU)"; @@ -114,6 +137,13 @@ static void panthor_gpu_info_init(struct panthor_devic= e *ptdev) =20 /* Introduced in arch 11.x */ ptdev->gpu_info.gpu_features =3D gpu_read64(ptdev, GPU_FEATURES); + + /* Introduced in arch 14.x */ + if (panthor_hw_has_feature(ptdev, PANTHOR_HW_FEATURE_PWR_CONTROL)) { + 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); + } } =20 static void panthor_hw_info_init(struct panthor_device *ptdev) --=20 2.49.0