|
@@ -28,6 +28,7 @@ struct pwm_bl_data {
|
|
|
unsigned int lth_brightness;
|
|
|
int (*notify)(struct device *,
|
|
|
int brightness);
|
|
|
+ int (*check_fb)(struct device *, struct fb_info *);
|
|
|
};
|
|
|
|
|
|
static int pwm_backlight_update_status(struct backlight_device *bl)
|
|
@@ -62,9 +63,18 @@ static int pwm_backlight_get_brightness(struct backlight_device *bl)
|
|
|
return bl->props.brightness;
|
|
|
}
|
|
|
|
|
|
+static int pwm_backlight_check_fb(struct backlight_device *bl,
|
|
|
+ struct fb_info *info)
|
|
|
+{
|
|
|
+ struct pwm_bl_data *pb = dev_get_drvdata(&bl->dev);
|
|
|
+
|
|
|
+ return !pb->check_fb || pb->check_fb(pb->dev, info);
|
|
|
+}
|
|
|
+
|
|
|
static const struct backlight_ops pwm_backlight_ops = {
|
|
|
.update_status = pwm_backlight_update_status,
|
|
|
.get_brightness = pwm_backlight_get_brightness,
|
|
|
+ .check_fb = pwm_backlight_check_fb,
|
|
|
};
|
|
|
|
|
|
static int pwm_backlight_probe(struct platform_device *pdev)
|
|
@@ -95,6 +105,7 @@ static int pwm_backlight_probe(struct platform_device *pdev)
|
|
|
|
|
|
pb->period = data->pwm_period_ns;
|
|
|
pb->notify = data->notify;
|
|
|
+ pb->check_fb = data->check_fb;
|
|
|
pb->lth_brightness = data->lth_brightness *
|
|
|
(data->pwm_period_ns / data->max_brightness);
|
|
|
pb->dev = &pdev->dev;
|