Subject: [merged] backlight-update-bd-state-fb_blank-properties-when-necessary.patch removed from -mm tree To: Ying.Liu@xxxxxxxxxxxxx,jani.nikula@xxxxxxxxxxxxxxx,jg1.han@xxxxxxxxxxx,plagnioj@xxxxxxxxxxxx,tomi.valkeinen@xxxxxx,mm-commits@xxxxxxxxxxxxxxx From: akpm@xxxxxxxxxxxxxxxxxxxx Date: Fri, 04 Apr 2014 12:33:14 -0700 The patch titled Subject: backlight: update bd state & fb_blank properties when necessary has been removed from the -mm tree. Its filename was backlight-update-bd-state-fb_blank-properties-when-necessary.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ From: Liu Ying <Ying.Liu@xxxxxxxxxxxxx> Subject: backlight: update bd state & fb_blank properties when necessary We don't have to update the state and fb_blank properties of a backlight device every time a blanking or unblanking event comes because they may have already been what we want. Another thought is that one backlight device may be shared by multiple framebuffers. The backlight driver should take the backlight device as a resource shared by all the associated framebuffers. This patch adds some logic to record each framebuffer's backlight usage to determine the backlight device use count and whether the two properties should be updated or not. To be more specific, only one unblank operation on a certain blanked framebuffer may increase the backlight device's use count by one, while one blank operation on a certain unblanked framebuffer may decrease the use count by one, because the userspace is likely to unblank an unblanked framebuffer or blank a blanked framebuffer. Signed-off-by: Liu Ying <Ying.Liu@xxxxxxxxxxxxx> Cc: Jingoo Han <jg1.han@xxxxxxxxxxx> Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@xxxxxxxxxxxx> Cc: Tomi Valkeinen <tomi.valkeinen@xxxxxx> Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/video/backlight/backlight.c | 23 ++++++++++++++++++----- include/linux/backlight.h | 6 ++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff -puN drivers/video/backlight/backlight.c~backlight-update-bd-state-fb_blank-properties-when-necessary drivers/video/backlight/backlight.c --- a/drivers/video/backlight/backlight.c~backlight-update-bd-state-fb_blank-properties-when-necessary +++ a/drivers/video/backlight/backlight.c @@ -41,6 +41,8 @@ static int fb_notifier_callback(struct n { struct backlight_device *bd; struct fb_event *evdata = data; + int node = evdata->info->node; + int fb_blank = 0; /* If we aren't interested in this event, skip it immediately ... */ if (event != FB_EVENT_BLANK && event != FB_EVENT_CONBLANK) @@ -51,11 +53,22 @@ static int fb_notifier_callback(struct n if (bd->ops) if (!bd->ops->check_fb || bd->ops->check_fb(bd, evdata->info)) { - bd->props.fb_blank = *(int *)evdata->data; - if (bd->props.fb_blank == FB_BLANK_UNBLANK) - bd->props.state &= ~BL_CORE_FBBLANK; - else - bd->props.state |= BL_CORE_FBBLANK; + fb_blank = *(int *)evdata->data; + if (fb_blank == FB_BLANK_UNBLANK && + !bd->fb_bl_on[node]) { + bd->fb_bl_on[node] = true; + if (!bd->use_count++) { + bd->props.state &= ~BL_CORE_FBBLANK; + bd->props.fb_blank = FB_BLANK_UNBLANK; + } + } else if (fb_blank != FB_BLANK_UNBLANK && + bd->fb_bl_on[node]) { + bd->fb_bl_on[node] = false; + if (!(--bd->use_count)) { + bd->props.state |= BL_CORE_FBBLANK; + bd->props.fb_blank = fb_blank; + } + } backlight_update_status(bd); } mutex_unlock(&bd->ops_lock); diff -puN include/linux/backlight.h~backlight-update-bd-state-fb_blank-properties-when-necessary include/linux/backlight.h --- a/include/linux/backlight.h~backlight-update-bd-state-fb_blank-properties-when-necessary +++ a/include/linux/backlight.h @@ -9,6 +9,7 @@ #define _LINUX_BACKLIGHT_H #include <linux/device.h> +#include <linux/fb.h> #include <linux/mutex.h> #include <linux/notifier.h> @@ -104,6 +105,11 @@ struct backlight_device { struct list_head entry; struct device dev; + + /* Multiple framebuffers may share one backlight device */ + bool fb_bl_on[FB_MAX]; + + int use_count; }; static inline void backlight_update_status(struct backlight_device *bd) _ Patches currently in -mm which might be from Ying.Liu@xxxxxxxxxxxxx are origin.patch linux-next.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html