xref: /linux/arch/mips/ralink/bootrom.c (revision 389500696810f5aa8fc1fe6f375b9dabd111e1d6)
1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
27a1a44c9SJohn Crispin /*
37a1a44c9SJohn Crispin  *
497b92108SJohn Crispin  * Copyright (C) 2013 John Crispin <john@phrozen.org>
57a1a44c9SJohn Crispin  */
67a1a44c9SJohn Crispin 
77a1a44c9SJohn Crispin #include <linux/debugfs.h>
87a1a44c9SJohn Crispin #include <linux/seq_file.h>
97a1a44c9SJohn Crispin 
107a1a44c9SJohn Crispin #define BOOTROM_OFFSET	0x10118000
117a1a44c9SJohn Crispin #define BOOTROM_SIZE	0x8000
127a1a44c9SJohn Crispin 
137a1a44c9SJohn Crispin static void __iomem *membase = (void __iomem *) KSEG1ADDR(BOOTROM_OFFSET);
147a1a44c9SJohn Crispin 
157a1a44c9SJohn Crispin static int bootrom_show(struct seq_file *s, void *unused)
167a1a44c9SJohn Crispin {
177a1a44c9SJohn Crispin 	seq_write(s, membase, BOOTROM_SIZE);
187a1a44c9SJohn Crispin 
197a1a44c9SJohn Crispin 	return 0;
207a1a44c9SJohn Crispin }
217a1a44c9SJohn Crispin 
227a1a44c9SJohn Crispin static int bootrom_open(struct inode *inode, struct file *file)
237a1a44c9SJohn Crispin {
247a1a44c9SJohn Crispin 	return single_open(file, bootrom_show, NULL);
257a1a44c9SJohn Crispin }
267a1a44c9SJohn Crispin 
277a1a44c9SJohn Crispin static const struct file_operations bootrom_file_ops = {
287a1a44c9SJohn Crispin 	.open		= bootrom_open,
297a1a44c9SJohn Crispin 	.read		= seq_read,
307a1a44c9SJohn Crispin 	.llseek		= seq_lseek,
317a1a44c9SJohn Crispin 	.release	= single_release,
327a1a44c9SJohn Crispin };
337a1a44c9SJohn Crispin 
34*38950069SChristophe JAILLET static int __init bootrom_setup(void)
357a1a44c9SJohn Crispin {
364c90de4dSGreg Kroah-Hartman 	debugfs_create_file("bootrom", 0444, NULL, NULL, &bootrom_file_ops);
377a1a44c9SJohn Crispin 	return 0;
387a1a44c9SJohn Crispin }
397a1a44c9SJohn Crispin 
407a1a44c9SJohn Crispin postcore_initcall(bootrom_setup);
41