xref: /linux/arch/mips/ralink/bootrom.c (revision 7a1a44c909fcb4707b01448a28490d7be366b530)
1*7a1a44c9SJohn Crispin /*
2*7a1a44c9SJohn Crispin  * This program is free software; you can redistribute it and/or modify it
3*7a1a44c9SJohn Crispin  * under the terms of the GNU General Public License version 2 as published
4*7a1a44c9SJohn Crispin  * by the Free Software Foundation.
5*7a1a44c9SJohn Crispin  *
6*7a1a44c9SJohn Crispin  * Copyright (C) 2013 John Crispin <blogic@openwrt.org>
7*7a1a44c9SJohn Crispin  */
8*7a1a44c9SJohn Crispin 
9*7a1a44c9SJohn Crispin #include <linux/debugfs.h>
10*7a1a44c9SJohn Crispin #include <linux/seq_file.h>
11*7a1a44c9SJohn Crispin 
12*7a1a44c9SJohn Crispin #define BOOTROM_OFFSET	0x10118000
13*7a1a44c9SJohn Crispin #define BOOTROM_SIZE	0x8000
14*7a1a44c9SJohn Crispin 
15*7a1a44c9SJohn Crispin static void __iomem *membase = (void __iomem *) KSEG1ADDR(BOOTROM_OFFSET);
16*7a1a44c9SJohn Crispin 
17*7a1a44c9SJohn Crispin static int bootrom_show(struct seq_file *s, void *unused)
18*7a1a44c9SJohn Crispin {
19*7a1a44c9SJohn Crispin 	seq_write(s, membase, BOOTROM_SIZE);
20*7a1a44c9SJohn Crispin 
21*7a1a44c9SJohn Crispin 	return 0;
22*7a1a44c9SJohn Crispin }
23*7a1a44c9SJohn Crispin 
24*7a1a44c9SJohn Crispin static int bootrom_open(struct inode *inode, struct file *file)
25*7a1a44c9SJohn Crispin {
26*7a1a44c9SJohn Crispin 	return single_open(file, bootrom_show, NULL);
27*7a1a44c9SJohn Crispin }
28*7a1a44c9SJohn Crispin 
29*7a1a44c9SJohn Crispin static const struct file_operations bootrom_file_ops = {
30*7a1a44c9SJohn Crispin 	.open		= bootrom_open,
31*7a1a44c9SJohn Crispin 	.read		= seq_read,
32*7a1a44c9SJohn Crispin 	.llseek		= seq_lseek,
33*7a1a44c9SJohn Crispin 	.release	= single_release,
34*7a1a44c9SJohn Crispin };
35*7a1a44c9SJohn Crispin 
36*7a1a44c9SJohn Crispin static int bootrom_setup(void)
37*7a1a44c9SJohn Crispin {
38*7a1a44c9SJohn Crispin 	if (!debugfs_create_file("bootrom", 0444,
39*7a1a44c9SJohn Crispin 			NULL, NULL, &bootrom_file_ops)) {
40*7a1a44c9SJohn Crispin 		pr_err("Failed to create bootrom debugfs file\n");
41*7a1a44c9SJohn Crispin 
42*7a1a44c9SJohn Crispin 		return -EINVAL;
43*7a1a44c9SJohn Crispin 	}
44*7a1a44c9SJohn Crispin 
45*7a1a44c9SJohn Crispin 	return 0;
46*7a1a44c9SJohn Crispin }
47*7a1a44c9SJohn Crispin 
48*7a1a44c9SJohn Crispin postcore_initcall(bootrom_setup);
49