diff options
Diffstat (limited to 'drivers/macintosh')
-rw-r--r-- | drivers/macintosh/mac_hid.c | 17 | ||||
-rw-r--r-- | drivers/macintosh/via-pmu.c | 40 |
2 files changed, 29 insertions, 28 deletions
diff --git a/drivers/macintosh/mac_hid.c b/drivers/macintosh/mac_hid.c index cc9f27514aef..7b4ef5bb556b 100644 --- a/drivers/macintosh/mac_hid.c +++ b/drivers/macintosh/mac_hid.c | |||
@@ -27,54 +27,49 @@ static int mouse_last_keycode; | |||
27 | /* file(s) in /proc/sys/dev/mac_hid */ | 27 | /* file(s) in /proc/sys/dev/mac_hid */ |
28 | static ctl_table mac_hid_files[] = { | 28 | static ctl_table mac_hid_files[] = { |
29 | { | 29 | { |
30 | .ctl_name = DEV_MAC_HID_MOUSE_BUTTON_EMULATION, | ||
31 | .procname = "mouse_button_emulation", | 30 | .procname = "mouse_button_emulation", |
32 | .data = &mouse_emulate_buttons, | 31 | .data = &mouse_emulate_buttons, |
33 | .maxlen = sizeof(int), | 32 | .maxlen = sizeof(int), |
34 | .mode = 0644, | 33 | .mode = 0644, |
35 | .proc_handler = &proc_dointvec, | 34 | .proc_handler = proc_dointvec, |
36 | }, | 35 | }, |
37 | { | 36 | { |
38 | .ctl_name = DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE, | ||
39 | .procname = "mouse_button2_keycode", | 37 | .procname = "mouse_button2_keycode", |
40 | .data = &mouse_button2_keycode, | 38 | .data = &mouse_button2_keycode, |
41 | .maxlen = sizeof(int), | 39 | .maxlen = sizeof(int), |
42 | .mode = 0644, | 40 | .mode = 0644, |
43 | .proc_handler = &proc_dointvec, | 41 | .proc_handler = proc_dointvec, |
44 | }, | 42 | }, |
45 | { | 43 | { |
46 | .ctl_name = DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE, | ||
47 | .procname = "mouse_button3_keycode", | 44 | .procname = "mouse_button3_keycode", |
48 | .data = &mouse_button3_keycode, | 45 | .data = &mouse_button3_keycode, |
49 | .maxlen = sizeof(int), | 46 | .maxlen = sizeof(int), |
50 | .mode = 0644, | 47 | .mode = 0644, |
51 | .proc_handler = &proc_dointvec, | 48 | .proc_handler = proc_dointvec, |
52 | }, | 49 | }, |
53 | { .ctl_name = 0 } | 50 | { } |
54 | }; | 51 | }; |
55 | 52 | ||
56 | /* dir in /proc/sys/dev */ | 53 | /* dir in /proc/sys/dev */ |
57 | static ctl_table mac_hid_dir[] = { | 54 | static ctl_table mac_hid_dir[] = { |
58 | { | 55 | { |
59 | .ctl_name = DEV_MAC_HID, | ||
60 | .procname = "mac_hid", | 56 | .procname = "mac_hid", |
61 | .maxlen = 0, | 57 | .maxlen = 0, |
62 | .mode = 0555, | 58 | .mode = 0555, |
63 | .child = mac_hid_files, | 59 | .child = mac_hid_files, |
64 | }, | 60 | }, |
65 | { .ctl_name = 0 } | 61 | { } |
66 | }; | 62 | }; |
67 | 63 | ||
68 | /* /proc/sys/dev itself, in case that is not there yet */ | 64 | /* /proc/sys/dev itself, in case that is not there yet */ |
69 | static ctl_table mac_hid_root_dir[] = { | 65 | static ctl_table mac_hid_root_dir[] = { |
70 | { | 66 | { |
71 | .ctl_name = CTL_DEV, | ||
72 | .procname = "dev", | 67 | .procname = "dev", |
73 | .maxlen = 0, | 68 | .maxlen = 0, |
74 | .mode = 0555, | 69 | .mode = 0555, |
75 | .child = mac_hid_dir, | 70 | .child = mac_hid_dir, |
76 | }, | 71 | }, |
77 | { .ctl_name = 0 } | 72 | { } |
78 | }; | 73 | }; |
79 | 74 | ||
80 | static struct ctl_table_header *mac_hid_sysctl_header; | 75 | static struct ctl_table_header *mac_hid_sysctl_header; |
diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c index b40fb9b6c862..6f308a4757ee 100644 --- a/drivers/macintosh/via-pmu.c +++ b/drivers/macintosh/via-pmu.c | |||
@@ -405,7 +405,11 @@ static int __init via_pmu_start(void) | |||
405 | printk(KERN_ERR "via-pmu: can't map interrupt\n"); | 405 | printk(KERN_ERR "via-pmu: can't map interrupt\n"); |
406 | return -ENODEV; | 406 | return -ENODEV; |
407 | } | 407 | } |
408 | if (request_irq(irq, via_pmu_interrupt, 0, "VIA-PMU", (void *)0)) { | 408 | /* We set IRQF_TIMER because we don't want the interrupt to be disabled |
409 | * between the 2 passes of driver suspend, we control our own disabling | ||
410 | * for that one | ||
411 | */ | ||
412 | if (request_irq(irq, via_pmu_interrupt, IRQF_TIMER, "VIA-PMU", (void *)0)) { | ||
409 | printk(KERN_ERR "via-pmu: can't request irq %d\n", irq); | 413 | printk(KERN_ERR "via-pmu: can't request irq %d\n", irq); |
410 | return -ENODEV; | 414 | return -ENODEV; |
411 | } | 415 | } |
@@ -419,7 +423,7 @@ static int __init via_pmu_start(void) | |||
419 | gpio_irq = irq_of_parse_and_map(gpio_node, 0); | 423 | gpio_irq = irq_of_parse_and_map(gpio_node, 0); |
420 | 424 | ||
421 | if (gpio_irq != NO_IRQ) { | 425 | if (gpio_irq != NO_IRQ) { |
422 | if (request_irq(gpio_irq, gpio1_interrupt, 0, | 426 | if (request_irq(gpio_irq, gpio1_interrupt, IRQF_TIMER, |
423 | "GPIO1 ADB", (void *)0)) | 427 | "GPIO1 ADB", (void *)0)) |
424 | printk(KERN_ERR "pmu: can't get irq %d" | 428 | printk(KERN_ERR "pmu: can't get irq %d" |
425 | " (GPIO1)\n", gpio_irq); | 429 | " (GPIO1)\n", gpio_irq); |
@@ -925,8 +929,7 @@ proc_write_options(struct file *file, const char __user *buffer, | |||
925 | 929 | ||
926 | #ifdef CONFIG_ADB | 930 | #ifdef CONFIG_ADB |
927 | /* Send an ADB command */ | 931 | /* Send an ADB command */ |
928 | static int | 932 | static int pmu_send_request(struct adb_request *req, int sync) |
929 | pmu_send_request(struct adb_request *req, int sync) | ||
930 | { | 933 | { |
931 | int i, ret; | 934 | int i, ret; |
932 | 935 | ||
@@ -1005,16 +1008,11 @@ pmu_send_request(struct adb_request *req, int sync) | |||
1005 | } | 1008 | } |
1006 | 1009 | ||
1007 | /* Enable/disable autopolling */ | 1010 | /* Enable/disable autopolling */ |
1008 | static int | 1011 | static int __pmu_adb_autopoll(int devs) |
1009 | pmu_adb_autopoll(int devs) | ||
1010 | { | 1012 | { |
1011 | struct adb_request req; | 1013 | struct adb_request req; |
1012 | 1014 | ||
1013 | if ((vias == NULL) || (!pmu_fully_inited) || !pmu_has_adb) | ||
1014 | return -ENXIO; | ||
1015 | |||
1016 | if (devs) { | 1015 | if (devs) { |
1017 | adb_dev_map = devs; | ||
1018 | pmu_request(&req, NULL, 5, PMU_ADB_CMD, 0, 0x86, | 1016 | pmu_request(&req, NULL, 5, PMU_ADB_CMD, 0, 0x86, |
1019 | adb_dev_map >> 8, adb_dev_map); | 1017 | adb_dev_map >> 8, adb_dev_map); |
1020 | pmu_adb_flags = 2; | 1018 | pmu_adb_flags = 2; |
@@ -1027,9 +1025,17 @@ pmu_adb_autopoll(int devs) | |||
1027 | return 0; | 1025 | return 0; |
1028 | } | 1026 | } |
1029 | 1027 | ||
1028 | static int pmu_adb_autopoll(int devs) | ||
1029 | { | ||
1030 | if ((vias == NULL) || (!pmu_fully_inited) || !pmu_has_adb) | ||
1031 | return -ENXIO; | ||
1032 | |||
1033 | adb_dev_map = devs; | ||
1034 | return __pmu_adb_autopoll(devs); | ||
1035 | } | ||
1036 | |||
1030 | /* Reset the ADB bus */ | 1037 | /* Reset the ADB bus */ |
1031 | static int | 1038 | static int pmu_adb_reset_bus(void) |
1032 | pmu_adb_reset_bus(void) | ||
1033 | { | 1039 | { |
1034 | struct adb_request req; | 1040 | struct adb_request req; |
1035 | int save_autopoll = adb_dev_map; | 1041 | int save_autopoll = adb_dev_map; |
@@ -1038,13 +1044,13 @@ pmu_adb_reset_bus(void) | |||
1038 | return -ENXIO; | 1044 | return -ENXIO; |
1039 | 1045 | ||
1040 | /* anyone got a better idea?? */ | 1046 | /* anyone got a better idea?? */ |
1041 | pmu_adb_autopoll(0); | 1047 | __pmu_adb_autopoll(0); |
1042 | 1048 | ||
1043 | req.nbytes = 5; | 1049 | req.nbytes = 4; |
1044 | req.done = NULL; | 1050 | req.done = NULL; |
1045 | req.data[0] = PMU_ADB_CMD; | 1051 | req.data[0] = PMU_ADB_CMD; |
1046 | req.data[1] = 0; | 1052 | req.data[1] = ADB_BUSRESET; |
1047 | req.data[2] = ADB_BUSRESET; | 1053 | req.data[2] = 0; |
1048 | req.data[3] = 0; | 1054 | req.data[3] = 0; |
1049 | req.data[4] = 0; | 1055 | req.data[4] = 0; |
1050 | req.reply_len = 0; | 1056 | req.reply_len = 0; |
@@ -1056,7 +1062,7 @@ pmu_adb_reset_bus(void) | |||
1056 | pmu_wait_complete(&req); | 1062 | pmu_wait_complete(&req); |
1057 | 1063 | ||
1058 | if (save_autopoll != 0) | 1064 | if (save_autopoll != 0) |
1059 | pmu_adb_autopoll(save_autopoll); | 1065 | __pmu_adb_autopoll(save_autopoll); |
1060 | 1066 | ||
1061 | return 0; | 1067 | return 0; |
1062 | } | 1068 | } |