From 2f7c68cb55ecb7331f2381deb497c27155f32faf Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 03 Jan 2024 09:43:39 +0000 Subject: [PATCH] update kernel to 5.10.198 --- kernel/drivers/mfd/display-serdes/serdes-panel.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 46 insertions(+), 7 deletions(-) diff --git a/kernel/drivers/mfd/display-serdes/serdes-panel.c b/kernel/drivers/mfd/display-serdes/serdes-panel.c index 9e5cc95..2793220 100644 --- a/kernel/drivers/mfd/display-serdes/serdes-panel.c +++ b/kernel/drivers/mfd/display-serdes/serdes-panel.c @@ -91,7 +91,7 @@ struct serdes *serdes = serdes_panel->parent; struct drm_display_mode *mode; u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24; - int ret = 0; + int ret = 1; connector->display_info.width_mm = serdes_panel->width_mm; //323; //346; connector->display_info.height_mm = serdes_panel->height_mm; //182; //194; @@ -108,8 +108,18 @@ if (serdes->chip_data->panel_ops && serdes->chip_data->panel_ops->get_modes) ret = serdes->chip_data->panel_ops->get_modes(serdes); - SERDES_DBG_MFD("%s: %s node=%s\n", __func__, - serdes->chip_data->name, panel->dev->of_node->name); + dev_info(serdes->dev, "%s wxh=%dx%d mode clock %u kHz, flags[0x%x]\n" + " H: %04d %04d %04d %04d\n" + " V: %04d %04d %04d %04d\n" + "bus_format: 0x%x\n", + panel->dev->of_node->name, + serdes_panel->width_mm, serdes_panel->height_mm, + mode->clock, mode->flags, + mode->hdisplay, mode->hsync_start, + mode->hsync_end, mode->htotal, + mode->vdisplay, mode->vsync_start, + mode->vsync_end, mode->vtotal, + bus_format); return ret; } @@ -129,12 +139,24 @@ struct videomode vm; int ret, len; unsigned int panel_size[2] = {320, 180}; + unsigned int link_rate_count_ssc[3] = {DP_LINK_BW_2_7, 4, 0}; + + //pr_info("%s: node=%s\n", __func__, dev->of_node->name); serdes_panel->width_mm = panel_size[0]; serdes_panel->height_mm = panel_size[1]; + serdes_panel->link_rate = link_rate_count_ssc[0]; + serdes_panel->lane_count = link_rate_count_ssc[1]; + serdes_panel->ssc = link_rate_count_ssc[2]; + if (of_find_property(dev->of_node, "panel-size", &len)) { len /= sizeof(unsigned int); + if (len != 2) { + dev_err(dev, "panel-size length is error, set 2 default\n", + dev->of_node); + len = 2; + } ret = of_property_read_u32_array(dev->of_node, "panel-size", panel_size, len); if (!ret) { @@ -143,8 +165,25 @@ } } - dev_info(dev, "panle size %dx%d\n", - serdes_panel->width_mm, serdes_panel->height_mm); + if (of_find_property(dev->of_node, "rate-count-ssc", &len)) { + len /= sizeof(unsigned int); + if (len != 3) { + dev_err(dev, "rate-count-ssc length is error, set 3 default\n", + dev->of_node); + len = 3; + } + ret = of_property_read_u32_array(dev->of_node, "rate-count-ssc", + link_rate_count_ssc, len); + if (!ret) { + serdes_panel->link_rate = link_rate_count_ssc[0]; + serdes_panel->lane_count = link_rate_count_ssc[1]; + serdes_panel->ssc = link_rate_count_ssc[2]; + } + } + + dev_info(dev, "panle size %dx%d, rate=%d, cnt=%d, ssc=%d\n", + serdes_panel->width_mm, serdes_panel->height_mm, + serdes_panel->link_rate, serdes_panel->lane_count, serdes_panel->ssc); ret = of_get_display_timing(dev->of_node, "panel-timing", &dt); if (ret < 0) { @@ -196,7 +235,8 @@ } drm_panel_add(&serdes_panel->panel); - dev_info(dev, "serdes %s serdes_panel_probe successful\n", serdes->chip_data->name); + dev_info(dev, "serdes %s-%s serdes_panel_probe successful\n", + dev_name(serdes->dev), serdes->chip_data->name); return 0; } @@ -211,7 +251,6 @@ } static const struct of_device_id serdes_panel_of_match[] = { - { .compatible = "rohm,bu18tl82-panel" }, { .compatible = "rohm,bu18rl82-panel" }, { .compatible = "maxim,max96752-panel" }, { .compatible = "maxim,max96772-panel" }, -- Gitblit v1.6.2