From nobody Thu Feb 12 23:05:22 2026 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (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 035E51586C7 for ; Wed, 5 Jun 2024 20:10:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618227; cv=none; b=aX0hMljB56YqzXX0q84X2SOOPkixvn1SvJNSiMDQvrl3a9TggxG3sU4s6qZlaFDDv6p6LkJvR9U7ChBQqUhpXpQ4UCg+KJMukzk2E82RNGTvD/3usf9yEzHIX3em7310GNk4F183oGQLL30RwZ6Rw8nkJc6I4u/4IhuXS0M5U/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618227; c=relaxed/simple; bh=Oo6+gHUKlPRzoZULFedYFmiWhz4b3mZ9Jvr7zXkE4Lo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QGAsEgawBpedHjP9uZhO5rFjU678QaIy6lwLXS7gJzAAU4KjNIAJ/dcxPtI9LrUFsKNZMgEJnJBF7jsBQ69m/sI2Q54xawCoxFjqRCDyjA99fEfHIE26KFtWC7+2iiM+sTzyObPCYdK8X53Kr6WZd5gC1hIv9ZZ9mewWxfPXrRU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=NmUY1Icr; arc=none smtp.client-ip=209.85.208.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="NmUY1Icr" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-57a1fe63947so235184a12.1 for ; Wed, 05 Jun 2024 13:10:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1717618224; x=1718223024; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9Vw9DX3CSwtkdBUffdnArBNjtVj7mHBTphGyv2QQ9qI=; b=NmUY1IcrMtrLi3mz9dt83ZkcN27tvBoPshfWiiGjzwV4bPH3tcE/vCZJZ2aIg4sdpX +DpLPxCYc8Lm2wsWJ3T/+IRXwATO79KwY4756pr0pUa3HyK/ic0or6M2cfLLSY5RWv6E WLAC28nNrHR80p/mV7NMT5aKdKe/5gbn9boltuC6cEUlcky+mHSjtzGXz1rT7g6o8ItT NPmer9I9zJfVNub2hRKZJ9xR1xQUePy91sM7U/QVfvOo39vQePYAu2zlW5CilHYNlNrU gGRvBfdWM94IDpt93ad2hzkUfGPB9pgkoMKry50HSgwX9eSaO0EuQTNXFfrR+aNfDk1i phuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717618224; x=1718223024; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9Vw9DX3CSwtkdBUffdnArBNjtVj7mHBTphGyv2QQ9qI=; b=EDrxt9XYK5e3LcH3EQtp13xtXB5t7I35pLd62ovpk3U1DtzxXNYXoUQMz9jjc7j/FA JNOr+rYiY7sLJrHBMq/48AZkYHTG+zhq/XcFzpih8uMZqX6ddbvWoih4wMOpzVNgLiUx /QHsg46R6cEeB/gFFH11segBHdxHE09BAyYscs6DzuYoMiWzFb9ksVQKW/0xSqL78IqO M7zCDqnhqCh2jfcbiKezq/1GIoriMLcSzLDQ7VTI8ksU4+rVsBNUaigEZJ1qqIqTUCs+ 4E+Fim2g0to20kCFUZzjMby3j47z5z3z2GB2Usop4jP+hkrTENLTC1SxMrsUJqcijnX0 hKwA== X-Forwarded-Encrypted: i=1; AJvYcCW/AYhDMZzcXBxInc4L3HH/6p83a6r3a5RQnslXh6BLVRSEKnaV+TsRt2aQA/K1XYWCgZ7+6qM2AxtCskEA2YvM5bGVsFQSOI6Cpj1V X-Gm-Message-State: AOJu0YxofYrdrGr85aXExB6rr0bU0LCSHIhU5QNYjw5yOj9DJeWFAvZI QvOgK4KwxMPgGpO77iDSr4LOtwHwnkUJvfI8MsLtgIFET5qpcDZN3o7gN4I3aI4= X-Google-Smtp-Source: AGHT+IEqlV2I5Db8a+ZFkhPsAYnoI1F1oliPNdAwUP8AaIYo4Qee83CiizfDot/q8uaYVI2GD+cyRg== X-Received: by 2002:a50:d497:0:b0:578:6198:d6ff with SMTP id 4fb4d7f45d1cf-57a8bca263cmr2379893a12.33.1717618224135; Wed, 05 Jun 2024 13:10:24 -0700 (PDT) Received: from [127.0.1.1] (078088045245.garwolin.vectranet.pl. [78.88.45.245]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-57a31be4e36sm9717473a12.53.2024.06.05.13.10.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 13:10:23 -0700 (PDT) From: Konrad Dybcio Date: Wed, 05 Jun 2024 22:10:14 +0200 Subject: [PATCH v2 1/7] soc: qcom: Move some socinfo defines to the header 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: quoted-printable Message-Id: <20240605-topic-smem_speedbin-v2-1-8989d7e3d176@linaro.org> References: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> In-Reply-To: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> To: Bjorn Andersson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, Neil Armstrong , Konrad Dybcio X-Mailer: b4 0.14-dev In preparation for parsing the chip "feature code" (FC) and "product code" (PC) (essentially the parameters that let us conclusively characterize the sillicon we're running on, including various speed bins), move the socinfo version defines to the public header. Signed-off-by: Konrad Dybcio --- drivers/soc/qcom/socinfo.c | 8 -------- include/linux/soc/qcom/socinfo.h | 8 ++++++++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/soc/qcom/socinfo.c b/drivers/soc/qcom/socinfo.c index 8087941a7887..beb23e292323 100644 --- a/drivers/soc/qcom/socinfo.c +++ b/drivers/soc/qcom/socinfo.c @@ -21,14 +21,6 @@ =20 #include =20 -/* - * SoC version type with major number in the upper 16 bits and minor - * number in the lower 16 bits. - */ -#define SOCINFO_MAJOR(ver) (((ver) >> 16) & 0xffff) -#define SOCINFO_MINOR(ver) ((ver) & 0xffff) -#define SOCINFO_VERSION(maj, min) ((((maj) & 0xffff) << 16)|((min) & 0xff= ff)) - /* Helper macros to create soc_id table */ #define qcom_board_id(id) QCOM_ID_ ## id, __stringify(id) #define qcom_board_id_named(id, name) QCOM_ID_ ## id, (name) diff --git a/include/linux/soc/qcom/socinfo.h b/include/linux/soc/qcom/soci= nfo.h index e78777bb0f4a..10e0a4c287f4 100644 --- a/include/linux/soc/qcom/socinfo.h +++ b/include/linux/soc/qcom/socinfo.h @@ -12,6 +12,14 @@ #define SMEM_SOCINFO_BUILD_ID_LENGTH 32 #define SMEM_SOCINFO_CHIP_ID_LENGTH 32 =20 +/* + * SoC version type with major number in the upper 16 bits and minor + * number in the lower 16 bits. + */ +#define SOCINFO_MAJOR(ver) (((ver) >> 16) & 0xffff) +#define SOCINFO_MINOR(ver) ((ver) & 0xffff) +#define SOCINFO_VERSION(maj, min) ((((maj) & 0xffff) << 16)|((min) & 0xff= ff)) + /* Socinfo SMEM item structure */ struct socinfo { __le32 fmt; --=20 2.43.0 From nobody Thu Feb 12 23:05:22 2026 Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (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 B2541158868 for ; Wed, 5 Jun 2024 20:10:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618229; cv=none; b=UoteN7Ozo357mIup8mpzCUJIqsdbeMiPi4RBtHyUkL4B53WV3lYWC2HHXa3XYGNSsw2zrGO0/oTqqWtgoVWguaEy3l30EwTHqbee/f2mZATuKXpkDu0tbxq9JSsCj7rH4sORKQ58Rv+oxHxGQ4UI4aG5tgsRtgPQkA7inHJ3G/I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618229; c=relaxed/simple; bh=2eh1mkAA/sn59xOPGlkcYN2/AYQfYvCIp7NENrGuyOc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GKCL3/rDv7MGAM2tHVO9+g5EiU7lnksIdGxnFMsSC9Pzd82a87JguLc7egy6IhLis7dSmxYGCVUywhDWI8GUvYKpy14Nh9WSmsc+ZeCUoEj1lJmv72yHejfzwwmL9t813ky6s7XRr+ZxR7z2MgEIqNv3bHPIHE5xDdZ+/y6Gjuk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=axFGz6p5; arc=none smtp.client-ip=209.85.208.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="axFGz6p5" Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-2e72224c395so1979771fa.3 for ; Wed, 05 Jun 2024 13:10:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1717618226; x=1718223026; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=jMT/dov4rCwVnOSBADCi4X7D61kduzPQ+R9fcxd3Uto=; b=axFGz6p5TL+u3r4obT9AUwcUEWLFn/p9U+xuBMIu5ADM3vOGesO3x8BHrGblxwcAP1 UMhvRlNkmUDKPhq8TRVdQBEbi8JQPcgw4QRJDObSajjTU3IH7v7WRgjzptwyFYyZGe44 qikvZ3uL/mIuBzOZVdGV5v0CpPcs3DxsiZia1uLXmdfrl7icxBIpunbYxFjoQSsoKuYZ aJ7uinDLH3iL0Ndk0KI109uOI2i8qaesIm+XoxPhli0mjYfqlK5P7r+w3wnQH/kusR4e drl63mrdyrI2sV44UVT/PpgzMLii8IVG0f/Ag9VtaxuE4ECVwm0Z06+5x45jl08CdXBb U7Nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717618226; x=1718223026; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jMT/dov4rCwVnOSBADCi4X7D61kduzPQ+R9fcxd3Uto=; b=J4QXM8lnbDFTMD4JdHxLisX0J6iQTEN+nSbbvb3WVzWnF4DLwu208w3l90soOK502r JwePCIv/0TGqPDj+C178b3FV8kJ+XjMF1vm5EDSwWUBSkd65eOgSA/lD4HqayoQuHcVm Wrx8cAKrs05ZHw/x+lfZoDlasMd/1PbTlrhmfgu73F7lM0D72hBLEku8bSLWnpkQcvjM 8YvTMkqe1SpTtbIsOOa1EL+Rdrq3YmNicvlg5DG4WRwutXnR+dJ8NOVT8oPr/dc3VojK 52AnuESzPh7C55OZICvBVS11pY4MW9sc4Bzhfizcwhu8rW5ovtvKyBHCno76oHv1pF29 pU+w== X-Forwarded-Encrypted: i=1; AJvYcCX0wTTB54w+8QgbZBaMtcVy8Xp46B4lnC/x0F8EjFmoLp6R7LQYPohuYIpDA6/sF2hIVvapbmj2S4o0ipkrXrbnrvjYrxBpf4wI3JJT X-Gm-Message-State: AOJu0Yysz+oXhUrV2qj+H01Skl5YSwie+RtcWu6ePqSMa5SRMMPuLYsy 1tFrPxsq9NIr2ZyL9rfARQ9G4gHFw0EGkSwVl4HW6oSN1Uft1UliZJEEQ8AScLs= X-Google-Smtp-Source: AGHT+IEuGR6zo172budNUpiwYhBQNuR5eJEdRRfWLY7Lr+ygWqIyqGnJ89qQjCt+KNbyocrh3WLYOQ== X-Received: by 2002:a2e:9305:0:b0:2e9:8497:46ce with SMTP id 38308e7fff4ca-2eac7a71477mr20869651fa.46.1717618225806; Wed, 05 Jun 2024 13:10:25 -0700 (PDT) Received: from [127.0.1.1] (078088045245.garwolin.vectranet.pl. [78.88.45.245]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-57a31be4e36sm9717473a12.53.2024.06.05.13.10.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 13:10:25 -0700 (PDT) From: Konrad Dybcio Date: Wed, 05 Jun 2024 22:10:15 +0200 Subject: [PATCH v2 2/7] soc: qcom: smem: Add a feature code getter 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: quoted-printable Message-Id: <20240605-topic-smem_speedbin-v2-2-8989d7e3d176@linaro.org> References: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> In-Reply-To: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> To: Bjorn Andersson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, Neil Armstrong , Konrad Dybcio X-Mailer: b4 0.14-dev Recent (SM8550+ ish) Qualcomm SoCs have a new mechanism for precisely identifying the specific SKU and the precise speed bin (in the general meaning of this word, anyway): a pair of values called Product Code and Feature Code. Based on this information, we can deduce the available frequencies for things such as Adreno. In the case of Adreno specifically, Pcode is useless for non-prototype SoCs. Introduce a getter for the feature code and export it. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/soc/qcom/smem.c | 33 +++++++++++++++++++++++++++++++++ include/linux/soc/qcom/smem.h | 1 + include/linux/soc/qcom/socinfo.h | 26 ++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) diff --git a/drivers/soc/qcom/smem.c b/drivers/soc/qcom/smem.c index 50039e983eba..e4411771f482 100644 --- a/drivers/soc/qcom/smem.c +++ b/drivers/soc/qcom/smem.c @@ -821,6 +821,39 @@ int qcom_smem_get_soc_id(u32 *id) } EXPORT_SYMBOL_GPL(qcom_smem_get_soc_id); =20 +/** + * qcom_smem_get_feature_code() - return the feature code + * @code: On success, return the feature code here. + * + * Look up the feature code identifier from SMEM and return it. + * + * Return: 0 on success, negative errno on failure. + */ +int qcom_smem_get_feature_code(u32 *code) +{ + struct socinfo *info; + u32 raw_code; + + info =3D qcom_smem_get(QCOM_SMEM_HOST_ANY, SMEM_HW_SW_BUILD_ID, NULL); + if (IS_ERR(info)) + return PTR_ERR(info); + + /* This only makes sense for socinfo >=3D 16 */ + if (__le32_to_cpu(info->fmt) < SOCINFO_VERSION(0, 16)) + return -EOPNOTSUPP; + + raw_code =3D __le32_to_cpu(info->feature_code); + + /* Ensure the value makes sense */ + if (raw_code > SOCINFO_FC_INT_MAX) + raw_code =3D SOCINFO_FC_UNKNOWN; + + *code =3D raw_code; + + return 0; +} +EXPORT_SYMBOL_GPL(qcom_smem_get_feature_code); + static int qcom_smem_get_sbl_version(struct qcom_smem *smem) { struct smem_header *header; diff --git a/include/linux/soc/qcom/smem.h b/include/linux/soc/qcom/smem.h index 03187bc95851..f946e3beca21 100644 --- a/include/linux/soc/qcom/smem.h +++ b/include/linux/soc/qcom/smem.h @@ -13,6 +13,7 @@ int qcom_smem_get_free_space(unsigned host); phys_addr_t qcom_smem_virt_to_phys(void *p); =20 int qcom_smem_get_soc_id(u32 *id); +int qcom_smem_get_feature_code(u32 *code); =20 int qcom_smem_bust_hwspin_lock_by_host(unsigned int host); =20 diff --git a/include/linux/soc/qcom/socinfo.h b/include/linux/soc/qcom/soci= nfo.h index 10e0a4c287f4..608950443eee 100644 --- a/include/linux/soc/qcom/socinfo.h +++ b/include/linux/soc/qcom/socinfo.h @@ -3,6 +3,8 @@ #ifndef __QCOM_SOCINFO_H__ #define __QCOM_SOCINFO_H__ =20 +#include + /* * SMEM item id, used to acquire handles to respective * SMEM region. @@ -82,4 +84,28 @@ struct socinfo { __le32 boot_core; }; =20 +/* Internal feature codes */ +enum qcom_socinfo_feature_code { + /* External feature codes */ + SOCINFO_FC_UNKNOWN =3D 0x0, + SOCINFO_FC_AA, + SOCINFO_FC_AB, + SOCINFO_FC_AC, + SOCINFO_FC_AD, + SOCINFO_FC_AE, + SOCINFO_FC_AF, + SOCINFO_FC_AG, + SOCINFO_FC_AH, +}; + +/* Internal feature codes */ +/* Valid values: 0 <=3D n <=3D 0xf */ +#define SOCINFO_FC_Yn(n) (0xf1 + (n)) +#define SOCINFO_FC_INT_MAX SOCINFO_FC_Yn(0xf) + +/* Product codes */ +#define SOCINFO_PC_UNKNOWN 0 +#define SOCINFO_PCn(n) ((n) + 1) +#define SOCINFO_PC_RESERVE (BIT(31) - 1) + #endif --=20 2.43.0 From nobody Thu Feb 12 23:05:22 2026 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) (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 4BB3C15A845 for ; Wed, 5 Jun 2024 20:10:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618231; cv=none; b=lCnrVmmNpKtmODJIm8GFjQLczALGMKGnTtviwDBNICjiQ/9NZBsMOQhHgYgSZuy5f8LNGg4a2l5nbpSr1hzHGESSiF0sH3ubIh5JZnmEiZof6wIDX//r04En9URCj7Bz9feu5Mw2p+jJmGSYZXW7GvgKEIqTYJYvcICVEdjO+8I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618231; c=relaxed/simple; bh=9mVkT2V3ghIDs5ruTaChTVZn0/NNcHKNIJrFJ/SZLHU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QrFhmEjsNFDAPzMUbYAICQ2+JfLysQ14Dn7qw4fb7hXu+MS42XTteZmwZM6jY9OCw7q5Y+oAeOIhT0ortWbi/qsEUU4ZFwMyxb5NZqWVPBefD+qjSAmekH9VoDI4ehClqdhCWuuVMutLAPp2iO6Yqki04EcGQRkZ1MqNLZtyz7o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=ZJ7U1uLK; arc=none smtp.client-ip=209.85.208.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ZJ7U1uLK" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-57a20ccafc6so191533a12.2 for ; Wed, 05 Jun 2024 13:10:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1717618227; x=1718223027; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=hB/7Kb1VW4gFTXC7Yg+4jPgSlPqTTRx/zg0Jbjaqk2Q=; b=ZJ7U1uLKZ4HqXpGAKV3FcnHTZ2NuJOGJ6as9bn9uKETSGLcDkYEvnKAl/RTjZXnQe6 XWEDKo460xx7ao1SKLrKTFHUA50kXYSmWZfpwirSQiFwrdQsNdxGMFXuZxCNlrFHQJNs 7jDwhuud2gzp+GvMWtcQbHuSc38P2T9xDQRoigu5SV0dvVJR0f/RYvkkJe2z9gS/2ws2 kDE7MQRuQc0VTaZ48WniHnddgRQLV/s8r3becKLzkoRlJrtWtdHH0avrdl+sAZ0eV/82 NjuwXkUnkZd1ZuHfylIS8QY+Z5vgr4m7ATWkKkt72foXOtV8qPElIusgKnhXot+y6uW0 u3gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717618227; x=1718223027; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hB/7Kb1VW4gFTXC7Yg+4jPgSlPqTTRx/zg0Jbjaqk2Q=; b=BBB11czVtnLIr8siy9qkgaHzgRSuUigHO1Z0qNRBGnCE/EDTuCt2ue4rDejZeSxHhO Ae2W/DuvSI6vZhZmuAkCC1Bogp/HLAdPKZSo4OmqKGW/Hwmo/T6u+yzJMsMhp5hWteJx xl20XTy2+gkPhiBSRy8xbDgcCV7dT3NaSiowKD8GCH/wpvFNPr0CHPq+Qy723vw83ElQ ea6As4pVF49TIA+xugLlMQ/EBIxg8dbwfkvwJVTWw1YpI6NFSGkMefhI55ORtoj246ZY VFW8iyhNQGvTY2bd3w4k+vi5BYI6zj/T3RW8uXGcb5ZEi9AmYsezLYuff3slZSuGI3m2 6TQA== X-Forwarded-Encrypted: i=1; AJvYcCXLEuORx7kRCtSwfqw0EamWbU/bmy21XnTD81nZTVWrxnEzZLK/Hmgvw5fGfDuGtb+LgoBC3pJun03wsGZ/IjTSdx1DOj+G8J5pogC1 X-Gm-Message-State: AOJu0Yz86rdh+i8bXq2pHhJ4TP13fwSbpY/i+v/RUoLhdvsv2frcalzh V7RGuqCXLmr2fg10Y8KgkbpBXGO1qCpe1zIFtC9QPJm+yUXf58NttXa2jQdq7iI= X-Google-Smtp-Source: AGHT+IE1HK1zb72A1yjGoZvPGwo5Mrz8Ux6oOc+nkRD2t2RiWJ2159E6+Z5bPtsUlRepkwL8ZiNiyg== X-Received: by 2002:a50:a455:0:b0:578:6c3e:3b8f with SMTP id 4fb4d7f45d1cf-57a8b67c37fmr2448706a12.2.1717618227416; Wed, 05 Jun 2024 13:10:27 -0700 (PDT) Received: from [127.0.1.1] (078088045245.garwolin.vectranet.pl. [78.88.45.245]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-57a31be4e36sm9717473a12.53.2024.06.05.13.10.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 13:10:27 -0700 (PDT) From: Konrad Dybcio Date: Wed, 05 Jun 2024 22:10:16 +0200 Subject: [PATCH v2 3/7] drm/msm/adreno: Implement SMEM-based speed bin 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: quoted-printable Message-Id: <20240605-topic-smem_speedbin-v2-3-8989d7e3d176@linaro.org> References: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> In-Reply-To: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> To: Bjorn Andersson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, Neil Armstrong , Konrad Dybcio X-Mailer: b4 0.14-dev On recent (SM8550+) Snapdragon platforms, the GPU speed bin data is abstracted through SMEM, instead of being directly available in a fuse. Add support for SMEM-based speed binning, which includes getting "feature code" and "product code" from said source and parsing them to form something that lets us match OPPs against. Due to the product code being ignored in the context of Adreno on production parts (as of SM8650), hardcode it to SOCINFO_PC_UNKNOWN. Signed-off-by: Konrad Dybcio --- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 8 +++--- drivers/gpu/drm/msm/adreno/adreno_device.c | 2 ++ drivers/gpu/drm/msm/adreno/adreno_gpu.c | 41 ++++++++++++++++++++++++++= +--- drivers/gpu/drm/msm/adreno/adreno_gpu.h | 12 ++++++--- 4 files changed, 53 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/ad= reno/a6xx_gpu.c index 973872ad0474..3f84417ff027 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -2894,13 +2894,15 @@ static u32 fuse_to_supp_hw(const struct adreno_info= *info, u32 fuse) return UINT_MAX; } =20 -static int a6xx_set_supported_hw(struct device *dev, const struct adreno_i= nfo *info) +static int a6xx_set_supported_hw(struct adreno_gpu *adreno_gpu, + struct device *dev, + const struct adreno_info *info) { u32 supp_hw; u32 speedbin; int ret; =20 - ret =3D adreno_read_speedbin(dev, &speedbin); + ret =3D adreno_read_speedbin(adreno_gpu, dev, &speedbin); /* * -ENOENT means that the platform doesn't support speedbin which is * fine @@ -3060,7 +3062,7 @@ struct msm_gpu *a6xx_gpu_init(struct drm_device *dev) =20 a6xx_llc_slices_init(pdev, a6xx_gpu, is_a7xx); =20 - ret =3D a6xx_set_supported_hw(&pdev->dev, config->info); + ret =3D a6xx_set_supported_hw(adreno_gpu, &pdev->dev, config->info); if (ret) { a6xx_llc_slices_destroy(a6xx_gpu); kfree(a6xx_gpu); diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/m= sm/adreno/adreno_device.c index c3703a51287b..901ef767e491 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_device.c +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c @@ -6,6 +6,8 @@ * Copyright (c) 2014,2017 The Linux Foundation. All rights reserved. */ =20 +#include + #include "adreno_gpu.h" =20 bool hang_debug =3D false; diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/= adreno/adreno_gpu.c index 074fb498706f..055072260b3d 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -21,6 +21,9 @@ #include "msm_gem.h" #include "msm_mmu.h" =20 +#include +#include + static u64 address_space_size =3D 0; MODULE_PARM_DESC(address_space_size, "Override for size of processes priva= te GPU address space"); module_param(address_space_size, ullong, 0600); @@ -1057,9 +1060,39 @@ void adreno_gpu_ocmem_cleanup(struct adreno_ocmem *a= dreno_ocmem) adreno_ocmem->hdl); } =20 -int adreno_read_speedbin(struct device *dev, u32 *speedbin) +int adreno_read_speedbin(struct adreno_gpu *adreno_gpu, + struct device *dev, u32 *fuse) { - return nvmem_cell_read_variable_le_u32(dev, "speed_bin", speedbin); + u32 fcode; + int ret; + + /* + * Try reading the speedbin via a nvmem cell first + * -ENOENT means "no nvmem-cells" and essentially means "old DT" or + * "nvmem fuse is irrelevant", simply assume it's fine. + */ + ret =3D nvmem_cell_read_variable_le_u32(dev, "speed_bin", fuse); + if (!ret) + return 0; + else if (ret !=3D -ENOENT) + return dev_err_probe(dev, ret, "Couldn't read the speed bin fuse value\n= "); + +#ifdef CONFIG_QCOM_SMEM + /* + * Only check the feature code - the product code only matters for + * proto SoCs unavailable outside Qualcomm labs, as far as GPU bin + * matching is concerned. + * + * Ignore EOPNOTSUPP, as not all SoCs expose this info through SMEM. + */ + ret =3D qcom_smem_get_feature_code(&fcode); + if (!ret) { + *fuse =3D ADRENO_SKU_ID(fcode); + } else if (ret !=3D -EOPNOTSUPP) + return dev_err_probe(dev, ret, "Couldn't get feature code from SMEM\n"); +#endif + + return 0; } =20 int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, @@ -1098,9 +1131,9 @@ int adreno_gpu_init(struct drm_device *drm, struct pl= atform_device *pdev, devm_pm_opp_set_clkname(dev, "core"); } =20 - if (adreno_read_speedbin(dev, &speedbin) || !speedbin) + if (adreno_read_speedbin(adreno_gpu, dev, &speedbin) || !speedbin) speedbin =3D 0xffff; - adreno_gpu->speedbin =3D (uint16_t) (0xffff & speedbin); + adreno_gpu->speedbin =3D speedbin; =20 gpu_name =3D devm_kasprintf(dev, GFP_KERNEL, "%"ADRENO_CHIPID_FMT, ADRENO_CHIPID_ARGS(config->chip_id)); diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h b/drivers/gpu/drm/msm/= adreno/adreno_gpu.h index 77526892eb8c..8f2b70eaf6ad 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h @@ -81,7 +81,12 @@ extern const struct adreno_reglist a612_hwcg[], a615_hwc= g[], a630_hwcg[], a640_h extern const struct adreno_reglist a660_hwcg[], a690_hwcg[], a702_hwcg[], = a730_hwcg[], a740_hwcg[]; =20 struct adreno_speedbin { - uint16_t fuse; + /* <=3D 16-bit for NVMEM fuses, 32b for SOCID values */ + uint32_t fuse; +/* As of SM8650, PCODE on production SoCs is meaningless wrt the GPU bin */ +#define ADRENO_SKU_ID_FCODE GENMASK(15, 0) +#define ADRENO_SKU_ID(fcode) (SOCINFO_PC_UNKNOWN << 16 | fcode) + uint16_t speedbin; }; =20 @@ -136,7 +141,7 @@ struct adreno_gpu { struct msm_gpu base; const struct adreno_info *info; uint32_t chip_id; - uint16_t speedbin; + uint32_t speedbin; const struct adreno_gpu_funcs *funcs; =20 /* interesting register offsets to dump: */ @@ -519,7 +524,8 @@ int adreno_fault_handler(struct msm_gpu *gpu, unsigned = long iova, int flags, struct adreno_smmu_fault_info *info, const char *block, u32 scratch[4]); =20 -int adreno_read_speedbin(struct device *dev, u32 *speedbin); +int adreno_read_speedbin(struct adreno_gpu *adreno_gpu, + struct device *dev, u32 *speedbin); =20 /* * For a5xx and a6xx targets load the zap shader that is used to pull the = GPU --=20 2.43.0 From nobody Thu Feb 12 23:05:22 2026 Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) (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 A0B2F15D5C7 for ; Wed, 5 Jun 2024 20:10:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618233; cv=none; b=mwDrtNyAguSM3pwLGxj0+4gJyhiBGj3BW7JVMQaz0ED6GzpZPIF+v7TCzT1fOl4MOiFru5DMtU+M8j0iqgPAvFuLysj0Xq/AJ37zN17yxZmkQwd/GoF5F/l2YZMV6rUQZQtwxMqn6iSrpOWZ4/pLxMwxL/N2UbFZvPGXz5VH+1c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618233; c=relaxed/simple; bh=XvP/BSatzMPPQUrvM0ONiFzdTKIB5gWlXrgEDOGJq00=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sw4pCDRi7tAyIEHoaQbI9Peku9VYgioIZdOXuVCPwtvnrToeQ3R1eHV3tBaPIAkdVCJNWDkIOJjaCimpJMFApzAaLp7VrlFK89yN4dRU1B7eS9hejukZML5BZK9PLDlpxwtiypfAQnwr8SbjPCt8veD+NwBRKXvaigk/rjOxMRw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=KJuLXgkC; arc=none smtp.client-ip=209.85.208.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="KJuLXgkC" Received: by mail-lj1-f170.google.com with SMTP id 38308e7fff4ca-2eaafda3b5cso2765471fa.3 for ; Wed, 05 Jun 2024 13:10:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1717618229; x=1718223029; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rsxI5OJmE2RBtxZTRf/cc3jqaLSF49oqnXau0+l27fM=; b=KJuLXgkCD43NHL3OBkv375oEhKOlIT2afDkq3oQdis1ki/WbeUuD8PgBUO+tXEWGJt YCJN5SQVJnGW+b7zimg0epzMmyvo2KT0DrF5hg+MKOaEFClNlakvhNC8lh2Q4+8Nh086 9ebON9WhazR/Ojk4CSgB14eYHf/yWVMbLgsshyRGEvgh1vmHEYHLnsA5KVVtrWretAFY SvjVWpP0OMj7Rn7mmqN+u08QzcltJ8eNLiXeJbjQ3EmjdV2+YRj37aowPvlch+0/6QwB P9syLN5XlTaiX4hIAvQld+W+3XuY8evkU2xQ41WlpvUACEmn/spslAZATmo+/otMvzx4 QXsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717618229; x=1718223029; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rsxI5OJmE2RBtxZTRf/cc3jqaLSF49oqnXau0+l27fM=; b=m7SmPz9MHg06oEfwIGULmVScgZ71rfbgxBxQhTc3E2GbfeKN9hJR3MG5nc/miXNku/ drOScaIQLwqVxtoEoz2Tf2r4D94pAEPBW+C0maRsIFL/XRzzF950XXRaGghVMoTxVQ6s 7q2Smnx/PoiDzaPxP7yY3f+ca4bpj9WrKC0sq0dJneCnfF2liWTtpPt4cZuz+CrmQuDt FQK21JkEYRburJTZAQnSVFmcYyG/FfmnKgvtsEsfQ12RzhAfNaBqk69gz0XueyscklXB cVkgLWKTHQr5WlQFLR1lyQEmMh+VBshTMYege07qYa+bcgxsAOhMt60TD1O9QvaTtnbB u/3g== X-Forwarded-Encrypted: i=1; AJvYcCWSAPcVyfZfwwG1rx5163Vp+YEDxewOA0JUYD57aVnmgt3EUnCtqNurtlqWQPxUFa0m1Y9GhCzT+JQwWyggAERrf3pKYSLdITf3Xo8d X-Gm-Message-State: AOJu0YxwlwCnfudprI0UvFX+hzyJZMqrIPx0e+ZLks/zyupVdlOm6v/F x4IcF5my7eAfxDsNU7qdVv9XaYbYjlRBpXxm02GJV/WWqqZYTj/r4DqpBloBZqDkLNZWCTUE3pk 3dk4= X-Google-Smtp-Source: AGHT+IHZPDBP/2G+iM8crT7CqzDpqiOTqjkerYD9t+xoHL3b/RsYHVFEDdIehn61CCgVDhqj+ckVNw== X-Received: by 2002:a05:651c:b2a:b0:2ea:d142:d2b2 with SMTP id 38308e7fff4ca-2ead142d3d6mr1982801fa.34.1717618229093; Wed, 05 Jun 2024 13:10:29 -0700 (PDT) Received: from [127.0.1.1] (078088045245.garwolin.vectranet.pl. [78.88.45.245]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-57a31be4e36sm9717473a12.53.2024.06.05.13.10.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 13:10:28 -0700 (PDT) From: Konrad Dybcio Date: Wed, 05 Jun 2024 22:10:17 +0200 Subject: [PATCH v2 4/7] drm/msm/adreno: Add speedbin data for SM8550 / A740 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: quoted-printable Message-Id: <20240605-topic-smem_speedbin-v2-4-8989d7e3d176@linaro.org> References: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> In-Reply-To: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> To: Bjorn Andersson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, Neil Armstrong , Konrad Dybcio X-Mailer: b4 0.14-dev Add speebin data for A740, as found on SM8550 and derivative SoCs. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/gpu/drm/msm/adreno/adreno_device.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/m= sm/adreno/adreno_device.c index 901ef767e491..e00eef8099ae 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_device.c +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c @@ -570,6 +570,10 @@ static const struct adreno_info gpulist[] =3D { .zapfw =3D "a740_zap.mdt", .hwcg =3D a740_hwcg, .address_space_size =3D SZ_16G, + .speedbins =3D ADRENO_SPEEDBINS( + { ADRENO_SKU_ID(SOCINFO_FC_AC), 0 }, + { ADRENO_SKU_ID(SOCINFO_FC_AF), 0 }, + ), }, { .chip_ids =3D ADRENO_CHIP_IDS(0x43051401), /* "C520v2" */ .family =3D ADRENO_7XX_GEN3, --=20 2.43.0 From nobody Thu Feb 12 23:05:22 2026 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) (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 63B0015D5DB for ; Wed, 5 Jun 2024 20:10:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618234; cv=none; b=cFnjsxH5VYE8tNkr5pzk6sdkpc2IJC00/3VZgqQSk/SjWlLyAzSVaq8lL8Wx4hw8WeOUi6NMdT2QfP/3wjZvZ0nvXq2lLDP2FnQ85xmGmQqNk4oalFu6abxNK8XB2lEzh2BR0HRf7Gy6zglgtn9SbGEyfsckPOit+KdScICjYxQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618234; c=relaxed/simple; bh=yp94P6EXcUfh6tf1gijxaCCHni62kacsqABiqdfOJMw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BsqcYrAWLHIfm2mOuQpHXHHM+/0W71tevOo7xQQkjkMNA3g8njLmRjv5W8dxCw7kK1qxEM/GdCWfQNX/0e7KyRXKPSwOZA2ctk4Jp7UMwN/iXwfhheAWM0dUIwjS/5xwtzYDW3ka/2i4eeS9aMwxNN3LxSA2GWqu6+F1kplo6EU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=fek29ZGz; arc=none smtp.client-ip=209.85.167.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="fek29ZGz" Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-52b90038cf7so475026e87.0 for ; Wed, 05 Jun 2024 13:10:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1717618230; x=1718223030; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=vAbdSxwRmKncrPynMCBXXpukCSmqzvxbpgxPB115kMQ=; b=fek29ZGzRxqhin3CvqlxME5VcgNP4YY4PvjYszlQLmH8wgf46EzdbSEh0HVt8nuqLt p7VXG2G/hNslirl0x00NtDQgCuyzrF2g21cj831aDjVTy3MrKDZemLORjrIzwegatRYK 8VyIv4sHhPc0u0w2VkTw9hmBuiv7hXnknyK9ufUXQwrLyT6UigTyG6T8TxDEiNIZ1Nyp Udu4isNCvZJsCoTZRoLOrkhyvxpPE+ViRsgnpisRLRPgSRZsdJ1wmDQWbhAn0O2UdqoK xWHxBEjAEdYcLZBJP6Pzfbop+0ZajdLi/kawTJ5vQjeQZ5Ppu0SvUoLbeRRctq8ILOsM aDPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717618230; x=1718223030; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vAbdSxwRmKncrPynMCBXXpukCSmqzvxbpgxPB115kMQ=; b=RZ/Gj8nnV9NMCZ5uhGfNKas3AnTWMf0P1papp5KIBzkJZ0k2mLERt+2oKQHb0I+qcz a8uc6p0Ac+CP5T0RtceOn7MHHdA5t/h7x8Kar3JVHLeyvy2TZ8avfoySgydif6ytZpxd MMNT5n+GDOuPxxDz7qwRX3bnDEVQKfXkn4UMn9JqCrIehaYdSdkc7q5GFNwolNvd73Q5 FAwaNnIPohKST57l1zfMJBvhBzSgAG9dlM6/MAEShTnAgTJVyyPgz7MXzBOYFBZwCTMc GK+zM6+hPBRXtB7UfCx2LKzBy9JTFkYkesWWbYLI/4EOMbZPqmPh2qIhdAc2BPLoD/MR p+sg== X-Forwarded-Encrypted: i=1; AJvYcCWCv36OeTV5rOP90e9LBQeEvPYsfGrGAnKw2SmmHXvvB52u3byTA+3MTdBeuFT6hO7Ff/3r/ayqkuBpdEITAcjV94GBi6GTshh3uiXa X-Gm-Message-State: AOJu0YzFI1QGGm6GLqN51q7XO4WUk0T38D+mLnDQ0Tf2xLUKWJThJHLS ehNCFAT3PhexeXkq/cehKEtuxzHRWKkJdNQB/Rfvm33pf5BEI/EofjxwF/YxI0A= X-Google-Smtp-Source: AGHT+IGmE9OokaTql4LLWxH8WUk7Bm6os+aJLAvG1X8lHm2C2s5wY34QXKPicExRZInMxGNV/wgPkA== X-Received: by 2002:ac2:5322:0:b0:522:80d:5dc5 with SMTP id 2adb3069b0e04-52bab4bd036mr2102755e87.27.1717618230691; Wed, 05 Jun 2024 13:10:30 -0700 (PDT) Received: from [127.0.1.1] (078088045245.garwolin.vectranet.pl. [78.88.45.245]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-57a31be4e36sm9717473a12.53.2024.06.05.13.10.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 13:10:30 -0700 (PDT) From: Konrad Dybcio Date: Wed, 05 Jun 2024 22:10:18 +0200 Subject: [PATCH v2 5/7] drm/msm/adreno: Define A530 speed bins explicitly 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: quoted-printable Message-Id: <20240605-topic-smem_speedbin-v2-5-8989d7e3d176@linaro.org> References: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> In-Reply-To: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> To: Bjorn Andersson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, Neil Armstrong , Konrad Dybcio X-Mailer: b4 0.14-dev In preparation for commonizing the speedbin handling code. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- drivers/gpu/drm/msm/adreno/adreno_device.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/m= sm/adreno/adreno_device.c index e00eef8099ae..66f7868ff476 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_device.c +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c @@ -258,6 +258,12 @@ static const struct adreno_info gpulist[] =3D { ADRENO_QUIRK_FAULT_DETECT_MASK, .init =3D a5xx_gpu_init, .zapfw =3D "a530_zap.mdt", + .speedbins =3D ADRENO_SPEEDBINS( + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + ), }, { .chip_ids =3D ADRENO_CHIP_IDS(0x05040001), .family =3D ADRENO_5XX, --=20 2.43.0 From nobody Thu Feb 12 23:05:22 2026 Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (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 2013E15DBD3 for ; Wed, 5 Jun 2024 20:10:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618236; cv=none; b=d8tAZrKwpVKJ+7EDc2lb1g0x9JczKfA84mwRnj337iR0pGBmuUGg4iycGAsygrR19xneMKJGMZ1y+ihVr7RdFFQHBBiQ4ynb2Q/jCMA0P94XZsgWfV5bIAdTevHgGySBu8P7Kr0cMK1xs5RvuMIRMKs9xZOpGVAdAOM638Ufmmk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618236; c=relaxed/simple; bh=NKlOWZ3llYIHAucM7hXLsZOaIDZ9ii5c/xLWD63q7Vk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NEUYMKxiRisALGVODxmLrftJD9r3bicG56togFnqxSbrikBGx+LonFY6qO6ZWb+XGSyp7FSTrFx0pX7KDK3tx4MjnMZM1cjEWXrpGOWEM7gJizBN1xuNkKusJq1AMQ0KZMQA5KlVIj5WlKmtAMI1tM18kY7l63byV2lz7xbzsI0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=nN4rA05P; arc=none smtp.client-ip=209.85.208.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="nN4rA05P" Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-2e72224c395so1980881fa.3 for ; Wed, 05 Jun 2024 13:10:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1717618232; x=1718223032; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=oK9nE6TjsLWeKUxIQ1Zr5Vx3uwM6i2437SAG5zcYC9A=; b=nN4rA05PHq50hzRuK8RUF7/MfjVDZlkaiFUDVT0nI+oYZRzBNMHjwMMzRHGcuXvrLd 9jZbAYSDAOlAPXJMnVMRI/0znZx7NxPOfDsPGk/pjZG4FtGgMAYrKxu4utKen9ijQnoC BXtqC6O7KPwhWrRs3hR+cPtrUKO/mhajqV3GcmrgAP0/7elOGc7mn7xgJWHbfas9w4eP dZmjvNTWx9yMomBP5mWzuhNMsxhTPZu7B7feFV5CHc4V67u1dNE5Zw1bifW8L/vztgEy RQg/+kiaeCHXKFjLyYJoYu08uaQhjhZizA7PXDCaWsZBCWkVXL23ta/Nt8l7+aVhkNeJ tKUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717618232; x=1718223032; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oK9nE6TjsLWeKUxIQ1Zr5Vx3uwM6i2437SAG5zcYC9A=; b=iaOIfOra76JO1H3v0DqEqMrqAXuf9PNMw26G1Whb6tXZ0MvmRnIEFSzgo9ay0dO6TU NCOfMCL4ghsc4RezpgeYgN0IjgfMlBQcsyTYyA87FcaN+ufx+Q2ykedClLo4WM8rTKT5 ENvVB3GZnYHf2Aw8LJIvIAlfUOTHS/Z3JsbITlTTmtf3ovT1E6+RZM1sGFPabuBdHjDv Diudcs8CXuAnZ6HjHP6wuLdj0GndVN9Uu6tu2t0HwhZDvjhuCY4mhoyTS8KJ6TxMxWrQ m54otcrUNfCw0PcrF+UNgyxSAILZGhbAFvqxB4pwIrwWAl3KdyC55CO+9zuVboXlQSjv iJKQ== X-Forwarded-Encrypted: i=1; AJvYcCXyzra984G7pksR2a7dXCo2RdLz58FqYdDuqDil5USZ3Zs2bxUNfQYkCM/19o20Q4pWORBqvC3aQGfqo1WP8GU5ptYZHqIY6SCFn13U X-Gm-Message-State: AOJu0YwX2TmH5gKUuU9XOBVYJ7xnN7mDKVUfxMAYyCtCTrk44MW4/tFE FSysvlNCNaGytJeAVPiZmtjso/lhmttJptbvhteXqEwuyCgf24ISb+zfOT09ay0= X-Google-Smtp-Source: AGHT+IHIJnv5expD62cIeLSgdkL+o4v02vMiaIVkqDuv9Nd7/I1vQ38SX5m6e6wv9ZmQwahHa3gnAg== X-Received: by 2002:a2e:9305:0:b0:2e9:8497:46ce with SMTP id 38308e7fff4ca-2eac7a71477mr20870721fa.46.1717618232370; Wed, 05 Jun 2024 13:10:32 -0700 (PDT) Received: from [127.0.1.1] (078088045245.garwolin.vectranet.pl. [78.88.45.245]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-57a31be4e36sm9717473a12.53.2024.06.05.13.10.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 13:10:32 -0700 (PDT) From: Konrad Dybcio Date: Wed, 05 Jun 2024 22:10:19 +0200 Subject: [PATCH v2 6/7] drm/msm/adreno: Redo the speedbin assignment 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: quoted-printable Message-Id: <20240605-topic-smem_speedbin-v2-6-8989d7e3d176@linaro.org> References: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> In-Reply-To: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> To: Bjorn Andersson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, Neil Armstrong , Konrad Dybcio X-Mailer: b4 0.14-dev There is no need to reinvent the wheel for simple read-match-set logic. Make speedbin discovery and assignment generation independent. This implicitly removes the bogus 0x80 / BIT(7) speed bin on A5xx, which has no representation in hardware whatshowever. Signed-off-by: Konrad Dybcio --- drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 34 -------------------- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 56 -----------------------------= ---- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 51 ++++++++++++++++++++++++++---- drivers/gpu/drm/msm/adreno/adreno_gpu.h | 3 -- 4 files changed, 45 insertions(+), 99 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c b/drivers/gpu/drm/msm/ad= reno/a5xx_gpu.c index c003f970189b..eed6a2eb1731 100644 --- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c @@ -1704,38 +1704,6 @@ static const struct adreno_gpu_funcs funcs =3D { .get_timestamp =3D a5xx_get_timestamp, }; =20 -static void check_speed_bin(struct device *dev) -{ - struct nvmem_cell *cell; - u32 val; - - /* - * If the OPP table specifies a opp-supported-hw property then we have - * to set something with dev_pm_opp_set_supported_hw() or the table - * doesn't get populated so pick an arbitrary value that should - * ensure the default frequencies are selected but not conflict with any - * actual bins - */ - val =3D 0x80; - - cell =3D nvmem_cell_get(dev, "speed_bin"); - - if (!IS_ERR(cell)) { - void *buf =3D nvmem_cell_read(cell, NULL); - - if (!IS_ERR(buf)) { - u8 bin =3D *((u8 *) buf); - - val =3D (1 << bin); - kfree(buf); - } - - nvmem_cell_put(cell); - } - - devm_pm_opp_set_supported_hw(dev, &val, 1); -} - struct msm_gpu *a5xx_gpu_init(struct drm_device *dev) { struct msm_drm_private *priv =3D dev->dev_private; @@ -1763,8 +1731,6 @@ struct msm_gpu *a5xx_gpu_init(struct drm_device *dev) =20 a5xx_gpu->lm_leakage =3D 0x4E001A; =20 - check_speed_bin(&pdev->dev); - nr_rings =3D 4; =20 if (config->info->revn =3D=3D 510) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/ad= reno/a6xx_gpu.c index 3f84417ff027..d256e27ee581 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -2882,55 +2882,6 @@ static bool a6xx_progress(struct msm_gpu *gpu, struc= t msm_ringbuffer *ring) return progress; } =20 -static u32 fuse_to_supp_hw(const struct adreno_info *info, u32 fuse) -{ - if (!info->speedbins) - return UINT_MAX; - - for (int i =3D 0; info->speedbins[i].fuse !=3D SHRT_MAX; i++) - if (info->speedbins[i].fuse =3D=3D fuse) - return BIT(info->speedbins[i].speedbin); - - return UINT_MAX; -} - -static int a6xx_set_supported_hw(struct adreno_gpu *adreno_gpu, - struct device *dev, - const struct adreno_info *info) -{ - u32 supp_hw; - u32 speedbin; - int ret; - - ret =3D adreno_read_speedbin(adreno_gpu, dev, &speedbin); - /* - * -ENOENT means that the platform doesn't support speedbin which is - * fine - */ - if (ret =3D=3D -ENOENT) { - return 0; - } else if (ret) { - dev_err_probe(dev, ret, - "failed to read speed-bin. Some OPPs may not be supported by hard= ware\n"); - return ret; - } - - supp_hw =3D fuse_to_supp_hw(info, speedbin); - - if (supp_hw =3D=3D UINT_MAX) { - DRM_DEV_ERROR(dev, - "missing support for speed-bin: %u. Some OPPs may not be supported by h= ardware\n", - speedbin); - supp_hw =3D BIT(0); /* Default */ - } - - ret =3D devm_pm_opp_set_supported_hw(dev, &supp_hw, 1); - if (ret) - return ret; - - return 0; -} - static const struct adreno_gpu_funcs funcs =3D { .base =3D { .get_param =3D adreno_get_param, @@ -3062,13 +3013,6 @@ struct msm_gpu *a6xx_gpu_init(struct drm_device *dev) =20 a6xx_llc_slices_init(pdev, a6xx_gpu, is_a7xx); =20 - ret =3D a6xx_set_supported_hw(adreno_gpu, &pdev->dev, config->info); - if (ret) { - a6xx_llc_slices_destroy(a6xx_gpu); - kfree(a6xx_gpu); - return ERR_PTR(ret); - } - if (is_a7xx) ret =3D adreno_gpu_init(dev, pdev, adreno_gpu, &funcs_a7xx, 1); else if (adreno_has_gmu_wrapper(adreno_gpu)) diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/= adreno/adreno_gpu.c index 055072260b3d..8b2bc5f147e8 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -1060,8 +1060,8 @@ void adreno_gpu_ocmem_cleanup(struct adreno_ocmem *ad= reno_ocmem) adreno_ocmem->hdl); } =20 -int adreno_read_speedbin(struct adreno_gpu *adreno_gpu, - struct device *dev, u32 *fuse) +static int adreno_read_speedbin(struct adreno_gpu *adreno_gpu, + struct device *dev, u32 *fuse) { u32 fcode; int ret; @@ -1095,6 +1095,46 @@ int adreno_read_speedbin(struct adreno_gpu *adreno_g= pu, return 0; } =20 +#define ADRENO_SPEEDBIN_FUSE_NODATA 0xFFFF /* Made-up large value, expecte= d by mesa */ +static int adreno_set_speedbin(struct adreno_gpu *adreno_gpu, struct devic= e *dev) +{ + const struct adreno_info *info =3D adreno_gpu->info; + u32 fuse =3D ADRENO_SPEEDBIN_FUSE_NODATA; + u32 supp_hw =3D UINT_MAX; + int ret; + + /* No speedbins defined for this GPU SKU =3D> allow all defined OPPs */ + if (!info->speedbins) { + adreno_gpu->speedbin =3D ADRENO_SPEEDBIN_FUSE_NODATA; + return devm_pm_opp_set_supported_hw(dev, &supp_hw, 1); + } + + /* + * If a real error (not counting older devicetrees having no nvmem refere= nces) + * occurs when trying to get the fuse value, bail out. + */ + ret =3D adreno_read_speedbin(adreno_gpu, dev, &fuse); + if (ret) { + return ret; + } else if (fuse =3D=3D ADRENO_SPEEDBIN_FUSE_NODATA) { + /* The info struct has speedbin data, but the DT is too old =3D> allow a= ll OPPs */ + DRM_DEV_INFO(dev, "No GPU speed bin fuse, please update your device tree= \n"); + return devm_pm_opp_set_supported_hw(dev, &supp_hw, 1); + } + + adreno_gpu->speedbin =3D fuse; + + /* Traverse the known speedbins */ + for (int i =3D 0; info->speedbins[i].fuse !=3D SHRT_MAX; i++) { + if (info->speedbins[i].fuse =3D=3D fuse) { + supp_hw =3D BIT(info->speedbins[i].speedbin); + return devm_pm_opp_set_supported_hw(dev, &supp_hw, 1); + } + } + + return dev_err_probe(dev, -EINVAL, "Unknown speed bin fuse value: 0x%x\n"= , fuse); +} + int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, struct adreno_gpu *adreno_gpu, const struct adreno_gpu_funcs *funcs, int nr_rings) @@ -1104,7 +1144,6 @@ int adreno_gpu_init(struct drm_device *drm, struct pl= atform_device *pdev, struct msm_gpu_config adreno_gpu_config =3D { 0 }; struct msm_gpu *gpu =3D &adreno_gpu->base; const char *gpu_name; - u32 speedbin; int ret; =20 adreno_gpu->funcs =3D funcs; @@ -1131,9 +1170,9 @@ int adreno_gpu_init(struct drm_device *drm, struct pl= atform_device *pdev, devm_pm_opp_set_clkname(dev, "core"); } =20 - if (adreno_read_speedbin(adreno_gpu, dev, &speedbin) || !speedbin) - speedbin =3D 0xffff; - adreno_gpu->speedbin =3D speedbin; + ret =3D adreno_set_speedbin(adreno_gpu, dev); + if (ret) + return ret; =20 gpu_name =3D devm_kasprintf(dev, GFP_KERNEL, "%"ADRENO_CHIPID_FMT, ADRENO_CHIPID_ARGS(config->chip_id)); diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h b/drivers/gpu/drm/msm/= adreno/adreno_gpu.h index 8f2b70eaf6ad..30e8b9919adb 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h @@ -524,9 +524,6 @@ int adreno_fault_handler(struct msm_gpu *gpu, unsigned = long iova, int flags, struct adreno_smmu_fault_info *info, const char *block, u32 scratch[4]); =20 -int adreno_read_speedbin(struct adreno_gpu *adreno_gpu, - struct device *dev, u32 *speedbin); - /* * For a5xx and a6xx targets load the zap shader that is used to pull the = GPU * out of secure mode --=20 2.43.0 From nobody Thu Feb 12 23:05:22 2026 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (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 B4D5F15E5DF for ; Wed, 5 Jun 2024 20:10:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618238; cv=none; b=sgmtVaFlpINXW9RltdjF+bIrvOoUGSdRk0FiUoy9Hkvq7Gk8de0f8sg8Pj2AvT8toBMkwE3mG2d73SfJLNCjWAtfC3ZE8eRI6gI6qUlTih0vmDnWe5+JVO3M2vaarWTW7BhYoeIJYAiZZfr0HVkk1BpMaTXPIpy9J2Pu8skKI2U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717618238; c=relaxed/simple; bh=0JBK/nMl5cHZdGnJCndW0tz6llOA7aiaSZQ/G+fHoQ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NdpQ1nC2ieyPIdYSj49aRnTu9bLT6GWr0Zm9lEhyOWZ75Z+dgFGs3jaun4UNwjHi+wZoBbpTkt+I7k34AroXC7dsEbTYZlgF7b14Lb/knUte6QOWsPkTHuxG4qnYsy9tOpsCfBRtepy17wlPRtcv1zmp0oVFMlPYHscHdVq+eJ0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=dJzKGhlu; arc=none smtp.client-ip=209.85.218.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="dJzKGhlu" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-a68a288b8a4so11732766b.2 for ; Wed, 05 Jun 2024 13:10:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1717618234; x=1718223034; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=2zhSqnuAi2a4A8OlqdMxl1Xx25B3ZvBd8bPE6idYqUw=; b=dJzKGhluCCCr4ysVAwh5sufGIvlXoyGVdkE6aRZfBu6NIEk/hrcdXB4P00ShQpVKRN +egmqWd+GVCoSxXX0Lxw8T9RZQNGQPJlgwEDLb/QqhQUBgG9j4ApcIGpfsvbc2uf2Qnw ov0ujBbJODWjC16dZKGHyNA8xwjvf1D/h9dYkw+xnvZPVpDdSAQrVHtXIxe+xMdktid6 kKTxfrkTzaU36kNF7WXVeJvXM+70nzDCT/P6ZYZStSheO+JW82IjSSHwJo/9s+Re4TV0 EbfCcdLkWWRE9zWxVHWpfkJwIQ06JxSbCRtfv4SY1Om+srKp992k6L2mXWMR1FR2n6ta fO6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717618234; x=1718223034; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2zhSqnuAi2a4A8OlqdMxl1Xx25B3ZvBd8bPE6idYqUw=; b=wgh8xrM62hVlzYVHUtkd14/EDEdun8t9W2VJx8oLwlyeCYzv9kvcTyUwDpPTgnADPS jtZfupa07i6z58m8dRG8h1Gvjf+yBDyoglWAnwu7fIIbODakyu3QibE9O837gExKNtHe CMAiZQWfLs4hQigOYaSmLePG8sqKKTl8kpLUNBvnA+Lu1E4kyHbNXNoKxbH0j/IgXLaY uyr0BkH1plGamz2+B3B23OpUcsfpvZDcHryeVhb8qPFnm+DosZugQPbqEX7/Ro6NUjD3 o7v5LiTasA3KgIzNQoX1kt/lDzjmoe5+4t4BRF+WzVsFA9tEF1EaEU2Y0pnrX06zuCoe tfRw== X-Forwarded-Encrypted: i=1; AJvYcCWiS55vE4gvF/GZq5ihqngapeWYptqF/mmpGoG5QOCSBEwhM0Jo5QD06SzHY9/MXkFdkf0x9nwDSR+WdXBvrVccuRNg7V8T73zrde03 X-Gm-Message-State: AOJu0YwkNgjdFqO4fh8UU0tllJY648Ar/mjlG1OyfBd2mfix9/HElN9t dI233llQ8y845/iD9Cvd5d8SBrGjb3bSBSNbuHgiidxW30Nfk1yMBCWW1Hl7SLw= X-Google-Smtp-Source: AGHT+IFDsc8B06V+5iEYvzet3jVlB0i+L5L9Nrt/H40mqNDBPty8TYTHLtrCt5rS5peLfSWm/ftVxA== X-Received: by 2002:a50:9f2b:0:b0:578:881e:7b77 with SMTP id 4fb4d7f45d1cf-57a8bc9c0aamr3181953a12.34.1717618233978; Wed, 05 Jun 2024 13:10:33 -0700 (PDT) Received: from [127.0.1.1] (078088045245.garwolin.vectranet.pl. [78.88.45.245]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-57a31be4e36sm9717473a12.53.2024.06.05.13.10.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 13:10:33 -0700 (PDT) From: Konrad Dybcio Date: Wed, 05 Jun 2024 22:10:20 +0200 Subject: [PATCH v2 7/7] arm64: dts: qcom: sm8550: Wire up GPU speed bin & more OPPs 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: quoted-printable Message-Id: <20240605-topic-smem_speedbin-v2-7-8989d7e3d176@linaro.org> References: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> In-Reply-To: <20240605-topic-smem_speedbin-v2-0-8989d7e3d176@linaro.org> To: Bjorn Andersson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, Neil Armstrong , Konrad Dybcio X-Mailer: b4 0.14-dev Add the speedbin masks to ensure only the desired OPPs are available on chips of a given bin. Using this, add the binned 719 MHz OPP and the non-binned 124.8 MHz. Reviewed-by: Dmitry Baryshkov Signed-off-by: Konrad Dybcio --- arch/arm64/boot/dts/qcom/sm8550.dtsi | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qco= m/sm8550.dtsi index c55a818af935..5f5ddfe205b0 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -2119,48 +2119,67 @@ zap-shader { memory-region =3D <&gpu_micro_code_mem>; }; =20 - /* Speedbin needs more work on A740+, keep only lower freqs */ gpu_opp_table: opp-table { compatible =3D "operating-points-v2"; =20 + opp-719000000 { + opp-hz =3D /bits/ 64 <719000000>; + opp-level =3D ; + opp-supported-hw =3D <0x1>; + }; + opp-680000000 { opp-hz =3D /bits/ 64 <680000000>; opp-level =3D ; + opp-supported-hw =3D <0x3>; }; =20 opp-615000000 { opp-hz =3D /bits/ 64 <615000000>; opp-level =3D ; + opp-supported-hw =3D <0x3>; }; =20 opp-550000000 { opp-hz =3D /bits/ 64 <550000000>; opp-level =3D ; + opp-supported-hw =3D <0x3>; }; =20 opp-475000000 { opp-hz =3D /bits/ 64 <475000000>; opp-level =3D ; + opp-supported-hw =3D <0x3>; }; =20 opp-401000000 { opp-hz =3D /bits/ 64 <401000000>; opp-level =3D ; + opp-supported-hw =3D <0x3>; }; =20 opp-348000000 { opp-hz =3D /bits/ 64 <348000000>; opp-level =3D ; + opp-supported-hw =3D <0x3>; }; =20 opp-295000000 { opp-hz =3D /bits/ 64 <295000000>; opp-level =3D ; + opp-supported-hw =3D <0x3>; }; =20 opp-220000000 { opp-hz =3D /bits/ 64 <220000000>; opp-level =3D ; + opp-supported-hw =3D <0x3>; + }; + + opp-124800000 { + opp-hz =3D /bits/ 64 <124800000>; + opp-level =3D ; + opp-supported-hw =3D <0x3>; }; }; }; --=20 2.43.0