diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/hp/sim/simserial.c | 49 | ||||
-rw-r--r-- | arch/ia64/kernel/time.c | 16 |
2 files changed, 40 insertions, 25 deletions
diff --git a/arch/ia64/hp/sim/simserial.c b/arch/ia64/hp/sim/simserial.c index 24b1ad5334cb..2bef5261d96d 100644 --- a/arch/ia64/hp/sim/simserial.c +++ b/arch/ia64/hp/sim/simserial.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/major.h> | 24 | #include <linux/major.h> |
25 | #include <linux/fcntl.h> | 25 | #include <linux/fcntl.h> |
26 | #include <linux/mm.h> | 26 | #include <linux/mm.h> |
27 | #include <linux/seq_file.h> | ||
27 | #include <linux/slab.h> | 28 | #include <linux/slab.h> |
28 | #include <linux/capability.h> | 29 | #include <linux/capability.h> |
29 | #include <linux/console.h> | 30 | #include <linux/console.h> |
@@ -848,38 +849,36 @@ static int rs_open(struct tty_struct *tty, struct file * filp) | |||
848 | * /proc fs routines.... | 849 | * /proc fs routines.... |
849 | */ | 850 | */ |
850 | 851 | ||
851 | static inline int line_info(char *buf, struct serial_state *state) | 852 | static inline void line_info(struct seq_file *m, struct serial_state *state) |
852 | { | 853 | { |
853 | return sprintf(buf, "%d: uart:%s port:%lX irq:%d\n", | 854 | seq_printf(m, "%d: uart:%s port:%lX irq:%d\n", |
854 | state->line, uart_config[state->type].name, | 855 | state->line, uart_config[state->type].name, |
855 | state->port, state->irq); | 856 | state->port, state->irq); |
856 | } | 857 | } |
857 | 858 | ||
858 | static int rs_read_proc(char *page, char **start, off_t off, int count, | 859 | static int rs_proc_show(struct seq_file *m, void *v) |
859 | int *eof, void *data) | ||
860 | { | 860 | { |
861 | int i, len = 0, l; | 861 | int i; |
862 | off_t begin = 0; | 862 | |
863 | 863 | seq_printf(m, "simserinfo:1.0 driver:%s\n", serial_version); | |
864 | len += sprintf(page, "simserinfo:1.0 driver:%s\n", serial_version); | 864 | for (i = 0; i < NR_PORTS; i++) |
865 | for (i = 0; i < NR_PORTS && len < 4000; i++) { | 865 | line_info(m, &rs_table[i]); |
866 | l = line_info(page + len, &rs_table[i]); | 866 | return 0; |
867 | len += l; | ||
868 | if (len+begin > off+count) | ||
869 | goto done; | ||
870 | if (len+begin < off) { | ||
871 | begin += len; | ||
872 | len = 0; | ||
873 | } | ||
874 | } | ||
875 | *eof = 1; | ||
876 | done: | ||
877 | if (off >= len+begin) | ||
878 | return 0; | ||
879 | *start = page + (begin-off); | ||
880 | return ((count < begin+len-off) ? count : begin+len-off); | ||
881 | } | 867 | } |
882 | 868 | ||
869 | static int rs_proc_open(struct inode *inode, struct file *file) | ||
870 | { | ||
871 | return single_open(file, rs_proc_show, NULL); | ||
872 | } | ||
873 | |||
874 | static const struct file_operations rs_proc_fops = { | ||
875 | .owner = THIS_MODULE, | ||
876 | .open = rs_proc_open, | ||
877 | .read = seq_read, | ||
878 | .llseek = seq_lseek, | ||
879 | .release = single_release, | ||
880 | }; | ||
881 | |||
883 | /* | 882 | /* |
884 | * --------------------------------------------------------------------- | 883 | * --------------------------------------------------------------------- |
885 | * rs_init() and friends | 884 | * rs_init() and friends |
@@ -917,7 +916,7 @@ static const struct tty_operations hp_ops = { | |||
917 | .start = rs_start, | 916 | .start = rs_start, |
918 | .hangup = rs_hangup, | 917 | .hangup = rs_hangup, |
919 | .wait_until_sent = rs_wait_until_sent, | 918 | .wait_until_sent = rs_wait_until_sent, |
920 | .read_proc = rs_read_proc, | 919 | .proc_fops = &rs_proc_fops, |
921 | }; | 920 | }; |
922 | 921 | ||
923 | /* | 922 | /* |
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index c323c7b9c775..641c8b61c4f1 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/efi.h> | 20 | #include <linux/efi.h> |
21 | #include <linux/timex.h> | 21 | #include <linux/timex.h> |
22 | #include <linux/clocksource.h> | 22 | #include <linux/clocksource.h> |
23 | #include <linux/platform_device.h> | ||
23 | 24 | ||
24 | #include <asm/machvec.h> | 25 | #include <asm/machvec.h> |
25 | #include <asm/delay.h> | 26 | #include <asm/delay.h> |
@@ -414,6 +415,21 @@ static struct irqaction timer_irqaction = { | |||
414 | .name = "timer" | 415 | .name = "timer" |
415 | }; | 416 | }; |
416 | 417 | ||
418 | static struct platform_device rtc_efi_dev = { | ||
419 | .name = "rtc-efi", | ||
420 | .id = -1, | ||
421 | }; | ||
422 | |||
423 | static int __init rtc_init(void) | ||
424 | { | ||
425 | if (platform_device_register(&rtc_efi_dev) < 0) | ||
426 | printk(KERN_ERR "unable to register rtc device...\n"); | ||
427 | |||
428 | /* not necessarily an error */ | ||
429 | return 0; | ||
430 | } | ||
431 | module_init(rtc_init); | ||
432 | |||
417 | void __init | 433 | void __init |
418 | time_init (void) | 434 | time_init (void) |
419 | { | 435 | { |