All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jagan Teki <jagan@amarulasolutions.com>
To: Anatolij Gustschin <agust@denx.de>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	Andre Przywara <andre.przywara@arm.com>,
	Kever Yang <kever.yang@rock-chips.com>,
	Simon Glass <sjg@chromium.org>, Heiko Stuebner <heiko@sntech.de>,
	Andy Yan <andyshrk@163.com>, Robin Murphy <robin.murphy@arm.com>
Cc: Da Xue <da.xue@libretech.co>,
	u-boot@lists.denx.de, Jagan Teki <jagan@edgeble.ai>
Subject: [PATCH v3 07/17] video: rockchip: vop: Add win offset support
Date: Wed, 17 Jan 2024 13:21:44 +0530	[thread overview]
Message-ID: <20240117075154.58747-8-jagan@amarulasolutions.com> (raw)
In-Reply-To: <20240117075154.58747-1-jagan@amarulasolutions.com>

From: Jagan Teki <jagan@edgeble.ai>

Unlike RK3399, RK3288 the Newer Rockchip SoC's like RK3328 have
different offsets for win registers.

Group the win register set via win_regs pointers so that win_offset
would point the win_regs to access for any changes in the offset value.

Signed-off-by: Jagan Teki <jagan@edgeble.ai>
---
Changes for v3, v2:
- none

 drivers/video/rockchip/rk_vop.c | 22 +++++++++++++---------
 drivers/video/rockchip/rk_vop.h |  2 ++
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/drivers/video/rockchip/rk_vop.c b/drivers/video/rockchip/rk_vop.c
index 158ba7cbf6..b719a4e4ea 100644
--- a/drivers/video/rockchip/rk_vop.c
+++ b/drivers/video/rockchip/rk_vop.c
@@ -46,6 +46,7 @@ static void rkvop_enable(struct udevice *dev, ulong fbbase,
 {
 	struct rk_vop_priv *priv = dev_get_priv(dev);
 	struct rk3288_vop *regs = priv->regs;
+	struct rk3288_vop *win_regs = priv->regs + priv->win_offset;
 	u32 lb_mode;
 	u32 rgb_mode;
 	u32 hactive = edid->hactive.typ;
@@ -53,32 +54,32 @@ static void rkvop_enable(struct udevice *dev, ulong fbbase,
 	int ret;
 
 	writel(V_ACT_WIDTH(hactive - 1) | V_ACT_HEIGHT(vactive - 1),
-	       &regs->win0_act_info);
+	       &win_regs->win0_act_info);
 
 	writel(V_DSP_XST(edid->hsync_len.typ + edid->hback_porch.typ) |
 	       V_DSP_YST(edid->vsync_len.typ + edid->vback_porch.typ),
-	       &regs->win0_dsp_st);
+	       &win_regs->win0_dsp_st);
 
 	writel(V_DSP_WIDTH(hactive - 1) |
 		V_DSP_HEIGHT(vactive - 1),
-		&regs->win0_dsp_info);
+		&win_regs->win0_dsp_info);
 
