drm/rockchip: dsi: Add rv1126 MIPI DSI support
authorJagan Teki <jagan@edgeble.ai>
Mon, 31 Jul 2023 11:00:06 +0000 (16:30 +0530)
committerHeiko Stuebner <heiko@sntech.de>
Thu, 10 Aug 2023 20:54:46 +0000 (22:54 +0200)
RV1126 MIPI DSI supports V1.2 DPHY with 4 lanes and 1Gbps transfer
rate for lane.

Add support for it.

Signed-off-by: Jagan Teki <jagan@edgeble.ai>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20230731110012.2913742-9-jagan@edgeble.ai
drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c

index 0100162a73b295bb796f3b1b3106136fce3f810d..8bafb2a2747fa60b6ac68ba5bcbb7ef00fc4d979 100644 (file)
 #define RK3568_DSI1_TURNDISABLE                BIT(2)
 #define RK3568_DSI1_FORCERXMODE                BIT(0)
 
+#define RV1126_GRF_DSIPHY_CON          0x10220
+#define RV1126_DSI_FORCETXSTOPMODE     (0xf << 4)
+#define RV1126_DSI_TURNDISABLE         BIT(2)
+#define RV1126_DSI_FORCERXMODE         BIT(0)
+
 #define HIWORD_UPDATE(val, mask)       (val | (mask) << 16)
 
 enum {
@@ -1651,6 +1656,18 @@ static const struct rockchip_dw_dsi_chip_data rk3568_chip_data[] = {
        { /* sentinel */ }
 };
 
+static const struct rockchip_dw_dsi_chip_data rv1126_chip_data[] = {
+       {
+               .reg = 0xffb30000,
+               .lanecfg1_grf_reg = RV1126_GRF_DSIPHY_CON,
+               .lanecfg1 = HIWORD_UPDATE(0, RV1126_DSI_TURNDISABLE |
+                                            RV1126_DSI_FORCERXMODE |
+                                            RV1126_DSI_FORCETXSTOPMODE),
+               .max_data_lanes = 4,
+       },
+       { /* sentinel */ }
+};
+
 static const struct of_device_id dw_mipi_dsi_rockchip_dt_ids[] = {
        {
         .compatible = "rockchip,px30-mipi-dsi",
@@ -1664,6 +1681,9 @@ static const struct of_device_id dw_mipi_dsi_rockchip_dt_ids[] = {
        }, {
         .compatible = "rockchip,rk3568-mipi-dsi",
         .data = &rk3568_chip_data,
+       }, {
+        .compatible = "rockchip,rv1126-mipi-dsi",
+        .data = &rv1126_chip_data,
        },
        { /* sentinel */ }
 };