Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc1e739f authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "fbdev: msm: Add backlight class support for FB driver"

parents b76d0197 529946a3
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -3350,7 +3350,9 @@ static int mdss_dsi_ctrl_probe(struct platform_device *pdev)
error_shadow_clk_deinit:
	mdss_dsi_shadow_clk_deinit(&pdev->dev, ctrl_pdata);
error_pan_node:
#ifndef CONFIG_BACKLIGHT_QCOM_SPMI_WLED
	mdss_dsi_unregister_bl_settings(ctrl_pdata);
#endif
	of_node_put(dsi_pan_node);
	return rc;
}
+9 −1
Original line number Diff line number Diff line
/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
 *
 * 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
@@ -19,6 +19,9 @@
#include <linux/irqreturn.h>
#include <linux/pinctrl/consumer.h>
#include <linux/gpio.h>
#ifdef CONFIG_BACKLIGHT_QCOM_SPMI_WLED
#include <linux/backlight.h>
#endif

#include "mdss_panel.h"
#include "mdss_dsi_cmd.h"
@@ -456,6 +459,9 @@ struct mdss_dsi_ctrl_pdata {

	struct mdss_rect roi;
	struct pwm_device *pwm_bl;
#ifdef CONFIG_BACKLIGHT_QCOM_SPMI_WLED
	struct backlight_device *raw_bd;
#endif
	u32 pclk_rate;
	u32 byte_clk_rate;
	u32 pclk_rate_bkp;
@@ -670,7 +676,9 @@ int mdss_panel_get_dst_fmt(u32 bpp, char mipi_mode, u32 pixel_packing,

int mdss_dsi_register_recovery_handler(struct mdss_dsi_ctrl_pdata *ctrl,
		struct mdss_intf_recovery *recovery);
#ifndef CONFIG_BACKLIGHT_QCOM_SPMI_WLED
void mdss_dsi_unregister_bl_settings(struct mdss_dsi_ctrl_pdata *ctrl_pdata);
#endif
void mdss_dsi_panel_dsc_pps_send(struct mdss_dsi_ctrl_pdata *ctrl,
				struct mdss_panel_info *pinfo);
void mdss_dsi_dsc_config(struct mdss_dsi_ctrl_pdata *ctrl,
+35 −3
Original line number Diff line number Diff line
/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
 *
 * 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
@@ -17,7 +17,11 @@
#include <linux/gpio.h>
#include <linux/delay.h>
#include <linux/slab.h>
#ifndef CONFIG_BACKLIGHT_QCOM_SPMI_WLED
#include <linux/leds.h>
#else
#include <linux/backlight.h>
#endif
#include <linux/pwm.h>
#include <linux/err.h>
#include <linux/string.h>
@@ -31,8 +35,9 @@
#define DEFAULT_MDP_TRANSFER_TIME 14000

#define VSYNC_DELAY msecs_to_jiffies(17)

#ifndef CONFIG_BACKLIGHT_QCOM_SPMI_WLED
DEFINE_LED_TRIGGER(bl_led_trigger);
#endif

void mdss_dsi_panel_pwm_cfg(struct mdss_dsi_ctrl_pdata *ctrl)
{
@@ -799,7 +804,11 @@ static void mdss_dsi_panel_bl_ctrl(struct mdss_panel_data *pdata,

	switch (ctrl_pdata->bklt_ctrl) {
	case BL_WLED:
#ifndef CONFIG_BACKLIGHT_QCOM_SPMI_WLED
		led_trigger_event(bl_led_trigger, bl_level);
#else
		backlight_device_set_brightness(ctrl_pdata->raw_bd, bl_level);
#endif
		break;
	case BL_PWM:
		mdss_dsi_panel_bklt_pwm(ctrl_pdata, bl_level);
@@ -2262,6 +2271,22 @@ static void mdss_dsi_parse_dfps_config(struct device_node *pan_node,
	pinfo->current_fps = pinfo->mipi.frame_rate;
}

#ifdef CONFIG_BACKLIGHT_QCOM_SPMI_WLED
static int dsi_panel_wled_register(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
{
	int rc = 0;
	struct backlight_device *bd;

	bd = backlight_device_get_by_type(BACKLIGHT_RAW);
	if (!bd) {
		pr_err("fail raw backlight register\n");
		rc = -EINVAL;
	}
	ctrl_pdata->raw_bd = bd;
	return rc;
}
#endif

int mdss_panel_parse_bl_settings(struct device_node *np,
			struct mdss_dsi_ctrl_pdata *ctrl_pdata)
{
@@ -2273,8 +2298,14 @@ int mdss_panel_parse_bl_settings(struct device_node *np,
	data = of_get_property(np, "qcom,mdss-dsi-bl-pmic-control-type", NULL);
	if (data) {
		if (!strcmp(data, "bl_ctrl_wled")) {
#ifndef CONFIG_BACKLIGHT_QCOM_SPMI_WLED
			led_trigger_register_simple("bkl-trigger",
				&bl_led_trigger);
#else
			rc = dsi_panel_wled_register(ctrl_pdata);
			if (rc)
				return rc;
#endif
			pr_debug("%s: SUCCESS-> WLED TRIGGER register\n",
				__func__);
			ctrl_pdata->bklt_ctrl = BL_WLED;
@@ -2372,12 +2403,13 @@ int mdss_dsi_panel_timing_switch(struct mdss_dsi_ctrl_pdata *ctrl,
	return 0;
}

#ifndef CONFIG_BACKLIGHT_QCOM_SPMI_WLED
void mdss_dsi_unregister_bl_settings(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
{
	if (ctrl_pdata->bklt_ctrl == BL_WLED)
		led_trigger_unregister_simple(bl_led_trigger);
}

#endif
static int mdss_dsi_panel_timing_from_dt(struct device_node *np,
		struct dsi_panel_timing *pt,
		struct mdss_panel_data *panel_data)