The RK3568 eDP controller does not require any GRF configurations,
so make the "rockchip,grf" property optional.  Also enable the
optional avdd-0v9 and avdd-1v8 supplies which power the eDP PHY.

Add the "rockchip,rk3568-edp" compatible along with its chip data;
the register base in the chip data is used to match the platform
device memory resource.

Signed-off-by: Damon Ding <[email protected]>
---
 .../gpu/drm/rockchip/analogix_dp-rockchip.c   | 20 ++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c 
b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
index ccdd4b9ecdb8..5bd59e69ae96 100644
--- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
+++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
@@ -320,8 +320,9 @@ static int rockchip_dp_of_probe(struct rockchip_dp_device 
*dp)
        struct device *dev = dp->dev;
        struct device_node *np = dev->of_node;
        struct clk *clk;
+       int ret;
 
-       dp->grf = syscon_regmap_lookup_by_phandle(np, "rockchip,grf");
+       dp->grf = syscon_regmap_lookup_by_phandle_optional(np, "rockchip,grf");
        if (IS_ERR(dp->grf))
                return dev_err_probe(dev, PTR_ERR(dp->grf),
                                     "failed to get rockchip,grf property\n");
@@ -351,6 +352,14 @@ static int rockchip_dp_of_probe(struct rockchip_dp_device 
*dp)
                return dev_err_probe(dev, PTR_ERR(dp->apbrst),
                                     "failed to get apb reset control\n");
 
+       ret = devm_regulator_get_enable_optional(dev, "avdd-0v9");
+       if (ret && ret != -ENODEV)
+               return dev_err_probe(dev, ret, "failed to enable avdd-0v9\n");
+
+       ret = devm_regulator_get_enable_optional(dev, "avdd-1v8");
+       if (ret && ret != -ENODEV)
+               return dev_err_probe(dev, ret, "failed to enable avdd-1v8\n");
+
        return 0;
 }
 
@@ -530,6 +539,14 @@ static const struct rockchip_dp_chip_data rk3288_dp[] = {
        { /* sentinel */ }
 };
 
+static const struct rockchip_dp_chip_data rk3568_edp[] = {
+       {
+               .chip_type = RK3568_EDP,
+               .reg = 0xfe0c0000,
+       },
+       { /* sentinel */ }
+};
+
 static const struct rockchip_dp_chip_data rk3576_edp[] = {
        {
                .chip_type = RK3576_EDP,
@@ -555,6 +572,7 @@ static const struct rockchip_dp_chip_data rk3588_edp[] = {
 static const struct of_device_id rockchip_dp_dt_ids[] = {
        {.compatible = "rockchip,rk3288-dp", .data = &rk3288_dp },
        {.compatible = "rockchip,rk3399-edp", .data = &rk3399_edp },
+       {.compatible = "rockchip,rk3568-edp", .data = &rk3568_edp },
        {.compatible = "rockchip,rk3576-edp", .data = &rk3576_edp },
        {.compatible = "rockchip,rk3588-edp", .data = &rk3588_edp },
        {}
-- 
2.34.1

Reply via email to