Revert "disp: msm: dp: add backlight for edp"
This reverts commit 228e520fb4.
Change-Id: I9efcac50fd1c27d2f3a6ee1a08ad941e65421ec8
This commit is contained in:
parent
cfd12f86e2
commit
4397ad20b0
10 changed files with 46 additions and 351 deletions
|
|
@ -2690,9 +2690,6 @@ static int dp_display_post_enable(struct dp_display *dp_display, void *panel)
|
|||
{
|
||||
struct dp_display_private *dp;
|
||||
struct dp_panel *dp_panel;
|
||||
struct drm_connector *connector;
|
||||
struct sde_connector *sde_conn;
|
||||
struct backlight_device *bl_device;
|
||||
int rc = 0;
|
||||
|
||||
if (!dp_display || !panel) {
|
||||
|
|
@ -2738,15 +2735,6 @@ static int dp_display_post_enable(struct dp_display *dp_display, void *panel)
|
|||
DP_ERR("Cannot turn edp backlight power on");
|
||||
goto end;
|
||||
}
|
||||
connector = dp_display->base_connector;
|
||||
sde_conn = to_sde_connector(connector);
|
||||
|
||||
sde_conn->allow_bl_update = true;
|
||||
if (sde_conn->bl_device) {
|
||||
bl_device = sde_conn->bl_device;
|
||||
bl_device->props.power = FB_BLANK_UNBLANK;
|
||||
bl_device->props.state &= ~BL_CORE_FBBLANK;
|
||||
}
|
||||
}
|
||||
|
||||
cancel_delayed_work_sync(&dp->hdcp_cb_work);
|
||||
|
|
@ -3411,37 +3399,6 @@ static int dp_display_config_hdr(struct dp_display *dp_display, void *panel,
|
|||
core_clk_rate, flush_hdr);
|
||||
}
|
||||
|
||||
static int dp_display_set_backlight(struct dp_display *dp_display,
|
||||
void *panel, u32 bl_lvl)
|
||||
{
|
||||
struct dp_panel *dp_panel;
|
||||
struct dp_display_private *dp;
|
||||
u32 bl_scale, bl_scale_sv;
|
||||
u64 bl_temp;
|
||||
|
||||
if (!dp_display || !panel) {
|
||||
DP_ERR("invalid input\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
dp = container_of(dp_display, struct dp_display_private, dp_display);
|
||||
dp_panel = panel;
|
||||
|
||||
dp_panel->bl_config.bl_level = bl_lvl;
|
||||
|
||||
/* scale backlight */
|
||||
bl_scale = dp_panel->bl_config.bl_scale;
|
||||
bl_temp = bl_lvl * bl_scale / MAX_BL_SCALE_LEVEL;
|
||||
|
||||
bl_scale_sv = dp_panel->bl_config.bl_scale_sv;
|
||||
bl_temp = (u32)bl_temp * bl_scale_sv / MAX_SV_BL_SCALE_LEVEL;
|
||||
|
||||
DP_DEBUG("bl_scale = %u, bl_scale_sv = %u, bl_lvl = %u\n",
|
||||
bl_scale, bl_scale_sv, (u32)bl_temp);
|
||||
|
||||
return dp_panel->set_backlight(dp_panel, (u32)bl_temp);
|
||||
}
|
||||
|
||||
static int dp_display_setup_colospace(struct dp_display *dp_display,
|
||||
void *panel,
|
||||
u32 colorspace)
|
||||
|
|
@ -4104,7 +4061,6 @@ static int dp_display_probe(struct platform_device *pdev)
|
|||
dp_display->wakeup_phy_layer =
|
||||
dp_display_wakeup_phy_layer;
|
||||
dp_display->set_colorspace = dp_display_setup_colospace;
|
||||
dp_display->set_backlight = dp_display_set_backlight;
|
||||
dp_display->get_available_dp_resources =
|
||||
dp_display_get_available_dp_resources;
|
||||
dp_display->get_display_type = dp_display_get_display_type;
|
||||
|
|
|
|||
|
|
@ -121,8 +121,6 @@ struct dp_display {
|
|||
bool dhdr_update);
|
||||
int (*set_colorspace)(struct dp_display *dp_display, void *panel,
|
||||
u32 colorspace);
|
||||
int (*set_backlight)(struct dp_display *dp_display, void *panel,
|
||||
u32 bl_lvl);
|
||||
int (*post_init)(struct dp_display *dp_display);
|
||||
int (*mst_install)(struct dp_display *dp_display,
|
||||
struct dp_mst_drm_install_info *mst_install_info);
|
||||
|
|
|
|||
|
|
@ -329,27 +329,6 @@ int dp_connector_config_hdr(struct drm_connector *connector, void *display,
|
|||
c_state->dyn_hdr_meta.dynamic_hdr_update);
|
||||
}
|
||||
|
||||
int dp_connector_set_backlight(struct drm_connector *connector,
|
||||
void *display, u32 bl_lvl)
|
||||
{
|
||||
struct dp_display *dp_display = display;
|
||||
struct sde_connector *sde_conn;
|
||||
|
||||
if (!dp_display || !connector) {
|
||||
DP_ERR("invalid dp display\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
sde_conn = to_sde_connector(connector);
|
||||
if (!sde_conn->drv_panel) {
|
||||
DP_ERR("invalid dp panel\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return dp_display->set_backlight(dp_display,
|
||||
sde_conn->drv_panel, bl_lvl);
|
||||
}
|
||||
|
||||
int dp_connector_set_colorspace(struct drm_connector *connector,
|
||||
void *display)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -49,15 +49,6 @@ int dp_connector_atomic_check(struct drm_connector *connector,
|
|||
void *display,
|
||||
struct drm_atomic_state *state);
|
||||
|
||||
/**
|
||||
* dp_connector_set_backlight - callback to set backlight
|
||||
* @connector: Pointer to drm connector structure
|
||||
* @display: Pointer to private display handle
|
||||
* Returns: Zero on success
|
||||
*/
|
||||
int dp_connector_set_backlight(struct drm_connector *connector,
|
||||
void *display, u32 bl_lvl);
|
||||
|
||||
/**
|
||||
* dp_connector_set_colorspace - callback to set new colorspace
|
||||
* @connector: Pointer to drm connector structure
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
|
||||
#include "dp_panel.h"
|
||||
#include <linux/unistd.h>
|
||||
#include <linux/pwm.h>
|
||||
#include <drm/drm_fixed.h>
|
||||
#include "dp_debug.h"
|
||||
#include <drm/drm_dsc.h>
|
||||
|
|
@ -2296,91 +2295,6 @@ static int dp_panel_set_stream_info(struct dp_panel *dp_panel,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int dp_panel_pwm_register(struct dp_panel *dp_panel)
|
||||
{
|
||||
int rc = 0;
|
||||
struct dp_backlight_config *bl = &dp_panel->bl_config;
|
||||
struct platform_device *pdev;
|
||||
struct device *dev;
|
||||
struct dp_panel_private *panel;
|
||||
|
||||
panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
|
||||
pdev = panel->parser->pdev;
|
||||
dev = &pdev->dev;
|
||||
|
||||
bl->pwm_bl = devm_of_pwm_get(dev, dev->of_node, NULL);
|
||||
if (IS_ERR_OR_NULL(bl->pwm_bl)) {
|
||||
rc = PTR_ERR(bl->pwm_bl);
|
||||
DP_ERR("failed to request pwm, rc=%d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void dp_panel_pwm_unregister(struct dp_panel *dp_panel)
|
||||
{
|
||||
struct dp_backlight_config *bl = &dp_panel->bl_config;
|
||||
struct platform_device *pdev;
|
||||
struct dp_panel_private *panel;
|
||||
|
||||
panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
|
||||
pdev = panel->parser->pdev;
|
||||
|
||||
if (bl->pwm_bl)
|
||||
devm_pwm_put(&pdev->dev, bl->pwm_bl);
|
||||
}
|
||||
|
||||
static int dp_panel_set_backlight(struct dp_panel *panel, u32 bl_lvl)
|
||||
{
|
||||
int rc = 0;
|
||||
u32 duty = 0;
|
||||
u32 period_ns = 0;
|
||||
struct dp_backlight_config *bl;
|
||||
|
||||
if (!panel) {
|
||||
DP_ERR("Invalid Params\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
bl = &panel->bl_config;
|
||||
if (!bl->pwm_bl) {
|
||||
DP_ERR("pwm device not found\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
DP_DEBUG("backlight lvl:%d\n", bl_lvl);
|
||||
|
||||
period_ns = bl->pwm_period_usecs * NSEC_PER_USEC;
|
||||
duty = bl_lvl * period_ns;
|
||||
duty /= bl->bl_max_level;
|
||||
|
||||
rc = pwm_config(bl->pwm_bl, duty, period_ns);
|
||||
if (rc) {
|
||||
DP_ERR("failed to change pwm config, rc=\n", rc);
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (bl_lvl == 0 && bl->pwm_enabled) {
|
||||
pwm_disable(bl->pwm_bl);
|
||||
bl->pwm_enabled = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (bl_lvl != 0 && !bl->pwm_enabled) {
|
||||
rc = pwm_enable(bl->pwm_bl);
|
||||
if (rc) {
|
||||
DP_ERR("failed to enable pwm, rc=\n", rc);
|
||||
goto error;
|
||||
}
|
||||
|
||||
bl->pwm_enabled = true;
|
||||
}
|
||||
|
||||
error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int dp_panel_init_panel_info(struct dp_panel *dp_panel)
|
||||
{
|
||||
int rc = 0;
|
||||
|
|
@ -3144,15 +3058,6 @@ struct dp_panel *dp_panel_get(struct dp_panel_in *in)
|
|||
dp_panel->fec_feature_enable = panel->parser->fec_feature_enable;
|
||||
dp_panel->dsc_continuous_pps = panel->parser->dsc_continuous_pps;
|
||||
|
||||
/* backlight config for edp */
|
||||
dp_panel->bl_config.bl_min_level = panel->parser->bl_min_level;
|
||||
dp_panel->bl_config.bl_max_level = panel->parser->bl_max_level;
|
||||
dp_panel->bl_config.brightness_max_level = panel->parser->brightness_max_level;
|
||||
dp_panel->bl_config.pwm_period_usecs = panel->parser->pwm_period_usecs;
|
||||
dp_panel->bl_config.bl_scale = MAX_BL_SCALE_LEVEL;
|
||||
dp_panel->bl_config.bl_scale_sv = MAX_SV_BL_SCALE_LEVEL;
|
||||
|
||||
|
||||
if (in->base_panel) {
|
||||
memcpy(dp_panel->dpcd, in->base_panel->dpcd,
|
||||
DP_RECEIVER_CAP_SIZE + 1);
|
||||
|
|
@ -3180,7 +3085,6 @@ struct dp_panel *dp_panel_get(struct dp_panel_in *in)
|
|||
dp_panel->spd_config = dp_panel_spd_config;
|
||||
dp_panel->setup_hdr = dp_panel_setup_hdr;
|
||||
dp_panel->set_colorspace = dp_panel_set_colorspace;
|
||||
dp_panel->set_backlight = dp_panel_set_backlight;
|
||||
dp_panel->hdr_supported = dp_panel_hdr_supported;
|
||||
dp_panel->set_stream_info = dp_panel_set_stream_info;
|
||||
dp_panel->read_sink_status = dp_panel_read_sink_sts;
|
||||
|
|
@ -3211,12 +3115,6 @@ struct dp_panel *dp_panel_get(struct dp_panel_in *in)
|
|||
}
|
||||
}
|
||||
|
||||
if (in->is_edp) {
|
||||
rc = dp_panel_pwm_register(dp_panel);
|
||||
if (rc)
|
||||
DP_ERR("Failed to register pwm\n");
|
||||
}
|
||||
|
||||
return dp_panel;
|
||||
error:
|
||||
return ERR_PTR(rc);
|
||||
|
|
@ -3234,9 +3132,6 @@ void dp_panel_put(struct dp_panel *dp_panel)
|
|||
|
||||
dp_panel_edid_deregister(panel);
|
||||
sde_conn = to_sde_connector(dp_panel->connector);
|
||||
|
||||
dp_panel_pwm_unregister(dp_panel);
|
||||
|
||||
if (sde_conn)
|
||||
sde_conn->drv_panel = NULL;
|
||||
|
||||
|
|
|
|||
|
|
@ -18,9 +18,6 @@
|
|||
#define DP_RECEIVER_DSC_CAP_SIZE 15
|
||||
#define DP_RECEIVER_FEC_STATUS_SIZE 3
|
||||
#define DP_RECEIVER_EXT_CAP_SIZE 4
|
||||
#define MAX_BL_LEVEL 4096
|
||||
#define MAX_BL_SCALE_LEVEL 1024
|
||||
#define MAX_SV_BL_SCALE_LEVEL 65535
|
||||
/*
|
||||
* A source initiated power down flag is set
|
||||
* when the DP is powered off while physical
|
||||
|
|
@ -89,22 +86,6 @@ struct dp_dsc_caps {
|
|||
u8 color_depth;
|
||||
};
|
||||
|
||||
struct dp_backlight_config {
|
||||
u32 bl_min_level;
|
||||
u32 bl_max_level;
|
||||
u32 brightness_max_level;
|
||||
u32 bl_level;
|
||||
u32 bl_scale;
|
||||
u32 bl_scale_sv;
|
||||
|
||||
int en_gpio;
|
||||
/* PWM params */
|
||||
struct pwm_device *pwm_bl;
|
||||
bool pwm_enabled;
|
||||
u32 pwm_period_usecs;
|
||||
};
|
||||
|
||||
|
||||
struct dp_audio;
|
||||
|
||||
#define DP_PANEL_CAPS_DSC BIT(0)
|
||||
|
|
@ -121,7 +102,6 @@ struct dp_panel {
|
|||
struct drm_dp_link link_info;
|
||||
struct sde_edid_ctrl *edid_ctrl;
|
||||
struct dp_panel_info pinfo;
|
||||
struct dp_backlight_config bl_config;
|
||||
bool video_test;
|
||||
bool spd_enabled;
|
||||
|
||||
|
|
@ -179,7 +159,6 @@ struct dp_panel {
|
|||
bool dhdr_update, u64 core_clk_rate, bool flush);
|
||||
int (*set_colorspace)(struct dp_panel *dp_panel,
|
||||
u32 colorspace);
|
||||
int (*set_backlight)(struct dp_panel *dp_panel, u32 bl_lvl);
|
||||
void (*tpg_config)(struct dp_panel *dp_panel, bool enable);
|
||||
int (*spd_config)(struct dp_panel *dp_panel);
|
||||
bool (*hdr_supported)(struct dp_panel *dp_panel);
|
||||
|
|
|
|||
|
|
@ -261,47 +261,6 @@ error:
|
|||
return rc;
|
||||
}
|
||||
|
||||
static void dp_parser_bl_config(struct dp_parser *parser)
|
||||
{
|
||||
int rc = 0;
|
||||
u32 val = 0;
|
||||
struct device_node *of_node = parser->pdev->dev.of_node;
|
||||
|
||||
rc = of_property_read_u32(of_node, "qcom,edp-bl-min-level", &val);
|
||||
if (rc) {
|
||||
DP_DEBUG("bl-min-level unspecified, defaulting to zero\n");
|
||||
parser->bl_min_level = 0;
|
||||
} else {
|
||||
parser->bl_min_level = val;
|
||||
}
|
||||
|
||||
rc = of_property_read_u32(of_node, "qcom,edp-bl-max-level", &val);
|
||||
if (rc) {
|
||||
DP_DEBUG("bl-max-level unspecified, defaulting to 4096\n");
|
||||
parser->bl_max_level = 4096;
|
||||
} else {
|
||||
parser->bl_max_level = val;
|
||||
}
|
||||
|
||||
rc = of_property_read_u32(of_node, "qcom,edp-brightness-max-level",
|
||||
&val);
|
||||
if (rc) {
|
||||
DP_DEBUG("brigheness-max-level unspecified, defaulting to 255\n");
|
||||
parser->brightness_max_level = 255;
|
||||
} else {
|
||||
parser->brightness_max_level = val;
|
||||
}
|
||||
|
||||
rc = of_property_read_u32(of_node, "qcom,bl-pmic-pwm-period-usecs",
|
||||
&val);
|
||||
if (rc) {
|
||||
DP_DEBUG("bl-pmic-pwm-period-usecs unspecified, default 100\n");
|
||||
parser->pwm_period_usecs = 100;
|
||||
} else {
|
||||
parser->pwm_period_usecs = val;
|
||||
}
|
||||
}
|
||||
|
||||
static int dp_parser_gpio(struct dp_parser *parser)
|
||||
{
|
||||
int i = 0;
|
||||
|
|
@ -900,7 +859,6 @@ static int dp_parser_parse(struct dp_parser *parser)
|
|||
if (rc)
|
||||
goto err;
|
||||
|
||||
dp_parser_bl_config(parser);
|
||||
dp_parser_dsc(parser);
|
||||
dp_parser_fec(parser);
|
||||
dp_parser_widebus(parser);
|
||||
|
|
|
|||
|
|
@ -236,11 +236,7 @@ static inline char *dp_phy_aux_config_type_to_string(u32 cfg_type)
|
|||
* @fec_feature_enable: FEC feature enable status
|
||||
* @dsc_continuous_pps: PPS sent every frame by HW
|
||||
* @has_widebus: widebus (2PPC) feature eanble status
|
||||
* @bl_min_level: minimum brightness value for backlight
|
||||
* @bl_max_level: maximum brightness value for backlight
|
||||
* @brightness_max_level: maximum brightness level for backlight
|
||||
* @pwm_period_usecs: pwm period in usecs for backlight pwm
|
||||
* @mst_fixed_port: mst port_num reserved for fixed topology
|
||||
*@mst_fixed_port: mst port_num reserved for fixed topology
|
||||
* @parse: function to be called by client to parse device tree.
|
||||
* @get_io: function to be called by client to get io data.
|
||||
* @get_io_buf: function to be called by client to get io buffers.
|
||||
|
|
@ -273,10 +269,6 @@ struct dp_parser {
|
|||
bool gpio_aux_switch;
|
||||
bool lphw_hpd;
|
||||
bool panel_notifier_support;
|
||||
u32 bl_min_level;
|
||||
u32 bl_max_level;
|
||||
u32 brightness_max_level;
|
||||
u32 pwm_period_usecs;
|
||||
u32 mst_fixed_port[MAX_DP_MST_STREAMS];
|
||||
u32 pixel_base_off[MAX_DP_MST_STREAMS];
|
||||
const char *mst_fixed_display_type[MAX_DP_MST_STREAMS];
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
|
|
@ -16,7 +16,6 @@
|
|||
#include <linux/string.h>
|
||||
#include "dsi_drm.h"
|
||||
#include "dsi_display.h"
|
||||
#include "dp_panel.h"
|
||||
#include "sde_crtc.h"
|
||||
#include "sde_rm.h"
|
||||
#include "sde_vm.h"
|
||||
|
|
@ -24,7 +23,6 @@
|
|||
|
||||
#define BL_NODE_NAME_SIZE 32
|
||||
#define HDR10_PLUS_VSIF_TYPE_CODE 0x81
|
||||
#define MAX_BRIGHTNESS_LEVEL 255
|
||||
|
||||
/* Autorefresh will occur after FRAME_CNT frames. Large values are unlikely */
|
||||
#define AUTOREFRESH_MAX_FRAME_CNT 6
|
||||
|
|
@ -95,16 +93,13 @@ static inline struct sde_kms *_sde_connector_get_kms(struct drm_connector *conn)
|
|||
static int sde_backlight_device_update_status(struct backlight_device *bd)
|
||||
{
|
||||
int brightness;
|
||||
struct dsi_display *dsi_display;
|
||||
struct dp_panel *dp_panel;
|
||||
struct dsi_display *display;
|
||||
struct sde_connector *c_conn = bl_get_data(bd);
|
||||
int bl_lvl;
|
||||
struct drm_event event;
|
||||
int rc = 0;
|
||||
struct sde_kms *sde_kms;
|
||||
struct sde_vm_ops *vm_ops;
|
||||
u32 bl_max_level = 0;
|
||||
u32 brightness_max_level = 0;
|
||||
|
||||
sde_kms = _sde_connector_get_kms(&c_conn->base);
|
||||
if (!sde_kms) {
|
||||
|
|
@ -119,27 +114,15 @@ static int sde_backlight_device_update_status(struct backlight_device *bd)
|
|||
(bd->props.state & BL_CORE_SUSPENDED))
|
||||
brightness = 0;
|
||||
|
||||
if (c_conn->connector_type == DRM_MODE_CONNECTOR_DSI) {
|
||||
dsi_display = (struct dsi_display *) c_conn->display;
|
||||
bl_max_level = dsi_display->panel->bl_config.bl_max_level;
|
||||
brightness_max_level =
|
||||
dsi_display->panel->bl_config.brightness_max_level;
|
||||
} else if (c_conn->connector_type == DRM_MODE_CONNECTOR_eDP) {
|
||||
dp_panel = (struct dp_panel *) c_conn->drv_panel;
|
||||
if (dp_panel) {
|
||||
bl_max_level = dp_panel->bl_config.bl_max_level;
|
||||
brightness_max_level =
|
||||
dp_panel->bl_config.brightness_max_level;
|
||||
}
|
||||
}
|
||||
|
||||
if (brightness > bl_max_level)
|
||||
brightness = bl_max_level;
|
||||
display = (struct dsi_display *) c_conn->display;
|
||||
if (brightness > display->panel->bl_config.bl_max_level)
|
||||
brightness = display->panel->bl_config.bl_max_level;
|
||||
if (brightness > c_conn->thermal_max_brightness)
|
||||
brightness = c_conn->thermal_max_brightness;
|
||||
|
||||
/* map UI brightness into driver backlight level with rounding */
|
||||
bl_lvl = mult_frac(brightness, bl_max_level, brightness_max_level);
|
||||
bl_lvl = mult_frac(brightness, display->panel->bl_config.bl_max_level,
|
||||
display->panel->bl_config.brightness_max_level);
|
||||
|
||||
if (!bl_lvl && brightness)
|
||||
bl_lvl = 1;
|
||||
|
|
@ -205,46 +188,31 @@ static int sde_backlight_setup(struct sde_connector *c_conn,
|
|||
{
|
||||
struct backlight_properties props;
|
||||
struct dsi_display *display;
|
||||
struct dp_panel *dp_panel;
|
||||
struct dsi_backlight_config *dsi_bl_config;
|
||||
struct dsi_backlight_config *bl_config;
|
||||
struct sde_kms *sde_kms;
|
||||
static int display_count;
|
||||
char bl_node_name[BL_NODE_NAME_SIZE];
|
||||
u32 brightness_max_level = 0;
|
||||
|
||||
sde_kms = _sde_connector_get_kms(&c_conn->base);
|
||||
if (!sde_kms) {
|
||||
SDE_ERROR("invalid kms\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (c_conn->connector_type == DRM_MODE_CONNECTOR_DSI) {
|
||||
display = (struct dsi_display *) c_conn->display;
|
||||
dsi_bl_config = &display->panel->bl_config;
|
||||
brightness_max_level = dsi_bl_config->brightness_max_level;
|
||||
if (dsi_bl_config->type != DSI_BACKLIGHT_DCS &&
|
||||
sde_in_trusted_vm(sde_kms))
|
||||
return 0;
|
||||
} else if (c_conn->connector_type == DRM_MODE_CONNECTOR_eDP) {
|
||||
dp_panel = (struct dp_panel *) c_conn->drv_panel;
|
||||
if (dp_panel)
|
||||
brightness_max_level =
|
||||
dp_panel->bl_config.brightness_max_level;
|
||||
else {
|
||||
brightness_max_level = MAX_BRIGHTNESS_LEVEL;
|
||||
}
|
||||
} else {
|
||||
SDE_DEBUG("invalid connector type %d\n",
|
||||
c_conn->connector_type);
|
||||
} else if (c_conn->connector_type != DRM_MODE_CONNECTOR_DSI) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
display = (struct dsi_display *) c_conn->display;
|
||||
bl_config = &display->panel->bl_config;
|
||||
|
||||
if (bl_config->type != DSI_BACKLIGHT_DCS &&
|
||||
sde_in_trusted_vm(sde_kms))
|
||||
return 0;
|
||||
|
||||
memset(&props, 0, sizeof(props));
|
||||
props.type = BACKLIGHT_RAW;
|
||||
props.power = FB_BLANK_UNBLANK;
|
||||
props.max_brightness = brightness_max_level;
|
||||
props.brightness = brightness_max_level;
|
||||
props.max_brightness = bl_config->brightness_max_level;
|
||||
props.brightness = bl_config->brightness_max_level;
|
||||
snprintf(bl_node_name, BL_NODE_NAME_SIZE, "panel%u-backlight",
|
||||
display_count);
|
||||
c_conn->bl_device = backlight_device_register(bl_node_name, dev->dev,
|
||||
|
|
@ -255,7 +223,7 @@ static int sde_backlight_setup(struct sde_connector *c_conn,
|
|||
c_conn->bl_device = NULL;
|
||||
return -ENODEV;
|
||||
}
|
||||
c_conn->thermal_max_brightness = brightness_max_level;
|
||||
c_conn->thermal_max_brightness = bl_config->brightness_max_level;
|
||||
|
||||
/**
|
||||
* In TVM, thermal cooling device is not enabled. Registering with dummy
|
||||
|
|
@ -671,62 +639,42 @@ static int _sde_connector_update_power_locked(struct sde_connector *c_conn)
|
|||
static int _sde_connector_update_bl_scale(struct sde_connector *c_conn)
|
||||
{
|
||||
struct dsi_display *dsi_display;
|
||||
struct dp_display *dp_display;
|
||||
struct dsi_backlight_config *dsi_bl_config;
|
||||
struct dp_backlight_config *dp_bl_config;
|
||||
struct dp_panel *dp_panel;
|
||||
struct dsi_backlight_config *bl_config;
|
||||
int rc = 0;
|
||||
u32 bl_scale, bl_scale_sv;
|
||||
|
||||
if (!c_conn) {
|
||||
SDE_ERROR("Invalid params sde_connector null\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
bl_scale = c_conn->bl_scale > MAX_BL_SCALE_LEVEL ?
|
||||
MAX_BL_SCALE_LEVEL : c_conn->bl_scale;
|
||||
bl_scale_sv = c_conn->bl_scale_sv > MAX_SV_BL_SCALE_LEVEL ?
|
||||
MAX_SV_BL_SCALE_LEVEL : c_conn->bl_scale_sv;
|
||||
|
||||
if (c_conn->connector_type == DRM_MODE_CONNECTOR_DSI) {
|
||||
dsi_display = c_conn->display;
|
||||
if (!dsi_display || !dsi_display->panel) {
|
||||
SDE_ERROR("Invalid params dsi_display %pK, panel %pK\n",
|
||||
dsi_display,
|
||||
((dsi_display) ? dsi_display->panel : NULL));
|
||||
return -EINVAL;
|
||||
}
|
||||
dsi_bl_config = &dsi_display->panel->bl_config;
|
||||
if (!c_conn->allow_bl_update) {
|
||||
c_conn->unset_bl_level = dsi_bl_config->bl_level;
|
||||
return 0;
|
||||
}
|
||||
dsi_bl_config->bl_scale = bl_scale;
|
||||
dsi_bl_config->bl_scale_sv = bl_scale_sv;
|
||||
if (c_conn->unset_bl_level)
|
||||
dsi_bl_config->bl_level = c_conn->unset_bl_level;
|
||||
|
||||
rc = c_conn->ops.set_backlight(&c_conn->base,
|
||||
dsi_display, dsi_bl_config->bl_level);
|
||||
} else if (c_conn->connector_type == DRM_MODE_CONNECTOR_eDP) {
|
||||
dp_display = c_conn->display;
|
||||
dp_panel = (struct dp_panel *) c_conn->drv_panel;
|
||||
if (dp_panel) {
|
||||
dp_bl_config = &dp_panel->bl_config;
|
||||
if (!c_conn->allow_bl_update) {
|
||||
c_conn->unset_bl_level = dp_bl_config->bl_level;
|
||||
return 0;
|
||||
}
|
||||
dp_bl_config->bl_scale = bl_scale;
|
||||
dp_bl_config->bl_scale_sv = bl_scale_sv;
|
||||
if (c_conn->unset_bl_level)
|
||||
dp_bl_config->bl_level = c_conn->unset_bl_level;
|
||||
rc = c_conn->ops.set_backlight(&c_conn->base,
|
||||
dp_display, dp_bl_config->bl_level);
|
||||
} else
|
||||
SDE_ERROR("Invalid dp_panel null\n");
|
||||
dsi_display = c_conn->display;
|
||||
if (!dsi_display || !dsi_display->panel) {
|
||||
SDE_ERROR("Invalid params(s) dsi_display %pK, panel %pK\n",
|
||||
dsi_display,
|
||||
((dsi_display) ? dsi_display->panel : NULL));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
bl_config = &dsi_display->panel->bl_config;
|
||||
|
||||
if (!c_conn->allow_bl_update) {
|
||||
c_conn->unset_bl_level = bl_config->bl_level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (c_conn->unset_bl_level)
|
||||
bl_config->bl_level = c_conn->unset_bl_level;
|
||||
|
||||
bl_config->bl_scale = c_conn->bl_scale > MAX_BL_SCALE_LEVEL ?
|
||||
MAX_BL_SCALE_LEVEL : c_conn->bl_scale;
|
||||
bl_config->bl_scale_sv = c_conn->bl_scale_sv > MAX_SV_BL_SCALE_LEVEL ?
|
||||
MAX_SV_BL_SCALE_LEVEL : c_conn->bl_scale_sv;
|
||||
|
||||
SDE_DEBUG("bl_scale = %u, bl_scale_sv = %u, bl_level = %u\n",
|
||||
bl_config->bl_scale, bl_config->bl_scale_sv,
|
||||
bl_config->bl_level);
|
||||
rc = c_conn->ops.set_backlight(&c_conn->base,
|
||||
dsi_display, bl_config->bl_level);
|
||||
c_conn->unset_bl_level = 0;
|
||||
|
||||
return rc;
|
||||
|
|
|
|||
|
|
@ -1796,7 +1796,6 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
|
|||
.get_info = dp_connector_get_info,
|
||||
.get_mode_info = dp_connector_get_mode_info,
|
||||
.post_open = dp_connector_post_open,
|
||||
.set_backlight = dp_connector_set_backlight,
|
||||
.check_status = NULL,
|
||||
.set_colorspace = dp_connector_set_colorspace,
|
||||
.config_hdr = dp_connector_config_hdr,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue