aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/macintosh/via-pmu-led.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/macintosh/via-pmu-led.c')
-rw-r--r--drivers/macintosh/via-pmu-led.c35
1 files changed, 3 insertions, 32 deletions
diff --git a/drivers/macintosh/via-pmu-led.c b/drivers/macintosh/via-pmu-led.c
index fc89a7047cd0..55ad95671387 100644
--- a/drivers/macintosh/via-pmu-led.c
+++ b/drivers/macintosh/via-pmu-led.c
@@ -31,7 +31,6 @@ static spinlock_t pmu_blink_lock;
31static struct adb_request pmu_blink_req; 31static struct adb_request pmu_blink_req;
32/* -1: no change, 0: request off, 1: request on */ 32/* -1: no change, 0: request off, 1: request on */
33static int requested_change; 33static int requested_change;
34static int sleeping;
35 34
36static void pmu_req_done(struct adb_request * req) 35static void pmu_req_done(struct adb_request * req)
37{ 36{
@@ -41,7 +40,7 @@ static void pmu_req_done(struct adb_request * req)
41 /* if someone requested a change in the meantime 40 /* if someone requested a change in the meantime
42 * (we only see the last one which is fine) 41 * (we only see the last one which is fine)
43 * then apply it now */ 42 * then apply it now */
44 if (requested_change != -1 && !sleeping) 43 if (requested_change != -1 && !pmu_sys_suspended)
45 pmu_request(&pmu_blink_req, NULL, 4, 0xee, 4, 0, requested_change); 44 pmu_request(&pmu_blink_req, NULL, 4, 0xee, 4, 0, requested_change);
46 /* reset requested change */ 45 /* reset requested change */
47 requested_change = -1; 46 requested_change = -1;
@@ -66,7 +65,7 @@ static void pmu_led_set(struct led_classdev *led_cdev,
66 break; 65 break;
67 } 66 }
68 /* if request isn't done, then don't do anything */ 67 /* if request isn't done, then don't do anything */
69 if (pmu_blink_req.complete && !sleeping) 68 if (pmu_blink_req.complete && !pmu_sys_suspended)
70 pmu_request(&pmu_blink_req, NULL, 4, 0xee, 4, 0, requested_change); 69 pmu_request(&pmu_blink_req, NULL, 4, 0xee, 4, 0, requested_change);
71 out: 70 out:
72 spin_unlock_irqrestore(&pmu_blink_lock, flags); 71 spin_unlock_irqrestore(&pmu_blink_lock, flags);
@@ -80,32 +79,6 @@ static struct led_classdev pmu_led = {
80 .brightness_set = pmu_led_set, 79 .brightness_set = pmu_led_set,
81}; 80};
82 81
83#ifdef CONFIG_PM
84static void pmu_led_sleep_call(struct pmu_sleep_notifier *self, int when)
85{
86 unsigned long flags;
87
88 spin_lock_irqsave(&pmu_blink_lock, flags);
89
90 switch (when) {
91 case PBOOK_SLEEP_REQUEST:
92 sleeping = 1;
93 break;
94 case PBOOK_WAKE:
95 sleeping = 0;
96 break;
97 default:
98 /* do nothing */
99 break;
100 }
101 spin_unlock_irqrestore(&pmu_blink_lock, flags);
102}
103
104static struct pmu_sleep_notifier via_pmu_led_sleep_notif = {
105 .notifier_call = pmu_led_sleep_call,
106};
107#endif
108
109static int __init via_pmu_led_init(void) 82static int __init via_pmu_led_init(void)
110{ 83{
111 struct device_node *dt; 84 struct device_node *dt;
@@ -135,9 +108,7 @@ static int __init via_pmu_led_init(void)
135 /* no outstanding req */ 108 /* no outstanding req */
136 pmu_blink_req.complete = 1; 109 pmu_blink_req.complete = 1;
137 pmu_blink_req.done = pmu_req_done; 110 pmu_blink_req.done = pmu_req_done;
138#ifdef CONFIG_PM 111
139 pmu_register_sleep_notifier(&via_pmu_led_sleep_notif);
140#endif
141 return led_classdev_register(NULL, &pmu_led); 112 return led_classdev_register(NULL, &pmu_led);
142} 113}
143 114