diff options
Diffstat (limited to 'drivers/macintosh/via-pmu-led.c')
-rw-r--r-- | drivers/macintosh/via-pmu-led.c | 35 |
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; | |||
31 | static struct adb_request pmu_blink_req; | 31 | static 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 */ |
33 | static int requested_change; | 33 | static int requested_change; |
34 | static int sleeping; | ||
35 | 34 | ||
36 | static void pmu_req_done(struct adb_request * req) | 35 | static 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 | ||
84 | static 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 | |||
104 | static struct pmu_sleep_notifier via_pmu_led_sleep_notif = { | ||
105 | .notifier_call = pmu_led_sleep_call, | ||
106 | }; | ||
107 | #endif | ||
108 | |||
109 | static int __init via_pmu_led_init(void) | 82 | static 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 | ||