rtc: ds1307: factor out irq_handler to struct chip_desc

Factor out irq_handler to struct chip_desc and use ds1307_irq as default.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>

authored by

Heiner Kallweit and committed by
Alexandre Belloni
45947127 82e2d43f

+7 -8
+7 -8
drivers/rtc/rtc-ds1307.c
··· 140 140 u8 century_enable_bit; 141 141 u8 century_bit; 142 142 u8 bbsqi_bit; 143 + irq_handler_t irq_handler; 143 144 u16 trickle_charger_reg; 144 145 u8 (*do_trickle_setup)(struct ds1307 *, uint32_t, 145 146 bool); 146 147 }; 147 148 148 149 static u8 do_trickle_setup_ds1339(struct ds1307 *, uint32_t ohms, bool diode); 150 + static irqreturn_t rx8130_irq(int irq, void *dev_id); 151 + static irqreturn_t mcp794xx_irq(int irq, void *dev_id); 149 152 150 153 static const struct chip_desc chips[last_ds_type] = { 151 154 [ds_1307] = { ··· 196 193 /* this is battery backed SRAM */ 197 194 .nvram_offset = 0x20, 198 195 .nvram_size = 4, /* 32bit (4 word x 8 bit) */ 196 + .irq_handler = rx8130_irq, 199 197 }, 200 198 [mcp794xx] = { 201 199 .alarm = 1, 202 200 /* this is battery backed SRAM */ 203 201 .nvram_offset = 0x20, 204 202 .nvram_size = 0x40, 203 + .irq_handler = mcp794xx_irq, 205 204 }, 206 205 }; 207 206 ··· 1325 1320 unsigned long timestamp; 1326 1321 u8 trickle_charger_setup = 0; 1327 1322 1328 - irq_handler_t irq_handler = ds1307_irq; 1329 - 1330 1323 const struct rtc_class_ops *rtc_ops = &ds13xx_rtc_ops; 1331 1324 1332 1325 ds1307 = devm_kzalloc(&client->dev, sizeof(struct ds1307), GFP_KERNEL); ··· 1496 1493 case rx_8130: 1497 1494 ds1307->offset = 0x10; /* Seconds starts at 0x10 */ 1498 1495 rtc_ops = &rx8130_rtc_ops; 1499 - if (want_irq) 1500 - irq_handler = rx8130_irq; 1501 1496 break; 1502 1497 case ds_1388: 1503 1498 ds1307->offset = 1; /* Seconds starts at 1 */ 1504 1499 break; 1505 1500 case mcp794xx: 1506 1501 rtc_ops = &mcp794xx_rtc_ops; 1507 - if (want_irq || ds1307_can_wakeup_device) 1508 - irq_handler = mcp794xx_irq; 1509 1502 break; 1510 1503 default: 1511 1504 break; ··· 1651 1652 } 1652 1653 1653 1654 if (want_irq) { 1654 - err = devm_request_threaded_irq(ds1307->dev, 1655 - client->irq, NULL, irq_handler, 1655 + err = devm_request_threaded_irq(ds1307->dev, client->irq, NULL, 1656 + chip->irq_handler ?: ds1307_irq, 1656 1657 IRQF_SHARED | IRQF_ONESHOT, 1657 1658 ds1307->name, ds1307); 1658 1659 if (err) {