Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp236458pxy; Tue, 20 Apr 2021 17:46:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzF0/Ecpq1e0BfJ2CtqJDi4bk/0pjq5Rh1xx4F4KeYLEdRcwY2S2oho8oRUJI9nX1Pq3aNF X-Received: by 2002:a17:906:b251:: with SMTP id ce17mr30596387ejb.333.1618965982842; Tue, 20 Apr 2021 17:46:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618965982; cv=none; d=google.com; s=arc-20160816; b=RTZRYuDvlszxmGzZBAfjB2BrzV5w3ONrZmF9KIlSsxktrriVb2FqMQ+QGbpCkFQncZ FtGwjEg5P1o1Ta108cMrY/jkMfwxk8sRSm55Si2ssKOLr0JsWmaVd3ZbFkWInCqZ7Jfz K0zfOhQCo7lnEH8+DrvfUaPYlTdgZ7l9l1QBNDS+GVcjlHzND7tTUOOxx9J/ZHaJ3Xug zP/ufQaz1vaH9u8/U8cHxmHoAvK7T7PSNt2JkHOcZO2Ttej+jWp6NDtF7UvTfliKN5ip qTf9IkyecwK3GrPoW7GtlAPMb9rO1x7xJqSwVy9XyfO+ZBV/6ntx3fs6sJm8n3QbpkI2 lWtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=F81+3GQzn3QgcZNo+rxxDFXnkqXmgl8p5GAog02ZRx8=; b=NWB3cxGDPGfxK5sNKi7D86TArfdN0ztZz7XLKu+WqyDxejsEz6ek9GMl1D4wCxALLp gNsZgJT37kwKonUyJBef+7I0ClNVDDNtfoADc7h38p2eHgEphN+dwbUkMkV70jPJRk4i 57SG0fnVdDqVAA9Xo3ozezTsyPzsI4f6bO5LdvInP5Mj4mxSnF/NZx4FjTMYFIprBScT JDrArKSJB9yW45TZAdz9iQf5c0EogX4Aj30H7P4qJdh6Qg6ilvcVcsyhvW9bm2Rm0GDf 3eD4pBgJCoFrcc+8/yOIOWaQO49c+OeWy+2jukX/xlYvLAPoHzbz62k5xeM53oUgtqQX hOgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Oi5H8Hha; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b6si431977ejb.254.2021.04.20.17.45.59; Tue, 20 Apr 2021 17:46:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Oi5H8Hha; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234522AbhDUAUG (ORCPT + 99 others); Tue, 20 Apr 2021 20:20:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40664 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234482AbhDUAT7 (ORCPT ); Tue, 20 Apr 2021 20:19:59 -0400 Received: from mail-pl1-x62d.google.com (mail-pl1-x62d.google.com [IPv6:2607:f8b0:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E525FC06174A for ; Tue, 20 Apr 2021 17:19:26 -0700 (PDT) Received: by mail-pl1-x62d.google.com with SMTP id u15so12067147plf.10 for ; Tue, 20 Apr 2021 17:19:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=F81+3GQzn3QgcZNo+rxxDFXnkqXmgl8p5GAog02ZRx8=; b=Oi5H8Hha3ytR8cWuT+7PYVercpB4oLQHHpFFg0bpO8uL3a0Qv4L13y2MlE8Ey3paB8 gHmz4xY008rRgvKignKWhcQGGlU/OdnIty9LER+HsVQQeVoPD5Wt9EZuHgL/ynMcesq+ ymXJGv1AHhMQ7dbVLFShuGwFOidVsXKNoZTCw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=F81+3GQzn3QgcZNo+rxxDFXnkqXmgl8p5GAog02ZRx8=; b=m9rAyYaspvvMBtQOYvWZO475OjlkAs8iYtuIfLJHC8L/y0SVwGw5KkZa7/VXvfaxrE HtT4jemSRBJuSvd8uGuHFH5fKiqVAL62xYu/MxzoiP/kBigMixrksXhYoIGWz2s9DvFS WQZerLoAWMafGpSYflRQM6Wt3vLWD9OlSBJI/mgDtxiZqFmUjCiGM2DH0iInfABoE/mK HfGGPCs8JVoy238tHHl94sTQNKgAl25OmrnIlMpLBllsOIm3Q1DJT5BhfD4Lnt+x9fwg OIdx5GXt6kookWwuQU/gALb70CSoFEegkuMhrGTakXLJQa6lp9HsNYL1AY+3HHzOok9p eqBg== X-Gm-Message-State: AOAM532U+wMWa72F7GWp8KQRKycWR9tlJUmHbkUHPx6opNjGrsv08fNo WWf0CRi6yP2rpDJdhhXsXKglpw== X-Received: by 2002:a17:902:7c0b:b029:eb:24a:1209 with SMTP id x11-20020a1709027c0bb02900eb024a1209mr30305963pll.43.1618964366529; Tue, 20 Apr 2021 17:19:26 -0700 (PDT) Received: from drinkcat2.tpe.corp.google.com ([2401:fa00:1:b:95d2:8c89:b629:ff49]) by smtp.gmail.com with ESMTPSA id d20sm145494pfn.166.2021.04.20.17.19.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Apr 2021 17:19:26 -0700 (PDT) From: Nicolas Boichat To: Rob Herring , Steven Price , Alyssa Rosenzweig Cc: fshao@chromium.org, hsinyi@chromium.org, Neil Armstrong , hoegsberg@chromium.org, Tomeu Vizoso , boris.brezillon@collabora.com, Nicolas Boichat , Daniel Vetter , David Airlie , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v12 3/4] drm/panfrost: devfreq: Disable devfreq when num_supplies > 1 Date: Wed, 21 Apr 2021 08:19:07 +0800 Message-Id: <20210421081831.v12.3.I3af068abe30c9c85cabc4486385c52e56527a509@changeid> X-Mailer: git-send-email 2.31.1.368.gbe11c130af-goog In-Reply-To: <20210421001908.813625-1-drinkcat@chromium.org> References: <20210421001908.813625-1-drinkcat@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org GPUs with more than a single regulator (e.g. G72 on MT8183) will require platform-specific handling for devfreq, for 2 reasons: 1. The opp core (drivers/opp/core.c:_generic_set_opp_regulator) does not support multiple regulators, so we'll need custom handlers. 2. Generally, platforms with 2 regulators have platform-specific constraints on how the voltages should be set (e.g. minimum/maximum voltage difference between them), so we should not just create generic handlers that simply change the voltages without taking care of those constraints. Disable devfreq for now on those GPUs. Signed-off-by: Nicolas Boichat Reviewed-by: Tomeu Vizoso Reviewed-by: Steven Price --- (no changes since v9) Changes in v9: - Explain why devfreq needs to be disabled for GPUs with >1 regulators. Changes in v8: - Use DRM_DEV_INFO instead of ERROR Changes in v7: - Fix GPU ID in commit message Changes in v6: - devfreq: New change drivers/gpu/drm/panfrost/panfrost_devfreq.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c index 47d27e54a34f..aca3bb9a12e4 100644 --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c @@ -92,9 +92,19 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) struct thermal_cooling_device *cooling; struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq; - ret = devm_pm_opp_set_regulators(dev, pfdev->comp->supply_names, - pfdev->comp->num_supplies); - if (ret) { + if (pfdev->comp->num_supplies > 1) { + /* + * GPUs with more than 1 supply require platform-specific handling: + * continue without devfreq + */ + DRM_DEV_INFO(dev, "More than 1 supply is not supported yet\n"); + return 0; + } + + opp_table = dev_pm_opp_set_regulators(dev, pfdev->comp->supply_names, + pfdev->comp->num_supplies); + if (IS_ERR(opp_table)) { + ret = PTR_ERR(opp_table); /* Continue if the optional regulator is missing */ if (ret != -ENODEV) { DRM_DEV_ERROR(dev, "Couldn't set OPP regulators\n"); -- 2.31.1.368.gbe11c130af-goog