From d72fbd047b863071e1a4c8b20776dbc17b941df9 Mon Sep 17 00:00:00 2001 From: Wyon Bi Date: Sat, 11 Jul 2020 16:35:22 +0800 Subject: [PATCH] drm/panel: simple: allows mode info not to be described in the device tree Change-Id: I4a5048dd9d590011216966817c3109dbbbde3164 Signed-off-by: Wyon Bi --- drivers/gpu/drm/panel/panel-simple.c | 30 ++++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index ef4942c5ee61..00c6e8b5a2f6 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -430,13 +430,17 @@ static int panel_simple_get_fixed_modes(struct panel_simple *panel) num++; } - connector->display_info.bpc = panel->desc->bpc; - connector->display_info.width_mm = panel->desc->size.width; - connector->display_info.height_mm = panel->desc->size.height; + if (panel->desc->bpc) + connector->display_info.bpc = panel->desc->bpc; + if (panel->desc->size.width) + connector->display_info.width_mm = panel->desc->size.width; + if (panel->desc->size.height) + connector->display_info.height_mm = panel->desc->size.height; if (panel->desc->bus_format) drm_display_info_set_bus_formats(&connector->display_info, &panel->desc->bus_format, 1); - connector->display_info.bus_flags = panel->desc->bus_flags; + if (panel->desc->bus_flags) + connector->display_info.bus_flags = panel->desc->bus_flags; return num; } @@ -3091,23 +3095,23 @@ static int panel_simple_of_get_desc_data(struct device *dev, return -ENOMEM; err = of_get_drm_display_mode(np, mode, &bus_flags, OF_USE_NATIVE_MODE); - if (err) - return err; + if (!err) { + desc->modes = mode; + desc->num_modes = 1; + desc->bus_flags = bus_flags; - desc->modes = mode; - desc->num_modes = 1; - desc->bus_flags = bus_flags; + of_property_read_u32(np, "bpc", &desc->bpc); + of_property_read_u32(np, "bus-format", &desc->bus_format); + of_property_read_u32(np, "width-mm", &desc->size.width); + of_property_read_u32(np, "height-mm", &desc->size.height); + } - of_property_read_u32(np, "bpc", &desc->bpc); - of_property_read_u32(np, "width-mm", &desc->size.width); - of_property_read_u32(np, "height-mm", &desc->size.height); of_property_read_u32(np, "prepare-delay-ms", &desc->delay.prepare); of_property_read_u32(np, "enable-delay-ms", &desc->delay.enable); of_property_read_u32(np, "disable-delay-ms", &desc->delay.disable); of_property_read_u32(np, "unprepare-delay-ms", &desc->delay.unprepare); of_property_read_u32(np, "reset-delay-ms", &desc->delay.reset); of_property_read_u32(np, "init-delay-ms", &desc->delay.init); - of_property_read_u32(np, "bus-format", &desc->bus_format); data = of_get_property(np, "panel-init-sequence", &len); if (data) {