aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-rs5c372.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-rs5c372.c')
-rw-r--r--drivers/rtc/rtc-rs5c372.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/rtc/rtc-rs5c372.c b/drivers/rtc/rtc-rs5c372.c
index 47db289bb0a3..56caf6b2c3e5 100644
--- a/drivers/rtc/rtc-rs5c372.c
+++ b/drivers/rtc/rtc-rs5c372.c
@@ -69,6 +69,15 @@ enum rtc_type {
69 rtc_rv5c387a, 69 rtc_rv5c387a,
70}; 70};
71 71
72static const struct i2c_device_id rs5c372_id[] = {
73 { "rs5c372a", rtc_rs5c372a },
74 { "rs5c372b", rtc_rs5c372b },
75 { "rv5c386", rtc_rv5c386 },
76 { "rv5c387a", rtc_rv5c387a },
77 { }
78};
79MODULE_DEVICE_TABLE(i2c, rs5c372_id);
80
72/* REVISIT: this assumes that: 81/* REVISIT: this assumes that:
73 * - we're in the 21st century, so it's safe to ignore the century 82 * - we're in the 21st century, so it's safe to ignore the century
74 * bit for rv5c38[67] (REG_MONTH bit 7); 83 * bit for rv5c38[67] (REG_MONTH bit 7);
@@ -515,6 +524,7 @@ static int rs5c372_probe(struct i2c_client *client,
515 524
516 rs5c372->client = client; 525 rs5c372->client = client;
517 i2c_set_clientdata(client, rs5c372); 526 i2c_set_clientdata(client, rs5c372);
527 rs5c372->type = id->driver_data;
518 528
519 /* we read registers 0x0f then 0x00-0x0f; skip the first one */ 529 /* we read registers 0x0f then 0x00-0x0f; skip the first one */
520 rs5c372->regs = &rs5c372->buf[1]; 530 rs5c372->regs = &rs5c372->buf[1];
@@ -523,19 +533,6 @@ static int rs5c372_probe(struct i2c_client *client,
523 if (err < 0) 533 if (err < 0)
524 goto exit_kfree; 534 goto exit_kfree;
525 535
526 if (strcmp(client->name, "rs5c372a") == 0)
527 rs5c372->type = rtc_rs5c372a;
528 else if (strcmp(client->name, "rs5c372b") == 0)
529 rs5c372->type = rtc_rs5c372b;
530 else if (strcmp(client->name, "rv5c386") == 0)
531 rs5c372->type = rtc_rv5c386;
532 else if (strcmp(client->name, "rv5c387a") == 0)
533 rs5c372->type = rtc_rv5c387a;
534 else {
535 rs5c372->type = rtc_rs5c372b;
536 dev_warn(&client->dev, "assuming rs5c372b\n");
537 }
538
539 /* clock may be set for am/pm or 24 hr time */ 536 /* clock may be set for am/pm or 24 hr time */
540 switch (rs5c372->type) { 537 switch (rs5c372->type) {
541 case rtc_rs5c372a: 538 case rtc_rs5c372a:
@@ -652,6 +649,7 @@ static struct i2c_driver rs5c372_driver = {
652 }, 649 },
653 .probe = rs5c372_probe, 650 .probe = rs5c372_probe,
654 .remove = rs5c372_remove, 651 .remove = rs5c372_remove,
652 .id_table = rs5c372_id,
655}; 653};
656 654
657static __init int rs5c372_init(void) 655static __init int rs5c372_init(void)