From 7fa3e04a00ec86283cafe78b54c3c0f093bfaf30 Mon Sep 17 00:00:00 2001 From: Chaoyi Chen Date: Mon, 8 Jan 2024 18:38:18 +0800 Subject: [PATCH] misc: rk628: lvds: Add support for media bus format dt-bindings In previous versions, the bus-format of lvds could be set with prop "vesa_24", "jeida_24", etc. In order to maintain consistency with the panel node, this patch adds support to for set bus-format via the `MEDIA_FORMAT` number macro. rk628-lvds { /* Equivalent to bus-format = "vesa_24"; */ bus-format = ; }; Change-Id: I3a8e51c58cfb52ff6b03917d9b33e96fa419bea1 Signed-off-by: Chaoyi Chen --- drivers/misc/rk628/rk628_lvds.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/misc/rk628/rk628_lvds.c b/drivers/misc/rk628/rk628_lvds.c index 4894b007878f..eba187fd9df0 100644 --- a/drivers/misc/rk628/rk628_lvds.c +++ b/drivers/misc/rk628/rk628_lvds.c @@ -5,8 +5,9 @@ * Author: Guochun Huang */ +#include #include "rk628.h" - +#include "rk628_lvds.h" #include "rk628_combtxphy.h" #include "rk628_config.h" #include "panel.h" @@ -24,8 +25,9 @@ static inline void lvds_update_bits(struct rk628 *rk628, u32 reg, int rk628_lvds_parse(struct rk628 *rk628, struct device_node *lvds_np) { - const char *string; + const char *string = NULL; int ret; + u32 bus_format; if (!of_device_is_available(lvds_np)) return -EINVAL; @@ -40,6 +42,24 @@ int rk628_lvds_parse(struct rk628 *rk628, struct device_node *lvds_np) else rk628->lvds.format = LVDS_FORMAT_VESA_24BIT; } + /* fallback to u32 type */ + if (!string || strlen(string) == 0) { + if (!of_property_read_u32(lvds_np, "bus-format", &bus_format)) { + switch (bus_format) { + case MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA: + rk628->lvds.format = LVDS_FORMAT_JEIDA_24BIT; + break; + case MEDIA_BUS_FMT_RGB666_1X7X3_SPWG: + rk628->lvds.format = LVDS_FORMAT_JEIDA_18BIT; + break; + case MEDIA_BUS_FMT_RGB888_1X7X4_SPWG: + rk628->lvds.format = LVDS_FORMAT_VESA_24BIT; + break; + default: + rk628->lvds.format = LVDS_FORMAT_VESA_18BIT; + } + } + } if (!of_property_read_string(lvds_np, "link-type", &string)) { if (!strcmp(string, "dual_link_odd_even_pixels"))