Thread (13 messages) 13 messages, 4 authors, 2007-02-28

Re: [PATCH 1/1] PXAFB: Support for backlight control

From: Paul Sokolovsky <hidden>
Date: 2007-02-21 16:00:37
Also in: lkml

Hello Rodolfo,

Wednesday, February 21, 2007, 4:53:53 PM, you wrote:
Backlight control support for the PXA fram buffer.

  Here're some comments: backlight support is already confusing
matter, and your patch IMHO makes it even more confusing for PXAFB.

  Before even start with details, let's first think what backlight has
to do with framebuffer? The facts that the physical object implementing
the former is usually put in close proximity to the latter, and they mostly
should be powered on synchronously, probably don't yet mean that
each and every FB driver should include good chunk of code to support
doing BL in its own special way.

  On the other hand, there's already
drivers/video/backlight/backlight.c which provides generic BL support,
implemented using notifier callback for FB core. Moreover, there's
corgi_bl.c driver which, contrary to its name is a generic driver for
embedded/PDA device backlight. It essentially subclassses pretty
abstract backlight.c, and provides good implementation for most BL
implementation. What you really need to do to use it, is to supply
single machine-dependent method, set_bl_intensity(). That method is
usually <10 lines.

  With this in mind, adhoc backlight handlers in pxafb and few other
drivers are artifacts of older times. And it's sad they are tried to
be resurrected instead of being removed.

Signed-off-by: Rodolfo Giometti <giometti@enneenne.com>
---
Each platform should define the backlight properties in its own setup
file in "linux/arch/arm/mach-pxa/" as follow:
   static int pxafb_bl_get_brightness(struct backlight_device *bl_dev)
   {
        return read_the_backlight_brightness();
   }
   static int pxafb_bl_update_status(struct backlight_device *bl_dev)
   {
           int perc, ret;
           if (bl_dev->props->power != FB_BLANK_UNBLANK ||
               bl_dev->props->fb_blank != FB_BLANK_UNBLANK)
                   perc = 0;
           else
                   perc = bl_dev->props->brightness;
        write_the_backlight_brightness(perc);
           return 0;
   }
   static struct backlight_properties wwpc1100_backlight_props = {
           .get_brightness         = pxafb_bl_get_brightness,
           .update_status          = pxafb_bl_update_status,
           .max_brightness         = 100,
   };
      
and then seting up the fb info as follow:
   wwpc1100_pxafb_info.modes = &special_modes;
   wwpc1100_pxafb_info.bl_props = &wwpc1100_backlight_props;
   set_pxa_fb_info(&wwpc1100_pxafb_info);


-- 
Best regards,
 Paul                            mailto:pmiscml@gmail.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help