Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm
[pandora-kernel.git] / drivers / usb / misc / appledisplay.c
index a7932a7..1cb56f2 100644 (file)
@@ -88,9 +88,10 @@ static void appledisplay_complete(struct urb *urb)
 {
        struct appledisplay *pdata = urb->context;
        unsigned long flags;
+       int status = urb->status;
        int retval;
 
-       switch (urb->status) {
+       switch (status) {
        case 0:
                /* success */
                break;
@@ -102,12 +103,12 @@ static void appledisplay_complete(struct urb *urb)
        case -ENOENT:
        case -ESHUTDOWN:
                /* This urb is terminated, clean up */
-               dbg("%s - urb shutting down with status: %d",
-                       __FUNCTION__, urb->status);
+               dbg("%s - urb shuttingdown with status: %d",
+                       __FUNCTION__, status);
                return;
        default:
                dbg("%s - nonzero urb status received: %d",
-                       __FUNCTION__, urb->status);
+                       __FUNCTION__, status);
                goto exit;
        }
 
@@ -137,11 +138,11 @@ exit:
 
 static int appledisplay_bl_update_status(struct backlight_device *bd)
 {
-       struct appledisplay *pdata = class_get_devdata(&bd->class_dev);
+       struct appledisplay *pdata = bl_get_data(bd);
        int retval;
 
        pdata->msgdata[0] = 0x10;
-       pdata->msgdata[1] = bd->props->brightness;
+       pdata->msgdata[1] = bd->props.brightness;
 
        retval = usb_control_msg(
                pdata->udev,
@@ -158,7 +159,7 @@ static int appledisplay_bl_update_status(struct backlight_device *bd)
 
 static int appledisplay_bl_get_brightness(struct backlight_device *bd)
 {
-       struct appledisplay *pdata = class_get_devdata(&bd->class_dev);
+       struct appledisplay *pdata = bl_get_data(bd);
        int retval;
 
        retval = usb_control_msg(
@@ -177,11 +178,9 @@ static int appledisplay_bl_get_brightness(struct backlight_device *bd)
                return pdata->msgdata[1];
 }
 
-static struct backlight_properties appledisplay_bl_data = {
-       .owner          = THIS_MODULE,
+static struct backlight_ops appledisplay_bl_data = {
        .get_brightness = appledisplay_bl_get_brightness,
        .update_status  = appledisplay_bl_update_status,
-       .max_brightness = 0xFF
 };
 
 static void appledisplay_work(struct work_struct *work)
@@ -190,11 +189,9 @@ static void appledisplay_work(struct work_struct *work)
                container_of(work, struct appledisplay, work.work);
        int retval;
 
-       up(&pdata->bd->sem);
        retval = appledisplay_bl_get_brightness(pdata->bd);
        if (retval >= 0)
-               pdata->bd->props->brightness = retval;
-       down(&pdata->bd->sem);
+               pdata->bd->props.brightness = retval;
 
        /* Poll again in about 125ms if there's still a button pressed */
        if (pdata->button_pressed)
@@ -281,17 +278,17 @@ static int appledisplay_probe(struct usb_interface *iface,
        /* Register backlight device */
        snprintf(bl_name, sizeof(bl_name), "appledisplay%d",
                atomic_inc_return(&count_displays) - 1);
-       pdata->bd = backlight_device_register(bl_name, NULL, NULL,
+       pdata->bd = backlight_device_register(bl_name, NULL, pdata,
                                                &appledisplay_bl_data);
        if (IS_ERR(pdata->bd)) {
                err("appledisplay: Backlight registration failed");
                goto error;
        }
 
+       pdata->bd->props.max_brightness = 0xff;
+
        /* Try to get brightness */
-       up(&pdata->bd->sem);
        brightness = appledisplay_bl_get_brightness(pdata->bd);
-       down(&pdata->bd->sem);
 
        if (brightness < 0) {
                retval = brightness;
@@ -300,9 +297,7 @@ static int appledisplay_probe(struct usb_interface *iface,
        }
 
        /* Set brightness in backlight device */
-       up(&pdata->bd->sem);
-       pdata->bd->props->brightness = brightness;
-       down(&pdata->bd->sem);
+       pdata->bd->props.brightness = brightness;
 
        /* save our data pointer in the interface device */
        usb_set_intfdata(iface, pdata);