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

Commit 12a6d379 authored by Yahui Wang's avatar Yahui Wang Committed by Gerrit - the friendly Code Review server
Browse files

msm: mdss: add backlight gpio invert support for display



Some platforms may use external gpio to enable and disable backlight,
and we may need to invert this gpio according to HW design,
so add support for that.

CRs-Fixed: 1109294
Change-Id: Ib5e895eebcc38d185e8b703c3d895781b43c58c7
Signed-off-by: default avatarYahui Wang <yahuiw@codeaurora.org>
parent fc5a098f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -110,6 +110,9 @@ Optional properties:
					both modes.
- qcom,platform-intf-mux-gpio:		Select dsi/external(hdmi) interface through gpio when it supports
					either dsi or external interface.
- qcom,platform-bklight-en-gpio-invert:	Invert the gpio used to enable display back-light
- qcom,panel-mode-gpio:			Specifies the GPIO to select video/command/single-port/dual-port
					mode of panel through gpio when it supports these modes.
- pinctrl-names:			List of names to assign mdss pin states defined in pinctrl device node
					Refer to pinctrl-bindings.txt
- pinctrl-<0..n>:			Lists phandles each pointing to the pin configuration node within a pin
@@ -253,6 +256,8 @@ Example:
			qcom,platform-bklight-en-gpio = <&msmgpio 86 0>;
			qcom,platform-mode-gpio = <&msmgpio 7 0>;
			qcom,platform-intf-mux-gpio = <&tlmm 115 0>;
			qcom,platform-bklight-en-gpio-invert;
			qcom,panel-mode-gpio = <&msmgpio 107 0>;
			qcom,dsi-irq-line;
			qcom,lane-map = "lane_map_3012";
			qcom,display-id = "primary";
+4 −0
Original line number Diff line number Diff line
@@ -233,6 +233,10 @@ static int dsi_parse_gpio(struct platform_device *pdev,
		pr_err("%s:%d, bklt_en gpio not specified\n",
						__func__, __LINE__);

	ctrl_pdata->bklt_en_gpio_invert =
			of_property_read_bool(ctrl_pdev->dev.of_node,
				"qcom,platform-bklight-en-gpio-invert");

	return 0;
}

+4 −0
Original line number Diff line number Diff line
@@ -4084,6 +4084,10 @@ static int mdss_dsi_parse_gpio_params(struct platform_device *ctrl_pdev,
	if (!gpio_is_valid(ctrl_pdata->bklt_en_gpio))
		pr_info("%s: bklt_en gpio not specified\n", __func__);

	ctrl_pdata->bklt_en_gpio_invert =
			of_property_read_bool(ctrl_pdev->dev.of_node,
				"qcom,platform-bklight-en-gpio-invert");

	ctrl_pdata->rst_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,
			 "qcom,platform-reset-gpio", 0);
	if (!gpio_is_valid(ctrl_pdata->rst_gpio))
+2 −0
Original line number Diff line number Diff line
@@ -435,6 +435,8 @@ struct mdss_dsi_ctrl_pdata {
	int bklt_en_gpio;
	int mode_gpio;
	int intf_mux_gpio;
	bool bklt_en_gpio_invert;
	int lcd_mode_sel_gpio;
	int bklt_ctrl;	/* backlight ctrl */
	bool pwm_pmi;
	int pwm_period;
+14 −3
Original line number Diff line number Diff line
@@ -442,8 +442,14 @@ int mdss_dsi_panel_reset(struct mdss_panel_data *pdata, int enable)
			}

			if (gpio_is_valid(ctrl_pdata->bklt_en_gpio)) {

				if (ctrl_pdata->bklt_en_gpio_invert)
					rc = gpio_direction_output(
						ctrl_pdata->bklt_en_gpio, 0);
				else
					rc = gpio_direction_output(
						ctrl_pdata->bklt_en_gpio, 1);

				if (rc) {
					pr_err("%s: unable to set dir for bklt gpio\n",
						__func__);
@@ -475,7 +481,12 @@ int mdss_dsi_panel_reset(struct mdss_panel_data *pdata, int enable)
		}
	} else {
		if (gpio_is_valid(ctrl_pdata->bklt_en_gpio)) {

			if (ctrl_pdata->bklt_en_gpio_invert)
				gpio_set_value((ctrl_pdata->bklt_en_gpio), 1);
			else
				gpio_set_value((ctrl_pdata->bklt_en_gpio), 0);

			gpio_free(ctrl_pdata->bklt_en_gpio);
		}
		if (gpio_is_valid(ctrl_pdata->disp_en_gpio)) {