Revert "video: backlight: EDP client for backlight"
authorDominik Sliwa <dominik.sliwa@toradex.com>
Tue, 27 Mar 2018 13:41:54 +0000 (15:41 +0200)
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>
Wed, 28 Mar 2018 16:39:30 +0000 (18:39 +0200)
This reverts commit 74df06fb565b7250bc86d79727b66bb02259d54c.

drivers/video/backlight/pwm_bl.c
include/linux/pwm_backlight.h

index e4c6d27727175f96fb758834e77997567db512b2..f7be6f224d6975fa6c30e74c1b5a5af3a58700a7 100644 (file)
@@ -1,17 +1,6 @@
 /*
  * linux/drivers/video/backlight/pwm_bl.c
  *
- * Copyright (c) 2013, NVIDIA CORPORATION, All rights reserved.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
  * simple PWM based backlight control, board code has to setup
  * 1) pin configuration so PWM waveforms can output
  * 2) platform_data being correctly configured
@@ -32,7 +21,6 @@
 #include <linux/pwm.h>
 #include <linux/pwm_backlight.h>
 #include <linux/slab.h>
-#include <linux/edp.h>
 
 struct pwm_bl_data {
        struct pwm_device       *pwm;
@@ -47,13 +35,12 @@ struct pwm_bl_data {
                                        int brightness);
        int                     (*check_fb)(struct device *, struct fb_info *);
        void                    (*exit)(struct device *);
-       struct edp_client *pwm_bl_edp_client;
-       int *edp_brightness_states;
 };
 
-static int pwm_backlight_set(struct backlight_device *bl, int brightness)
+static int pwm_backlight_update_status(struct backlight_device *bl)
 {
        struct pwm_bl_data *pb = bl_get_data(bl);
+       int brightness = bl->props.brightness;
        int max = bl->props.max_brightness;
 
        if (bl->props.power != FB_BLANK_UNBLANK ||
@@ -89,47 +76,6 @@ static int pwm_backlight_set(struct backlight_device *bl, int brightness)
        return 0;
 }
 
-static int pwm_backlight_set_with_edp(struct backlight_device *bl,
-       int brightness)
-{
-       struct pwm_bl_data *data = bl_get_data(bl);
-       unsigned int approved;
-       int ret;
-       unsigned int edp_state;
-       unsigned int i;
-       if (data->pwm_bl_edp_client) {
-               for (i = 0; i < PWM_BL_EDP_NUM_STATES; i++) {
-                       if (brightness >= data->edp_brightness_states[i])
-                               break;
-               }
-               edp_state = i;
-               ret = edp_update_client_request(data->pwm_bl_edp_client,
-                                                       edp_state, &approved);
-               if (ret) {
-                       dev_err(data->dev, "E state transition failed\n");
-                       return ret;
-               }
-               pwm_backlight_set(bl, data->edp_brightness_states[approved]);
-       } else {
-               pwm_backlight_set(bl, brightness);
-       }
-       return 0;
-}
-
-static int pwm_backlight_update_status(struct backlight_device *bl)
-{
-       int brightness = bl->props.brightness;
-       return pwm_backlight_set_with_edp(bl, brightness);
-}
-
-static void pwm_backlight_edpcb(unsigned int new_state, void *priv_data)
-{
-       struct backlight_device *bl_device =
-               (struct backlight_device *) priv_data;
-       struct pwm_bl_data *data = bl_get_data(bl_device);
-       pwm_backlight_set(bl_device, data->edp_brightness_states[new_state]);
-}
-
 static int pwm_backlight_get_brightness(struct backlight_device *bl)
 {
        return bl->props.brightness;
@@ -190,12 +136,6 @@ static int pwm_backlight_parse_dt(struct device *dev,
                if (ret < 0)
                        return ret;
 
-               if (value >= data->max_brightness) {
-                       dev_warn(dev, "invalid default brightness level: %u, using %u\n",
-                                value, data->max_brightness - 1);
-                       value = data->max_brightness - 1;
-               }
-
                data->dft_brightness = value;
                data->max_brightness--;
        }
@@ -230,7 +170,6 @@ static int pwm_backlight_probe(struct platform_device *pdev)
        struct backlight_properties props;
        struct backlight_device *bl;
        struct pwm_bl_data *pb;
-       struct edp_manager *battery_manager = NULL;
        unsigned int max;
        int ret;
 
@@ -269,7 +208,6 @@ static int pwm_backlight_probe(struct platform_device *pdev)
        pb->exit = data->exit;
        pb->dev = &pdev->dev;
        pb->pwm_gpio = data->pwm_gpio;
-       pb->edp_brightness_states = data->edp_brightness;
 
        pb->pwm = devm_pwm_get(&pdev->dev, NULL);
        if (IS_ERR(pb->pwm)) {
@@ -314,57 +252,6 @@ static int pwm_backlight_probe(struct platform_device *pdev)
                goto err_alloc;
        }
 
-       if (pb->edp_brightness_states) {
-               pb->pwm_bl_edp_client = devm_kzalloc(&pdev->dev,
-                               sizeof(struct edp_client), GFP_KERNEL);
-               if (IS_ERR_OR_NULL(pb->pwm_bl_edp_client)) {
-                       dev_err(&pdev->dev, "could not allocate edp client\n");
-                       return PTR_ERR(pb->pwm_bl_edp_client);
-               }
-
-               strncpy(pb->pwm_bl_edp_client->name,
-                                               "backlight", EDP_NAME_LEN - 1);
-               pb->pwm_bl_edp_client->name[EDP_NAME_LEN - 1] = '\0';
-               pb->pwm_bl_edp_client->states = data->edp_states;
-               pb->pwm_bl_edp_client->num_states = PWM_BL_EDP_NUM_STATES;
-               pb->pwm_bl_edp_client->e0_index = PWM_BL_EDP_ZERO;
-               pb->pwm_bl_edp_client->private_data = bl;
-               pb->pwm_bl_edp_client->priority = EDP_MAX_PRIO + 2;
-               pb->pwm_bl_edp_client->throttle = pwm_backlight_edpcb;
-               pb->pwm_bl_edp_client->notify_promotion = pwm_backlight_edpcb;
-
-               battery_manager = edp_get_manager("battery");
-               if (!battery_manager) {
-                       dev_err(&pdev->dev, "unable to get edp manager\n");
-                       goto err_edp_init;
-               } else {
-                       ret = edp_register_client(battery_manager,
-                                               pb->pwm_bl_edp_client);
-                       if (ret) {
-                               dev_err(&pdev->dev, "unable to register edp client\n");
-                               goto err_edp_init;
-                       } else {
-                               ret = edp_update_client_request(
-                                               pb->pwm_bl_edp_client,
-                                                       PWM_BL_EDP_ZERO, NULL);
-                               if (ret) {
-                                       dev_err(&pdev->dev,
-                                               "unable to set E0 EDP state\n");
-                                       edp_unregister_client(
-                                               pb->pwm_bl_edp_client);
-                                       goto err_edp_init;
-                               }
-                               goto success_edp_init;
-                       }
-               }
-err_edp_init:
-               devm_kfree(&pdev->dev, pb->pwm_bl_edp_client);
-               pb->pwm_bl_edp_client = NULL;
-success_edp_init:;
-       } else {
-               dev_info(&pdev->dev, "edp manager not supported\n");
-       }
-
        if (data->dft_brightness > data->max_brightness) {
                dev_warn(&pdev->dev,
                         "invalid default brightness level: %u, using %u\n",
@@ -404,8 +291,15 @@ static int pwm_backlight_remove(struct platform_device *pdev)
 static int pwm_backlight_suspend(struct device *dev)
 {
        struct backlight_device *bl = dev_get_drvdata(dev);
+       struct pwm_bl_data *pb = bl_get_data(bl);
 
-       return pwm_backlight_set_with_edp(bl, 0);
+       if (pb->notify)
+               pb->notify(pb->dev, 0);
+       pwm_config(pb->pwm, 0, pb->period);
+       pwm_disable(pb->pwm);
+       if (pb->notify_after)
+               pb->notify_after(pb->dev, 0);
+       return 0;
 }
 
 static int pwm_backlight_resume(struct device *dev)
@@ -415,19 +309,16 @@ static int pwm_backlight_resume(struct device *dev)
        backlight_update_status(bl);
        return 0;
 }
+#endif
 
 static SIMPLE_DEV_PM_OPS(pwm_backlight_pm_ops, pwm_backlight_suspend,
                         pwm_backlight_resume);
 
-#endif
-
 static struct platform_driver pwm_backlight_driver = {
        .driver         = {
                .name           = "pwm-backlight",
                .owner          = THIS_MODULE,
-#ifdef CONFIG_PM_SLEEP
                .pm             = &pwm_backlight_pm_ops,
-#endif
                .of_match_table = of_match_ptr(pwm_backlight_of_match),
        },
        .probe          = pwm_backlight_probe,
index c4d55510c7bdda555a4d96e1c2bcfb13a2371ee4..0bb37c47aa0e83e2f01f666c53d4c6723e1c49b9 100644 (file)
@@ -1,39 +1,11 @@
 /*
  * Generic PWM backlight driver data - see drivers/video/backlight/pwm_bl.c
- *
- * Copyright (c) 2013, NVIDIA CORPORATION, All rights reserved.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
  */
 #ifndef __LINUX_PWM_BACKLIGHT_H
 #define __LINUX_PWM_BACKLIGHT_H
 
 #include <linux/backlight.h>
 
-enum pwm_bl_edp_states {
-       PWM_BL_EDP_NEG_3,
-       PWM_BL_EDP_NEG_2,
-       PWM_BL_EDP_NEG_1,
-       PWM_BL_EDP_ZERO,
-       PWM_BL_EDP_1,
-       PWM_BL_EDP_2,
-       PWM_BL_EDP_3,
-       PWM_BL_EDP_4,
-       PWM_BL_EDP_5,
-       PWM_BL_EDP_6,
-       PWM_BL_EDP_NUM_STATES,
-};
-
-#define PWM_BL_EDP_BRIGHTNESS_UNIT     25
-
 struct platform_pwm_backlight_data {
        int pwm_id;
        unsigned int max_brightness;
@@ -47,8 +19,6 @@ struct platform_pwm_backlight_data {
        void (*notify_after)(struct device *dev, int brightness);
        void (*exit)(struct device *dev);
        int (*check_fb)(struct device *dev, struct fb_info *info);
-       unsigned int *edp_states;
-       unsigned int *edp_brightness;
 };
 
 #endif