diff --git a/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt b/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt index 496f68605a86..2124c58bf13b 100644 --- a/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt +++ b/Documentation/devicetree/bindings/display/bridge/analogix_dp.txt @@ -5,6 +5,7 @@ Required properties for dp-controller: platform specific such as: * "samsung,exynos5-dp" * "rockchip,rk3288-dp" + * "rockchip,rk3368-edp" * "rockchip,rk3399-edp" -reg: physical base address of the controller and length diff --git a/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt b/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt index df17fc08ff87..dc40aa715c77 100644 --- a/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt +++ b/Documentation/devicetree/bindings/display/rockchip/analogix_dp-rockchip.txt @@ -3,6 +3,7 @@ Rockchip RK3288 specific extensions to the Analogix Display Port Required properties: - compatible: "rockchip,rk3288-dp", + "rockchip,rk3368-edp", "rockchip,rk3399-edp"; - reg: physical base address of the controller and length diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index 987d361d3d9f..82e8d1006df7 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1511,11 +1511,8 @@ static int analogix_dp_dt_parse_pdata(struct analogix_dp_device *dp) switch (dp->plat_data->dev_type) { case RK3288_DP: + case RK3368_EDP: case RK3399_EDP: - /* - * Like Rk3288 DisplayPort TRM indicate that "Main link - * containing 4 physical lanes of 2.7/1.62 Gbps/lane". - */ video_info->max_link_rate = 0x0A; video_info->max_lane_count = 0x04; break; diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c index ab11565df2a3..8f1bd68701a9 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c @@ -94,7 +94,8 @@ void analogix_dp_init_analog_param(struct analogix_dp_device *dp) if (dp->plat_data && is_rockchip(dp->plat_data->dev_type)) { reg = REF_CLK_24M; - if (dp->plat_data->dev_type == RK3288_DP) + if (dp->plat_data->dev_type == RK3288_DP || + dp->plat_data->dev_type == RK3368_EDP) reg ^= REF_CLK_MASK; analogix_dp_write(dp, ANALOGIX_DP_PLL_REG_1, reg); diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index 9a4e0378c02e..239bc9f7447b 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -212,6 +212,9 @@ static void rockchip_dp_drm_encoder_enable(struct drm_encoder *encoder) int ret; u32 val; + if (!dp->data->lcdsel_grf_reg) + return; + ret = drm_of_encoder_active_endpoint_id(dp->dev->of_node, encoder); if (ret < 0) return; @@ -539,6 +542,10 @@ static const struct rockchip_dp_chip_data rk3399_edp = { .chip_type = RK3399_EDP, }; +static const struct rockchip_dp_chip_data rk3368_edp = { + .chip_type = RK3368_EDP, +}; + static const struct rockchip_dp_chip_data rk3288_dp = { .lcdsel_grf_reg = RK3288_GRF_SOC_CON6, .lcdsel_big = HIWORD_UPDATE(0, RK3288_EDP_LCDC_SEL), @@ -548,6 +555,7 @@ static const struct rockchip_dp_chip_data rk3288_dp = { static const struct of_device_id rockchip_dp_dt_ids[] = { {.compatible = "rockchip,rk3288-dp", .data = &rk3288_dp }, + {.compatible = "rockchip,rk3368-edp", .data = &rk3368_edp }, {.compatible = "rockchip,rk3399-edp", .data = &rk3399_edp }, {} }; diff --git a/include/drm/bridge/analogix_dp.h b/include/drm/bridge/analogix_dp.h index 475b706b49de..4dd3ddd52b5b 100644 --- a/include/drm/bridge/analogix_dp.h +++ b/include/drm/bridge/analogix_dp.h @@ -18,12 +18,13 @@ struct analogix_dp_device; enum analogix_dp_devtype { EXYNOS_DP, RK3288_DP, + RK3368_EDP, RK3399_EDP, }; static inline bool is_rockchip(enum analogix_dp_devtype type) { - return type == RK3288_DP || type == RK3399_EDP; + return type == RK3288_DP || type == RK3399_EDP || type == RK3368_EDP; } struct analogix_dp_plat_data {