#include <linux/interrupt.h>
 #include <linux/mmc/host.h>
 #include <linux/pm.h>
+#include <linux/backlight.h>
 
 #include <asm/setup.h>
 #include <asm/memory.h>
 /*
  * Corgi Backlight Device
  */
-static struct corgibl_machinfo corgi_bl_machinfo = {
+static void corgi_bl_kick_battery(void)
+{
+       void (*kick_batt)(void);
+
+       kick_batt = symbol_get(sharpsl_battery_kick);
+       if (kick_batt) {
+               kick_batt();
+               symbol_put(sharpsl_battery_kick);
+       }
+}
+
+static struct generic_bl_info corgi_bl_machinfo = {
+       .name = "corgi-bl",
        .max_intensity = 0x2f,
        .default_intensity = 0x1f,
        .limit_mask = 0x0b,
        .set_bl_intensity = corgi_bl_set_intensity,
+       .kick_battery = corgi_bl_kick_battery,
 };
 
 static struct platform_device corgibl_device = {
-       .name           = "corgi-bl",
+       .name           = "generic-bl",
        .dev            = {
                .parent = &corgifb_device.dev,
                .platform_data  = &corgi_bl_machinfo,
 
 #include <linux/interrupt.h>
 #include <linux/mmc/host.h>
 #include <linux/pm.h>
+#include <linux/backlight.h>
 
 #include <asm/setup.h>
 #include <asm/memory.h>
 /*
  * Spitz Backlight Device
  */
-static struct corgibl_machinfo spitz_bl_machinfo = {
+static void spitz_bl_kick_battery(void)
+{
+       void (*kick_batt)(void);
+
+       kick_batt = symbol_get(sharpsl_battery_kick);
+       if (kick_batt) {
+               kick_batt();
+               symbol_put(sharpsl_battery_kick);
+       }
+}
+
+static struct generic_bl_info spitz_bl_machinfo = {
+       .name = "corgi-bl",
        .default_intensity = 0x1f,
        .limit_mask = 0x0b,
        .max_intensity = 0x2f,
+       .kick_battery = spitz_bl_kick_battery,
 };
 
 static struct platform_device spitzbl_device = {
-       .name           = "corgi-bl",
+       .name           = "generic-bl",
        .dev            = {
                .platform_data  = &spitz_bl_machinfo,
        },
 
          select the proper drivers which depend on this option.
 
 config BACKLIGHT_CORGI
-       tristate "Sharp Corgi Backlight Driver (SL Series)"
-       depends on BACKLIGHT_CLASS_DEVICE && PXA_SHARPSL
-       default y
+       tristate "Generic (aka Sharp Corgi) Backlight Driver"
+       depends on BACKLIGHT_CLASS_DEVICE
+       default n
        help
-         If you have a Sharp Zaurus SL-C7xx, SL-Cxx00 or SL-6000x say y to enable the
-         backlight driver.
+         Say y to enable the generic platform backlight driver previously
+         known as the Corgi backlight driver. If you have a Sharp Zaurus
+         SL-C7xx, SL-Cxx00 or SL-6000x say y. Most users can say n.
 
 config BACKLIGHT_LOCOMO
        tristate "Sharp LOCOMO LCD/Backlight Driver"
 
 #include <linux/mutex.h>
 #include <linux/fb.h>
 #include <linux/backlight.h>
-#include <asm/arch/sharpsl.h>
-#include <asm/hardware/sharpsl_pm.h>
 
 static int corgibl_intensity;
 static struct backlight_properties corgibl_data;
 static struct backlight_device *corgi_backlight_device;
-static struct corgibl_machinfo *bl_machinfo;
+static struct generic_bl_info *bl_machinfo;
 
 static unsigned long corgibl_flags;
 #define CORGIBL_SUSPENDED     0x01
 
 static int corgibl_send_intensity(struct backlight_device *bd)
 {
-       void (*corgi_kick_batt)(void);
        int intensity = bd->props.brightness;
 
        if (bd->props.power != FB_BLANK_UNBLANK)
 
        corgibl_intensity = intensity;
 
-       corgi_kick_batt = symbol_get(sharpsl_battery_kick);
-       if (corgi_kick_batt) {
-               corgi_kick_batt();
-               symbol_put(sharpsl_battery_kick);
-       }
+       if (bl_machinfo->kick_battery)
+               bl_machinfo->kick_battery();
 
        return 0;
 }
 
 static int corgibl_probe(struct platform_device *pdev)
 {
-       struct corgibl_machinfo *machinfo = pdev->dev.platform_data;
+       struct generic_bl_info *machinfo = pdev->dev.platform_data;
+       const char *name = "generic-bl";
 
        bl_machinfo = machinfo;
        if (!machinfo->limit_mask)
                machinfo->limit_mask = -1;
 
-       corgi_backlight_device = backlight_device_register ("corgi-bl",
+       if (machinfo->name)
+               name = machinfo->name;
+
+       corgi_backlight_device = backlight_device_register (name,
                &pdev->dev, NULL, &corgibl_ops);
        if (IS_ERR (corgi_backlight_device))
                return PTR_ERR (corgi_backlight_device);
        .suspend        = corgibl_suspend,
        .resume         = corgibl_resume,
        .driver         = {
-               .name   = "corgi-bl",
+               .name   = "generic-bl",
        },
 };
 
 
 /*
  * SharpSL Backlight
  */
-struct corgibl_machinfo {
-       int max_intensity;
-       int default_intensity;
-       int limit_mask;
-       void (*set_bl_intensity)(int intensity);
-};
 extern void corgibl_limit_intensity(int limit);
 
 
 
        return dev_get_drvdata(&bl_dev->dev);
 }
 
+struct generic_bl_info {
+       const char *name;
+       int max_intensity;
+       int default_intensity;
+       int limit_mask;
+       void (*set_bl_intensity)(int intensity);
+       void (*kick_battery)(void);
+};
+
 #endif