From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 801C82D0C62 for ; Mon, 16 Feb 2026 15:20:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771255244; cv=none; b=Clmi/gFSZiwfCTdJRcJduL6sCIpb5fLXBJILBL2FqAsVaJ7uiiLCUoPtoa4aTjPV0YQ9E9W6STsbpVg+QEOYE30LNuhb4j2jZ7HunkmhvNW2+QYnf5MkEpMn2jrAN0zal/JKvB7ULmhRhoBBMp4C2r15IsducQMeFy2YevhP2bU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771255244; c=relaxed/simple; bh=06vniYBOknH/3BiKkfLz6y1nmwpDoLkVZQ+2eLaMOHk=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=ReBEBWnaVu06OVEFhZxw2buiruq7ArJPXnRWcqxqQzuhqoNR7KRFsVxPOoj1Pt0F3ZR8BaGebuo3lxLKVOs52UAaT5c1JrgM3gX8Jat6KYSZJAnNi8thuYkoyznJwujq96SpUqi1q+Z7e8psdhkjQNhbuww7HQvWBRCjIW4QF94= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 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 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 90E5F1570; Mon, 16 Feb 2026 07:20:35 -0800 (PST) Received: from [10.57.56.155] (unknown [10.57.56.155]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9EDB93F632; Mon, 16 Feb 2026 07:20:39 -0800 (PST) Message-ID: Date: Mon, 16 Feb 2026 15:20:37 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 2/2] drm/panthor: treat sram as mandatory except mt8196 To: =?UTF-8?Q?Onur_=C3=96zkan?= , Boris Brezillon Cc: Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Matthias Brugger , AngeloGioacchino Del Regno , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org References: <20260215100302.136719-1-work@onurozkan.dev> <20260215100302.136719-2-work@onurozkan.dev> <20260216103743.626c71e3@fedora> <20260216174107.1b9c03a4@nimda> From: Steven Price Content-Language: en-GB In-Reply-To: <20260216174107.1b9c03a4@nimda> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 16/02/2026 14:41, Onur Özkan wrote: > On Mon, 16 Feb 2026 10:37:43 +0100 > Boris Brezillon wrote: > >> On Sun, 15 Feb 2026 13:02:51 +0300 >> Onur Özkan wrote: >> >>> If sram-supply is missing, Panthor falls back to a >>> dummy regulator with a warning. This implicit behavior >>> hides missing DT wiring behind regulator core fallback. >>> >>> Make SRAM handling explicit: require sram-supply for all >>> Panthor compatibles except mt8196-mali where GPU supplies >>> are intentionally managed outside Panthor and DT does not >>> model sram-supply for that compatible. >>> >>> This keeps DT power modeling explicit and avoids relying on >>> dummy-regulator fallback. >>> >>> Link: https://lore.kernel.org/all/20260213155937.6af75786@nimda/ >>> Signed-off-by: Onur Özkan >>> --- >>> drivers/gpu/drm/panthor/panthor_devfreq.c | 13 +++++++++---- >>> 1 file changed, 9 insertions(+), 4 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/panthor/panthor_devfreq.c >>> b/drivers/gpu/drm/panthor/panthor_devfreq.c index >>> 2249b41ca4af..5f6075f18fe3 100644 --- >>> a/drivers/gpu/drm/panthor/panthor_devfreq.c +++ >>> b/drivers/gpu/drm/panthor/panthor_devfreq.c @@ -206,12 +206,17 @@ >>> int panthor_devfreq_init(struct panthor_device *ptdev) >>> * But without knowing if it's beneficial or not (in term >>> of power >>> * consumption), or how much it slows down the >>> suspend/resume steps, >>> * let's just keep regulators enabled for the device >>> lifetime. >>> + * >>> + * Treat sram-supply as mandatory except for mt8196-mali. >>> It manages >>> + * SRAM outside Panthor so this driver must not require >>> direct control >>> + * over it. >>> */ >>> - ret = devm_regulator_get_enable_optional(dev, "sram"); >>> - if (ret && ret != -ENODEV) { >>> - if (ret != -EPROBE_DEFER) >>> + if (!of_device_is_compatible(dev->of_node, >>> "mediatek,mt8196-mali")) { >> >> Rather than checking for specific compats here, let's go for >> a dont_need_sram_supply bool in panthor_soc_data. >> > > Makes sense. > >>> + ret = devm_regulator_get_enable_optional(dev, >>> "sram"); >> >> If we assume SRAM supply is mandatory, should this be >> devm_regulator_get_enable() instead? >> > > That was the first thing I did but when I tested it, it didn't work as > expected because devm_regulator_get_enable() fell back to the dummy > regulator without returning an error. My understanding was that devm_regulator_get_enable() would output a warning in that case. I'm not sure it really makes sense to deliberately fail the probe just because the regulator isn't there: we know in practice it often works and it can be useful for bring-up purposes. The issue was that we don't want DTs submitted without the "sram" regulator and the dt-check hasn't been sufficient in the past to catch such errors. So a dmesg warning seems (to me) like the right sort of balance - there's obviously something to fix, but it doesn't block bring-up (unless of course the hardware actually requires it of course). I also note that you've lost the -EPROBE_DEFER check, meaning that the log message you've added will spam the logs if a defer happens. My reading for these threads is that we need: * A new field in panthor_soc_data for the mt8196 case. * To check for new field, and if it's not set then use devm_regulator_get_enable() so that it generates a warning message if the regulator isn't present. Otherwise we skip the call. So no need for panthor itself to log any messages, and we just return any errors from devm_regulator_get_enable(). A missing regulator will generate a warning but no error. What am I missing? Thanks, Steve > Regards, > Onur > >>> + if (ret) { >>> DRM_DEV_ERROR(dev, "Couldn't >>> retrieve/enable sram supply\n"); >>> - return ret; >>> + return ret; >>> + } >>> } >>> >>> opp = devfreq_recommended_opp(dev, &cur_freq, 0); >> >