media: i2c: rk628: DSI mode add 4096x2160 res support

1.mipi date rate need to set 1850Mbps
2.DSI RGB output need to set skip first frames

Signed-off-by: Jianwei Fan <jianwei.fan@rock-chips.com>
Change-Id: I0a339e339bd94dae66be682a4481a4b0cef8ff99
This commit is contained in:
Jianwei Fan
2024-07-02 16:29:17 +08:00
committed by Tao Huang
parent 4fb1432e67
commit fc5d560717
4 changed files with 12 additions and 1 deletions

View File

@@ -114,7 +114,7 @@ void rk628_txphy_set_mode(struct rk628 *rk628, enum phy_mode mode)
unsigned int flags = bus_width & 0xff;
fhsc = fin * (fhsc / fin);
if (fhsc < 80 || fhsc > 1800)
if (fhsc < 80 || fhsc > 2000)
return;
else if (fhsc < 375)
txphy->rate_div = 4;

View File

@@ -113,4 +113,6 @@
#define CSITX1_DPHY_CTRL (CSITX1_BASE + 0x00b0)
#define CSI1_MAX_REGISTER CSITX1_DPHY_CTRL
#define CSI_SKIP_FRAME_NORMAL 1
#endif

View File

@@ -2557,6 +2557,12 @@ static long rk628_csi_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
v4l2_info(sd, "user set color range: %d\n", csi->user_color_range);
rk628_csi_set_color_range(sd);
break;
case RKMODULE_GET_SKIP_FRAME:
if (csi->plat_data->tx_mode == DSI_MODE)
*(int *)arg = CSI_SKIP_FRAME_NORMAL;
else
*(int *)arg = 0;
break;
default:
ret = -ENOIOCTLCMD;
break;

View File

@@ -302,6 +302,9 @@ u32 rk628_dsi_get_lane_rate_mbps(struct rk628_dsi *dsi)
else
lane_rate = 700;
if (dsi->timings.bt.width == 4096 && lane_rate > 1300)
lane_rate = 1850;
return lane_rate;
}
EXPORT_SYMBOL(rk628_dsi_get_lane_rate_mbps);