All of lore.kernel.org
 help / color / mirror / Atom feed
From: Biju Das <biju.das.jz@bp.renesas.com>
To: cip-dev@lists.cip-project.org,
	Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>,
	Pavel Machek <pavel@denx.de>
Cc: Biju Das <biju.das.jz@bp.renesas.com>,
	Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Subject: [PATCH 5.10.y-cip 09/18] media: renesas: vsp1: Add support for VSP software version
Date: Thu,  7 Dec 2023 13:46:48 +0000	[thread overview]
Message-ID: <20231207134657.371420-10-biju.das.jz@bp.renesas.com> (raw)
In-Reply-To: <20231207134657.371420-1-biju.das.jz@bp.renesas.com>

commit 9c63902745020ca415806064ca8694b983ea436e upstream.

The VSPD block on RZ/G2L SoCs does not have a version register.

This patch adds support for adding VSP software version based on
device match.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
 drivers/media/platform/vsp1/vsp1.h      |  1 +
 drivers/media/platform/vsp1/vsp1_drv.c  | 43 +++++++++++++++++--------
 drivers/media/platform/vsp1/vsp1_regs.h |  2 ++
 3 files changed, 33 insertions(+), 13 deletions(-)

diff --git a/drivers/media/platform/vsp1/vsp1.h b/drivers/media/platform/vsp1/vsp1.h
index d4676257f1e9..27e7cd70a890 100644
--- a/drivers/media/platform/vsp1/vsp1.h
+++ b/drivers/media/platform/vsp1/vsp1.h
@@ -67,6 +67,7 @@ struct vsp1_device_info {
 	unsigned int uif_count;
 	unsigned int wpf_count;
 	unsigned int num_bru_inputs;
+	u8 soc;
 	bool uapi;
 };
 
diff --git a/drivers/media/platform/vsp1/vsp1_drv.c b/drivers/media/platform/vsp1/vsp1_drv.c
index 386cd11de4bd..e3026cb76dcc 100644
--- a/drivers/media/platform/vsp1/vsp1_drv.c
+++ b/drivers/media/platform/vsp1/vsp1_drv.c
@@ -810,11 +810,39 @@ static const struct vsp1_device_info vsp1_device_infos[] = {
 	},
 };
 
+static const struct vsp1_device_info *vsp1_lookup_info(struct vsp1_device *vsp1)
+{
+	const struct vsp1_device_info *info;
+	unsigned int i;
+
+	/*
+	 * Try the info stored in match data first for devices that don't have
+	 * a version register.
+	 */
+	info = of_device_get_match_data(vsp1->dev);
+	if (info) {
+		vsp1->version = VI6_IP_VERSION_VSP_SW | info->version | info->soc;
+		return info;
+	}
+
+	vsp1->version = vsp1_read(vsp1, VI6_IP_VERSION);
+
+	for (i = 0; i < ARRAY_SIZE(vsp1_device_infos); ++i) {
+		info = &vsp1_device_infos[i];
+
+		if ((vsp1->version & VI6_IP_VERSION_MODEL_MASK) == info->version)
+			return info;
+	}
+
+	dev_err(vsp1->dev, "unsupported IP version 0x%08x\n", vsp1->version);
+
+	return NULL;
+}
+
 static int vsp1_probe(struct platform_device *pdev)
 {
 	struct vsp1_device *vsp1;
 	struct device_node *fcp_node;
-	unsigned int i;
 	int ret;
 	int irq;
 
@@ -870,19 +898,8 @@ static int vsp1_probe(struct platform_device *pdev)
 	if (ret < 0)
 		goto done;
 
-	vsp1->version = vsp1_read(vsp1, VI6_IP_VERSION);
-
-	for (i = 0; i < ARRAY_SIZE(vsp1_device_infos); ++i) {
-		if ((vsp1->version & VI6_IP_VERSION_MODEL_MASK) ==
-		    vsp1_device_infos[i].version) {
-			vsp1->info = &vsp1_device_infos[i];
-			break;
-		}
-	}
-
+	vsp1->info = vsp1_lookup_info(vsp1);
 	if (!vsp1->info) {
-		dev_err(&pdev->dev, "unsupported IP version 0x%08x\n",
-			vsp1->version);
 		vsp1_device_put(vsp1);
 		ret = -ENXIO;
 		goto done;
diff --git a/drivers/media/platform/vsp1/vsp1_regs.h b/drivers/media/platform/vsp1/vsp1_regs.h
index 97942436868c..ce8707ff1f13 100644
--- a/drivers/media/platform/vsp1/vsp1_regs.h
+++ b/drivers/media/platform/vsp1/vsp1_regs.h
@@ -778,6 +778,8 @@
 #define VI6_IP_VERSION_SOC_M3N		(0x04 << 0)
 #define VI6_IP_VERSION_SOC_E3		(0x04 << 0)
 
+#define VI6_IP_VERSION_VSP_SW		(0xfffe << 16) /* SW VSP version */
+
 /* -----------------------------------------------------------------------------
  * RPF CLUT Registers
  */
-- 
2.25.1



  parent reply	other threads:[~2023-12-07 13:47 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-07 13:46 [PATCH 5.10.y-cip 00/18] Add VSPD/FCPVD support Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 01/18] device property: Add const qualifier to device_get_match_data() parameter Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 02/18] media: vsp1: use pm_runtime_resume_and_get() Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 03/18] media: vsp1: Make use of the helper function devm_platform_ioremap_resource() Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 04/18] media: vsp1: Fix WPF macro names Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 05/18] media: vsp1: Simplify DRM UIF handling Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 06/18] media: vsp1: Use platform_get_irq() to get the interrupt Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 07/18] media: vsp1: mask interrupts before enabling Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 08/18] media: renesas: vsp1: Add support to deassert/assert reset line Biju Das
2023-12-07 13:46 ` Biju Das [this message]
2023-12-07 13:46 ` [PATCH 5.10.y-cip 10/18] media: vsp1: Use BIT macro for feature identification Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 11/18] media: renesas: vsp1: Add VSP1_HAS_NON_ZERO_LBA feature bit Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 12/18] media: dt-bindings: media: renesas,vsp1: Document RZ/G2L VSPD bindings Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 13/18] media: dt-bindings: media: renesas,vsp1: Document RZ/V2L " Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 14/18] media: renesas: vsp1: Add support for RZ/G2L VSPD Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 15/18] arm64: dts: renesas: r9a07g044: Add fcpvd node Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 16/18] arm64: dts: renesas: r9a07g044: Add vspd node Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 17/18] arm64: dts: renesas: r9a07g054: Add fcpvd node Biju Das
2023-12-07 13:46 ` [PATCH 5.10.y-cip 18/18] arm64: dts: renesas: r9a07g054: Add vspd node Biju Das
2023-12-07 19:10 ` [PATCH 5.10.y-cip 00/18] Add VSPD/FCPVD support Pavel Machek
2023-12-07 19:18   ` Biju Das
2023-12-08 13:14 ` Pavel Machek

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=20231207134657.371420-10-biju.das.jz@bp.renesas.com \
    --to=biju.das.jz@bp.renesas.com \
    --cc=cip-dev@lists.cip-project.org \
    --cc=nobuhiro1.iwamatsu@toshiba.co.jp \
    --cc=pavel@denx.de \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    /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.