From nobody Wed Apr 15 12:59:46 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C810317165 for ; Wed, 4 Mar 2026 13:48:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772632132; cv=none; b=iuBdbX79rXnxhILUP8azM13aY5mMjmEk09DlKG6aWIPxW0ANmvqbn8O1lskWBH/Et56OxNHPbRaK2lafqDozQNw2HY3B1cHHfCxGMl8IpV/flf5jFcTqg2f6OO8qMJ9V7ZBSnrbCA/1ru32rk3+xCyReKVDucQ4OqyQwBVpn5Js= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772632132; c=relaxed/simple; bh=ux98bloS626kMSKVxtpkB3CLg1ruIkfxSp1Jl98N3pg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=vGkH88eEmzQP6xxXfR2v5j+0zwjjLazrYSCyaQgJ7fI+naV2YbaTBeOagISNuSjGYmf5Qlq9yphsvDIQZGes8h0hOfxsHpEQ855JbMfKo9WH/PsVqvLMr9QpbYWkYz7FOUBj3OX1NVoVgZdoTa+WadavTeIsMBt27J/Kz5sv9TI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=I52LbPs9; arc=none smtp.client-ip=209.85.221.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="I52LbPs9" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-439c56e822eso1167958f8f.2 for ; Wed, 04 Mar 2026 05:48:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772632129; x=1773236929; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QTTqK7TuaDqF+tP6hPwnkWAR5TFFHKJ4XYpEBPBHnmY=; b=I52LbPs9o/nLtRidKot+WLTW/QJMTzsGIjX1Zf2NF/HOpwsZDoy7hImJaGRwRJLAl9 ZqIkPztioDh134FdBw7a0PECk3MQuSTwrdkIaWfHt95VbY9ONnMBKS6xoug4QaVsp8I5 kfKyRHHljvUruYkpFMb9FNs+FEErnpq59kX90mddSsA2Pg0zyvLVGIxw3nsiK+IXS92Z 47NxXc/S0avglvfgoTxNcB/mO61oeu9PzRKk8/6dOaDiuIHFn1A6s6jKUpTAQ4dE+pHY kyX5Z6k2VjvTODLfIdVfgCCIDtffTjE/egJNapXrb92sqcx/Xp9c6J56dp02fY83gzE8 Ydvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772632129; x=1773236929; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QTTqK7TuaDqF+tP6hPwnkWAR5TFFHKJ4XYpEBPBHnmY=; b=hvxgfL6nc9FVno5/0qmSiDVMqB4xD14hVf0sSnIYHjCf1aJJn8IRQ4ko7dZpfLd3Jz MAfT+zRmecpvIBA5fptBBQohMSkt07wH9VfPjxNo9IHXa+6GqndZIRCy1yEuO/RzVJ3K 9LtNAYxZkd9iV7/HWN1VaAmkPhRakKu5TDqTogKfH30ctB+wxOayvJgNkxGZ8jCNTGTk 0gPPAAUXDXxjmGMfDTysmC7kBlhDMLIRzdwCeN6QDNU/uNQtHXJ4bRHT8ZPuwBeAjw6p sKwDu88jY+Okwp9TUItDM8041pi5KDNYwgN7BX8zXjYlXSHvurAMmG/0g6IQcOBK+czh 45pA== X-Forwarded-Encrypted: i=1; AJvYcCWzyBz1kVoJieynQDDGWPhTbfK8ycivpF1I8AqlK+T1VMDlqvYjG8dROAXqJ1lye5+pBce5u0ADdZv6n54=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0S5SgYBZdGyBw3HkBmtfm4jUxEHgVjB8mWyHElRdtmNTUwmVL KuVsLK0cwvpJzLJCvlt2Z8mPavKy3Edj7F1oxIZ8acp1uqB0frgvmKwU X-Gm-Gg: ATEYQzzl3QSho0nNtSdbsWVW5ovS2oVcgsGqkbjZ+PWjbLPwDa9Mfd53e4i552BVZi5 XKedBu0EseN/8bjcJaZfk7Ad42tfM1k0WbubUZ5nH30Enw3EqQonqqxclLiX6YvzKVjIWCXJC6s KyBV4YuNGOx0j+Muu2Q1XIRGz88a3B0B6VONs+trABIzLgaqgVMCwzmz49/Z8E2VjWOZqppO5dE 2i9gdJT2nJSRB0eKWq9Bn6TuqAp0WbkHI/YvI2lQQrTkDIEmuP5W0LQavD03lNIHL/phDF8JC3z bKWXgd9ZtxJZOE19UVrSOgwnRvfG2r5rc80bO5ckewKx1g7gbAchd0MjMZJnCLjm3gZHTtR/ypN i5GoUwW8XI84jXgaQ7bGfnePVC+k3IlfD8vcVzrAglzpJByyjeks/lkZ8NTENhBT1BhwSkKVaS/ lmhXW6u1ZUA+F/ba2ZRzswGnzR41U5f/Q= X-Received: by 2002:a05:6000:2891:b0:439:b3d2:3766 with SMTP id ffacd0b85a97d-439c7fae450mr3798988f8f.19.1772632129397; Wed, 04 Mar 2026 05:48:49 -0800 (PST) Received: from biju.lan ([2a00:23c4:a758:8a01:de3f:f927:40ff:12a6]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439c65e0b23sm7105229f8f.32.2026.03.04.05.48.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 05:48:49 -0800 (PST) From: Biju X-Google-Original-From: Biju To: Boris Brezillon , Rob Herring , Steven Price , =?UTF-8?q?Adri=C3=A1n=20Larumbe?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Biju Das , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven , Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH 3/4] drm/panfrost: Add bus_ace optional clock support for RZ/G2L Date: Wed, 4 Mar 2026 13:48:38 +0000 Message-ID: <20260304134845.267030-4-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260304134845.267030-1-biju.das.jz@bp.renesas.com> References: <20260304134845.267030-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Biju Das On RZ/G2L SoCs, the GPU MMU requires a bus_ace clock to operate correctly. Without it, unbind/bind cycles leave the GPU non-operational, manifesting as an AS_ACTIVE bit stuck and a soft reset timeout falling back to hard reset. Add bus_ace_clock as an optional clock, wiring it into init/fini, and the runtime suspend/resume paths alongside the existing optional bus_clock. Signed-off-by: Biju Das Reviewed-by: Steven Price --- drivers/gpu/drm/panfrost/panfrost_device.c | 24 ++++++++++++++++++++++ drivers/gpu/drm/panfrost/panfrost_device.h | 1 + 2 files changed, 25 insertions(+) diff --git a/drivers/gpu/drm/panfrost/panfrost_device.c b/drivers/gpu/drm/p= anfrost/panfrost_device.c index 01e702a0b2f0..87dae0ed748a 100644 --- a/drivers/gpu/drm/panfrost/panfrost_device.c +++ b/drivers/gpu/drm/panfrost/panfrost_device.c @@ -70,8 +70,23 @@ static int panfrost_clk_init(struct panfrost_device *pfd= ev) goto disable_clock; } =20 + pfdev->bus_ace_clock =3D devm_clk_get_optional(pfdev->base.dev, "bus_ace"= ); + if (IS_ERR(pfdev->bus_ace_clock)) { + err =3D PTR_ERR(pfdev->bus_ace_clock); + dev_err(pfdev->base.dev, "get bus_ace_clock failed %ld\n", + PTR_ERR(pfdev->bus_ace_clock)); + err =3D PTR_ERR(pfdev->bus_ace_clock); + goto disable_bus_clock; + } + + err =3D clk_prepare_enable(pfdev->bus_ace_clock); + if (err) + goto disable_bus_clock; + return 0; =20 +disable_bus_clock: + clk_disable_unprepare(pfdev->bus_clock); disable_clock: clk_disable_unprepare(pfdev->clock); =20 @@ -80,6 +95,7 @@ static int panfrost_clk_init(struct panfrost_device *pfde= v) =20 static void panfrost_clk_fini(struct panfrost_device *pfdev) { + clk_disable_unprepare(pfdev->bus_ace_clock); clk_disable_unprepare(pfdev->bus_clock); clk_disable_unprepare(pfdev->clock); } @@ -432,6 +448,10 @@ static int panfrost_device_runtime_resume(struct devic= e *dev) ret =3D clk_enable(pfdev->bus_clock); if (ret) goto err_bus_clk; + + ret =3D clk_enable(pfdev->bus_ace_clock); + if (ret) + goto err_bus_ace_clk; } =20 panfrost_device_reset(pfdev, true); @@ -439,6 +459,9 @@ static int panfrost_device_runtime_resume(struct device= *dev) =20 return 0; =20 +err_bus_ace_clk: + if (pfdev->comp->pm_features & BIT(GPU_PM_RT)) + clk_disable(pfdev->bus_clock); err_bus_clk: if (pfdev->comp->pm_features & BIT(GPU_PM_RT)) clk_disable(pfdev->clock); @@ -462,6 +485,7 @@ static int panfrost_device_runtime_suspend(struct devic= e *dev) panfrost_gpu_power_off(pfdev); =20 if (pfdev->comp->pm_features & BIT(GPU_PM_RT)) { + clk_disable(pfdev->bus_ace_clock); clk_disable(pfdev->bus_clock); clk_disable(pfdev->clock); reset_control_assert(pfdev->rstc); diff --git a/drivers/gpu/drm/panfrost/panfrost_device.h b/drivers/gpu/drm/p= anfrost/panfrost_device.h index 0f3992412205..ec55c136b1b6 100644 --- a/drivers/gpu/drm/panfrost/panfrost_device.h +++ b/drivers/gpu/drm/panfrost/panfrost_device.h @@ -136,6 +136,7 @@ struct panfrost_device { void __iomem *iomem; struct clk *clock; struct clk *bus_clock; + struct clk *bus_ace_clock; struct regulator_bulk_data *regulators; struct reset_control *rstc; /* pm_domains for devices with more than one. */ --=20 2.43.0