All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Dybcio <konrad.dybcio@linaro.org>
To: Bjorn Andersson <andersson@kernel.org>,
	Rob Clark <robdclark@gmail.com>,
	 Abhinav Kumar <quic_abhinavk@quicinc.com>,
	 Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Sean Paul <sean@poorly.run>,
	 Marijn Suijten <marijn.suijten@somainline.org>,
	 David Airlie <airlied@gmail.com>,
	Daniel Vetter <daniel@ffwll.ch>,  Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	 Conor Dooley <conor+dt@kernel.org>
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 <neil.armstrong@linaro.org>,
	 Konrad Dybcio <konrad.dybcio@linaro.org>
Subject: [PATCH 2/6] soc: qcom: smem: Add pcode/fcode getters
Date: Fri, 05 Apr 2024 10:41:30 +0200	[thread overview]
Message-ID: <20240405-topic-smem_speedbin-v1-2-ce2b864251b1@linaro.org> (raw)
In-Reply-To: <20240405-topic-smem_speedbin-v1-0-ce2b864251b1@linaro.org>

Introduce getters for SoC product and feature codes and export them.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
 drivers/soc/qcom/smem.c       | 66 +++++++++++++++++++++++++++++++++++++++++++
 include/linux/soc/qcom/smem.h |  2 ++
 2 files changed, 68 insertions(+)

diff --git a/drivers/soc/qcom/smem.c b/drivers/soc/qcom/smem.c
index 7191fa0c087f..e89b4d26877a 100644
--- a/drivers/soc/qcom/smem.c
+++ b/drivers/soc/qcom/smem.c
@@ -795,6 +795,72 @@ int qcom_smem_get_soc_id(u32 *id)
 }
 EXPORT_SYMBOL_GPL(qcom_smem_get_soc_id);
 
+/**
+ * qcom_smem_get_feature_code() - return the feature code
+ * @id:	On success, we 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 = 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 >= 16 */
+	if (__le32_to_cpu(info->fmt) < SOCINFO_VERSION(0, 16))
+		return -EINVAL;
+
+	raw_code = __le32_to_cpu(info->feature_code);
+
+	/* Ensure the value makes sense */
+	if (raw_code >= SOCINFO_FC_INT_RESERVE)
+		raw_code = SOCINFO_FC_UNKNOWN;
+
+	*code = raw_code;
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(qcom_smem_get_feature_code);
+
+/**
+ * qcom_smem_get_product_code() - return the product code
+ * @id:	On success, we return the product code here.
+ *
+ * Look up feature code identifier from SMEM and return it.
+ *
+ * Return: 0 on success, negative errno on failure.
+ */
+int qcom_smem_get_product_code(u32 *code)
+{
+	struct socinfo *info;
+	u32 raw_code;
+
+	info = 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 >= 16 */
+	if (__le32_to_cpu(info->fmt) < SOCINFO_VERSION(0, 16))
+		return -EINVAL;
+
+	raw_code = __le32_to_cpu(info->pcode);
+
+	/* Ensure the value makes sense */
+	if (raw_code >= SOCINFO_FC_INT_RESERVE)
+		raw_code = SOCINFO_FC_UNKNOWN;
+
+	*code = raw_code;
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(qcom_smem_get_product_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..aef8c9fc6c08 100644
--- a/include/linux/soc/qcom/smem.h
+++ b/include/linux/soc/qcom/smem.h
@@ -13,5 +13,7 @@ int qcom_smem_get_free_space(unsigned host);
 phys_addr_t qcom_smem_virt_to_phys(void *p);
 
 int qcom_smem_get_soc_id(u32 *id);
+int qcom_smem_get_feature_code(u32 *code);
+int qcom_smem_get_product_code(u32 *code);
 
 #endif

-- 
2.40.1


  parent reply	other threads:[~2024-04-05  8:41 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-05  8:41 [PATCH 0/6] Add SMEM-based speedbin matching Konrad Dybcio
2024-04-05  8:41 ` [PATCH 1/6] soc: qcom: Move some socinfo defines to the header, expand them Konrad Dybcio
2024-04-06  2:22   ` Dmitry Baryshkov
2024-04-11 18:55   ` Elliot Berman
2024-04-11 20:05     ` Konrad Dybcio
2024-04-11 20:09       ` Elliot Berman
2024-04-11 20:24         ` Konrad Dybcio
2024-04-11 23:49           ` Elliot Berman
2024-04-12  0:10             ` Konrad Dybcio
2024-04-12  0:49               ` Elliot Berman
2024-04-05  8:41 ` Konrad Dybcio [this message]
2024-04-05 22:31   ` [PATCH 2/6] soc: qcom: smem: Add pcode/fcode getters kernel test robot
2024-04-06  2:21   ` Dmitry Baryshkov
2024-04-09 15:04     ` Konrad Dybcio
2024-04-09 15:20   ` Bjorn Andersson
2024-04-11 19:09   ` Elliot Berman
2024-04-05  8:41 ` [PATCH 3/6] drm/msm/adreno: Allow specifying default speedbin value Konrad Dybcio
2024-04-06  2:56   ` Dmitry Baryshkov
2024-04-09 15:12     ` Konrad Dybcio
2024-04-09 15:23       ` Dmitry Baryshkov
2024-04-09 17:12         ` Rob Clark
2024-04-09 18:04           ` Dmitry Baryshkov
2024-04-09 18:07             ` Konrad Dybcio
2024-04-09 18:15               ` Dmitry Baryshkov
2024-04-09 18:27                 ` Konrad Dybcio
2024-04-09 18:31                   ` Dmitry Baryshkov
2024-04-10 11:47                     ` Konrad Dybcio
2024-04-05  8:41 ` [PATCH 4/6] drm/msm/adreno: Implement SMEM-based speed bin Konrad Dybcio
2024-04-06  3:23   ` Dmitry Baryshkov
2024-04-10 11:42     ` Konrad Dybcio
2024-04-10 19:26       ` Dmitry Baryshkov
2024-04-11 21:35         ` Konrad Dybcio
2024-04-11 21:46           ` Dmitry Baryshkov
2024-04-11 22:14             ` Konrad Dybcio
2024-04-06 10:32   ` kernel test robot
2024-04-06 10:42   ` kernel test robot
2024-04-05  8:41 ` [PATCH 5/6] drm/msm/adreno: Add speedbin data for SM8550 / A740 Konrad Dybcio
2024-04-06  3:25   ` Dmitry Baryshkov
2024-04-09 15:13     ` Konrad Dybcio
2024-04-09 15:24       ` Dmitry Baryshkov
2024-04-09 18:13         ` Konrad Dybcio
2024-04-05  8:41 ` [PATCH 6/6] arm64: dts: qcom: sm8550: Wire up GPU speed bin & more OPPs Konrad Dybcio
2024-04-06  3:28 ` [PATCH 0/6] Add SMEM-based speedbin matching Dmitry Baryshkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240405-topic-smem_speedbin-v1-2-ce2b864251b1@linaro.org \
    --to=konrad.dybcio@linaro.org \
    --cc=airlied@gmail.com \
    --cc=andersson@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=daniel@ffwll.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marijn.suijten@somainline.org \
    --cc=neil.armstrong@linaro.org \
    --cc=quic_abhinavk@quicinc.com \
    --cc=robdclark@gmail.com \
    --cc=robh@kernel.org \
    --cc=sean@poorly.run \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.