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

Commit 529946a3 authored by raghavendra ambadas's avatar raghavendra ambadas Committed by Gerrit - the friendly Code Review server
Browse files

fbdev: msm: Add backlight class support for FB driver



Update WLED device control Change from led to backlight class
support for fb driver which provides sysfs interface to userspace
to control display brightness.

Change-Id: I699130eb91dd47260fa8d4d9e21faf5a1fd0fc14
Signed-off-by: default avatarRahul Shahare <rshaha@codeaurora.org>
parent 338791a2
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)