diff options
-rw-r--r-- | arch/mips/basler/excite/excite_procfs.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/arch/mips/basler/excite/excite_procfs.c b/arch/mips/basler/excite/excite_procfs.c index 6c08b386fdad..08923e6825b5 100644 --- a/arch/mips/basler/excite/excite_procfs.c +++ b/arch/mips/basler/excite/excite_procfs.c | |||
@@ -18,8 +18,9 @@ | |||
18 | * along with this program; if not, write to the Free Software | 18 | * along with this program; if not, write to the Free Software |
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
20 | */ | 20 | */ |
21 | 21 | #include <linux/module.h> | |
22 | #include <linux/proc_fs.h> | 22 | #include <linux/proc_fs.h> |
23 | #include <linux/seq_file.h> | ||
23 | #include <linux/stat.h> | 24 | #include <linux/stat.h> |
24 | #include <asm/page.h> | 25 | #include <asm/page.h> |
25 | #include <asm/io.h> | 26 | #include <asm/io.h> |
@@ -28,14 +29,25 @@ | |||
28 | 29 | ||
29 | #include <excite.h> | 30 | #include <excite.h> |
30 | 31 | ||
31 | static int excite_get_unit_id(char *buf, char **addr, off_t offs, int size) | 32 | static int excite_unit_id_proc_show(struct seq_file *m, void *v) |
32 | { | 33 | { |
33 | const int len = snprintf(buf, PAGE_SIZE, "%06x", unit_id); | 34 | seq_printf(m, "%06x", unit_id); |
34 | const int w = len - offs; | 35 | return 0; |
35 | *addr = buf + offs; | ||
36 | return w < size ? w : size; | ||
37 | } | 36 | } |
38 | 37 | ||
38 | static int excite_unit_id_proc_open(struct inode *inode, struct file *file) | ||
39 | { | ||
40 | return single_open(file, excite_unit_id_proc_show, NULL); | ||
41 | } | ||
42 | |||
43 | static const struct file_operations excite_unit_id_proc_fops = { | ||
44 | .owner = THIS_MODULE, | ||
45 | .open = excite_unit_id_proc_open, | ||
46 | .read = seq_read, | ||
47 | .llseek = seq_lseek, | ||
48 | .release = single_release, | ||
49 | }; | ||
50 | |||
39 | static int | 51 | static int |
40 | excite_bootrom_read(char *page, char **start, off_t off, int count, | 52 | excite_bootrom_read(char *page, char **start, off_t off, int count, |
41 | int *eof, void *data) | 53 | int *eof, void *data) |
@@ -69,8 +81,8 @@ void excite_procfs_init(void) | |||
69 | if (pdir) { | 81 | if (pdir) { |
70 | struct proc_dir_entry * e; | 82 | struct proc_dir_entry * e; |
71 | 83 | ||
72 | e = create_proc_info_entry("unit_id", S_IRUGO, pdir, | 84 | e = proc_create("unit_id", S_IRUGO, pdir, |
73 | excite_get_unit_id); | 85 | &excite_unit_id_proc_fops); |
74 | if (e) e->size = 6; | 86 | if (e) e->size = 6; |
75 | 87 | ||
76 | e = create_proc_read_entry("bootrom", S_IRUGO, pdir, | 88 | e = create_proc_read_entry("bootrom", S_IRUGO, pdir, |