diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/rtc/rtc-pcf50633.c | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'drivers/rtc/rtc-pcf50633.c')
-rw-r--r-- | drivers/rtc/rtc-pcf50633.c | 45 |
1 files changed, 4 insertions, 41 deletions
diff --git a/drivers/rtc/rtc-pcf50633.c b/drivers/rtc/rtc-pcf50633.c index 16edf94ab42f..0c423892923c 100644 --- a/drivers/rtc/rtc-pcf50633.c +++ b/drivers/rtc/rtc-pcf50633.c | |||
@@ -58,7 +58,6 @@ struct pcf50633_time { | |||
58 | 58 | ||
59 | struct pcf50633_rtc { | 59 | struct pcf50633_rtc { |
60 | int alarm_enabled; | 60 | int alarm_enabled; |
61 | int second_enabled; | ||
62 | int alarm_pending; | 61 | int alarm_pending; |
63 | 62 | ||
64 | struct pcf50633 *pcf; | 63 | struct pcf50633 *pcf; |
@@ -106,25 +105,6 @@ pcf50633_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled) | |||
106 | return 0; | 105 | return 0; |
107 | } | 106 | } |
108 | 107 | ||
109 | static int | ||
110 | pcf50633_rtc_update_irq_enable(struct device *dev, unsigned int enabled) | ||
111 | { | ||
112 | struct pcf50633_rtc *rtc = dev_get_drvdata(dev); | ||
113 | int err; | ||
114 | |||
115 | if (enabled) | ||
116 | err = pcf50633_irq_unmask(rtc->pcf, PCF50633_IRQ_SECOND); | ||
117 | else | ||
118 | err = pcf50633_irq_mask(rtc->pcf, PCF50633_IRQ_SECOND); | ||
119 | |||
120 | if (err < 0) | ||
121 | return err; | ||
122 | |||
123 | rtc->second_enabled = enabled; | ||
124 | |||
125 | return 0; | ||
126 | } | ||
127 | |||
128 | static int pcf50633_rtc_read_time(struct device *dev, struct rtc_time *tm) | 108 | static int pcf50633_rtc_read_time(struct device *dev, struct rtc_time *tm) |
129 | { | 109 | { |
130 | struct pcf50633_rtc *rtc; | 110 | struct pcf50633_rtc *rtc; |
@@ -162,7 +142,7 @@ static int pcf50633_rtc_set_time(struct device *dev, struct rtc_time *tm) | |||
162 | { | 142 | { |
163 | struct pcf50633_rtc *rtc; | 143 | struct pcf50633_rtc *rtc; |
164 | struct pcf50633_time pcf_tm; | 144 | struct pcf50633_time pcf_tm; |
165 | int second_masked, alarm_masked, ret = 0; | 145 | int alarm_masked, ret = 0; |
166 | 146 | ||
167 | rtc = dev_get_drvdata(dev); | 147 | rtc = dev_get_drvdata(dev); |
168 | 148 | ||
@@ -181,11 +161,8 @@ static int pcf50633_rtc_set_time(struct device *dev, struct rtc_time *tm) | |||
181 | pcf_tm.time[PCF50633_TI_SEC]); | 161 | pcf_tm.time[PCF50633_TI_SEC]); |
182 | 162 | ||
183 | 163 | ||
184 | second_masked = pcf50633_irq_mask_get(rtc->pcf, PCF50633_IRQ_SECOND); | ||
185 | alarm_masked = pcf50633_irq_mask_get(rtc->pcf, PCF50633_IRQ_ALARM); | 164 | alarm_masked = pcf50633_irq_mask_get(rtc->pcf, PCF50633_IRQ_ALARM); |
186 | 165 | ||
187 | if (!second_masked) | ||
188 | pcf50633_irq_mask(rtc->pcf, PCF50633_IRQ_SECOND); | ||
189 | if (!alarm_masked) | 166 | if (!alarm_masked) |
190 | pcf50633_irq_mask(rtc->pcf, PCF50633_IRQ_ALARM); | 167 | pcf50633_irq_mask(rtc->pcf, PCF50633_IRQ_ALARM); |
191 | 168 | ||
@@ -194,8 +171,6 @@ static int pcf50633_rtc_set_time(struct device *dev, struct rtc_time *tm) | |||
194 | PCF50633_TI_EXTENT, | 171 | PCF50633_TI_EXTENT, |
195 | &pcf_tm.time[0]); | 172 | &pcf_tm.time[0]); |
196 | 173 | ||
197 | if (!second_masked) | ||
198 | pcf50633_irq_unmask(rtc->pcf, PCF50633_IRQ_SECOND); | ||
199 | if (!alarm_masked) | 174 | if (!alarm_masked) |
200 | pcf50633_irq_unmask(rtc->pcf, PCF50633_IRQ_ALARM); | 175 | pcf50633_irq_unmask(rtc->pcf, PCF50633_IRQ_ALARM); |
201 | 176 | ||
@@ -262,23 +237,15 @@ static struct rtc_class_ops pcf50633_rtc_ops = { | |||
262 | .set_time = pcf50633_rtc_set_time, | 237 | .set_time = pcf50633_rtc_set_time, |
263 | .read_alarm = pcf50633_rtc_read_alarm, | 238 | .read_alarm = pcf50633_rtc_read_alarm, |
264 | .set_alarm = pcf50633_rtc_set_alarm, | 239 | .set_alarm = pcf50633_rtc_set_alarm, |
265 | .alarm_irq_enable = pcf50633_rtc_alarm_irq_enable, | 240 | .alarm_irq_enable = pcf50633_rtc_alarm_irq_enable, |
266 | .update_irq_enable = pcf50633_rtc_update_irq_enable, | ||
267 | }; | 241 | }; |
268 | 242 | ||
269 | static void pcf50633_rtc_irq(int irq, void *data) | 243 | static void pcf50633_rtc_irq(int irq, void *data) |
270 | { | 244 | { |
271 | struct pcf50633_rtc *rtc = data; | 245 | struct pcf50633_rtc *rtc = data; |
272 | 246 | ||
273 | switch (irq) { | 247 | rtc_update_irq(rtc->rtc_dev, 1, RTC_AF | RTC_IRQF); |
274 | case PCF50633_IRQ_ALARM: | 248 | rtc->alarm_pending = 1; |
275 | rtc_update_irq(rtc->rtc_dev, 1, RTC_AF | RTC_IRQF); | ||
276 | rtc->alarm_pending = 1; | ||
277 | break; | ||
278 | case PCF50633_IRQ_SECOND: | ||
279 | rtc_update_irq(rtc->rtc_dev, 1, RTC_UF | RTC_IRQF); | ||
280 | break; | ||
281 | } | ||
282 | } | 249 | } |
283 | 250 | ||
284 | static int __devinit pcf50633_rtc_probe(struct platform_device *pdev) | 251 | static int __devinit pcf50633_rtc_probe(struct platform_device *pdev) |
@@ -302,9 +269,6 @@ static int __devinit pcf50633_rtc_probe(struct platform_device *pdev) | |||
302 | 269 | ||
303 | pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_ALARM, | 270 | pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_ALARM, |
304 | pcf50633_rtc_irq, rtc); | 271 | pcf50633_rtc_irq, rtc); |
305 | pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_SECOND, | ||
306 | pcf50633_rtc_irq, rtc); | ||
307 | |||
308 | return 0; | 272 | return 0; |
309 | } | 273 | } |
310 | 274 | ||
@@ -315,7 +279,6 @@ static int __devexit pcf50633_rtc_remove(struct platform_device *pdev) | |||
315 | rtc = platform_get_drvdata(pdev); | 279 | rtc = platform_get_drvdata(pdev); |
316 | 280 | ||
317 | pcf50633_free_irq(rtc->pcf, PCF50633_IRQ_ALARM); | 281 | pcf50633_free_irq(rtc->pcf, PCF50633_IRQ_ALARM); |
318 | pcf50633_free_irq(rtc->pcf, PCF50633_IRQ_SECOND); | ||
319 | 282 | ||
320 | rtc_device_unregister(rtc->rtc_dev); | 283 | rtc_device_unregister(rtc->rtc_dev); |
321 | kfree(rtc); | 284 | kfree(rtc); |