|
15 | 15 | #include <linux/i2c.h>
|
16 | 16 | #include <linux/init.h>
|
17 | 17 | #include <linux/module.h>
|
18 |
| -#include <linux/of_device.h> |
19 |
| -#include <linux/of_irq.h> |
20 |
| -#include <linux/pm_wakeirq.h> |
21 | 18 | #include <linux/rtc/ds1307.h>
|
22 | 19 | #include <linux/rtc.h>
|
23 | 20 | #include <linux/slab.h>
|
@@ -117,7 +114,6 @@ struct ds1307 {
|
117 | 114 | #define HAS_ALARM 1 /* bit 1 == irq claimed */
|
118 | 115 | struct i2c_client *client;
|
119 | 116 | struct rtc_device *rtc;
|
120 |
| - int wakeirq; |
121 | 117 | s32 (*read_block_data)(const struct i2c_client *client, u8 command,
|
122 | 118 | u8 length, u8 *values);
|
123 | 119 | s32 (*write_block_data)(const struct i2c_client *client, u8 command,
|
@@ -1146,43 +1142,20 @@ static int ds1307_probe(struct i2c_client *client,
|
1146 | 1142 | }
|
1147 | 1143 |
|
1148 | 1144 | if (want_irq) {
|
1149 |
| - struct device_node *node = client->dev.of_node; |
1150 |
| - |
1151 | 1145 | err = devm_request_threaded_irq(&client->dev,
|
1152 | 1146 | client->irq, NULL, irq_handler,
|
1153 | 1147 | IRQF_SHARED | IRQF_ONESHOT,
|
1154 | 1148 | ds1307->rtc->name, client);
|
1155 | 1149 | if (err) {
|
1156 | 1150 | client->irq = 0;
|
1157 | 1151 | dev_err(&client->dev, "unable to request IRQ!\n");
|
1158 |
| - goto no_irq; |
1159 |
| - } |
1160 |
| - |
1161 |
| - set_bit(HAS_ALARM, &ds1307->flags); |
1162 |
| - dev_dbg(&client->dev, "got IRQ %d\n", client->irq); |
1163 |
| - |
1164 |
| - /* Currently supported by OF code only! */ |
1165 |
| - if (!node) |
1166 |
| - goto no_irq; |
1167 |
| - |
1168 |
| - err = of_irq_get(node, 1); |
1169 |
| - if (err <= 0) { |
1170 |
| - if (err == -EPROBE_DEFER) |
1171 |
| - goto exit; |
1172 |
| - goto no_irq; |
1173 |
| - } |
1174 |
| - ds1307->wakeirq = err; |
| 1152 | + } else { |
1175 | 1153 |
|
1176 |
| - err = dev_pm_set_dedicated_wake_irq(&client->dev, |
1177 |
| - ds1307->wakeirq); |
1178 |
| - if (err) { |
1179 |
| - dev_err(&client->dev, "unable to setup wakeIRQ %d!\n", |
1180 |
| - err); |
1181 |
| - goto exit; |
| 1154 | + set_bit(HAS_ALARM, &ds1307->flags); |
| 1155 | + dev_dbg(&client->dev, "got IRQ %d\n", client->irq); |
1182 | 1156 | }
|
1183 | 1157 | }
|
1184 | 1158 |
|
1185 |
| -no_irq: |
1186 | 1159 | if (chip->nvram_size) {
|
1187 | 1160 |
|
1188 | 1161 | ds1307->nvram = devm_kzalloc(&client->dev,
|
@@ -1226,9 +1199,6 @@ static int ds1307_remove(struct i2c_client *client)
|
1226 | 1199 | {
|
1227 | 1200 | struct ds1307 *ds1307 = i2c_get_clientdata(client);
|
1228 | 1201 |
|
1229 |
| - if (ds1307->wakeirq) |
1230 |
| - dev_pm_clear_wake_irq(&client->dev); |
1231 |
| - |
1232 | 1202 | if (test_and_clear_bit(HAS_NVRAM, &ds1307->flags))
|
1233 | 1203 | sysfs_remove_bin_file(&client->dev.kobj, ds1307->nvram);
|
1234 | 1204 |
|
|
0 commit comments