diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 17:48:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 17:48:31 -0400 |
commit | b57ab7632b8fc1eef139bbbb7a89002be61f99e1 (patch) | |
tree | 19d4eeea0dbf721312c4e33a423ed29ff70aff88 /drivers/rtc/rtc-rs5c372.c | |
parent | f12c03722045882a50c270f6332cf2c7b16a83d2 (diff) | |
parent | 3760f736716f74bdc62a4ba5406934338da93eb2 (diff) |
Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6
* 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6:
i2c: Convert most new-style drivers to use module aliasing
i2c: Add support for device alias names
i2c-amd756-s4882: Fix an error path
i2c: Drop unused RTC driver IDs
i2c/tps65010: Add missing intialization of client data
i2c-sis5595: Minor cleanups in sis5595_access
i2c-piix4: Minor cleanups
i2c: Spelling fix (successful)
i2c-stub: No newline in parameter description
Diffstat (limited to 'drivers/rtc/rtc-rs5c372.c')
-rw-r--r-- | drivers/rtc/rtc-rs5c372.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/rtc/rtc-rs5c372.c b/drivers/rtc/rtc-rs5c372.c index 7e63074708eb..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 | ||
72 | static 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 | }; | ||
79 | MODULE_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); |
@@ -494,7 +503,8 @@ static void rs5c_sysfs_unregister(struct device *dev) | |||
494 | 503 | ||
495 | static struct i2c_driver rs5c372_driver; | 504 | static struct i2c_driver rs5c372_driver; |
496 | 505 | ||
497 | static int rs5c372_probe(struct i2c_client *client) | 506 | static int rs5c372_probe(struct i2c_client *client, |
507 | const struct i2c_device_id *id) | ||
498 | { | 508 | { |
499 | int err = 0; | 509 | int err = 0; |
500 | struct rs5c372 *rs5c372; | 510 | struct rs5c372 *rs5c372; |
@@ -514,6 +524,7 @@ static int rs5c372_probe(struct i2c_client *client) | |||
514 | 524 | ||
515 | rs5c372->client = client; | 525 | rs5c372->client = client; |
516 | i2c_set_clientdata(client, rs5c372); | 526 | i2c_set_clientdata(client, rs5c372); |
527 | rs5c372->type = id->driver_data; | ||
517 | 528 | ||
518 | /* we read registers 0x0f then 0x00-0x0f; skip the first one */ | 529 | /* we read registers 0x0f then 0x00-0x0f; skip the first one */ |
519 | rs5c372->regs = &rs5c372->buf[1]; | 530 | rs5c372->regs = &rs5c372->buf[1]; |
@@ -522,19 +533,6 @@ static int rs5c372_probe(struct i2c_client *client) | |||
522 | if (err < 0) | 533 | if (err < 0) |
523 | goto exit_kfree; | 534 | goto exit_kfree; |
524 | 535 | ||
525 | if (strcmp(client->name, "rs5c372a") == 0) | ||
526 | rs5c372->type = rtc_rs5c372a; | ||
527 | else if (strcmp(client->name, "rs5c372b") == 0) | ||
528 | rs5c372->type = rtc_rs5c372b; | ||
529 | else if (strcmp(client->name, "rv5c386") == 0) | ||
530 | rs5c372->type = rtc_rv5c386; | ||
531 | else if (strcmp(client->name, "rv5c387a") == 0) | ||
532 | rs5c372->type = rtc_rv5c387a; | ||
533 | else { | ||
534 | rs5c372->type = rtc_rs5c372b; | ||
535 | dev_warn(&client->dev, "assuming rs5c372b\n"); | ||
536 | } | ||
537 | |||
538 | /* clock may be set for am/pm or 24 hr time */ | 536 | /* clock may be set for am/pm or 24 hr time */ |
539 | switch (rs5c372->type) { | 537 | switch (rs5c372->type) { |
540 | case rtc_rs5c372a: | 538 | case rtc_rs5c372a: |
@@ -651,6 +649,7 @@ static struct i2c_driver rs5c372_driver = { | |||
651 | }, | 649 | }, |
652 | .probe = rs5c372_probe, | 650 | .probe = rs5c372_probe, |
653 | .remove = rs5c372_remove, | 651 | .remove = rs5c372_remove, |
652 | .id_table = rs5c372_id, | ||
654 | }; | 653 | }; |
655 | 654 | ||
656 | static __init int rs5c372_init(void) | 655 | static __init int rs5c372_init(void) |