Hi, the attached patch allows to toggle the backlight via "fblevel on/off" on a 12" pbook on and off. It registers a full backlight control although it can't handle brightness at the moment. Patch is against 2.4.22-ben2. Many thanks to Mark Vojkovich for providing the necessary information. Regards, -- Guido
--- drivers/video/riva/fbdev.c.orig 2003-09-25 14:22:24.000000000 +0200 +++ drivers/video/riva/fbdev.c 2003-10-28 15:50:08.000000000 +0100 @@ -56,6 +56,10 @@ #error This driver requires PCI support. #endif +#ifdef CONFIG_PMAC_BACKLIGHT +#include <asm/backlight.h> +#endif + #include <linux/adb.h> #include <linux/pmu.h> #include <asm/prom.h> @@ -123,7 +127,14 @@ extern void riva_setup_accel(struct rivafb_info *rinfo); extern inline void wait_for_idle(struct rivafb_info *rinfo); - +#ifdef CONFIG_PMAC_BACKLIGHT +static int riva_set_backlight_enable(int on, int level, void *data); +static int riva_set_backlight_level(int level, void *data); +static struct backlight_controller riva_backlight_controller = { + riva_set_backlight_enable, + riva_set_backlight_level +}; +#endif /* CONFIG_PMAC_BACKLIGHT */ /* ------------------------------------------------------------------------- * * @@ -1999,6 +2010,14 @@ SEQout(rinfo, 0x01, tmp); CRTCout(rinfo, 0x1a, vesa); +#ifdef CONFIG_PMAC_BACKLIGHT + if ( rinfo->got_dfpinfo && _machine == _MACH_Pmac) { + set_backlight_enable(!blank); + return; + } +#endif + + DPRINTK("EXIT\n"); } @@ -2244,6 +2263,26 @@ } +#ifdef CONFIG_PMAC_BACKLIGHT +static int riva_set_backlight_enable(int on, int level, void *data) +{ + struct rivafb_info *rinfo = (struct rivafb_info *)data; + unsigned int tmp; + + tmp = rinfo->riva.PMC[0x10F0/4] & 0x7FFFFFFF; + rinfo->riva.PMC[0x10F0/4] = tmp; + tmp = rinfo->riva.PCRTC0[0x081C/4] & 0xFFFFFFFC; + if(on) + tmp |= 0x1; + rinfo->riva.PCRTC0[0x081C/4] = tmp; + return 0; +} + +static int riva_set_backlight_level(int level, void *data) +{ + return riva_set_backlight_enable(1, level, data); +} +#endif /* CONFIG_PMAC_BACKLIGHT */ /* ------------------------------------------------------------------------- * * @@ -2400,6 +2439,12 @@ rinfo->ram_amount / (1024 * 1024), rinfo->fb_base_phys); +#ifdef CONFIG_PMAC_BACKLIGHT + if (rinfo->got_dfpinfo && _machine == _MACH_Pmac) + register_backlight_controller(&riva_backlight_controller, + rinfo, "mnca"); +#endif + return 0; err_out_load_state:
Attachment:
signature.asc
Description: Digital signature