git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
drivers
/
macintosh
/
adb.c
diff --git
a/drivers/macintosh/adb.c
b/drivers/macintosh/adb.c
index
3d2357e
..
7cec6de
100644
(file)
--- a/
drivers/macintosh/adb.c
+++ b/
drivers/macintosh/adb.c
@@
-16,7
+16,6
@@
* - move bus probe to a kernel thread
*/
* - move bus probe to a kernel thread
*/
-#include <linux/config.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/kernel.h>
@@
-36,12
+35,12
@@
#include <linux/spinlock.h>
#include <linux/completion.h>
#include <linux/device.h>
#include <linux/spinlock.h>
#include <linux/completion.h>
#include <linux/device.h>
-#include <linux/devfs_fs_kernel.h>
#include <asm/uaccess.h>
#include <asm/semaphore.h>
#ifdef CONFIG_PPC
#include <asm/prom.h>
#include <asm/uaccess.h>
#include <asm/semaphore.h>
#ifdef CONFIG_PPC
#include <asm/prom.h>
+#include <asm/machdep.h>
#endif
#endif
@@
-77,10
+76,10
@@
static struct adb_driver *adb_driver_list[] = {
NULL
};
NULL
};
-static struct class
_simple
*adb_dev_class;
+static struct class *adb_dev_class;
struct adb_driver *adb_controller;
struct adb_driver *adb_controller;
-
struct notifier_block *adb_client_list = NULL
;
+
BLOCKING_NOTIFIER_HEAD(adb_client_list)
;
static int adb_got_sleep;
static int adb_inited;
static pid_t adb_probe_task_pid;
static int adb_got_sleep;
static int adb_inited;
static pid_t adb_probe_task_pid;
@@
-90,7
+89,7
@@
static int sleepy_trackpad;
static int autopoll_devs;
int __adb_probe_sync;
static int autopoll_devs;
int __adb_probe_sync;
-#ifdef CONFIG_PM
AC_PBOOK
+#ifdef CONFIG_PM
static int adb_notify_sleep(struct pmu_sleep_notifier *self, int when);
static struct pmu_sleep_notifier adb_sleep_notifier = {
adb_notify_sleep,
static int adb_notify_sleep(struct pmu_sleep_notifier *self, int when);
static struct pmu_sleep_notifier adb_sleep_notifier = {
adb_notify_sleep,
@@
-104,7
+103,7
@@
static void adbdev_init(void);
static int try_handler_change(int, int);
static struct adb_handler {
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;
int original_address;
int handler_id;
int busy;
@@
-120,7
+119,7
@@
static struct adb_handler {
* called.
*/
static DECLARE_MUTEX(adb_handler_sem);
* called.
*/
static DECLARE_MUTEX(adb_handler_sem);
-static
rwlock_t adb_handler_lock = RW_LOCK_UNLOCKED
;
+static
DEFINE_RWLOCK(adb_handler_lock)
;
#if 0
static void printADBreply(struct adb_request *req)
#if 0
static void printADBreply(struct adb_request *req)
@@
-139,10
+138,9
@@
static void printADBreply(struct adb_request *req)
static __inline__ void adb_wait_ms(unsigned int ms)
{
if (current->pid && adb_probe_task_pid &&
static __inline__ void adb_wait_ms(unsigned int ms)
{
if (current->pid && adb_probe_task_pid &&
- adb_probe_task_pid == current->pid) {
- set_task_state(current, TASK_UNINTERRUPTIBLE);
- schedule_timeout(1 + ms * HZ / 1000);
- } else
+ adb_probe_task_pid == current->pid)
+ msleep(ms);
+ else
mdelay(ms);
}
mdelay(ms);
}
@@
-269,12
+267,12
@@
adb_probe_task(void *x)
}
static void
}
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);
}
{
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)
int
adb_reset_bus(void)
@@
-295,7
+293,7
@@
int __init adb_init(void)
int i;
#ifdef CONFIG_PPC32
int i;
#ifdef CONFIG_PPC32
- if (
(_machine != _MACH_chrp) && (_machine != _MACH_Pmac)
)
+ if (
!machine_is(chrp) && !machine_is(powermac)
)
return 0;
#endif
#ifdef CONFIG_MAC
return 0;
#endif
#ifdef CONFIG_MAC
@@
-321,9
+319,9
@@
int __init adb_init(void)
printk(KERN_WARNING "Warning: no ADB interface detected\n");
adb_controller = NULL;
} else {
printk(KERN_WARNING "Warning: no ADB interface detected\n");
adb_controller = NULL;
} else {
-#ifdef CONFIG_PM
AC_PBOOK
+#ifdef CONFIG_PM
pmu_register_sleep_notifier(&adb_sleep_notifier);
pmu_register_sleep_notifier(&adb_sleep_notifier);
-#endif /* CONFIG_PM
AC_PBOOK
*/
+#endif /* CONFIG_PM */
#ifdef CONFIG_PPC
if (machine_is_compatible("AAPL,PowerBook1998") ||
machine_is_compatible("PowerBook1,1"))
#ifdef CONFIG_PPC
if (machine_is_compatible("AAPL,PowerBook1998") ||
machine_is_compatible("PowerBook1,1"))
@@
-338,7
+336,7
@@
int __init adb_init(void)
__initcall(adb_init);
__initcall(adb_init);
-#ifdef CONFIG_PM
AC_PBOOK
+#ifdef CONFIG_PM
/*
* notify clients before sleep and reset bus afterwards
*/
/*
* notify clients before sleep and reset bus afterwards
*/
@@
-355,7
+353,8
@@
adb_notify_sleep(struct pmu_sleep_notifier *self, int when)
/* Stop autopoll */
if (adb_controller->autopoll)
adb_controller->autopoll(0);
/* Stop autopoll */
if (adb_controller->autopoll)
adb_controller->autopoll(0);
- ret = notifier_call_chain(&adb_client_list, ADB_MSG_POWERDOWN, NULL);
+ 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;
if (ret & NOTIFY_STOP_MASK) {
up(&adb_probe_mutex);
return PBOOK_SLEEP_REFUSE;
@@
-379,7
+378,7
@@
adb_notify_sleep(struct pmu_sleep_notifier *self, int when)
}
return PBOOK_SLEEP_OK;
}
}
return PBOOK_SLEEP_OK;
}
-#endif /* CONFIG_PM
AC_PBOOK
*/
+#endif /* CONFIG_PM */
static int
do_adb_reset_bus(void)
static int
do_adb_reset_bus(void)
@@
-392,7
+391,8
@@
do_adb_reset_bus(void)
if (adb_controller->autopoll)
adb_controller->autopoll(0);
if (adb_controller->autopoll)
adb_controller->autopoll(0);
- nret = notifier_call_chain(&adb_client_list, ADB_MSG_PRE_RESET, NULL);
+ 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);
if (nret & NOTIFY_STOP_MASK) {
if (adb_controller->autopoll)
adb_controller->autopoll(autopoll_devs);
@@
-427,7
+427,8
@@
do_adb_reset_bus(void)
}
up(&adb_handler_sem);
}
up(&adb_handler_sem);
- nret = notifier_call_chain(&adb_client_list, ADB_MSG_POST_RESET, NULL);
+ nret = blocking_notifier_call_chain(&adb_client_list,
+ ADB_MSG_POST_RESET, NULL);
if (nret & NOTIFY_STOP_MASK)
return -EBUSY;
if (nret & NOTIFY_STOP_MASK)
return -EBUSY;
@@
-521,7
+522,7
@@
bail:
the handler_id id it doesn't match. */
int
adb_register(int default_id, int handler_id, struct adb_ids *ids,
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;
{
int i;
@@
-561,7
+562,7
@@
adb_unregister(int index)
write_lock_irq(&adb_handler_lock);
}
ret = 0;
write_lock_irq(&adb_handler_lock);
}
ret = 0;
- adb_handler[index].handler =
0
;
+ adb_handler[index].handler =
NULL
;
}
write_unlock_irq(&adb_handler_lock);
up(&adb_handler_sem);
}
write_unlock_irq(&adb_handler_lock);
up(&adb_handler_sem);
@@
-569,13
+570,13
@@
adb_unregister(int index)
}
void
}
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;
{
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
/* We skip keystrokes and mouse moves when the sleep process
* has been started. We stop autopoll, but this is another security
@@
-596,7
+597,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) {
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;
}
wmb();
adb_handler[id].busy = 0;
}
@@
-756,7
+757,7
@@
static int adb_release(struct inode *inode, struct file *file)
static ssize_t adb_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos)
{
static ssize_t adb_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos)
{
- int ret;
+ int ret
= 0
;
struct adbdev_state *state = file->private_data;
struct adb_request *req;
wait_queue_t wait = __WAITQUEUE_INITIALIZER(wait,current);
struct adbdev_state *state = file->private_data;
struct adb_request *req;
wait_queue_t wait = __WAITQUEUE_INITIALIZER(wait,current);
@@
-766,9
+767,8
@@
static ssize_t adb_read(struct file *file, char __user *buf,
return -EINVAL;
if (count > sizeof(req->reply))
count = sizeof(req->reply);
return -EINVAL;
if (count > sizeof(req->reply))
count = sizeof(req->reply);
- ret = verify_area(VERIFY_WRITE, buf, count);
- if (ret)
- return ret;
+ if (!access_ok(VERIFY_WRITE, buf, count))
+ return -EFAULT;
req = NULL;
spin_lock_irqsave(&state->lock, flags);
req = NULL;
spin_lock_irqsave(&state->lock, flags);
@@
-825,11
+825,10
@@
static ssize_t adb_write(struct file *file, const char __user *buf,
return -EINVAL;
if (adb_controller == NULL)
return -ENXIO;
return -EINVAL;
if (adb_controller == NULL)
return -ENXIO;
- ret = verify_area(VERIFY_READ, buf, count);
- if (ret)
- return ret;
+ 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;
GFP_KERNEL);
if (req == NULL)
return -ENOMEM;
@@
-903,11
+902,8
@@
adbdev_init(void)
return;
}
return;
}
- devfs_mk_cdev(MKDEV(ADB_MAJOR, 0), S_IFCHR | S_IRUSR | S_IWUSR, "adb");
-
- adb_dev_class = class_simple_create(THIS_MODULE, "adb");
- if (IS_ERR(adb_dev_class)) {
+ adb_dev_class = class_create(THIS_MODULE, "adb");
+ if (IS_ERR(adb_dev_class))
return;
return;
- }
- class_simple_device_add(adb_dev_class, MKDEV(ADB_MAJOR, 0), NULL, "adb");
+ class_device_create(adb_dev_class, NULL, MKDEV(ADB_MAJOR, 0), NULL, "adb");
}
}