diff options
| author | David Howells <dhowells@redhat.com> | 2013-04-10 10:52:18 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-04-29 15:41:54 -0400 |
| commit | c18bd9a1ff477bd010d7607a8e575da24de0b08b (patch) | |
| tree | 5077d5a37fa4d9b43007ab45b5c94276c8d578b2 /drivers/input/misc | |
| parent | 11db656ad462c9aa7aff7e3817214578cfc307b3 (diff) | |
hp_sdc_rtc: Don't use create_proc_read_entry()
Don't use create_proc_read_entry() as that is deprecated, but rather use
proc_create_data() and seq_file instead.
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Brian S. Julin <bri@calyx.com>
cc: Helge Deller <deller@gmx.de>
cc: linux-m68k@lists.linux-m68k.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'drivers/input/misc')
| -rw-r--r-- | drivers/input/misc/hp_sdc_rtc.c | 58 |
1 files changed, 26 insertions, 32 deletions
diff --git a/drivers/input/misc/hp_sdc_rtc.c b/drivers/input/misc/hp_sdc_rtc.c index 2e3334b8f82d..770479df8657 100644 --- a/drivers/input/misc/hp_sdc_rtc.c +++ b/drivers/input/misc/hp_sdc_rtc.c | |||
| @@ -41,6 +41,7 @@ | |||
| 41 | #include <linux/time.h> | 41 | #include <linux/time.h> |
| 42 | #include <linux/miscdevice.h> | 42 | #include <linux/miscdevice.h> |
| 43 | #include <linux/proc_fs.h> | 43 | #include <linux/proc_fs.h> |
| 44 | #include <linux/seq_file.h> | ||
| 44 | #include <linux/poll.h> | 45 | #include <linux/poll.h> |
| 45 | #include <linux/rtc.h> | 46 | #include <linux/rtc.h> |
| 46 | #include <linux/mutex.h> | 47 | #include <linux/mutex.h> |
| @@ -74,9 +75,6 @@ static unsigned int hp_sdc_rtc_poll(struct file *file, poll_table *wait); | |||
| 74 | static int hp_sdc_rtc_open(struct inode *inode, struct file *file); | 75 | static int hp_sdc_rtc_open(struct inode *inode, struct file *file); |
| 75 | static int hp_sdc_rtc_fasync (int fd, struct file *filp, int on); | 76 | static int hp_sdc_rtc_fasync (int fd, struct file *filp, int on); |
| 76 | 77 | ||
| 77 | static int hp_sdc_rtc_read_proc(char *page, char **start, off_t off, | ||
| 78 | int count, int *eof, void *data); | ||
| 79 | |||
| 80 | static void hp_sdc_rtc_isr (int irq, void *dev_id, | 78 | static void hp_sdc_rtc_isr (int irq, void *dev_id, |
| 81 | uint8_t status, uint8_t data) | 79 | uint8_t status, uint8_t data) |
| 82 | { | 80 | { |
| @@ -427,22 +425,19 @@ static int hp_sdc_rtc_fasync (int fd, struct file *filp, int on) | |||
| 427 | return fasync_helper (fd, filp, on, &hp_sdc_rtc_async_queue); | 425 | return fasync_helper (fd, filp, on, &hp_sdc_rtc_async_queue); |
| 428 | } | 426 | } |
| 429 | 427 | ||
| 430 | static int hp_sdc_rtc_proc_output (char *buf) | 428 | static int hp_sdc_rtc_proc_show(struct seq_file *m, void *v) |
| 431 | { | 429 | { |
| 432 | #define YN(bit) ("no") | 430 | #define YN(bit) ("no") |
| 433 | #define NY(bit) ("yes") | 431 | #define NY(bit) ("yes") |
| 434 | char *p; | ||
| 435 | struct rtc_time tm; | 432 | struct rtc_time tm; |
| 436 | struct timeval tv; | 433 | struct timeval tv; |
| 437 | 434 | ||
| 438 | memset(&tm, 0, sizeof(struct rtc_time)); | 435 | memset(&tm, 0, sizeof(struct rtc_time)); |
| 439 | 436 | ||
| 440 | p = buf; | ||
| 441 | |||
| 442 | if (hp_sdc_rtc_read_bbrtc(&tm)) { | 437 | if (hp_sdc_rtc_read_bbrtc(&tm)) { |
| 443 | p += sprintf(p, "BBRTC\t\t: READ FAILED!\n"); | 438 | seq_puts(m, "BBRTC\t\t: READ FAILED!\n"); |
| 444 | } else { | 439 | } else { |
| 445 | p += sprintf(p, | 440 | seq_printf(m, |
| 446 | "rtc_time\t: %02d:%02d:%02d\n" | 441 | "rtc_time\t: %02d:%02d:%02d\n" |
| 447 | "rtc_date\t: %04d-%02d-%02d\n" | 442 | "rtc_date\t: %04d-%02d-%02d\n" |
| 448 | "rtc_epoch\t: %04lu\n", | 443 | "rtc_epoch\t: %04lu\n", |
| @@ -452,41 +447,41 @@ static int hp_sdc_rtc_proc_output (char *buf) | |||
| 452 | } | 447 | } |
| 453 | 448 | ||
| 454 | if (hp_sdc_rtc_read_rt(&tv)) { | 449 | if (hp_sdc_rtc_read_rt(&tv)) { |
| 455 | p += sprintf(p, "i8042 rtc\t: READ FAILED!\n"); | 450 | seq_puts(m, "i8042 rtc\t: READ FAILED!\n"); |
| 456 | } else { | 451 | } else { |
| 457 | p += sprintf(p, "i8042 rtc\t: %ld.%02d seconds\n", | 452 | seq_printf(m, "i8042 rtc\t: %ld.%02d seconds\n", |
| 458 | tv.tv_sec, (int)tv.tv_usec/1000); | 453 | tv.tv_sec, (int)tv.tv_usec/1000); |
| 459 | } | 454 | } |
| 460 | 455 | ||
| 461 | if (hp_sdc_rtc_read_fhs(&tv)) { | 456 | if (hp_sdc_rtc_read_fhs(&tv)) { |
| 462 | p += sprintf(p, "handshake\t: READ FAILED!\n"); | 457 | seq_puts(m, "handshake\t: READ FAILED!\n"); |
| 463 | } else { | 458 | } else { |
| 464 | p += sprintf(p, "handshake\t: %ld.%02d seconds\n", | 459 | seq_printf(m, "handshake\t: %ld.%02d seconds\n", |
| 465 | tv.tv_sec, (int)tv.tv_usec/1000); | 460 | tv.tv_sec, (int)tv.tv_usec/1000); |
| 466 | } | 461 | } |
| 467 | 462 | ||
| 468 | if (hp_sdc_rtc_read_mt(&tv)) { | 463 | if (hp_sdc_rtc_read_mt(&tv)) { |
| 469 | p += sprintf(p, "alarm\t\t: READ FAILED!\n"); | 464 | seq_puts(m, "alarm\t\t: READ FAILED!\n"); |
| 470 | } else { | 465 | } else { |
| 471 | p += sprintf(p, "alarm\t\t: %ld.%02d seconds\n", | 466 | seq_printf(m, "alarm\t\t: %ld.%02d seconds\n", |
| 472 | tv.tv_sec, (int)tv.tv_usec/1000); | 467 | tv.tv_sec, (int)tv.tv_usec/1000); |
| 473 | } | 468 | } |
| 474 | 469 | ||
| 475 | if (hp_sdc_rtc_read_dt(&tv)) { | 470 | if (hp_sdc_rtc_read_dt(&tv)) { |
| 476 | p += sprintf(p, "delay\t\t: READ FAILED!\n"); | 471 | seq_puts(m, "delay\t\t: READ FAILED!\n"); |
| 477 | } else { | 472 | } else { |
| 478 | p += sprintf(p, "delay\t\t: %ld.%02d seconds\n", | 473 | seq_printf(m, "delay\t\t: %ld.%02d seconds\n", |
| 479 | tv.tv_sec, (int)tv.tv_usec/1000); | 474 | tv.tv_sec, (int)tv.tv_usec/1000); |
| 480 | } | 475 | } |
| 481 | 476 | ||
| 482 | if (hp_sdc_rtc_read_ct(&tv)) { | 477 | if (hp_sdc_rtc_read_ct(&tv)) { |
| 483 | p += sprintf(p, "periodic\t: READ FAILED!\n"); | 478 | seq_puts(m, "periodic\t: READ FAILED!\n"); |
| 484 | } else { | 479 | } else { |
| 485 | p += sprintf(p, "periodic\t: %ld.%02d seconds\n", | 480 | seq_printf(m, "periodic\t: %ld.%02d seconds\n", |
| 486 | tv.tv_sec, (int)tv.tv_usec/1000); | 481 | tv.tv_sec, (int)tv.tv_usec/1000); |
| 487 | } | 482 | } |
| 488 | 483 | ||
| 489 | p += sprintf(p, | 484 | seq_printf(m, |
| 490 | "DST_enable\t: %s\n" | 485 | "DST_enable\t: %s\n" |
| 491 | "BCD\t\t: %s\n" | 486 | "BCD\t\t: %s\n" |
| 492 | "24hr\t\t: %s\n" | 487 | "24hr\t\t: %s\n" |
| @@ -506,23 +501,23 @@ static int hp_sdc_rtc_proc_output (char *buf) | |||
| 506 | 1UL, | 501 | 1UL, |
| 507 | 1 ? "okay" : "dead"); | 502 | 1 ? "okay" : "dead"); |
| 508 | 503 | ||
| 509 | return p - buf; | 504 | return 0; |
| 510 | #undef YN | 505 | #undef YN |
| 511 | #undef NY | 506 | #undef NY |
| 512 | } | 507 | } |
| 513 | 508 | ||
| 514 | static int hp_sdc_rtc_read_proc(char *page, char **start, off_t off, | 509 | static int hp_sdc_rtc_proc_open(struct inode *inode, struct file *file) |
| 515 | int count, int *eof, void *data) | ||
| 516 | { | 510 | { |
| 517 | int len = hp_sdc_rtc_proc_output (page); | 511 | return single_open(file, hp_sdc_rtc_proc_show, NULL); |
| 518 | if (len <= off+count) *eof = 1; | ||
| 519 | *start = page + off; | ||
| 520 | len -= off; | ||
| 521 | if (len>count) len = count; | ||
| 522 | if (len<0) len = 0; | ||
| 523 | return len; | ||
| 524 | } | 512 | } |
| 525 | 513 | ||
| 514 | static const struct file_operations hp_sdc_rtc_proc_fops = { | ||
| 515 | .open = hp_sdc_rtc_proc_open, | ||
| 516 | .read = seq_read, | ||
| 517 | .llseek = seq_lseek, | ||
| 518 | .release = seq_release, | ||
| 519 | }; | ||
| 520 | |||
| 526 | static int hp_sdc_rtc_ioctl(struct file *file, | 521 | static int hp_sdc_rtc_ioctl(struct file *file, |
| 527 | unsigned int cmd, unsigned long arg) | 522 | unsigned int cmd, unsigned long arg) |
| 528 | { | 523 | { |
| @@ -715,8 +710,7 @@ static int __init hp_sdc_rtc_init(void) | |||
| 715 | if (misc_register(&hp_sdc_rtc_dev) != 0) | 710 | if (misc_register(&hp_sdc_rtc_dev) != 0) |
| 716 | printk(KERN_INFO "Could not register misc. dev for i8042 rtc\n"); | 711 | printk(KERN_INFO "Could not register misc. dev for i8042 rtc\n"); |
| 717 | 712 | ||
| 718 | create_proc_read_entry ("driver/rtc", 0, NULL, | 713 | proc_create("driver/rtc", 0, NULL, &hp_sdc_rtc_proc_fops); |
| 719 | hp_sdc_rtc_read_proc, NULL); | ||
| 720 | 714 | ||
| 721 | printk(KERN_INFO "HP i8042 SDC + MSM-58321 RTC support loaded " | 715 | printk(KERN_INFO "HP i8042 SDC + MSM-58321 RTC support loaded " |
| 722 | "(RTC v " RTC_VERSION ")\n"); | 716 | "(RTC v " RTC_VERSION ")\n"); |
