]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/macintosh/adb.c
[POWERPC] Add 64-bit resources support to pci_iomap
[karo-tx-linux.git] / drivers / macintosh / adb.c
index 360f93f6fcdb55de9941c14e38349c82a59f516b..5c742a526082484f41dbb1592d982a7d010c725f 100644 (file)
@@ -89,8 +89,8 @@ static int sleepy_trackpad;
 static int autopoll_devs;
 int __adb_probe_sync;
 
-#ifdef CONFIG_PM
-static int adb_notify_sleep(struct pmu_sleep_notifier *self, int when);
+#ifdef CONFIG_PM_SLEEP
+static void adb_notify_sleep(struct pmu_sleep_notifier *self, int when);
 static struct pmu_sleep_notifier adb_sleep_notifier = {
        adb_notify_sleep,
        SLEEP_LEVEL_ADB,
@@ -103,7 +103,7 @@ static void adbdev_init(void);
 static int try_handler_change(int, int);
 
 static struct adb_handler {
-       void (*handler)(unsigned char *, int, struct pt_regs *, int);
+       void (*handler)(unsigned char *, int, int);
        int original_address;
        int handler_id;
        int busy;
@@ -248,31 +248,25 @@ static int adb_scan_bus(void)
 static int
 adb_probe_task(void *x)
 {
-       sigset_t blocked;
-
        strcpy(current->comm, "kadbprobe");
 
-       sigfillset(&blocked);
-       sigprocmask(SIG_BLOCK, &blocked, NULL);
-       flush_signals(current);
-
        printk(KERN_INFO "adb: starting probe task...\n");
        do_adb_reset_bus();
        printk(KERN_INFO "adb: finished probe task...\n");
-       
+
        adb_probe_task_pid = 0;
        up(&adb_probe_mutex);
-       
+
        return 0;
 }
 
 static void
-__adb_probe_task(void *data)
+__adb_probe_task(struct work_struct *bullshit)
 {
        adb_probe_task_pid = kernel_thread(adb_probe_task, NULL, SIGCHLD | CLONE_KERNEL);
 }
 
-static DECLARE_WORK(adb_reset_work, __adb_probe_task, NULL);
+static DECLARE_WORK(adb_reset_work, __adb_probe_task);
 
 int
 adb_reset_bus(void)
@@ -319,7 +313,7 @@ int __init adb_init(void)
                printk(KERN_WARNING "Warning: no ADB interface detected\n");
                adb_controller = NULL;
        } else {
-#ifdef CONFIG_PM
+#ifdef CONFIG_PM_SLEEP
                pmu_register_sleep_notifier(&adb_sleep_notifier);
 #endif /* CONFIG_PM */
 #ifdef CONFIG_PPC
@@ -340,11 +334,9 @@ __initcall(adb_init);
 /*
  * notify clients before sleep and reset bus afterwards
  */
-int
+void
 adb_notify_sleep(struct pmu_sleep_notifier *self, int when)
 {
-       int ret;
-       
        switch (when) {
        case PBOOK_SLEEP_REQUEST:
                adb_got_sleep = 1;
@@ -353,22 +345,8 @@ adb_notify_sleep(struct pmu_sleep_notifier *self, int when)
                /* Stop autopoll */
                if (adb_controller->autopoll)
                        adb_controller->autopoll(0);
-               ret = blocking_notifier_call_chain(&adb_client_list,
-                               ADB_MSG_POWERDOWN, NULL);
-               if (ret & NOTIFY_STOP_MASK) {
-                       up(&adb_probe_mutex);
-                       return PBOOK_SLEEP_REFUSE;
-               }
-               break;
-       case PBOOK_SLEEP_REJECT:
-               if (adb_got_sleep) {
-                       adb_got_sleep = 0;
-                       up(&adb_probe_mutex);
-                       adb_reset_bus();
-               }
-               break;
-               
-       case PBOOK_SLEEP_NOW:
+               blocking_notifier_call_chain(&adb_client_list,
+                       ADB_MSG_POWERDOWN, NULL);
                break;
        case PBOOK_WAKE:
                adb_got_sleep = 0;
@@ -376,14 +354,13 @@ adb_notify_sleep(struct pmu_sleep_notifier *self, int when)
                adb_reset_bus();
                break;
        }
-       return PBOOK_SLEEP_OK;
 }
 #endif /* CONFIG_PM */
 
 static int
 do_adb_reset_bus(void)
 {
-       int ret, nret;
+       int ret;
        
        if (adb_controller == NULL)
                return -ENXIO;
@@ -391,13 +368,8 @@ do_adb_reset_bus(void)
        if (adb_controller->autopoll)
                adb_controller->autopoll(0);
 
-       nret = blocking_notifier_call_chain(&adb_client_list,
-                       ADB_MSG_PRE_RESET, NULL);
-       if (nret & NOTIFY_STOP_MASK) {
-               if (adb_controller->autopoll)
-                       adb_controller->autopoll(autopoll_devs);
-               return -EBUSY;
-       }
+       blocking_notifier_call_chain(&adb_client_list,
+               ADB_MSG_PRE_RESET, NULL);
 
        if (sleepy_trackpad) {
                /* Let the trackpad settle down */
@@ -427,10 +399,8 @@ do_adb_reset_bus(void)
        }
        up(&adb_handler_sem);
 
-       nret = blocking_notifier_call_chain(&adb_client_list,
-                       ADB_MSG_POST_RESET, NULL);
-       if (nret & NOTIFY_STOP_MASK)
-               return -EBUSY;
+       blocking_notifier_call_chain(&adb_client_list,
+               ADB_MSG_POST_RESET, NULL);
        
        return ret;
 }
@@ -522,7 +492,7 @@ bail:
     the handler_id id it doesn't match. */
 int
 adb_register(int default_id, int handler_id, struct adb_ids *ids,
-            void (*handler)(unsigned char *, int, struct pt_regs *, int))
+            void (*handler)(unsigned char *, int, int))
 {
        int i;
 
@@ -570,13 +540,13 @@ adb_unregister(int index)
 }
 
 void
-adb_input(unsigned char *buf, int nb, struct pt_regs *regs, int autopoll)
+adb_input(unsigned char *buf, int nb, int autopoll)
 {
        int i, id;
        static int dump_adb_input = 0;
        unsigned long flags;
        
-       void (*handler)(unsigned char *, int, struct pt_regs *, int);
+       void (*handler)(unsigned char *, int, int);
 
        /* We skip keystrokes and mouse moves when the sleep process
         * has been started. We stop autopoll, but this is another security
@@ -597,7 +567,7 @@ adb_input(unsigned char *buf, int nb, struct pt_regs *regs, int autopoll)
                adb_handler[id].busy = 1;
        write_unlock_irqrestore(&adb_handler_lock, flags);
        if (handler != NULL) {
-               (*handler)(buf, nb, regs, autopoll);
+               (*handler)(buf, nb, autopoll);
                wmb();
                adb_handler[id].busy = 0;
        }
@@ -828,7 +798,7 @@ static ssize_t adb_write(struct file *file, const char __user *buf,
        if (!access_ok(VERIFY_READ, buf, count))
                return -EFAULT;
 
-       req = (struct adb_request *) kmalloc(sizeof(struct adb_request),
+       req = kmalloc(sizeof(struct adb_request),
                                             GFP_KERNEL);
        if (req == NULL)
                return -ENOMEM;
@@ -885,7 +855,7 @@ out:
        return ret;
 }
 
-static struct file_operations adb_fops = {
+static const struct file_operations adb_fops = {
        .owner          = THIS_MODULE,
        .llseek         = no_llseek,
        .read           = adb_read,