Loading Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt +22 −0 Original line number Original line Diff line number Diff line Loading @@ -326,6 +326,28 @@ Optional properties: 2A/2B command. 2A/2B command. - qcom,dcs-cmd-by-left: Boolean to indicate that dcs command are sent - qcom,dcs-cmd-by-left: Boolean to indicate that dcs command are sent through the left DSI controller only in a dual-dsi configuration through the left DSI controller only in a dual-dsi configuration - qcom,mdss-dsi-panel-hdr-enabled: Boolean to indicate HDR support in panel. - qcom,mdss-dsi-panel-hdr-color-primaries: Array of 8 unsigned integers denoting chromaticity of panel.These values are specified in nits units. The value range is 0 through 50000. To obtain real chromacity, these values should be divided by factor of 50000. The structure of array is defined in below order value 1: x value of white chromaticity of display panel value 2: y value of white chromaticity of display panel value 3: x value of red chromaticity of display panel value 4: y value of red chromaticity of display panel value 5: x value of green chromaticity of display panel value 6: y value of green chromaticity of display panel value 7: x value of blue chromaticity of display panel value 8: y value of blue chromaticity of display panel - qcom,mdss-dsi-panel-peak-brightness: Maximum brightness supported by panel.In absence of maximum value typical value becomes peak brightness. Value is specified in nits units. To obtail real peak brightness, this value should be divided by factor of 10000. - qcom,mdss-dsi-panel-blackness-level: Blackness level supported by panel. Blackness level is defined as ratio of peak brightness to contrast. Value is specified in nits units. To obtail real blackness level, this value should be divided by factor of 10000. - qcom,mdss-dsi-lp11-init: Boolean used to enable the DSI clocks and data lanes (low power 11) - qcom,mdss-dsi-lp11-init: Boolean used to enable the DSI clocks and data lanes (low power 11) before issuing hardware reset line. before issuing hardware reset line. - qcom,mdss-dsi-init-delay-us: Delay in microseconds(us) before performing any DSI activity in lp11 - qcom,mdss-dsi-init-delay-us: Delay in microseconds(us) before performing any DSI activity in lp11 Loading arch/arm/boot/dts/qcom/dsi-panel-sharp-dualmipi-wqxga-video.dtsi +6 −2 Original line number Original line Diff line number Diff line /* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. /* Copyright (c) 2014-2016, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -64,7 +64,11 @@ qcom,mdss-dsi-panel-status-check-mode = "bta_check"; qcom,mdss-dsi-panel-status-check-mode = "bta_check"; qcom,mdss-dsi-tx-eot-append; qcom,mdss-dsi-tx-eot-append; qcom,esd-check-enabled; qcom,esd-check-enabled; qcom,mdss-dsi-panel-hdr-enabled; qcom,mdss-dsi-panel-hdr-color-primaries = <14880 15935 32435 16555 14945 30910 7790 3415>; qcom,mdss-dsi-panel-peak-brightness = <5643000>; qcom,mdss-dsi-panel-blackness-level = <6134>; qcom,config-select = <&dsi_dual_sharp_video_config0>; qcom,config-select = <&dsi_dual_sharp_video_config0>; dsi_dual_sharp_video_config0: config0 { dsi_dual_sharp_video_config0: config0 { Loading drivers/video/msm/mdss/mdss.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -161,6 +161,7 @@ enum mdss_hw_quirk { MDSS_QUIRK_FMT_PACK_PATTERN, MDSS_QUIRK_FMT_PACK_PATTERN, MDSS_QUIRK_NEED_SECURE_MAP, MDSS_QUIRK_NEED_SECURE_MAP, MDSS_QUIRK_SRC_SPLIT_ALWAYS, MDSS_QUIRK_SRC_SPLIT_ALWAYS, MDSS_QUIRK_HDR_SUPPORT_ENABLED, MDSS_QUIRK_MAX, MDSS_QUIRK_MAX, }; }; Loading drivers/video/msm/mdss/mdss_dsi_panel.c +55 −0 Original line number Original line Diff line number Diff line Loading @@ -1115,6 +1115,58 @@ void mdss_dsi_panel_dsc_pps_send(struct mdss_dsi_ctrl_pdata *ctrl, mdss_dsi_panel_cmds_send(ctrl, &pcmds, CMD_REQ_COMMIT); mdss_dsi_panel_cmds_send(ctrl, &pcmds, CMD_REQ_COMMIT); } } static int mdss_dsi_parse_hdr_settings(struct device_node *np, struct mdss_panel_info *pinfo) { int rc = 0; struct mdss_panel_hdr_properties *hdr_prop; if (!np) { pr_err("%s: device node pointer is NULL\n", __func__); return -EINVAL; } if (!pinfo) { pr_err("%s: panel info is NULL\n", __func__); return -EINVAL; } hdr_prop = &pinfo->hdr_properties; hdr_prop->hdr_enabled = of_property_read_bool(np, "qcom,mdss-dsi-panel-hdr-enabled"); if (hdr_prop->hdr_enabled) { rc = of_property_read_u32_array(np, "qcom,mdss-dsi-panel-hdr-color-primaries", hdr_prop->display_primaries, DISPLAY_PRIMARIES_COUNT); if (rc) { pr_info("%s:%d, Unable to read color primaries,rc:%u", __func__, __LINE__, hdr_prop->hdr_enabled = false); } rc = of_property_read_u32(np, "qcom,mdss-dsi-panel-peak-brightness", &(hdr_prop->peak_brightness)); if (rc) { pr_info("%s:%d, Unable to read hdr brightness, rc:%u", __func__, __LINE__, rc); hdr_prop->hdr_enabled = false; } rc = of_property_read_u32(np, "qcom,mdss-dsi-panel-blackness-level", &(hdr_prop->blackness_level)); if (rc) { pr_info("%s:%d, Unable to read hdr brightness, rc:%u", __func__, __LINE__, rc); hdr_prop->hdr_enabled = false; } } return 0; } static int mdss_dsi_parse_dsc_version(struct device_node *np, static int mdss_dsi_parse_dsc_version(struct device_node *np, struct mdss_panel_timing *timing) struct mdss_panel_timing *timing) { { Loading Loading @@ -2460,6 +2512,9 @@ static int mdss_panel_parse_dt(struct device_node *np, "qcom,mdss-dsi-lane-3-state"); "qcom,mdss-dsi-lane-3-state"); rc = mdss_panel_parse_display_timings(np, &ctrl_pdata->panel_data); rc = mdss_panel_parse_display_timings(np, &ctrl_pdata->panel_data); if (rc) return rc; rc = mdss_dsi_parse_hdr_settings(np, pinfo); if (rc) if (rc) return rc; return rc; Loading drivers/video/msm/mdss/mdss_fb.c +19 −2 Original line number Original line Diff line number Diff line Loading @@ -572,7 +572,13 @@ static ssize_t mdss_fb_get_panel_info(struct device *dev, "min_w=%d\nmin_h=%d\nroi_merge=%d\ndyn_fps_en=%d\n" "min_w=%d\nmin_h=%d\nroi_merge=%d\ndyn_fps_en=%d\n" "min_fps=%d\nmax_fps=%d\npanel_name=%s\n" "min_fps=%d\nmax_fps=%d\npanel_name=%s\n" "primary_panel=%d\nis_pluggable=%d\ndisplay_id=%s\n" "primary_panel=%d\nis_pluggable=%d\ndisplay_id=%s\n" "is_cec_supported=%d\nis_pingpong_split=%d\n", "is_cec_supported=%d\nis_pingpong_split=%d\n" "is_hdr_enabled=%d\n" "peak_brightness=%d\nblackness_level=%d\n" "white_chromaticity_x=%d\nwhite_chromaticity_y=%d\n" "red_chromaticity_x=%d\nred_chromaticity_y=%d\n" "green_chromaticity_x=%d\ngreen_chromaticity_y=%d\n" "blue_chromaticity_x=%d\nblue_chromaticity_y=%d\n", pinfo->partial_update_enabled, pinfo->partial_update_enabled, pinfo->roi_alignment.xstart_pix_align, pinfo->roi_alignment.xstart_pix_align, pinfo->roi_alignment.width_pix_align, pinfo->roi_alignment.width_pix_align, Loading @@ -584,7 +590,18 @@ static ssize_t mdss_fb_get_panel_info(struct device *dev, pinfo->dynamic_fps, pinfo->min_fps, pinfo->max_fps, pinfo->dynamic_fps, pinfo->min_fps, pinfo->max_fps, pinfo->panel_name, pinfo->is_prim_panel, pinfo->panel_name, pinfo->is_prim_panel, pinfo->is_pluggable, pinfo->display_id, pinfo->is_pluggable, pinfo->display_id, pinfo->is_cec_supported, is_pingpong_split(mfd)); pinfo->is_cec_supported, is_pingpong_split(mfd), pinfo->hdr_properties.hdr_enabled, pinfo->hdr_properties.peak_brightness, pinfo->hdr_properties.blackness_level, pinfo->hdr_properties.display_primaries[0], pinfo->hdr_properties.display_primaries[1], pinfo->hdr_properties.display_primaries[2], pinfo->hdr_properties.display_primaries[3], pinfo->hdr_properties.display_primaries[4], pinfo->hdr_properties.display_primaries[5], pinfo->hdr_properties.display_primaries[6], pinfo->hdr_properties.display_primaries[7]); return ret; return ret; } } Loading Loading
Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt +22 −0 Original line number Original line Diff line number Diff line Loading @@ -326,6 +326,28 @@ Optional properties: 2A/2B command. 2A/2B command. - qcom,dcs-cmd-by-left: Boolean to indicate that dcs command are sent - qcom,dcs-cmd-by-left: Boolean to indicate that dcs command are sent through the left DSI controller only in a dual-dsi configuration through the left DSI controller only in a dual-dsi configuration - qcom,mdss-dsi-panel-hdr-enabled: Boolean to indicate HDR support in panel. - qcom,mdss-dsi-panel-hdr-color-primaries: Array of 8 unsigned integers denoting chromaticity of panel.These values are specified in nits units. The value range is 0 through 50000. To obtain real chromacity, these values should be divided by factor of 50000. The structure of array is defined in below order value 1: x value of white chromaticity of display panel value 2: y value of white chromaticity of display panel value 3: x value of red chromaticity of display panel value 4: y value of red chromaticity of display panel value 5: x value of green chromaticity of display panel value 6: y value of green chromaticity of display panel value 7: x value of blue chromaticity of display panel value 8: y value of blue chromaticity of display panel - qcom,mdss-dsi-panel-peak-brightness: Maximum brightness supported by panel.In absence of maximum value typical value becomes peak brightness. Value is specified in nits units. To obtail real peak brightness, this value should be divided by factor of 10000. - qcom,mdss-dsi-panel-blackness-level: Blackness level supported by panel. Blackness level is defined as ratio of peak brightness to contrast. Value is specified in nits units. To obtail real blackness level, this value should be divided by factor of 10000. - qcom,mdss-dsi-lp11-init: Boolean used to enable the DSI clocks and data lanes (low power 11) - qcom,mdss-dsi-lp11-init: Boolean used to enable the DSI clocks and data lanes (low power 11) before issuing hardware reset line. before issuing hardware reset line. - qcom,mdss-dsi-init-delay-us: Delay in microseconds(us) before performing any DSI activity in lp11 - qcom,mdss-dsi-init-delay-us: Delay in microseconds(us) before performing any DSI activity in lp11 Loading
arch/arm/boot/dts/qcom/dsi-panel-sharp-dualmipi-wqxga-video.dtsi +6 −2 Original line number Original line Diff line number Diff line /* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. /* Copyright (c) 2014-2016, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -64,7 +64,11 @@ qcom,mdss-dsi-panel-status-check-mode = "bta_check"; qcom,mdss-dsi-panel-status-check-mode = "bta_check"; qcom,mdss-dsi-tx-eot-append; qcom,mdss-dsi-tx-eot-append; qcom,esd-check-enabled; qcom,esd-check-enabled; qcom,mdss-dsi-panel-hdr-enabled; qcom,mdss-dsi-panel-hdr-color-primaries = <14880 15935 32435 16555 14945 30910 7790 3415>; qcom,mdss-dsi-panel-peak-brightness = <5643000>; qcom,mdss-dsi-panel-blackness-level = <6134>; qcom,config-select = <&dsi_dual_sharp_video_config0>; qcom,config-select = <&dsi_dual_sharp_video_config0>; dsi_dual_sharp_video_config0: config0 { dsi_dual_sharp_video_config0: config0 { Loading
drivers/video/msm/mdss/mdss.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -161,6 +161,7 @@ enum mdss_hw_quirk { MDSS_QUIRK_FMT_PACK_PATTERN, MDSS_QUIRK_FMT_PACK_PATTERN, MDSS_QUIRK_NEED_SECURE_MAP, MDSS_QUIRK_NEED_SECURE_MAP, MDSS_QUIRK_SRC_SPLIT_ALWAYS, MDSS_QUIRK_SRC_SPLIT_ALWAYS, MDSS_QUIRK_HDR_SUPPORT_ENABLED, MDSS_QUIRK_MAX, MDSS_QUIRK_MAX, }; }; Loading
drivers/video/msm/mdss/mdss_dsi_panel.c +55 −0 Original line number Original line Diff line number Diff line Loading @@ -1115,6 +1115,58 @@ void mdss_dsi_panel_dsc_pps_send(struct mdss_dsi_ctrl_pdata *ctrl, mdss_dsi_panel_cmds_send(ctrl, &pcmds, CMD_REQ_COMMIT); mdss_dsi_panel_cmds_send(ctrl, &pcmds, CMD_REQ_COMMIT); } } static int mdss_dsi_parse_hdr_settings(struct device_node *np, struct mdss_panel_info *pinfo) { int rc = 0; struct mdss_panel_hdr_properties *hdr_prop; if (!np) { pr_err("%s: device node pointer is NULL\n", __func__); return -EINVAL; } if (!pinfo) { pr_err("%s: panel info is NULL\n", __func__); return -EINVAL; } hdr_prop = &pinfo->hdr_properties; hdr_prop->hdr_enabled = of_property_read_bool(np, "qcom,mdss-dsi-panel-hdr-enabled"); if (hdr_prop->hdr_enabled) { rc = of_property_read_u32_array(np, "qcom,mdss-dsi-panel-hdr-color-primaries", hdr_prop->display_primaries, DISPLAY_PRIMARIES_COUNT); if (rc) { pr_info("%s:%d, Unable to read color primaries,rc:%u", __func__, __LINE__, hdr_prop->hdr_enabled = false); } rc = of_property_read_u32(np, "qcom,mdss-dsi-panel-peak-brightness", &(hdr_prop->peak_brightness)); if (rc) { pr_info("%s:%d, Unable to read hdr brightness, rc:%u", __func__, __LINE__, rc); hdr_prop->hdr_enabled = false; } rc = of_property_read_u32(np, "qcom,mdss-dsi-panel-blackness-level", &(hdr_prop->blackness_level)); if (rc) { pr_info("%s:%d, Unable to read hdr brightness, rc:%u", __func__, __LINE__, rc); hdr_prop->hdr_enabled = false; } } return 0; } static int mdss_dsi_parse_dsc_version(struct device_node *np, static int mdss_dsi_parse_dsc_version(struct device_node *np, struct mdss_panel_timing *timing) struct mdss_panel_timing *timing) { { Loading Loading @@ -2460,6 +2512,9 @@ static int mdss_panel_parse_dt(struct device_node *np, "qcom,mdss-dsi-lane-3-state"); "qcom,mdss-dsi-lane-3-state"); rc = mdss_panel_parse_display_timings(np, &ctrl_pdata->panel_data); rc = mdss_panel_parse_display_timings(np, &ctrl_pdata->panel_data); if (rc) return rc; rc = mdss_dsi_parse_hdr_settings(np, pinfo); if (rc) if (rc) return rc; return rc; Loading
drivers/video/msm/mdss/mdss_fb.c +19 −2 Original line number Original line Diff line number Diff line Loading @@ -572,7 +572,13 @@ static ssize_t mdss_fb_get_panel_info(struct device *dev, "min_w=%d\nmin_h=%d\nroi_merge=%d\ndyn_fps_en=%d\n" "min_w=%d\nmin_h=%d\nroi_merge=%d\ndyn_fps_en=%d\n" "min_fps=%d\nmax_fps=%d\npanel_name=%s\n" "min_fps=%d\nmax_fps=%d\npanel_name=%s\n" "primary_panel=%d\nis_pluggable=%d\ndisplay_id=%s\n" "primary_panel=%d\nis_pluggable=%d\ndisplay_id=%s\n" "is_cec_supported=%d\nis_pingpong_split=%d\n", "is_cec_supported=%d\nis_pingpong_split=%d\n" "is_hdr_enabled=%d\n" "peak_brightness=%d\nblackness_level=%d\n" "white_chromaticity_x=%d\nwhite_chromaticity_y=%d\n" "red_chromaticity_x=%d\nred_chromaticity_y=%d\n" "green_chromaticity_x=%d\ngreen_chromaticity_y=%d\n" "blue_chromaticity_x=%d\nblue_chromaticity_y=%d\n", pinfo->partial_update_enabled, pinfo->partial_update_enabled, pinfo->roi_alignment.xstart_pix_align, pinfo->roi_alignment.xstart_pix_align, pinfo->roi_alignment.width_pix_align, pinfo->roi_alignment.width_pix_align, Loading @@ -584,7 +590,18 @@ static ssize_t mdss_fb_get_panel_info(struct device *dev, pinfo->dynamic_fps, pinfo->min_fps, pinfo->max_fps, pinfo->dynamic_fps, pinfo->min_fps, pinfo->max_fps, pinfo->panel_name, pinfo->is_prim_panel, pinfo->panel_name, pinfo->is_prim_panel, pinfo->is_pluggable, pinfo->display_id, pinfo->is_pluggable, pinfo->display_id, pinfo->is_cec_supported, is_pingpong_split(mfd)); pinfo->is_cec_supported, is_pingpong_split(mfd), pinfo->hdr_properties.hdr_enabled, pinfo->hdr_properties.peak_brightness, pinfo->hdr_properties.blackness_level, pinfo->hdr_properties.display_primaries[0], pinfo->hdr_properties.display_primaries[1], pinfo->hdr_properties.display_primaries[2], pinfo->hdr_properties.display_primaries[3], pinfo->hdr_properties.display_primaries[4], pinfo->hdr_properties.display_primaries[5], pinfo->hdr_properties.display_primaries[6], pinfo->hdr_properties.display_primaries[7]); return ret; return ret; } } Loading