-
-static int current_intensity;
-
-static int locomolcd_set_intensity(struct backlight_device *bd)
-{
- int intensity = bd->props->brightness;
-
- if (bd->props->power != FB_BLANK_UNBLANK)
- intensity = 0;
- if (bd->props->fb_blank != FB_BLANK_UNBLANK)
- intensity = 0;
- if (locomolcd_flags & LOCOMOLCD_SUSPENDED)
- intensity = 0;
-
- switch (intensity) {
- /* AC and non-AC are handled differently, but produce same results in sharp code? */
- case 0: locomo_frontlight_set(locomolcd_dev, 0, 0, 161); break;
- case 1: locomo_frontlight_set(locomolcd_dev, 117, 0, 161); break;
- case 2: locomo_frontlight_set(locomolcd_dev, 163, 0, 148); break;
- case 3: locomo_frontlight_set(locomolcd_dev, 194, 0, 161); break;
- case 4: locomo_frontlight_set(locomolcd_dev, 194, 1, 161); break;
-
- default:
- return -ENODEV;
- }
- current_intensity = intensity;
- return 0;
-}
-
-static int locomolcd_get_intensity(struct backlight_device *bd)
-{
- return current_intensity;
-}
-
-static struct backlight_properties locomobl_data = {
- .owner = THIS_MODULE,
- .get_brightness = locomolcd_get_intensity,
- .update_status = locomolcd_set_intensity,
- .max_brightness = 4,
-};
-
-#ifdef CONFIG_PM
-static int locomolcd_suspend(struct locomo_dev *dev, pm_message_t state)
-{
- locomolcd_flags |= LOCOMOLCD_SUSPENDED;
- locomolcd_set_intensity(locomolcd_bl_device);
- return 0;
-}
-
-static int locomolcd_resume(struct locomo_dev *dev)
-{
- locomolcd_flags &= ~LOCOMOLCD_SUSPENDED;
- locomolcd_set_intensity(locomolcd_bl_device);
- return 0;
-}
-#else
-#define locomolcd_suspend NULL
-#define locomolcd_resume NULL
-#endif
-
-static int locomolcd_probe(struct locomo_dev *dev)