drm/panel: add rotation support for Elida KD35T133 panels
authorChris Morgan <macromorgan@hotmail.com>
Fri, 2 Apr 2021 20:48:47 +0000 (15:48 -0500)
committerHeiko Stuebner <heiko@sntech.de>
Thu, 3 Jun 2021 13:05:39 +0000 (15:05 +0200)
Update the panel to allow setting the rotation value in device tree.
Tested on an Odroid Go Advance, where the panel is by default rotated 270
degrees.

Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://patchwork.freedesktop.org/patch/msgid/SN6PR06MB534253E1CFDEA6917230F57BA57A9@SN6PR06MB5342.namprd06.prod.outlook.com
drivers/gpu/drm/panel/panel-elida-kd35t133.c

index fe5ac3ef90185dd3c9fbd0165672355470d3c2ad..4787f0833264aedf71cd757fef6b9055fbd489f3 100644 (file)
@@ -42,6 +42,7 @@ struct kd35t133 {
        struct gpio_desc *reset_gpio;
        struct regulator *vdd;
        struct regulator *iovcc;
+       enum drm_panel_orientation orientation;
        bool prepared;
 };
 
@@ -216,6 +217,7 @@ static int kd35t133_get_modes(struct drm_panel *panel,
        connector->display_info.width_mm = mode->width_mm;
        connector->display_info.height_mm = mode->height_mm;
        drm_mode_probed_add(connector, mode);
+       drm_connector_set_panel_orientation(connector, ctx->orientation);
 
        return 1;
 }
@@ -258,6 +260,12 @@ static int kd35t133_probe(struct mipi_dsi_device *dsi)
                return ret;
        }
 
+       ret = of_drm_get_panel_orientation(dev->of_node, &ctx->orientation);
+       if (ret < 0) {
+               dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, ret);
+               return ret;
+       }
+
        mipi_dsi_set_drvdata(dsi, ctx);
 
        ctx->dev = dev;