From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 D01C430EF75; Fri, 24 Apr 2026 23:39:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777073999; cv=pass; b=AcaeYL0pOAmH5lYwC/W+zLFvKE8pPGQcdRaJ0lGirBcEmt0PKR/KzMLDdY/2+l9Cd536ARgfRs+kF/TxMRigFkuG+y4EBZk1W2U7WBDOyYmqsqCgXV1tHAXc8vu+vVX++1198QMpqWP+xJVX03fSGl+YN5fqwb/vWVXCNUK/G+A= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777073999; c=relaxed/simple; bh=TJYiaR6HkYI0Jih2JmM5qi5Sd5bcOQQAYqWwO1EUFlU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z/FlrtboH/FIIdQXqOJY6ih6hQQSa5oKH4WZwQIbqs6JTnUi2nom7TAXE4y3645lwZu+NI03V1+vsE+sSPTLtMLLLg6+j72teUwkrgbaVwzub5bhYJu4eZQPnk9JdLhVlZhzeuW991YNdi+AWoPK4MSGKKorAjqRjB7CDMObTT8= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=deborah.brouwer@collabora.com header.b=QcUJ/NRy; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=deborah.brouwer@collabora.com header.b="QcUJ/NRy" ARC-Seal: i=1; a=rsa-sha256; t=1777073959; cv=none; d=zohomail.com; s=zohoarc; b=FPJTs+fiqHXOZ2Op8xT9dEznPDwqUYWQX4QfK17HJsL0GT6ATcTb/BYuUh3TFse8tsS3B4xcAJIE6KErZfAYHMSCstq5NSK3maBkSMLscdbB/uAxghXqc8p0gkrzOa7ROs6WozgxBGJitvNNnw+i8VAzCXosae1l8XWolbClWjY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777073959; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=mJKP1SVgsbLnTI6G/aFIyYqGXRmudzvv7JSn+nXBGDU=; b=Xam2FAj3+bFUW11jv14dYTi6NWcOtYApVxxpzmP/df8LFfVC9XYsZVhfV9Np5qFry9amTIvVWRs7AEQwSvISz3vbseWB5GmNkaN/EDLokWSeFoV8D1/Z0gEzV7uBkHOopz6m3hbvgS+4bEMRv3z+8Icly2fyC9Rgcb0j6noOjCg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=deborah.brouwer@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1777073959; s=zohomail; d=collabora.com; i=deborah.brouwer@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=mJKP1SVgsbLnTI6G/aFIyYqGXRmudzvv7JSn+nXBGDU=; b=QcUJ/NRyKDP8sOm04JyVq1dm16DwcTUqe/hx6tcKKSYk6Rd8bJ43hTFjsKicPFBj I2aVnIizIKAE8Z03EOO+K5rQah4Qe5jbf/j0Dpiaa/xi3bLgnjKyG6uJRK9hlByOzav n0i3SaLJDfdenBd6sXpYZ6TA8c0zzBZ5qLjj6gsM= Received: by mx.zohomail.com with SMTPS id 1777073958375783.2625500612932; Fri, 24 Apr 2026 16:39:18 -0700 (PDT) From: Deborah Brouwer Date: Fri, 24 Apr 2026 16:38:57 -0700 Subject: [PATCH v4 03/20] drm/tyr: move clock cleanup into Clocks Drop impl Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260424-b4-fw-boot-v4-v4-3-a5d91050789d@collabora.com> References: <20260424-b4-fw-boot-v4-v4-0-a5d91050789d@collabora.com> In-Reply-To: <20260424-b4-fw-boot-v4-v4-0-a5d91050789d@collabora.com> To: Daniel Almeida , Alice Ryhl , Danilo Krummrich , David Airlie , Simona Vetter , Benno Lossin , Gary Guo , Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Trevor Gross , FUJITA Tomonori , Frederic Weisbecker , Thomas Gleixner , Anna-Maria Behnsen , John Stultz , Stephen Boyd Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, boris.brezillon@collabora.com, beata.michalska@arm.com, lyude@redhat.com, acourbot@nvidia.com, work@onurozkan.dev, alvin.sun@linux.dev, Deborah Brouwer X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2601; i=deborah.brouwer@collabora.com; h=from:subject:message-id; bh=TJYiaR6HkYI0Jih2JmM5qi5Sd5bcOQQAYqWwO1EUFlU=; b=owGbwMvMwCVWuULzOU9c7WvG02pJDJmv/ytoNs2uDdlk+Wl374H+zGdb5whvMbu098iMsxvWv 7jGF21W1lHKwiDGxSArpshy1t6oR7zqvZHu/P/NMHNYmUCGMHBxCsBEFgsy/HcvUqlIyLu/tJot +umZ8BfJvHNfR29IWmM6fbWeieSMd3kM/5QtqjfKLlMsm3zrteveqh33cs0bAhwC5uS/uPND8OE fbnYA X-Developer-Key: i=deborah.brouwer@collabora.com; a=openpgp; fpr=CD3F328C177AEF322D9FFF8379A829E70C5E7DEB Currently Tyr disables its clocks from TyrDrmDeviceData::drop(), which causes them to be shut down before any other fields in TyrDrmDeviceData are dropped. This prevents us from using the clocks when dropping the other fields in TyrDrmDeviceData. In order to better control when the clocks are dropped, move this cleanup logic into a Drop implementation on the Clocks struct itself. Since it serves no further purpose, remove the PinnedDrop implementation for TyrDrmDeviceData. Also, while here, remove the #[pin_data] annotation from both the struct Clocks and struct Regulators since neither of these structs need this macro to create structurally pinned fields. Reviewed-by: Boris Brezillon Reviewed-by: Daniel Almeida Reviewed-by: Alice Ryhl Signed-off-by: Deborah Brouwer --- drivers/gpu/drm/tyr/driver.rs | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/tyr/driver.rs b/drivers/gpu/drm/tyr/driver.rs index 7a27207e52f7..3057f3af10e3 100644 --- a/drivers/gpu/drm/tyr/driver.rs +++ b/drivers/gpu/drm/tyr/driver.rs @@ -54,7 +54,7 @@ #[pin_data(PinnedDrop)] pub(crate) struct TyrPlatformDriverData; -#[pin_data(PinnedDrop)] +#[pin_data] pub(crate) struct TyrDrmDeviceData { pub(crate) pdev: ARef, @@ -169,17 +169,6 @@ impl PinnedDrop for TyrPlatformDriverData { fn drop(self: Pin<&mut Self>) {} } -#[pinned_drop] -impl PinnedDrop for TyrDrmDeviceData { - fn drop(self: Pin<&mut Self>) { - // TODO: the type-state pattern for Clks will fix this. - let clks = self.clks.lock(); - clks.core.disable_unprepare(); - clks.stacks.disable_unprepare(); - clks.coregroup.disable_unprepare(); - } -} - // We need to retain the name "panthor" to achieve drop-in compatibility with // the C driver in the userspace stack. const INFO: drm::DriverInfo = drm::DriverInfo { @@ -203,14 +192,20 @@ impl drm::Driver for TyrDrmDriver { } } -#[pin_data] struct Clocks { core: Clk, stacks: OptionalClk, coregroup: OptionalClk, } -#[pin_data] +impl Drop for Clocks { + fn drop(&mut self) { + self.core.disable_unprepare(); + self.stacks.disable_unprepare(); + self.coregroup.disable_unprepare(); + } +} + struct Regulators { _mali: Regulator, _sram: Regulator, -- 2.53.0