From df482eaddc420b2b2254470866b38db18a8b54bd Mon Sep 17 00:00:00 2001 From: rjoco77 <> Date: Mon, 30 Aug 2004 12:48:52 +0000 Subject: [lcd4linux @ 2004-08-30 12:48:52 by rjoco77] * Added backlight update immediatelly --- drv_RouterBoard.c | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/drv_RouterBoard.c b/drv_RouterBoard.c index 49af2a3..a543a76 100644 --- a/drv_RouterBoard.c +++ b/drv_RouterBoard.c @@ -1,4 +1,4 @@ -/* $Id: drv_RouterBoard.c,v 1.2 2004/08/29 20:07:55 reinelt Exp $ +/* $Id: drv_RouterBoard.c,v 1.3 2004/08/30 12:48:52 rjoco77 Exp $ * * driver for the "Router Board LCD port" * see port details at http://www.routerboard.com @@ -25,6 +25,9 @@ * * * $Log: drv_RouterBoard.c,v $ + * Revision 1.3 2004/08/30 12:48:52 rjoco77 + * * Added backlight update immediatelly + * * Revision 1.2 2004/08/29 20:07:55 reinelt * * Patch from Joco: Make RouterBoard Backlight configurable @@ -248,6 +251,23 @@ static void drv_RB_poll_data ( void __attribute__((unused)) *notused) #endif +/* IOCS0 port number can read from PCI Configuration Space Function 0 (F0) */ +/* at index 74h as 16 bit value (see [GEODE] 5.3.1 pg.151 and pg.176 Table 5-29 */ + +static unsigned getIocs0Port (void) +{ + static unsigned ret = 0; + + /*get IO permission, here you can't use ioperm command */ + iopl(3); + + if (!ret) { + outl(0x80009074, CAR); + ret = inw(CDR); + } + return ret; +} + static int drv_RB_backlight ( int backlight) { @@ -262,29 +282,13 @@ static int drv_RB_backlight ( int backlight) RB_BackLight = backlight ? LCD_BACKLIGHT : 0; - /* The status will be updated on next lcd operation! */ - /* Fixme: should be updated immediately! */ + /* Set backlight output */ + outw( RB_Leds | RB_BackLight , getIocs0Port()); return backlight; } -/* IOCS0 port number can read from PCI Configuration Space Function 0 (F0) */ -/* at index 74h as 16 bit value (see [GEODE] 5.3.1 pg.151 and pg.176 Table 5-29 */ - -static unsigned getIocs0Port (void) -{ - static unsigned ret = 0; - - /*get IO permission, here you can't use ioperm command */ - iopl(3); - - if (!ret) { - outl(0x80009074, CAR); - ret = inw(CDR); - } - return ret; -} static void drv_RB_command ( const unsigned char cmd, const int delay) @@ -490,6 +494,7 @@ static void plugin_backlight (RESULT *result , const int argc, RESULT *argv[]) case 1: backlight = drv_RB_backlight(R2N(argv[0])); SetResult(&result, R_NUMBER, &backlight); + break; default: error ("%s::backlight(): wrong number of parameters", Name); SetResult(&result, R_STRING, ""); -- cgit v1.2.3