Index: firmware/powermgmt.c
===================================================================
RCS file: /cvsroot/rockbox/firmware/powermgmt.c,v
retrieving revision 1.113
diff -u -b -B -r1.113 powermgmt.c
--- firmware/powermgmt.c	16 Apr 2006 17:32:54 -0000	1.113
+++ firmware/powermgmt.c	3 Jun 2006 17:23:45 -0000
@@ -1066,6 +1066,7 @@
     sleep(HZ/16);
 #endif
     lcd_set_contrast(0);
+	lcd_shutdown();
 #ifdef HAVE_REMOTE_LCD
     remote_backlight_off();
     lcd_remote_set_contrast(0);
Index: firmware/drivers/lcd-h100.c
===================================================================
RCS file: /cvsroot/rockbox/firmware/drivers/lcd-h100.c,v
retrieving revision 1.48
diff -u -b -B -r1.48 lcd-h100.c
--- firmware/drivers/lcd-h100.c	6 May 2006 06:37:23 -0000	1.48
+++ firmware/drivers/lcd-h100.c	3 Jun 2006 17:23:45 -0000
@@ -196,6 +196,12 @@
                   sizeof(scroll_stack), scroll_name);
 }
 
+/* LCD Shutdown */
+void lcd_shutdown(void)
+{
+   // Needs shutdown
+}
+
 /*** update functions ***/
 
 /* Performance function that works with an external buffer
Index: firmware/drivers/lcd-h300.c
===================================================================
RCS file: /cvsroot/rockbox/firmware/drivers/lcd-h300.c,v
retrieving revision 1.12
diff -u -b -B -r1.12 lcd-h300.c
--- firmware/drivers/lcd-h300.c	17 Mar 2006 15:42:06 -0000	1.12
+++ firmware/drivers/lcd-h300.c	3 Jun 2006 17:23:45 -0000
@@ -249,6 +249,22 @@
     _display_on();
 }
 
+/* LCD Shutdown */
+void lcd_shutdown(void)
+{
+    /** Sequence according to datasheet, p. 130/132 **/
+    
+    lcd_write_reg(R_FRAME_CYCLE_CONTROL, 0x0002); /* make sure unequalized */
+    lcd_write_reg(R_DISP_CONTROL1, 0x0036);  /* GON=1, DTE=1, REV=1, D1-0=10 */
+    sleep(2);
+    lcd_write_reg(R_DISP_CONTROL1, 0x0026);  /* GON=1, DTE=0, REV=1, D1-0=10 */
+    sleep(2);
+    lcd_write_reg(R_DISP_CONTROL1, 0x0000);  /* GON=0, DTE=0, REV=0, D1-0=00 */
+    lcd_write_reg(R_POWER_CONTROL1, 0x0500); /* SAP2-0 = 000,  BT2-0 = 101, AP2-0 = 000 */
+    lcd_write_reg(R_POWER_CONTROL3, 0x000F); /* PON = 0 */
+    lcd_write_reg(R_POWER_CONTROL4, 0x0010); /* VCOMG = 0 */
+}
+
 void lcd_enable(bool on)
 {
     if(display_on!=on)
Index: firmware/drivers/lcd-ipod.c
===================================================================
RCS file: /cvsroot/rockbox/firmware/drivers/lcd-ipod.c,v
retrieving revision 1.24
diff -u -b -B -r1.24 lcd-ipod.c
--- firmware/drivers/lcd-ipod.c	8 Apr 2006 09:08:33 -0000	1.24
+++ firmware/drivers/lcd-ipod.c	3 Jun 2006 17:23:45 -0000
@@ -144,6 +144,13 @@
 #endif
 }
 
+/* LCD powerdown */
+void lcd_shutdown(void)
+{
+    lcd_cmd_and_data(R_POWER_CONTROL, 0x1500); /* Turn off op amp power */
+    lcd_cmd_and_data(R_POWER_CONTROL, 0x1502); /* Put LCD driver in standby */
+}
+
 /*** hardware configuration ***/
 
 /* Rockbox stores the contrast as 0..63 - we add 64 to it */
Index: firmware/drivers/lcd-ipodvideo.c
===================================================================
RCS file: /cvsroot/rockbox/firmware/drivers/lcd-ipodvideo.c,v
retrieving revision 1.13
diff -u -b -B -r1.13 lcd-ipodvideo.c
--- firmware/drivers/lcd-ipodvideo.c	11 Mar 2006 09:28:49 -0000	1.13
+++ firmware/drivers/lcd-ipodvideo.c	3 Jun 2006 17:23:45 -0000
@@ -56,6 +56,12 @@
     /* iPodLinux doesn't appear have any LCD init code for the Video */
 }
 
+/* LCD Shutdown */
+void lcd_shutdown(void)
+{
+   // Needs shutdown
+}
+
 /*** update functions ***/
 
 /* Performance function that works with an external buffer
Index: firmware/drivers/lcd-player.c
===================================================================
RCS file: /cvsroot/rockbox/firmware/drivers/lcd-player.c,v
retrieving revision 1.52
diff -u -b -B -r1.52 lcd-player.c
--- firmware/drivers/lcd-player.c	6 Dec 2005 13:27:01 -0000	1.52
+++ firmware/drivers/lcd-player.c	3 Jun 2006 17:23:46 -0000
@@ -630,6 +630,12 @@
                   sizeof(scroll_stack), scroll_name);
 }
 
+/* LCD Shutdown */
+void lcd_shutdown(void)
+{
+   // Needs shutdown
+}
+
 void lcd_jump_scroll (int mode) /* 0=off, 1=once, ..., JUMP_SCROLL_ALWAYS */
 {
     jump_scroll=mode;
Index: firmware/drivers/lcd-recorder.c
===================================================================
RCS file: /cvsroot/rockbox/firmware/drivers/lcd-recorder.c,v
retrieving revision 1.82
diff -u -b -B -r1.82 lcd-recorder.c
--- firmware/drivers/lcd-recorder.c	6 May 2006 06:37:23 -0000	1.82
+++ firmware/drivers/lcd-recorder.c	3 Jun 2006 17:23:46 -0000
@@ -283,6 +283,12 @@
                   sizeof(scroll_stack), scroll_name);
 }
 
+/* LCD Shutdown */
+void lcd_shutdown(void)
+{
+   // Needs shutdown
+}
+
 /*** Update functions ***/
 
 /* Performance function that works with an external buffer
Index: firmware/export/lcd.h
===================================================================
RCS file: /cvsroot/rockbox/firmware/export/lcd.h,v
retrieving revision 1.61
diff -u -b -B -r1.61 lcd.h
--- firmware/export/lcd.h	8 Mar 2006 01:14:42 -0000	1.61
+++ firmware/export/lcd.h	3 Jun 2006 17:23:46 -0000
@@ -54,6 +54,7 @@
 #define lcd_init_device()
 #else
 extern void lcd_init_device(void);
+extern void lcd_shutdown(void);
 #endif
 extern void lcd_backlight(bool on);
 extern int  lcd_default_contrast(void);
