Skip to content

Commit f3aaa61

Browse files
macromorganmmind
authored andcommitted
drm/rockchip: dsi: add rk3568 support
Add the compatible and GRF definitions for the RK3568 soc. Signed-off-by: Chris Morgan <macromorgan@hotmail.com> Signed-off-by: Heiko Stuebner <heiko@sntech.de> Link: https://patchwork.freedesktop.org/patch/msgid/20220906174823.28561-4-macroalpha82@gmail.com
1 parent 1c3b502 commit f3aaa61

File tree

1 file changed

+49
-2
lines changed

1 file changed

+49
-2
lines changed

drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,23 @@
179179
#define RK3399_TXRX_SRC_SEL_ISP0 BIT(4)
180180
#define RK3399_TXRX_TURNREQUEST GENMASK(3, 0)
181181

182+
#define RK3568_GRF_VO_CON2 0x0368
183+
#define RK3568_DSI0_SKEWCALHS (0x1f << 11)
184+
#define RK3568_DSI0_FORCETXSTOPMODE (0xf << 4)
185+
#define RK3568_DSI0_TURNDISABLE BIT(2)
186+
#define RK3568_DSI0_FORCERXMODE BIT(0)
187+
188+
/*
189+
* Note these registers do not appear in the datasheet, they are
190+
* however present in the BSP driver which is where these values
191+
* come from. Name GRF_VO_CON3 is assumed.
192+
*/
193+
#define RK3568_GRF_VO_CON3 0x36c
194+
#define RK3568_DSI1_SKEWCALHS (0x1f << 11)
195+
#define RK3568_DSI1_FORCETXSTOPMODE (0xf << 4)
196+
#define RK3568_DSI1_TURNDISABLE BIT(2)
197+
#define RK3568_DSI1_FORCERXMODE BIT(0)
198+
182199
#define HIWORD_UPDATE(val, mask) (val | (mask) << 16)
183200

184201
enum {
@@ -735,8 +752,9 @@ static void dw_mipi_dsi_rockchip_config(struct dw_mipi_dsi_rockchip *dsi)
735752
static void dw_mipi_dsi_rockchip_set_lcdsel(struct dw_mipi_dsi_rockchip *dsi,
736753
int mux)
737754
{
738-
regmap_write(dsi->grf_regmap, dsi->cdata->lcdsel_grf_reg,
739-
mux ? dsi->cdata->lcdsel_lit : dsi->cdata->lcdsel_big);
755+
if (dsi->cdata->lcdsel_grf_reg < 0)
756+
regmap_write(dsi->grf_regmap, dsi->cdata->lcdsel_grf_reg,
757+
mux ? dsi->cdata->lcdsel_lit : dsi->cdata->lcdsel_big);
740758
}
741759

742760
static int
@@ -963,6 +981,8 @@ static int dw_mipi_dsi_rockchip_bind(struct device *dev,
963981
DRM_DEV_ERROR(dev, "Failed to create drm encoder\n");
964982
goto out_pll_clk;
965983
}
984+
rockchip_drm_encoder_set_crtc_endpoint_id(&dsi->encoder,
985+
dev->of_node, 0, 0);
966986

967987
ret = dw_mipi_dsi_bind(dsi->dmd, &dsi->encoder.encoder);
968988
if (ret) {
@@ -1612,6 +1632,30 @@ static const struct rockchip_dw_dsi_chip_data rk3399_chip_data[] = {
16121632
{ /* sentinel */ }
16131633
};
16141634

1635+
static const struct rockchip_dw_dsi_chip_data rk3568_chip_data[] = {
1636+
{
1637+
.reg = 0xfe060000,
1638+
.lcdsel_grf_reg = -1,
1639+
.lanecfg1_grf_reg = RK3568_GRF_VO_CON2,
1640+
.lanecfg1 = HIWORD_UPDATE(0, RK3568_DSI0_SKEWCALHS |
1641+
RK3568_DSI0_FORCETXSTOPMODE |
1642+
RK3568_DSI0_TURNDISABLE |
1643+
RK3568_DSI0_FORCERXMODE),
1644+
.max_data_lanes = 4,
1645+
},
1646+
{
1647+
.reg = 0xfe070000,
1648+
.lcdsel_grf_reg = -1,
1649+
.lanecfg1_grf_reg = RK3568_GRF_VO_CON3,
1650+
.lanecfg1 = HIWORD_UPDATE(0, RK3568_DSI1_SKEWCALHS |
1651+
RK3568_DSI1_FORCETXSTOPMODE |
1652+
RK3568_DSI1_TURNDISABLE |
1653+
RK3568_DSI1_FORCERXMODE),
1654+
.max_data_lanes = 4,
1655+
},
1656+
{ /* sentinel */ }
1657+
};
1658+
16151659
static const struct of_device_id dw_mipi_dsi_rockchip_dt_ids[] = {
16161660
{
16171661
.compatible = "rockchip,px30-mipi-dsi",
@@ -1622,6 +1666,9 @@ static const struct of_device_id dw_mipi_dsi_rockchip_dt_ids[] = {
16221666
}, {
16231667
.compatible = "rockchip,rk3399-mipi-dsi",
16241668
.data = &rk3399_chip_data,
1669+
}, {
1670+
.compatible = "rockchip,rk3568-mipi-dsi",
1671+
.data = &rk3568_chip_data,
16251672
},
16261673
{ /* sentinel */ }
16271674
};

0 commit comments

Comments
 (0)