Index: backlight-e200.c
===================================================================
--- backlight-e200.c	(revision 12728)
+++ backlight-e200.c	(working copy)
@@ -23,19 +23,55 @@
 #include "i2c-pp.h"
 
 static unsigned short backlight_brightness;
+static unsigned short backlight_min_brightness = MIN_BRIGHTNESS_SETTING;
+static unsigned short backlight_max_brightness = DEFAULT_BRIGHTNESS_SETTING;
+static short backlight_delay = 30000;
 
 void __backlight_set_brightness(int brightness)
 {
-    backlight_brightness = brightness;
-    pp_i2c_send( 0x46, 0x23, backlight_brightness);
+  if (brightness < MIN_BRIGHTNESS_SETTING)
+	backlight_min_brightness = brightness;
+  if (brightness > DEFAULT_BRIGHTNESS_SETTING)
+	backlight_max_brightness = brightness;
+	
+   pp_i2c_send( 0x46, 0x23, brightness);
 }
 
+void __backlight_change_brightness(int brightness)
+{
+  int i;
+  if(brightness == backlight_brightness)
+  {
+   return;
+  }
+  else if (brightness > backlight_brightness)
+  {
+  for(i = backlight_brightness; i <= brightness; i++)
+   {
+     udelay(backlight_delay);
+     pp_i2c_send( 0x46, 0x23, i);   
+   }  
+ 
+  }
+  else if (brightness < backlight_brightness)
+  {
+  for(i = backlight_brightness; i >= brightness; i--)
+   {
+     udelay(backlight_delay);
+     pp_i2c_send( 0x46, 0x23, i);   
+   }  
+  }
+
+   backlight_brightness = brightness;
+}
+
 void __backlight_on(void)
 {
-    pp_i2c_send( 0x46, 0x23, backlight_brightness);
+  __backlight_change_brightness(backlight_max_brightness);
 }
 
 void __backlight_off(void)
 {
-    pp_i2c_send( 0x46, 0x23, 0x0);
+  __backlight_change_brightness(0);
 }
+
Index: backlight-target.h
===================================================================
--- backlight-target.h	(revision 12728)
+++ backlight-target.h	(working copy)
@@ -22,5 +22,6 @@
 void __backlight_on(void);
 void __backlight_off(void);
 void __backlight_set_brightness(int brightness);
+void __backlight_change_brightness(int brightness);
 
 #endif
