Loading Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt +1 −0 Original line number Diff line number Diff line Loading @@ -155,6 +155,7 @@ Optional properties: "bl_ctrl_wled" = Backlight controlled by WLED. "bl_ctrl_dcs" = Backlight controlled by DCS commands. other: Unknown backlight control. (default) - qcom,mdss-dsi-bl-pwm-pmi: Boolean to indicate that PWM control is through second pmic chip. - qcom,mdss-dsi-bl-pmic-bank-select: LPG channel for backlight. Requred if blpmiccontroltype is PWM - qcom,mdss-dsi-bl-pmic-pwm-frequency: PWM period in microseconds. Loading drivers/video/msm/mdss/mdss_dsi.h +1 −0 Original line number Diff line number Diff line Loading @@ -317,6 +317,7 @@ struct mdss_dsi_ctrl_pdata { int bklt_en_gpio; int mode_gpio; int bklt_ctrl; /* backlight ctrl */ bool pwm_pmi; int pwm_period; int pwm_pmic_gpio; int pwm_lpg_chan; Loading drivers/video/msm/mdss/mdss_dsi_panel.c +28 −11 Original line number Diff line number Diff line Loading @@ -38,6 +38,9 @@ DEFINE_LED_TRIGGER(bl_led_trigger); void mdss_dsi_panel_pwm_cfg(struct mdss_dsi_ctrl_pdata *ctrl) { if (ctrl->pwm_pmi) return; ctrl->pwm_bl = pwm_request(ctrl->pwm_lpg_chan, "lcd-bklt"); if (ctrl->pwm_bl == NULL || IS_ERR(ctrl->pwm_bl)) { pr_err("%s: Error: lpg_chan=%d pwm request failed", Loading Loading @@ -1362,6 +1365,8 @@ static int mdss_panel_parse_dt(struct device_node *np, ctrl_pdata->bklt_ctrl = BL_WLED; } else if (!strncmp(data, "bl_ctrl_pwm", 11)) { ctrl_pdata->bklt_ctrl = BL_PWM; ctrl_pdata->pwm_pmi = of_property_read_bool(np, "qcom,mdss-dsi-bl-pwm-pmi"); rc = of_property_read_u32(np, "qcom,mdss-dsi-bl-pmic-pwm-frequency", &tmp); if (rc) { Loading @@ -1370,10 +1375,20 @@ static int mdss_panel_parse_dt(struct device_node *np, return -EINVAL; } ctrl_pdata->pwm_period = tmp; if (ctrl_pdata->pwm_pmi) { ctrl_pdata->pwm_bl = of_pwm_get(np, NULL); if (IS_ERR(ctrl_pdata->pwm_bl)) { pr_err("%s: Error, pwm device\n", __func__); ctrl_pdata->pwm_bl = NULL; return -EINVAL; } } else { rc = of_property_read_u32(np, "qcom,mdss-dsi-bl-pmic-bank-select", &tmp); "qcom,mdss-dsi-bl-pmic-bank-select", &tmp); if (rc) { pr_err("%s:%d, Error, dsi lpg channel\n", pr_err("%s:%d, Error, lpg channel\n", __func__, __LINE__); return -EINVAL; } Loading @@ -1381,7 +1396,9 @@ static int mdss_panel_parse_dt(struct device_node *np, tmp = of_get_named_gpio(np, "qcom,mdss-dsi-pwm-gpio", 0); ctrl_pdata->pwm_pmic_gpio = tmp; pr_debug("%s: Configured PWM bklt ctrl\n", __func__); pr_debug("%s: Configured PWM bklt ctrl\n", __func__); } } else if (!strncmp(data, "bl_ctrl_dcs", 11)) { ctrl_pdata->bklt_ctrl = BL_DCS_CMD; pr_debug("%s: Configured DCS_CMD bklt ctrl\n", Loading Loading
Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt +1 −0 Original line number Diff line number Diff line Loading @@ -155,6 +155,7 @@ Optional properties: "bl_ctrl_wled" = Backlight controlled by WLED. "bl_ctrl_dcs" = Backlight controlled by DCS commands. other: Unknown backlight control. (default) - qcom,mdss-dsi-bl-pwm-pmi: Boolean to indicate that PWM control is through second pmic chip. - qcom,mdss-dsi-bl-pmic-bank-select: LPG channel for backlight. Requred if blpmiccontroltype is PWM - qcom,mdss-dsi-bl-pmic-pwm-frequency: PWM period in microseconds. Loading
drivers/video/msm/mdss/mdss_dsi.h +1 −0 Original line number Diff line number Diff line Loading @@ -317,6 +317,7 @@ struct mdss_dsi_ctrl_pdata { int bklt_en_gpio; int mode_gpio; int bklt_ctrl; /* backlight ctrl */ bool pwm_pmi; int pwm_period; int pwm_pmic_gpio; int pwm_lpg_chan; Loading
drivers/video/msm/mdss/mdss_dsi_panel.c +28 −11 Original line number Diff line number Diff line Loading @@ -38,6 +38,9 @@ DEFINE_LED_TRIGGER(bl_led_trigger); void mdss_dsi_panel_pwm_cfg(struct mdss_dsi_ctrl_pdata *ctrl) { if (ctrl->pwm_pmi) return; ctrl->pwm_bl = pwm_request(ctrl->pwm_lpg_chan, "lcd-bklt"); if (ctrl->pwm_bl == NULL || IS_ERR(ctrl->pwm_bl)) { pr_err("%s: Error: lpg_chan=%d pwm request failed", Loading Loading @@ -1362,6 +1365,8 @@ static int mdss_panel_parse_dt(struct device_node *np, ctrl_pdata->bklt_ctrl = BL_WLED; } else if (!strncmp(data, "bl_ctrl_pwm", 11)) { ctrl_pdata->bklt_ctrl = BL_PWM; ctrl_pdata->pwm_pmi = of_property_read_bool(np, "qcom,mdss-dsi-bl-pwm-pmi"); rc = of_property_read_u32(np, "qcom,mdss-dsi-bl-pmic-pwm-frequency", &tmp); if (rc) { Loading @@ -1370,10 +1375,20 @@ static int mdss_panel_parse_dt(struct device_node *np, return -EINVAL; } ctrl_pdata->pwm_period = tmp; if (ctrl_pdata->pwm_pmi) { ctrl_pdata->pwm_bl = of_pwm_get(np, NULL); if (IS_ERR(ctrl_pdata->pwm_bl)) { pr_err("%s: Error, pwm device\n", __func__); ctrl_pdata->pwm_bl = NULL; return -EINVAL; } } else { rc = of_property_read_u32(np, "qcom,mdss-dsi-bl-pmic-bank-select", &tmp); "qcom,mdss-dsi-bl-pmic-bank-select", &tmp); if (rc) { pr_err("%s:%d, Error, dsi lpg channel\n", pr_err("%s:%d, Error, lpg channel\n", __func__, __LINE__); return -EINVAL; } Loading @@ -1381,7 +1396,9 @@ static int mdss_panel_parse_dt(struct device_node *np, tmp = of_get_named_gpio(np, "qcom,mdss-dsi-pwm-gpio", 0); ctrl_pdata->pwm_pmic_gpio = tmp; pr_debug("%s: Configured PWM bklt ctrl\n", __func__); pr_debug("%s: Configured PWM bklt ctrl\n", __func__); } } else if (!strncmp(data, "bl_ctrl_dcs", 11)) { ctrl_pdata->bklt_ctrl = BL_DCS_CMD; pr_debug("%s: Configured DCS_CMD bklt ctrl\n", Loading