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
vserver 1.9.3
[linux-2.6.git]
/
drivers
/
macintosh
/
via-pmu.c
diff --git
a/drivers/macintosh/via-pmu.c
b/drivers/macintosh/via-pmu.c
index
b983167
..
9f4147e
100644
(file)
--- a/
drivers/macintosh/via-pmu.c
+++ b/
drivers/macintosh/via-pmu.c
@@
-52,7
+52,6
@@
#include <asm/system.h>
#include <asm/sections.h>
#include <asm/irq.h>
#include <asm/system.h>
#include <asm/sections.h>
#include <asm/irq.h>
-#include <asm/hardirq.h>
#include <asm/pmac_feature.h>
#include <asm/uaccess.h>
#include <asm/mmu_context.h>
#include <asm/pmac_feature.h>
#include <asm/uaccess.h>
#include <asm/mmu_context.h>
@@
-138,7
+137,6
@@
static int data_len;
static volatile int adb_int_pending;
static volatile int disable_poll;
static struct adb_request bright_req_1, bright_req_2;
static volatile int adb_int_pending;
static volatile int disable_poll;
static struct adb_request bright_req_1, bright_req_2;
-static unsigned long async_req_locks;
static struct device_node *vias;
static int pmu_kind = PMU_UNKNOWN;
static int pmu_fully_inited = 0;
static struct device_node *vias;
static int pmu_kind = PMU_UNKNOWN;
static int pmu_fully_inited = 0;
@@
-155,6
+153,7
@@
static int drop_interrupts;
static int option_lid_wakeup = 1;
static int sleep_in_progress;
static int can_sleep;
static int option_lid_wakeup = 1;
static int sleep_in_progress;
static int can_sleep;
+static unsigned long async_req_locks;
#endif /* CONFIG_PMAC_PBOOK */
static unsigned int pmu_irq_stats[11];
#endif /* CONFIG_PMAC_PBOOK */
static unsigned int pmu_irq_stats[11];
@@
-492,14
+491,11
@@
static int __init via_pmu_dev_init(void)
}
#endif /* CONFIG_PMAC_PBOOK */
/* Create /proc/pmu */
}
#endif /* CONFIG_PMAC_PBOOK */
/* Create /proc/pmu */
- proc_pmu_root = proc_mkdir("pmu",
0
);
+ proc_pmu_root = proc_mkdir("pmu",
NULL
);
if (proc_pmu_root) {
if (proc_pmu_root) {
- int i;
- proc_pmu_info = create_proc_read_entry("info", 0, proc_pmu_root,
- proc_get_info, NULL);
- proc_pmu_irqstats = create_proc_read_entry("interrupts", 0, proc_pmu_root,
- proc_get_irqstats, NULL);
#ifdef CONFIG_PMAC_PBOOK
#ifdef CONFIG_PMAC_PBOOK
+ int i;
+
for (i=0; i<pmu_battery_count; i++) {
char title[16];
sprintf(title, "battery_%d", i);
for (i=0; i<pmu_battery_count; i++) {
char title[16];
sprintf(title, "battery_%d", i);
@@
-507,6
+503,11
@@
static int __init via_pmu_dev_init(void)
proc_get_batt, (void *)i);
}
#endif /* CONFIG_PMAC_PBOOK */
proc_get_batt, (void *)i);
}
#endif /* CONFIG_PMAC_PBOOK */
+
+ proc_pmu_info = create_proc_read_entry("info", 0, proc_pmu_root,
+ proc_get_info, NULL);
+ proc_pmu_irqstats = create_proc_read_entry("interrupts", 0, proc_pmu_root,
+ proc_get_irqstats, NULL);
proc_pmu_options = create_proc_entry("options", 0600, proc_pmu_root);
if (proc_pmu_options) {
proc_pmu_options->nlink = 1;
proc_pmu_options = create_proc_entry("options", 0600, proc_pmu_root);
if (proc_pmu_options) {
proc_pmu_options->nlink = 1;
@@
-549,7
+550,7
@@
init_pmu(void)
}
if (pmu_state == idle)
adb_int_pending = 1;
}
if (pmu_state == idle)
adb_int_pending = 1;
- via_pmu_interrupt(0,
0, 0
);
+ via_pmu_interrupt(0,
NULL, NULL
);
udelay(10);
}
udelay(10);
}
@@
-746,6
+747,8
@@
done_battery_state_smart(struct adb_request* req)
pmu_power_flags &= ~PMU_PWR_AC_PRESENT;
pmu_power_flags &= ~PMU_PWR_AC_PRESENT;
+ capa = max = amperage = voltage = 0;
+
if (req->reply[1] & 0x04) {
bat_flags |= PMU_BATT_PRESENT;
switch(req->reply[0]) {
if (req->reply[1] & 0x04) {
bat_flags |= PMU_BATT_PRESENT;
switch(req->reply[0]) {
@@
-765,8
+768,7
@@
done_battery_state_smart(struct adb_request* req)
req->reply_len, req->reply[0], req->reply[1], req->reply[2], req->reply[3]);
break;
}
req->reply_len, req->reply[0], req->reply[1], req->reply[2], req->reply[3]);
break;
}
- } else
- capa = max = amperage = voltage = 0;
+ }
if ((req->reply[1] & 0x01) && (amperage > 0))
bat_flags |= PMU_BATT_CHARGING;
if ((req->reply[1] & 0x01) && (amperage > 0))
bat_flags |= PMU_BATT_CHARGING;
@@
-1122,7
+1124,7
@@
pmu_queue_request(struct adb_request *req)
return -EINVAL;
}
return -EINVAL;
}
- req->next =
0
;
+ req->next =
NULL
;
req->sent = 0;
req->complete = 0;
req->sent = 0;
req->complete = 0;
@@
-1225,7
+1227,7
@@
pmu_poll(void)
return;
if (disable_poll)
return;
return;
if (disable_poll)
return;
- via_pmu_interrupt(0,
0, 0
);
+ via_pmu_interrupt(0,
NULL, NULL
);
}
void __openfirmware
}
void __openfirmware
@@
-1238,7
+1240,7
@@
pmu_poll_adb(void)
/* Kicks ADB read when PMU is suspended */
adb_int_pending = 1;
do {
/* Kicks ADB read when PMU is suspended */
adb_int_pending = 1;
do {
- via_pmu_interrupt(0,
0, 0
);
+ via_pmu_interrupt(0,
NULL, NULL
);
} while (pmu_suspended && (adb_int_pending || pmu_state != idle
|| req_awaiting_reply));
}
} while (pmu_suspended && (adb_int_pending || pmu_state != idle
|| req_awaiting_reply));
}
@@
-1249,7
+1251,7
@@
pmu_wait_complete(struct adb_request *req)
if (!via)
return;
while((pmu_state != idle && pmu_state != locked) || !req->complete)
if (!via)
return;
while((pmu_state != idle && pmu_state != locked) || !req->complete)
- via_pmu_interrupt(0,
0, 0
);
+ via_pmu_interrupt(0,
NULL, NULL
);
}
/* This function loops until the PMU is idle and prevents it from
}
/* This function loops until the PMU is idle and prevents it from
@@
-1278,7
+1280,7
@@
pmu_suspend(void)
spin_unlock_irqrestore(&pmu_lock, flags);
if (req_awaiting_reply)
adb_int_pending = 1;
spin_unlock_irqrestore(&pmu_lock, flags);
if (req_awaiting_reply)
adb_int_pending = 1;
- via_pmu_interrupt(0,
0, 0
);
+ via_pmu_interrupt(0,
NULL, NULL
);
spin_lock_irqsave(&pmu_lock, flags);
if (!adb_int_pending && pmu_state == idle && !req_awaiting_reply) {
#ifdef SUSPEND_USES_PMU
spin_lock_irqsave(&pmu_lock, flags);
if (!adb_int_pending && pmu_state == idle && !req_awaiting_reply) {
#ifdef SUSPEND_USES_PMU
@@
-1377,7
+1379,7
@@
next:
printk(KERN_ERR "PMU: extra ADB reply\n");
return;
}
printk(KERN_ERR "PMU: extra ADB reply\n");
return;
}
- req_awaiting_reply =
0
;
+ req_awaiting_reply =
NULL
;
if (len <= 2)
req->reply_len = 0;
else {
if (len <= 2)
req->reply_len = 0;
else {
@@
-1445,7
+1447,7
@@
static struct adb_request* __pmac
pmu_sr_intr(struct pt_regs *regs)
{
struct adb_request *req;
pmu_sr_intr(struct pt_regs *regs)
{
struct adb_request *req;
- int bite;
+ int bite
= 0
;
if (via[B] & TREQ) {
printk(KERN_ERR "PMU: spurious SR intr (%x)\n", via[B]);
if (via[B] & TREQ) {
printk(KERN_ERR "PMU: spurious SR intr (%x)\n", via[B]);
@@
-1662,7
+1664,7
@@
gpio1_interrupt(int irq, void *arg, struct pt_regs *regs)
pmu_irq_stats[1]++;
adb_int_pending = 1;
spin_unlock_irqrestore(&pmu_lock, flags);
pmu_irq_stats[1]++;
adb_int_pending = 1;
spin_unlock_irqrestore(&pmu_lock, flags);
- via_pmu_interrupt(0,
0, 0
);
+ via_pmu_interrupt(0,
NULL, NULL
);
return IRQ_HANDLED;
}
return IRQ_NONE;
return IRQ_HANDLED;
}
return IRQ_NONE;
@@
-2071,7
+2073,7
@@
pmu_unregister_sleep_notifier(struct pmu_sleep_notifier* n)
if (n->list.next == 0)
return -ENOENT;
list_del(&n->list);
if (n->list.next == 0)
return -ENOENT;
list_del(&n->list);
- n->list.next =
0
;
+ n->list.next =
NULL
;
return 0;
}
return 0;
}
@@
-2406,7
+2408,7
@@
pmac_wakeup_devices(void)
/* Force a poll of ADB interrupts */
adb_int_pending = 1;
/* Force a poll of ADB interrupts */
adb_int_pending = 1;
- via_pmu_interrupt(0,
0, 0
);
+ via_pmu_interrupt(0,
NULL, NULL
);
/* Restart jiffies & scheduling */
wakeup_decrementer();
/* Restart jiffies & scheduling */
wakeup_decrementer();
@@
-2857,7
+2859,7
@@
pmu_release(struct inode *inode, struct file *file)
lock_kernel();
if (pp != 0) {
lock_kernel();
if (pp != 0) {
- file->private_data =
0
;
+ file->private_data =
NULL
;
spin_lock_irqsave(&all_pvt_lock, flags);
list_del(&pp->list);
spin_unlock_irqrestore(&all_pvt_lock, flags);
spin_lock_irqsave(&all_pvt_lock, flags);
list_del(&pp->list);
spin_unlock_irqrestore(&all_pvt_lock, flags);
@@
-2880,6
+2882,7
@@
pmu_ioctl(struct inode * inode, struct file *filp,
u_int cmd, u_long arg)
{
struct pmu_private *pp = filp->private_data;
u_int cmd, u_long arg)
{
struct pmu_private *pp = filp->private_data;
+ __u32 __user *argp = (__u32 __user *)arg;
int error;
switch (cmd) {
int error;
switch (cmd) {
@@
-2906,7
+2909,7
@@
pmu_ioctl(struct inode * inode, struct file *filp,
sleep_in_progress = 0;
return error;
case PMU_IOC_CAN_SLEEP:
sleep_in_progress = 0;
return error;
case PMU_IOC_CAN_SLEEP:
- return put_user((u32)can_sleep,
(__u32 *)arg
);
+ return put_user((u32)can_sleep,
argp
);
#ifdef CONFIG_PMAC_BACKLIGHT
/* Backlight should have its own device or go via
#ifdef CONFIG_PMAC_BACKLIGHT
/* Backlight should have its own device or go via
@@
-2918,13
+2921,13
@@
pmu_ioctl(struct inode * inode, struct file *filp,
error = get_backlight_level();
if (error < 0)
return error;
error = get_backlight_level();
if (error < 0)
return error;
- return put_user(error,
(__u32 *)arg
);
+ return put_user(error,
argp
);
case PMU_IOC_SET_BACKLIGHT:
{
__u32 value;
if (sleep_in_progress)
return -EBUSY;
case PMU_IOC_SET_BACKLIGHT:
{
__u32 value;
if (sleep_in_progress)
return -EBUSY;
- error = get_user(value,
(__u32 *)arg
);
+ error = get_user(value,
argp
);
if (!error)
error = set_backlight_level(value);
return error;
if (!error)
error = set_backlight_level(value);
return error;
@@
-2943,9
+2946,9
@@
pmu_ioctl(struct inode * inode, struct file *filp,
#endif /* CONFIG_INPUT_ADBHID */
#endif /* CONFIG_PMAC_BACKLIGHT */
case PMU_IOC_GET_MODEL:
#endif /* CONFIG_INPUT_ADBHID */
#endif /* CONFIG_PMAC_BACKLIGHT */
case PMU_IOC_GET_MODEL:
- return put_user(pmu_kind,
(__u32 *)arg
);
+ return put_user(pmu_kind,
argp
);
case PMU_IOC_HAS_ADB:
case PMU_IOC_HAS_ADB:
- return put_user(pmu_has_adb,
(__u32 *)arg
);
+ return put_user(pmu_has_adb,
argp
);
}
return -EINVAL;
}
}
return -EINVAL;
}