diff --git a/drivers/gpu/drm/panel/panel-lvds.c b/drivers/gpu/drm/panel/panel-lvds.c
index 66c7d765b8f78389877cfbb45cc0ec263d85b509..fdb63ec317a3a80093af06c1d927d2def0a7e24f 100644
--- a/drivers/gpu/drm/panel/panel-lvds.c
+++ b/drivers/gpu/drm/panel/panel-lvds.c
@@ -37,6 +37,7 @@ struct panel_lvds {
 
 	struct gpio_desc *enable_gpio;
 	struct gpio_desc *reset_gpio;
+	struct gpio_desc *sel6_8_gpio;
 
 	enum drm_panel_orientation orientation;
 };
@@ -63,6 +64,12 @@ static int panel_lvds_prepare(struct drm_panel *panel)
 {
 	struct panel_lvds *lvds = to_panel_lvds(panel);
 
+	/* The sel6_8_gpio configures some displays to use 6 or 8 bit per color
+	 */
+	if (lvds->sel6_8_gpio)
+		gpiod_set_value_cansleep(lvds->sel6_8_gpio,
+			(lvds->bus_format != MEDIA_BUS_FMT_RGB666_1X7X3_SPWG ));
+
 	if (lvds->supply) {
 		int err;
 
@@ -221,6 +228,15 @@ static int panel_lvds_probe(struct platform_device *pdev)
 		return ret;
 	}
 
+	lvds->sel6_8_gpio = devm_gpiod_get_optional(lvds->dev, "sel6_8",
+						     GPIOD_OUT_LOW);
+	if (IS_ERR(lvds->sel6_8_gpio)) {
+		ret = PTR_ERR(lvds->sel6_8_gpio);
+		dev_info(lvds->dev, "failed to request %s GPIO: %d\n",
+			"sel6_8", ret);
+		return ret;
+	}
+
 	/*
 	 * TODO: Handle all power supplies specified in the DT node in a generic
 	 * way for panels that don't care about power supply ordering. LVDS