lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Wed, 22 Jan 2014 14:09:45 +0900
From:	Jingoo Han <jg1.han@...sung.com>
To:	'Liu Ying' <Ying.Liu@...escale.com>
Cc:	linux-fbdev@...r.kernel.org,
	'linux-kernel' <linux-kernel@...r.kernel.org>,
	'DRI mailing list' <dri-devel@...ts.freedesktop.org>,
	plagnioj@...osoft.com, tomi.valkeinen@...com,
	'Jingoo Han' <jg1.han@...sung.com>
Subject: Re: [PATCH v2] backlight: turn backlight on/off when necessary

On Wednesday, January 22, 2014 2:04 PM, Liu Ying wrote:
> 
> Ping...
> 
> Regards,
> Liu Ying

Please, don't send the ping within 2 days.
It is not a good practice. You sent the v1 patch 6 months ago.
However, why I should review the patch within 2 days?
Please wait.

Best regards,
Jingoo Han

> 
> On 01/20/2014 12:52 PM, Liu Ying wrote:
> > We don't have to turn backlight on/off everytime a blanking
> > or unblanking event comes because the backlight status may
> > have already been what we want. Another thought is that one
> > backlight device may be shared by multiple framebuffers. We
> > don't hope blanking one of the framebuffers may turn the
> > backlight off for all the other framebuffers, since they are
> > likely being active to display something. This patch adds
> > some logics to record each framebuffer's backlight usage to
> > determine the backlight device use count and whether the
> > backlight should be turned on or off. 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 a unblanked framebuffer or blank a blanked
> > framebuffer.
> >
> > Signed-off-by: Liu Ying <Ying.Liu@...escale.com>
> > ---
> > v1 can be found at https://lkml.org/lkml/2013/5/30/139
> >
> > v1->v2:
> > * Make the commit message be more specific about the condition
> >   in which backlight device use count can be increased/decreased.
> > * Correct the setting for bd->props.fb_blank.
> >
> >  drivers/video/backlight/backlight.c |   28 +++++++++++++++++++++-------
> >  include/linux/backlight.h           |    6 ++++++
> >  2 files changed, 27 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
> > index 5d05555..42044be 100644
> > --- a/drivers/video/backlight/backlight.c
> > +++ b/drivers/video/backlight/backlight.c
> > @@ -34,13 +34,15 @@ static const char *const backlight_types[] = {
> >                            defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE))
> >  /* This callback gets called when something important happens inside a
> >   * framebuffer driver. We're looking if that important event is blanking,
> > - * and if it is, we're switching backlight power as well ...
> > + * and if it is and necessary, we're switching backlight power as well ...
> >   */
> >  static int fb_notifier_callback(struct notifier_block *self,
> >                                 unsigned long event, void *data)
> >  {
> >         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,12 +53,24 @@ static int fb_notifier_callback(struct notifier_block *self,
> >         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;
> > -                       backlight_update_status(bd);
> > +                       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;
> > +                                       backlight_update_status(bd);
> > +                               }
> > +                       } 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_POWERDOWN;
> > +                                       backlight_update_status(bd);
> > +                               }
> > +                       }
> >                 }
> >         mutex_unlock(&bd->ops_lock);
> >         return 0;
> > diff --git a/include/linux/backlight.h b/include/linux/backlight.h
> > index 5f9cd96..7264742 100644
> > --- a/include/linux/backlight.h
> > +++ b/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)
> > --
> > 1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists