From 66703ccb3299a6b0352aac3b10a6d813ae9280d9 Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 8 Mar 2010 20:32:08 +0000 Subject: [xburst] Export gpio and irq registers through debugfs git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20069 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../xburst/files-2.6.32/arch/mips/jz4740/irq.c | 45 +++++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) (limited to 'target/linux/xburst/files-2.6.32/arch/mips/jz4740/irq.c') diff --git a/target/linux/xburst/files-2.6.32/arch/mips/jz4740/irq.c b/target/linux/xburst/files-2.6.32/arch/mips/jz4740/irq.c index 2167f2d4c..a6f4bbf28 100644 --- a/target/linux/xburst/files-2.6.32/arch/mips/jz4740/irq.c +++ b/target/linux/xburst/files-2.6.32/arch/mips/jz4740/irq.c @@ -22,6 +22,9 @@ #include #include +#include +#include + #include #include #include @@ -76,14 +79,11 @@ static struct irq_chip intc_irq_type = { static irqreturn_t jz4740_cascade(int irq, void *data) { uint32_t irq_reg; - irq_reg = readl(jz_intc_base + JZ_REG_INTC_PENDING); - if (irq_reg) { - generic_handle_irq(ffs(irq_reg) - 1 + JZ_IRQ_BASE); - return IRQ_HANDLED; - } + irq_reg = readl(jz_intc_base + JZ_REG_INTC_PENDING); + generic_handle_irq(ffs(irq_reg) - 1 + JZ_IRQ_BASE); - return 0; + return IRQ_HANDLED; } static struct irqaction jz4740_cascade_action = { @@ -128,3 +128,36 @@ void jz4740_intc_resume(void) { writel(~jz_intc_saved, jz_intc_base + JZ_REG_INTC_CLEAR_MASK); } + +#ifdef CONFIG_DEBUG_FS + +static int intc_regs_show(struct seq_file *s, void *unused) +{ + seq_printf(s, "Status:\t\t%08x\n", readl(jz_intc_base + JZ_REG_INTC_STATUS)); + seq_printf(s, "Mask\t\t%08x\n", readl(jz_intc_base + JZ_REG_INTC_MASK)); + seq_printf(s, "Pending:\t%08x\n", readl(jz_intc_base + JZ_REG_INTC_PENDING)); + + return 0; +} + +static int intc_regs_open(struct inode *inode, struct file *file) +{ + return single_open(file, intc_regs_show, NULL); +} + +static const struct file_operations intc_regs_operations = { + .open = intc_regs_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int __init intc_debugfs_init(void) +{ + (void) debugfs_create_file("jz_regs_intc", S_IFREG | S_IRUGO, + NULL, NULL, &intc_regs_operations); + return 0; +} +subsys_initcall(intc_debugfs_init); + +#endif -- cgit v1.2.3