From nobody Tue May 21 09:50:06 2024 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.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 C56673FB2C for ; Wed, 17 Apr 2024 20:03:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384189; cv=none; b=c8V5RAzgdgQ0wj1ozCabgIYPVGfNjS+KehEZimbTRKcwJOX3inRr6ZmiDo0HMcDjwm11tm7DTRcEEbTX8NHNbt7J/u7u1QTT4SW4jUcoxsxIE8Fct0tpQFvWxneth/PLaIJ9GDv8yCdCmO+57cUb2vbqXwuhCZyjFRaIHzj+MCA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384189; c=relaxed/simple; bh=SzNP2N4/yEVPoBdiAdbUx+XCYML6c4ZGxmfNNn0BMu8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PBq13ZkLWDl0J3vIdd6ReZIQTTGoliY6AjaIpXLp72SRuXg4Dkh0PK5oAD0I3YEJbA/WTzyU64iE3QH3TlIYsWNXEfpLV2YOvSfcbPQUZ2NBax0HOXjw2tsauiRmLoqdz3qxcPgVe8SDYemIfTK96GS1Ait22T93HCGPSg2ugZM= 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=xKi98bHb; arc=none smtp.client-ip=209.85.208.54 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="xKi98bHb" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-56e477db7fbso113818a12.3 for ; Wed, 17 Apr 2024 13:03:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713384186; x=1713988986; 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=YvZYT8UoRgpyqJ3Vaw4KePRJPRlpkh8fBDgHRFBePWw=; b=xKi98bHba+6QbYneAs/ZwpLzJvY5ZG0RQktXSMHK/W/xQMwsickdn1jkp47J4EgoDq VofAhzIrNoXv06LgufaXYtPzfrz/VYjGJLCabklBVV84/Wt2ojDubjcm+jkVRSMemG1/ 1D4SO6XltETa1Aqx8pZItYZa8p6iRkvqBoOKStpdDsuyFjSx7bdy57VaRKa8Jc/za5oy 53wZ7K7s11hge5+jTk8NfSWzfDAUN3OMIBp4Xj95KiO9Gtmn1LFF+4cTTr3rMcBgWUl3 veAspyfv6wRcWRlavfUjxCMJ0HggywL5i0LHlXLZnOYTthqPVrATDF3I1MjXprmRqREI sBfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713384186; x=1713988986; 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=YvZYT8UoRgpyqJ3Vaw4KePRJPRlpkh8fBDgHRFBePWw=; b=ErnHzekCGotD3U9aaK8eFZKQ5j/AY2Fwx2bGEy7z0JaO5CtHdAbrh0YzBqSAA20xsp 8QHMGCZCMrZoUba9vcd38UcLpfZdaQoxJJVBd4Tm/DsZ14t6l7zjiY5PEfTQB7xW8bIP IEwB6emGBf1R98iVR4rTF/cz4S8/JmpDwl96XNMvkOeZDqPlbT4muVwaGINTg1AL3GK9 iwFzozPThNpqL7DtzOVVlVedkesWZ3VQ3cSEfa+KC1v+zbXhTAe9nHJ0oIyTE+RinSLh +/d4RbMd7mBxrHiTONWWrJCn0hKlIfegxcVOG6jEN6r9IQoJqvSDP6IuYbARC2tD0csn 8QTg== X-Forwarded-Encrypted: i=1; AJvYcCVoiIfWMT5qN9ACMGLchKVjrJXAsK9uXZL+OFF2LK5JHnSEwGvND4q8XQ1wuQr8pUY3RnmjGn3uZEWe4vf7oKn79syiazYXH/nzsiF8 X-Gm-Message-State: AOJu0Yz+qUwK9E7KGLOsO+UPVioewyM+sLbB8EDGhB7lcDFEf0rdTFVC 970qRdIL4gFz5X7UJsT2kk/QTVq5oqJgz78/dvVMhlwvJ++1T6lE6KNk5aTUj7zX2wbbYBEe0S9 t X-Google-Smtp-Source: AGHT+IHeJx63U2SuWBabsr+jnCDt7p8kxECw4gkXzhp91g5G2n4sqYEssjkAMSGbTC/y0ce7j6eT7g== X-Received: by 2002:a17:906:194d:b0:a55:63d3:7499 with SMTP id b13-20020a170906194d00b00a5563d37499mr308331eje.59.1713384185935; Wed, 17 Apr 2024 13:03:05 -0700 (PDT) Received: from [192.168.45.55] (078088045141.garwolin.vectranet.pl. [78.88.45.141]) by smtp.gmail.com with ESMTPSA id xa4-20020a170906fd8400b00a5252e69c7dsm5905590ejb.160.2024.04.17.13.03.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Apr 2024 13:03:05 -0700 (PDT) From: Konrad Dybcio Date: Wed, 17 Apr 2024 22:02:53 +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: <20240404-topic-smem_speedbin-v2-1-c84f820b7e5b@linaro.org> References: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@linaro.org> In-Reply-To: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@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.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1713384181; l=1887; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=SzNP2N4/yEVPoBdiAdbUx+XCYML6c4ZGxmfNNn0BMu8=; b=HgK/hwJTnwdfBrYSRApX3bQaZFhSAeY+XugDa5UFxUJvYlnKS2mim2xdU0ygmIAUd1o8H5PKe hoI7SCi+pXUDqscrBcSuw569pKZD2VnMeWCfsnjxuDqUJ6dYW4fAVhS X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= 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 277c07a6603d..cf4616a468f2 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.44.0 From nobody Tue May 21 09:50:06 2024 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.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 54EE444C8B for ; Wed, 17 Apr 2024 20:03:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384190; cv=none; b=um8FuIlrBZTtcybV+FjUaP01FQSeoOw2Zv1FjvvqBjf+jzpeDkW5Av0M+olN8OJ1iYUTA8XWK9WiGVnILJ8yw8eh49SAieosVkFd3+SBOfqlbfl8dtw2+Sm1tOfWxWdq806GJWcxVdEDJVPzPGKX2woRnuczXROI5izulfnj1Ck= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384190; c=relaxed/simple; bh=9J7bTJW6Z2MeNhnVPByhcl4m6t24a8dv3hQEs4RW/1Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iNIyPKk9qe/QYEgH+VIcryJEsToTlKTzG0Zc2bLc+C9Djr09kjp0YXvJWQdLIvoeHfGz665poibAXjVknOxTdDTj6sv7O6DpkzqQkGtYyMaa7vPrnlYegoHquYHC9THShgmTSIP6jCg4TmhMOLJ41iF8Ph7Kw8yY12F97tNKlIo= 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=EIBTyTy8; arc=none smtp.client-ip=209.85.218.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="EIBTyTy8" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-a55323f2ef9so2777566b.1 for ; Wed, 17 Apr 2024 13:03:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713384187; x=1713988987; 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=SV6J30CfPASoymdIFYzV0/TP7ddiAe5RpBl3EgHS6Xs=; b=EIBTyTy8vlNq3dUgwpcSf6H+ieLISL1DtlR4v+jfF9o00XGT+LPhJxjEcA72N8zh3/ VilD/csQLEkSXvaMr+hJycDAw+H2tx6XqeuP7sVOdvrok6dIf7LhKuJ7qAzsWEOooTzv 8qoAtYtRjEF6yYp3/dEOYqJLzctCvQG5pEJ2/jZ0EnHE7tXqL7ckib5EhkiMJpseQjnl 5/m8BmKnByfimogTc38lgmqWygqMhc4unOaRNXgVXTS/9AT3WTF82K9cwcodJ4lsNxvG VewT+aV0mGM8dyo5PJ2WEBsypRs2Le570tjE6DkE9tEHD3RJEyEYyQ0dvYh3KvK5gGto W+jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713384187; x=1713988987; 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=SV6J30CfPASoymdIFYzV0/TP7ddiAe5RpBl3EgHS6Xs=; b=luL6mKDMchPf7i9fSNmJOMIfzB0d0Y7m6v3nB0w/dbKjRFoPIko5ItosQAzTMry+hf 0ZXWp/l1IlSh/hz/xOFx/0FeJVVi+KrKHL26zjbyuhmzIPOHtNqW720VZ+kK0m9DOlfE FQoFJeDvwcxrbgF5yo6Gr0Tp2gClDumpqgYwO8m+3A8TvCqeECq9mCdqcwnU0+em8W8G dvLR4DsbOUGhLIr1n4DxTSKB/DfgF29iBj1COIIV1TFBRRCtglPmozoR+MqHcfyq0TL1 2igsZaNP7C/FqnWGSvkLEeonIi4+84GytRn1xWKkEx4Q18xGt8MMfy8GrAT60OZu41wu vV9w== X-Forwarded-Encrypted: i=1; AJvYcCWdsAP4Njl9aRNpXNfTS77IqK8m2SWjpR6trE2pT6hLmiemlLVrvA7e0E+9OxNm80r3bqJHKoqx+r2zvBs+/3/igryhgN/Piqxvisx6 X-Gm-Message-State: AOJu0Yz7h3PrbBOI0bTpUkLJRb8diEZeTMiZZBZQ8VMqhkTRsMjPDEdD gpsKsqOUObjQkf0JDQ2mwjfn81yv6HX8fwzI8ClCAIE9nyE32p2ByENALS358FAtphbSrMzK030 H X-Google-Smtp-Source: AGHT+IEE4rTTfC2fS5MHSJv6KjEvvVOGWI1pShDXOcYNXGfN81YBcLHlG9LDzJPJpVmh0BPlqwuEww== X-Received: by 2002:a17:907:10c3:b0:a55:5c04:89a4 with SMTP id rv3-20020a17090710c300b00a555c0489a4mr334635ejb.21.1713384187494; Wed, 17 Apr 2024 13:03:07 -0700 (PDT) Received: from [192.168.45.55] (078088045141.garwolin.vectranet.pl. [78.88.45.141]) by smtp.gmail.com with ESMTPSA id xa4-20020a170906fd8400b00a5252e69c7dsm5905590ejb.160.2024.04.17.13.03.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Apr 2024 13:03:07 -0700 (PDT) From: Konrad Dybcio Date: Wed, 17 Apr 2024 22:02:54 +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: <20240404-topic-smem_speedbin-v2-2-c84f820b7e5b@linaro.org> References: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@linaro.org> In-Reply-To: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@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.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1713384181; l=3440; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=9J7bTJW6Z2MeNhnVPByhcl4m6t24a8dv3hQEs4RW/1Q=; b=4u/Mox1Q9N+V2KjoOOEjCZhuqpOUYbZD0oDyrWik5Dmyg03vy2l1Q8Y0YqOLyj0NsQdNoc2OR RXZWLV7bdp3CPY7/5IZlWwlKkSrH2MKosezQc/9nA71wDribMonE9+u X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= 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. Signed-off-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov --- 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 7191fa0c087f..29e708789eec 100644 --- a/drivers/soc/qcom/smem.c +++ b/drivers/soc/qcom/smem.c @@ -795,6 +795,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 >=3D 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 a36a3b9d4929..0943bf419e11 100644 --- a/include/linux/soc/qcom/smem.h +++ b/include/linux/soc/qcom/smem.h @@ -13,5 +13,6 @@ 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 #endif diff --git a/include/linux/soc/qcom/socinfo.h b/include/linux/soc/qcom/soci= nfo.h index 10e0a4c287f4..52439f48428f 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(0x10) + +/* Product codes */ +#define SOCINFO_PC_UNKNOWN 0 +#define SOCINFO_PCn(n) (n + 1) +#define SOCINFO_PC_RESERVE (BIT(31) - 1) + #endif --=20 2.44.0 From nobody Tue May 21 09:50:06 2024 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (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 6CF115FEE4 for ; Wed, 17 Apr 2024 20:03:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384195; cv=none; b=NRuuU4nrHXhIUnSeyEYLxPGpRZ3+4QQRH+B6xEoS10v02mPQoHcGax0EuRJqAenIxw7XA6YpmUgzYZEtdUzfugzY+TM7btZN+k9N2yBSlXr12Wgau0WUCW5aUW8D2U1ECTgPdO4b6G2LKQh6uFw+D5IrUrjGyeJQln9fRh3vs9o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384195; c=relaxed/simple; bh=U+NHb0R2aY2AoDLFItO3sg266XV8A7zlHAZIod5ceWE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Zr57oP7t9XeUFZnmtSXnA5K4LIRcNUFaEUXWWsl1XlYQxvVaadVo0uM4iz+UisNeKD6DRzkz2dkHtj5c77QdpuPyE2T5LY7YV9pgF3WJ3EYX/EferfS4gwFcDW7S9JzQc1mkbjfj1UcAj2PPW7u6gcE6H0dgQH0H3kWS1j0yIsw= 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=hORub3CC; arc=none smtp.client-ip=209.85.167.41 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="hORub3CC" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-5194cebd6caso83351e87.0 for ; Wed, 17 Apr 2024 13:03:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713384191; x=1713988991; 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=NswjQ6W9E1I4DVVC+LdC7BYZUgvwz7xRLylojwPOzVM=; b=hORub3CCm8MdKQ2hCh6RvJOwjrhpClIm+4BQHF+PhqPWfja7uVQPkt8EnFvmzJ2DYz MZPPq42VVPysF3FDq+QauuNROy8Cq+VQB+Q6YXzBcvdT2ry7XQWVxhcKeWDYrSPjAl/E Z1latH1ZALOj6IZSUCa4NncBOvjM+bLpHlkZbvFUNr6uMJxkEDQ4rurFsOcO0wVZyrIo dE2LfUwscvtds5SCes7IKcFGobcEkk+tnqCFffWag1QqnhAPgOcv/b3VJyK4pxBvyNzQ TWex09bqSTj4UdGVe4TslAjHwKq1MWMelFiUMfVAMclS402tkoAZHR/vo7K2PakaVRea afSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713384191; x=1713988991; 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=NswjQ6W9E1I4DVVC+LdC7BYZUgvwz7xRLylojwPOzVM=; b=ZeE80a5Ldf6l86Xh9u/krVw1I8RFHSn0g4Qd2m1UYNpmT8xKxdmW3EMqDVtZC01OoK o+rL4hAxtg6m/D8tv2x7zZppy/N5c1+ogpeI85gF94zT4d6QQGt04QuO6afify/XCv5V YWOQCIJ1MQSsGMJjy7siSZLxocgWu83kI604sh6mJcLxnbdkDFjMV/PuZzQ4ymaijyKr TMn5x0d1S80Wtn/rVU8VQzwIx5X2rBAwFBc1gUJEae+TzLmsKPSp193OLETt1C2r6Eqi 0coa3edgQdOO+MmZMlZ85XSTwIO8NOv9+K0pXOlwUZ+2TfOsA+97PuFCYmNxEDTAxo0H LbdQ== X-Forwarded-Encrypted: i=1; AJvYcCUwOOnTmnWIcP2IlGsWZgjybX1UN5MVZYhQMgp25w8NKS0rmzYTiiQZtpEgLU/2OR7mXYgC0Oe0rWT/tkWcdu8K+0jt04a3Y2bY3TW5 X-Gm-Message-State: AOJu0YyOH1Jwxt+oQOrjC9sBkDY6zskVDPBUDHe6oxKlz2EuQYpo0xky RC1TDN43WhCu0+NDP58uFjdYVX+K0yqBBWvy5h1NLGSZfxYh6zzs0yzzY4/UeRt0NFe4kZhvIjj 9 X-Google-Smtp-Source: AGHT+IEisFbQNlUlED1rAlsnUmOF0rNJMd8/Ylje4Xb7VE2rF4s+nRcRNWEQBTn+X+fHIJA/NbNmHA== X-Received: by 2002:ac2:51b6:0:b0:513:2c56:f5e2 with SMTP id f22-20020ac251b6000000b005132c56f5e2mr170116lfk.60.1713384189619; Wed, 17 Apr 2024 13:03:09 -0700 (PDT) Received: from [192.168.45.55] (078088045141.garwolin.vectranet.pl. [78.88.45.141]) by smtp.gmail.com with ESMTPSA id xa4-20020a170906fd8400b00a5252e69c7dsm5905590ejb.160.2024.04.17.13.03.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Apr 2024 13:03:09 -0700 (PDT) From: Konrad Dybcio Date: Wed, 17 Apr 2024 22:02:55 +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: <20240404-topic-smem_speedbin-v2-3-c84f820b7e5b@linaro.org> References: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@linaro.org> In-Reply-To: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@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.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1713384181; l=6360; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=U+NHb0R2aY2AoDLFItO3sg266XV8A7zlHAZIod5ceWE=; b=jGcKJ7BlLpkzVaxLoUqHlpKYw6sYW4Rgjb/zEIanD3h6Pg77DixFZYeB8I6GEnjlZhVuV5ts0 sA/2ttmHxqzDmI9RhQ0yfKOcp5iLDjLi/5RNnf8KzuyYpdvKQ1p9/tD X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= 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 d10323f15d40..60708c23ae4c 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -2890,13 +2890,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 @@ -3056,7 +3058,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..58fd70140685 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.44.0 From nobody Tue May 21 09:50:06 2024 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (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 B04656025E for ; Wed, 17 Apr 2024 20:03:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384195; cv=none; b=TaebAo03EjjyYLbSgoE7hBcZScbMqIJZ6Ah6MuX9K0E+OFt5PzCQl5Lf+ff3G7O+V1PFiYymw6bDc67IxVNry75Gff+3cSEsPD3T6dmIhgW1eoVlLO66f7MKMtw83qiGSJ/jmP6oAxu7ZKj3OI8k3LP4JzF3yKfiMqLa+Vmsd4o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384195; c=relaxed/simple; bh=npBgux6bk5AO5WT4DCEsUOpTuW4/rkHnMNv0Oi6y770=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZlzjwhOcmb53KyZ32MunwfovvWkrdK3IbBYUaClg8gsLXrQ5gkpAsVLCSHkCyTjY8RFNGJiZRJ4x9ilRsbM68lrqb3WOh/owJSL/u1XjaOCmlPAjcVeHrQPTP4H4SOC8cdoY63rQCoN40kTVfy24+RrIwNgwIgf9b30w4JSdxWQ= 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=jODWByOx; arc=none smtp.client-ip=209.85.208.46 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="jODWByOx" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-5708d8beec6so145706a12.0 for ; Wed, 17 Apr 2024 13:03:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713384192; x=1713988992; 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=eu1lCQsHeKnio7sOaXuXrZB9Uomc0EWGgn8cJ3gmGiI=; b=jODWByOxMHq+ndK+VtKvQ0rqxav1u4xqNuA3gJqUxjC5j3pO0yaYXHrqQrQGgBmLBm gYEe/XVoi4OuOvEaMGBy3zPLKDdkDJeSYXCZSyN10hrFClojoupmrgIRgEMrllXYvkRT AFEW2H85LkranW/0ggmcgTgMxShBWLg0RUBUFjVmyv+UJ0Ec0mqyCAbWMa6zmJTSf2YU oEmKl+qBXPhBKJyORjoCDUkmXDMn0OXBqaS9XgxZWzCLl/5cYda+3lpTpuybRQZsUsXH jK0oY+S0DoUoY02j4uWV8jPB2AZXo7nDRN/jfvRgwwDfTfDtgGGS1jrpOgFNWZfjDqTM cRew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713384192; x=1713988992; 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=eu1lCQsHeKnio7sOaXuXrZB9Uomc0EWGgn8cJ3gmGiI=; b=eclI5If1NHrxrqfUlRvwiTYs0m/PoGsSrjOyiOxzuI37C6tDhPAbA93jy4oo4VhrGm +mwetG4AAp0Z4C9hWEzBGEPYHksYKNJny5iJy2sqXorFrcVedULroron0qcwpv4gDF4I MGThELreMhWEZjATEytwoSnjrz74Y7cuRABWCzCg/36h2LD9LZuc2dykqBFRUyW+fzB/ g4lyH/6bJypUFVQ7tN2C5r7dSU5rYlg/YGjQiJyvZTkT90rR94GlCSaKkSdls8Wy6vF2 J9Q4aTYFsy2vI3iVhOqMOiFQZbND1l66wCK8gueGu7PaA2B3zwL2Eo6/mk9W0RlOR65w T5bQ== X-Forwarded-Encrypted: i=1; AJvYcCUWYL/P42VgeFo2cjS59sb/Knx7/eZjFLjJeHva8e+pkL+yCLx4YByEpfBG5ZNbzl5MKJg/pXIKHqmip96lP9Bz5csBYRhhpOaXRnr0 X-Gm-Message-State: AOJu0YzTI1DqbFHbByJFIWMBAKBAQKed9lbjbdZ/KkWFiH5qO/dho/8J D4S0359P9UrqWFe+sPNzv+eed6L9s2XRKEX4ZsmxkQnkywNhvGrAR3vH9/xRQppoI96xkFjhHQz / X-Google-Smtp-Source: AGHT+IFIvDRiJ31s+hSlsYhn+Py3IPiDyVX7dHDZl0RdvShwTlsDWXxLhY8Sx9+RMVQJq2r7fm14cw== X-Received: by 2002:a17:906:f0c8:b0:a52:617d:d77f with SMTP id dk8-20020a170906f0c800b00a52617dd77fmr367738ejb.56.1713384191895; Wed, 17 Apr 2024 13:03:11 -0700 (PDT) Received: from [192.168.45.55] (078088045141.garwolin.vectranet.pl. [78.88.45.141]) by smtp.gmail.com with ESMTPSA id xa4-20020a170906fd8400b00a5252e69c7dsm5905590ejb.160.2024.04.17.13.03.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Apr 2024 13:03:11 -0700 (PDT) From: Konrad Dybcio Date: Wed, 17 Apr 2024 22:02:56 +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: <20240404-topic-smem_speedbin-v2-4-c84f820b7e5b@linaro.org> References: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@linaro.org> In-Reply-To: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@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.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1713384181; l=902; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=npBgux6bk5AO5WT4DCEsUOpTuW4/rkHnMNv0Oi6y770=; b=ts7z6ZIKK7AXNNK+04lsJTke6GzCYGY4YjqPBzvs+E2Q9SC1gprs3T172vQ2M9MvAq5v0QKoP 40+y85UeVa6A+N71RkbN+f5uOrO831Eks8B8s+dyoqIMjDrvAsTCffT X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= Add speebin data for A740, as found on SM8550 and derivative SoCs. Signed-off-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/adreno/adreno_device.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/m= sm/adreno/adreno_device.c index 901ef767e491..3b631445c541 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_device.c +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c @@ -570,6 +570,11 @@ 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_AB), 1 }, + { 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.44.0 From nobody Tue May 21 09:50:06 2024 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 90B2117109B for ; Wed, 17 Apr 2024 20:03:15 +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=1713384197; cv=none; b=LRhHPhvzl1EPcivpdhiszUPNAVFHujd5IdZJRmHZ4TjX5zhR2GJdMXEJX12ga92dPkhJTunYsyMaMGa28g+bIS7njd11uGxKmcfZo2QgefWnWeuA/8Q273oCnZ3npS1OzlNUwNYufUnML6IWJ5Ux14Yl2Py8a1lQl+JeS2LTKs8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384197; c=relaxed/simple; bh=7hn9yWc0x+ZGVLx5RkT997HsicwrF9htKGIWH4IlDYk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IsbiqH5ufhfzgGJHOFh5Lckb+HIo7wWZVetUCBuowOjbKrd+1DBxH9s1qeGFveU7jTqwJP2x2hCx90UK+7WQooBP6BPuQTdXQ1ST/nDVbV70M/ktPGiTFbbFEz/D3JTFFktsqGiVsEDbV02YwXdled9lV+OfQmfGa5lWxnAsSJo= 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=IWnwi9PW; 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="IWnwi9PW" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-56e509baddaso85344a12.1 for ; Wed, 17 Apr 2024 13:03:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713384194; x=1713988994; 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=Ug4Rbf1oUs+Ggz/DgrdHVTQ5VxhiXHJ5sy7PE+JibXc=; b=IWnwi9PWBiXJlR/q81ymc74xt6FdNuwLeX1CtmN1feVVJD+hEU09qsaKElX1nUXY68 Ja9jCBMDTcJcVBH/q6sTyTWJDRE+TLLtduPib5r/H7b0G43oGxVKh1j+lJiVtNJooXUz 1Ghopy6VYJEbcXMLdo/fdcbJF/Ldln7T4lblP6wJ1y4vbAjcNero2/XK84GjkPhIjI+0 oFPRqy3FSyIsNbiG10wjShqnpqr9JYffQ/9eVvtNz0ma56tteferMWCJ0hXG5lcvmMCf eUoxPYLa2qTXj6VoGgg7m5e5W2Z775YH6OcYB9muxhwJqGr/6nA2HESxN4Q69lWVOoVF sqKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713384194; x=1713988994; 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=Ug4Rbf1oUs+Ggz/DgrdHVTQ5VxhiXHJ5sy7PE+JibXc=; b=YEoL1O7oYQuUeqlMg0RH5bcZhSl7ah3wF+zSOxsWNj1+afphLZ2Y8J4sCCtvMAdT3x PP7PwystdT6ywHskCvUa4Oi5qq6W5lfBC4ePlczvJ8sMOPQIfjx5jBdFkP+dxK4b+L/X M53hg/xyjOreOdI1p3oIq5aaBlUH1VR/d1uER97dHu5WDEC0GETjb1au1kv7ISYPaWBq wX0Bfvx5lGFbyIcTZu3pRDco7o/7Xj/CjoWhNJVZWKf7O45tcFwo8625DHqEN3c/9Trk Ov7kRRljHeQPcZ3gyeAyqVBV2fNNavOOC01prX8oaNjp/CM37Z3RJhmLFBinSVPBmaXD CJBg== X-Forwarded-Encrypted: i=1; AJvYcCUsQAZvpP4fVO/VsDO/ufpo1kVGpgd+sWAUOYpO+eEkKdtJmNcKlWzwBgu04oXyT42PjAkiOOKD5APfnPmLNM9G3NcZb6uDo+TFUNAf X-Gm-Message-State: AOJu0YwtjAGMi1w+nef/LPIDhsQEc3fZVWgLj21dwj2weFzBpETSo07C QSpp0FzUwWyqX4sABROt/DiwLSmR6obj0D/WUYyhOym5q+WXIxANtCuqjkZsz8TC3iu4LRhJi6H N X-Google-Smtp-Source: AGHT+IHAyZr9H6TbxvORNTWmvyh+uqcRd5+zUK9vvdjV7xAkunQuJVY/6yEPaz70LpbJ+kjQSWci8w== X-Received: by 2002:a17:906:4f8b:b0:a52:613c:e41d with SMTP id o11-20020a1709064f8b00b00a52613ce41dmr308193eju.60.1713384193603; Wed, 17 Apr 2024 13:03:13 -0700 (PDT) Received: from [192.168.45.55] (078088045141.garwolin.vectranet.pl. [78.88.45.141]) by smtp.gmail.com with ESMTPSA id xa4-20020a170906fd8400b00a5252e69c7dsm5905590ejb.160.2024.04.17.13.03.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Apr 2024 13:03:13 -0700 (PDT) From: Konrad Dybcio Date: Wed, 17 Apr 2024 22:02:57 +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: <20240404-topic-smem_speedbin-v2-5-c84f820b7e5b@linaro.org> References: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@linaro.org> In-Reply-To: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@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.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1713384181; l=816; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=7hn9yWc0x+ZGVLx5RkT997HsicwrF9htKGIWH4IlDYk=; b=upTendAZvVn04hs77lbaX9iwU13uA6OdwVPVHomF4WSNuRbSnxxNQ1VbFLsXhTSlGKv7MNqC7 HQN2Vlx8QvcClRxHnEl2kd0FCEeFyV/7u/F1K1YX5Tfvmb7mMOtuxN3 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= In preparation for commonizing the speedbin handling code. Signed-off-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov --- 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 3b631445c541..53302995fc81 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.44.0 From nobody Tue May 21 09:50:06 2024 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (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 5C09817335E for ; Wed, 17 Apr 2024 20:03:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384199; cv=none; b=XcozzK9ZB+Mz/wbecz7CNA7j/KX/MPUh31zK38Sd4nVvhFmv60j0KDDvRh2vKDvsHGj0OFxRtGE7mSoLe5LrLTpcfeG+Mrd9aG/jjMBrdp+P+KNAKS6hhpjhyZB9VesUOum8IowPrYbxaosP87U9Gh74O8ZgIbY5z1wmfZVRHG4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384199; c=relaxed/simple; bh=S10PCpTFN0un9HwZFsMBIWkYBn7+o9GzGun7ODMa7oo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tx6e+HJfUxRloeNKiaRijiQ4q/0JW4HyvyLQgvgH4hSMr7qFkcySe4DguzFw+RTuoXWn2NPgkknnPQDJYB9X+pfueF9XLq0B469Fc4daXrvQ8oAFHhGeD06cuI1x8oxn9pF02rT08m89YgU9bx4UHRAA7M0LAzi0+IQTxjc0LQY= 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=cjoclzfb; arc=none smtp.client-ip=209.85.218.43 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="cjoclzfb" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-a556d22fa93so1051966b.3 for ; Wed, 17 Apr 2024 13:03:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713384195; x=1713988995; 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=REVFkACRaO0HAJlK+j4piakARn+ysc5bNh9PDGof5bs=; b=cjoclzfb8CFUWT6DOe94PzeeW9V03WeTW+b2ItBQVHbcgJP1D/SagEbjvy8WSthxPz RMKXr4puV7rvLE07HLuOoolGPEEiakYRWNieCptVez4WJ8A4ctusTVQAkliIYU1MvgYg lm+f/eHoIrhOa8ygr5LcoLfuZJYHyZMBnLFZNtJJ9c/Kx5/u2VryVBgIrNkQh3jwCJ1y TEM41wejNIlFipCT1JWNbc0M0CkXJ+DLw/+RAwV5CSZJ7jFwyl5HxNTiI953fW8S4dyp eyG8gtXEm6L53ruF86tWcKOJa3ID1vtf1QMInCVTxaBpVHucVdK8/RrpzCHwKYl4pyni /kMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713384195; x=1713988995; 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=REVFkACRaO0HAJlK+j4piakARn+ysc5bNh9PDGof5bs=; b=sKlxYgwXa4MvSbgSrWR+9VTt9q5dUil9QyTNrjeiPmkZ9gUMz1T1BfodtJ6Cj2z3QZ 8rko+BQKCg3FoNCqt/xOk2Q5PcJaodwHXKm8Mwr3OzCriuKOYDhH9GppBujO6CiY/y3E EssMY2j86PAbaoHyoq9tlPv1yttu1xH5nFa1yM89uRbO+1fnDKQGfXIJtovjfLLL57YZ GvLrZKk3Ts0reR35QcBu5OSxE67mF1ZXv37f8xekfA7gm5AeAgH1ca7jBEJIkf6pK2Zo ZAt3tfcldNC7ps9TfjAs03eqV+XpC/vSXwgUyRD7NvAEx/iQHcHFFbzbjzAyWfJ9DspM t7pA== X-Forwarded-Encrypted: i=1; AJvYcCUYMAdMhT+sA+717my/D7ZiIFvFek0o5ro9wvuPeKBxBeBq9CjrhgFn44pZute9GhDhs+WVbc9y8EtNJ8e6eado4IGzpNjKD0AYLLiI X-Gm-Message-State: AOJu0YyEhlMLjERtlwDaz1AtVwD/i4egXKuqVpQ4CSchztCLyFznrzBq AzLeCXZ3080X3qIAtm4Ra/+zjcbORaC9GhwiiiiEsubLh64du6Wunv8lsO3PwbiRbYGOMGo5oiX K X-Google-Smtp-Source: AGHT+IF6G2a7dhSncavEulxEx5yl7AkFOijA1bjMry8TWgW4REHvjLsQBDmImobxDNRAz733I3zRhw== X-Received: by 2002:a17:906:36d2:b0:a52:6832:1ae0 with SMTP id b18-20020a17090636d200b00a5268321ae0mr312668ejc.59.1713384195619; Wed, 17 Apr 2024 13:03:15 -0700 (PDT) Received: from [192.168.45.55] (078088045141.garwolin.vectranet.pl. [78.88.45.141]) by smtp.gmail.com with ESMTPSA id xa4-20020a170906fd8400b00a5252e69c7dsm5905590ejb.160.2024.04.17.13.03.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Apr 2024 13:03:15 -0700 (PDT) From: Konrad Dybcio Date: Wed, 17 Apr 2024 22:02:58 +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: <20240404-topic-smem_speedbin-v2-6-c84f820b7e5b@linaro.org> References: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@linaro.org> In-Reply-To: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@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.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1713384181; l=9223; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=S10PCpTFN0un9HwZFsMBIWkYBn7+o9GzGun7ODMa7oo=; b=tj5HzdetFHLQob37GHyLa73WGELw+zD8uDp+yvyhYW6oopylMs5KEwQb931kFbOLTzixsaONp L5sHsCrDE3JDTkstVV6Hrs8vWqePQaIYtNzepwpItzgy07a0mSf0sTb X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= 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 | 70 +++++++++++++++++++++++++++--= ---- drivers/gpu/drm/msm/adreno/adreno_gpu.h | 3 -- drivers/gpu/drm/msm/msm_gpu.c | 3 -- 5 files changed, 57 insertions(+), 109 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 60708c23ae4c..1242697d64a7 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -2878,55 +2878,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, @@ -3058,13 +3009,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 58fd70140685..08b2f08e2a14 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,29 +1170,34 @@ int adreno_gpu_init(struct drm_device *drm, struct = platform_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; - gpu_name =3D devm_kasprintf(dev, GFP_KERNEL, "%"ADRENO_CHIPID_FMT, ADRENO_CHIPID_ARGS(config->chip_id)); if (!gpu_name) return -ENOMEM; =20 adreno_gpu_config.ioname =3D "kgsl_3d0_reg_memory"; - adreno_gpu_config.nr_rings =3D nr_rings; =20 + pm_runtime_set_autosuspend_delay(dev, adreno_gpu->info->inactive_period); + pm_runtime_use_autosuspend(dev); + + ret =3D msm_gpu_init(drm, pdev, &adreno_gpu->base, &funcs->base, + gpu_name, &adreno_gpu_config); + if (ret) + return ret; + + ret =3D adreno_set_speedbin(adreno_gpu, dev); + if (ret) + return ret; + ret =3D adreno_get_pwrlevels(dev, gpu); if (ret) return ret; =20 - pm_runtime_set_autosuspend_delay(dev, - adreno_gpu->info->inactive_period); - pm_runtime_use_autosuspend(dev); + /* Devfreq can only be initialized after OPP */ + msm_devfreq_init(gpu); =20 - return msm_gpu_init(drm, pdev, &adreno_gpu->base, &funcs->base, - gpu_name, &adreno_gpu_config); + return 0; } =20 void adreno_gpu_cleanup(struct adreno_gpu *adreno_gpu) 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 diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c index 655002b21b0d..8504eaab8ef6 100644 --- a/drivers/gpu/drm/msm/msm_gpu.c +++ b/drivers/gpu/drm/msm/msm_gpu.c @@ -932,9 +932,6 @@ int msm_gpu_init(struct drm_device *drm, struct platfor= m_device *pdev, gpu->pdev =3D pdev; platform_set_drvdata(pdev, &gpu->adreno_smmu); =20 - msm_devfreq_init(gpu); - - gpu->aspace =3D gpu->funcs->create_address_space(gpu, pdev); =20 if (gpu->aspace =3D=3D NULL) --=20 2.44.0 From nobody Tue May 21 09:50:06 2024 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (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 BA84517557E for ; Wed, 17 Apr 2024 20:03:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384201; cv=none; b=kaXm8wjHYE8GRWfdumDo6Ga+mnuMrtZjhaEwONZgrE+FfZL7iAR40uVZEs+zh4QnuXgvNFzfRfkxZLFJj3YGYd0jRpx4plCAq/eHxjxv5Qu9T2cwGshMcU9Bo0DuCGV5Im/jJjRxb1isq9gWaj1ku5LJWHJeiGFH/4eJDgIQVxU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713384201; c=relaxed/simple; bh=N9C7J/UXFBbxcLZJ0Wle4it14ExoZJn/aRTDf20iB8I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Sz8Ieub3WVbnM0z7fjXqxKRjAd/k4VZkTe+um+DpooV6R1lLbEEvFQ+XIeZR4enkVgb/7n8tboBQhuNa1UR16OSju9+PghdM4XGU8JDB4q/F/pcYO7YGmhXUI8h3DuIWj9RSA/x/tIGm5/+WlLmkQ/5jCGg5LZmGyC0DtU1r15E= 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=se6gY84D; arc=none smtp.client-ip=209.85.167.48 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="se6gY84D" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-518a56cdbcfso72457e87.2 for ; Wed, 17 Apr 2024 13:03:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713384197; x=1713988997; 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=eYI4k5JR+67InOGrmasq4k+IdEUXSCsAg3S/O+/c6wo=; b=se6gY84DzsqhxWokngzsn+5aByus98CTgUqJWAYkNYBeVtD0pUmD1ZZ5N7/x2m7lW5 L19uaKAS7RaCOhx70wdQrWrwWjNhModtzr2bNkpWUKk5eojrNA6QzOpXPs7heuSKe6Es hNe+mN9eJfjYpdXDIO1iiu46sKi5pIXlRg4d54kX4OF8u4YpeQXodatokztwzP1sWoew UOWnPUmUYSkPUbEhsvOhrDf+it4lpH59Fbt3RXJ63dZwwROsn9HUlgUmxJxMXci5jGGQ DiSD2gXHtPhcp8N26lVFBDPhMSmzJKAK0GrLwdrGqd7POaEYZev6GA7/pKU4oXR5PsH6 v/kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713384197; x=1713988997; 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=eYI4k5JR+67InOGrmasq4k+IdEUXSCsAg3S/O+/c6wo=; b=FQLdB3vLMq6zqcg6XHW4vmrTBA28u5AwxIl7X821ZMGGNpPj9M4yY6k7CH023vaoPM j/5AjEXwnWITASn5vaTzjN6ENJBuSBwvrnFIXLiKDQXEuDXadwpQ+V5IDrYQ5c9lkwYv 51KWFSqEsTbtQrragp28yn1ql7bHl9rfGGmdtHkERIYb8z09mqZYK/pUquufnAuBSer7 /jTltIxdTjxRDaspdM57tD/ZGUl8146M3zrLA/ycRWhGOAdGGTOmuGR2Kv80U3PJTTpC 2hMGGFReYXCPe5XaqkDlpazmNG6cyzEV++OecUy6/oZIU9s/DEOw96wND3bLavPl+nQX Uy1A== X-Forwarded-Encrypted: i=1; AJvYcCVdeA+uLI+p8qhsHA7HPHz04R+QVlCsY0Syl0w9qQQgBw95AClKWh7edWDXfNRAkniMk51WPlqnDN1NKFivdIG0vFbFd+RT8+8PtMk1 X-Gm-Message-State: AOJu0Yy4owmoOQ5+htQtU7INZlYN4EAbxHOxizMyHBT3UOIts2BVot1N wTc9+UIKK/UG8CEOCWdZOmRY/QXJyMmq5qiZp2DhcHxeR8P21hA7F3Y4pkM44LlJPQgDp0ypKS1 1 X-Google-Smtp-Source: AGHT+IEveCP0Ef7EGrGrqGh7PzeSM8OltYJtYtq+rF4s+Usgg81dUYwCdW8Fjgw8tn+MFYo18gTAKg== X-Received: by 2002:ac2:4852:0:b0:518:bd37:606e with SMTP id 18-20020ac24852000000b00518bd37606emr206953lfy.13.1713384197719; Wed, 17 Apr 2024 13:03:17 -0700 (PDT) Received: from [192.168.45.55] (078088045141.garwolin.vectranet.pl. [78.88.45.141]) by smtp.gmail.com with ESMTPSA id xa4-20020a170906fd8400b00a5252e69c7dsm5905590ejb.160.2024.04.17.13.03.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Apr 2024 13:03:17 -0700 (PDT) From: Konrad Dybcio Date: Wed, 17 Apr 2024 22:02:59 +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: <20240404-topic-smem_speedbin-v2-7-c84f820b7e5b@linaro.org> References: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@linaro.org> In-Reply-To: <20240404-topic-smem_speedbin-v2-0-c84f820b7e5b@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.12.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1713384181; l=2413; i=konrad.dybcio@linaro.org; s=20230215; h=from:subject:message-id; bh=N9C7J/UXFBbxcLZJ0Wle4it14ExoZJn/aRTDf20iB8I=; b=MHA+uQvVZajZO7HB9yQ9w98lwwxIsrifK11MFrFba+JTdm7p6ywc7iaAOHKu6/NKHBghvMv0k DShJ2TmzIFCDxFEiwF2L/6pAbYWdc5a/F5PivT/SpWn3M5H58jc7ga8 X-Developer-Key: i=konrad.dybcio@linaro.org; a=ed25519; pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms= 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. Signed-off-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov --- 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 5cae8d773cec..2f6842f6a5b7 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -2087,48 +2087,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.44.0