-	clrsetbits_le32(&regs->win0_color_key, M_WIN0_KEY_EN | M_WIN0_KEY_COLOR,
+	clrsetbits_le32(&win_regs->win0_color_key, M_WIN0_KEY_EN | M_WIN0_KEY_COLOR,
 			V_WIN0_KEY_EN(0) | V_WIN0_KEY_COLOR(0));
 
 	switch (fb_bits_per_pixel) {
 	case 16:
 		rgb_mode = RGB565;
-		writel(V_RGB565_VIRWIDTH(hactive), &regs->win0_vir);
+		writel(V_RGB565_VIRWIDTH(hactive), &win_regs->win0_vir);
 		break;
 	case 24:
 		rgb_mode = RGB888;
-		writel(V_RGB888_VIRWIDTH(hactive), &regs->win0_vir);
+		writel(V_RGB888_VIRWIDTH(hactive), &win_regs->win0_vir);
 		break;
 	case 32:
 	default:
 		rgb_mode = ARGB8888;
-		writel(V_ARGB888_VIRWIDTH(hactive), &regs->win0_vir);
+		writel(V_ARGB888_VIRWIDTH(hactive), &win_regs->win0_vir);
 		break;
 	}
 
@@ -91,12 +92,12 @@ static void rkvop_enable(struct udevice *dev, ulong fbbase,
 	else
 		lb_mode = LB_RGB_1280X8;
 
-	clrsetbits_le32(&regs->win0_ctrl0,
+	clrsetbits_le32(&win_regs->win0_ctrl0,
 			M_WIN0_LB_MODE | M_WIN0_DATA_FMT | M_WIN0_EN,
 			V_WIN0_LB_MODE(lb_mode) | V_WIN0_DATA_FMT(rgb_mode) |
 			V_WIN0_EN(1));
 
-	writel(fbbase, &regs->win0_yrgb_mst);
+	writel(fbbase, &win_regs->win0_yrgb_mst);
 	writel(0x01, &regs->reg_cfg_done); /* enable reg config */
 
 	ret = reset_assert(dclk_rst);
@@ -415,6 +416,8 @@ int rk_vop_probe(struct udevice *dev)
 {
 	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct rk_vop_priv *priv = dev_get_priv(dev);
+	struct rkvop_driverdata *ops =
+		(struct rkvop_driverdata *)dev_get_driver_data(dev);
 	int ret = 0;
 	ofnode port, node;
 	struct reset_ctl ahb_rst;
@@ -448,6 +451,7 @@ int rk_vop_probe(struct udevice *dev)
 #endif
 
 	priv->regs = dev_read_addr_ptr(dev);
+	priv->win_offset = ops->win_offset;
 
 	/*
 	 * Try all the ports until we find one that works. In practice this
diff --git a/drivers/video/rockchip/rk_vop.h b/drivers/video/rockchip/rk_vop.h
index 0528fb23f5..909f5602e5 100644
--- a/drivers/video/rockchip/rk_vop.h
+++ b/drivers/video/rockchip/rk_vop.h
@@ -11,6 +11,7 @@
 struct rk_vop_priv {
 	void *grf;
 	void *regs;
+	int win_offset;
 };
 
 enum vop_features {
@@ -18,6 +19,7 @@ enum vop_features {
 };
 
 struct rkvop_driverdata {
+	int win_offset;
 	/* configuration */
 	u32 features;
 	/* block-specific setters/getters */
-- 
2.25.1


  parent reply	other threads:[~2024-01-17  7:53 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-17  7:51 [PATCH v3 00/17] video: dw_hdmi: Support Vendor PHY Jagan Teki
2024-01-17  7:51 ` [PATCH v3 01/17] video: rockchip: hdmi: Detect hpd after controller init Jagan Teki
2024-01-17  7:51 ` [PATCH v3 02/17] video: dw_hdmi: Add Vendor PHY handling Jagan Teki
2024-01-17  8:58   ` Neil Armstrong
2024-01-17  7:51 ` [PATCH v3 03/17] video: dw_hdmi: Extend the HPD detection Jagan Teki
2024-01-17  8:59   ` Neil Armstrong
2024-01-17  7:51 ` [PATCH v3 04/17] video: dw_hdmi: Add read_hpd hook Jagan Teki
2024-01-17  8:59   ` Neil Armstrong
2024-01-17  7:51 ` [PATCH v3 05/17] video: dw_hdmi: Add setup_hpd hook Jagan Teki
2024-01-17  8:59   ` Neil Armstrong
2024-01-17  7:51 ` [PATCH v3 06/17] video: rockchip: vop: Simplify rkvop_enable Jagan Teki
2024-01-17  7:51 ` Jagan Teki [this message]
2024-01-17  7:51 ` [PATCH v3 08/17] video: rockchip: vop: Add dsp offset support Jagan Teki
2024-01-17  7:51 ` [PATCH v3 09/17] clk: rockchip: rk3328: Add VOP clk support Jagan Teki
2024-01-17  7:51 ` [PATCH v3 10/17] clk: rk3328: Add get hdmiphy clock Jagan Teki
2024-01-17  7:51 ` [PATCH v3 11/17] phy: rockchip: Add Rockchip INNO HDMI PHY driver Jagan Teki
2024-01-17  7:51 ` [PATCH v3 12/17] video: rockchip: Add rk3328 hdmi support Jagan Teki
2024-01-17  7:51 ` [PATCH v3 13/17] video: rockchip: Add rk3328 vop support Jagan Teki
2024-01-17  7:51 ` [PATCH v3 14/17] ARM: dts: rk3328: Enable VOP for bootph-all Jagan Teki
2024-02-19 17:21   ` Jonas Karlman
2024-02-19 18:32     ` Jagan Teki
2024-01-17  7:51 ` [PATCH v3 15/17] rockchip: Enable preconsole for rk3328 Jagan Teki
2024-01-17  7:51 ` [PATCH v3 16/17] configs: evb-rk3328: Enable vidconsole " Jagan Teki
2024-01-17  7:51 ` [PATCH v3 17/17] configs: Enable HDMI Out for ROC-RK3328-CC Jagan Teki
2024-02-19 11:49 ` [PATCH v3 00/17] video: dw_hdmi: Support Vendor PHY Jagan Teki
2024-03-14  9:25   ` Jagan Teki
2024-04-20 23:19     ` Anatolij Gustschin

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=20240117075154.58747-8-jagan@amarulasolutions.com \
    --to=jagan@amarulasolutions.com \
    --cc=agust@denx.de \
    --cc=andre.przywara@arm.com \
    --cc=andyshrk@163.com \
    --cc=da.xue@libretech.co \
    --cc=heiko@sntech.de \
    --cc=jagan@edgeble.ai \
    --cc=kever.yang@rock-chips.com \
    --cc=neil.armstrong@linaro.org \
    --cc=robin.murphy@arm.com \
    --cc=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /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.