summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/mips/ingenic_jz47xx/system-jz4740.c19
-rw-r--r--firmware/target/mips/ingenic_jz47xx/system-target.h6
2 files changed, 16 insertions, 9 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/system-jz4740.c b/firmware/target/mips/ingenic_jz47xx/system-jz4740.c
index bde8e1df6a..f733582d70 100644
--- a/firmware/target/mips/ingenic_jz47xx/system-jz4740.c
+++ b/firmware/target/mips/ingenic_jz47xx/system-jz4740.c
@@ -27,7 +27,6 @@
27#include "system-target.h" 27#include "system-target.h"
28#include <string.h> 28#include <string.h>
29#include "kernel.h" 29#include "kernel.h"
30#include "system.h"
31 30
32#define NUM_DMA 6 31#define NUM_DMA 6
33#define NUM_GPIO 128 32#define NUM_GPIO 128
@@ -323,15 +322,26 @@ static int get_irq_number(void)
323 return irq; 322 return irq;
324} 323}
325 324
325static bool intr_mode = false;
326
327bool in_interrupt_mode(void)
328{
329 return intr_mode;
330}
331
326void intr_handler(void) 332void intr_handler(void)
327{ 333{
328 irq = get_irq_number(); /* irq is defined static at UIRQ() */ 334 int irq = get_irq_number();
329 if(UNLIKELY(irq < 0)) 335 if(irq < 0)
330 return; 336 return;
331 337
332 ack_irq(irq); 338 ack_irq(irq);
333 if(LIKELY(irq > 0)) 339 if(irq > 0)
340 {
341 intr_mode = true;
334 irqvector[irq-1](); 342 irqvector[irq-1]();
343 intr_mode = false;
344 }
335} 345}
336 346
337#define EXC(x,y) if(_cause == (x)) return (y); 347#define EXC(x,y) if(_cause == (x)) return (y);
@@ -368,6 +378,7 @@ void exception_handler(void* stack_ptr, unsigned int cause, unsigned int epc)
368 378
369static const int FR2n[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32}; 379static const int FR2n[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
370static unsigned int iclk; 380static unsigned int iclk;
381
371static void detect_clock(void) 382static void detect_clock(void)
372{ 383{
373 unsigned int cfcr, pllout; 384 unsigned int cfcr, pllout;
diff --git a/firmware/target/mips/ingenic_jz47xx/system-target.h b/firmware/target/mips/ingenic_jz47xx/system-target.h
index eab517fa5d..a8133140fa 100644
--- a/firmware/target/mips/ingenic_jz47xx/system-target.h
+++ b/firmware/target/mips/ingenic_jz47xx/system-target.h
@@ -56,11 +56,6 @@ static inline void disable_interrupt(void)
56 clear_c0_status(ST0_IE); 56 clear_c0_status(ST0_IE);
57} 57}
58 58
59static inline bool in_interrupt_mode(void)
60{
61 return (read_c0_status() & ST0_IE) ? true : false;
62}
63
64#define disable_irq() \ 59#define disable_irq() \
65 disable_interrupt() 60 disable_interrupt()
66 61
@@ -106,6 +101,7 @@ void udelay(unsigned int usec);
106void mdelay(unsigned int msec); 101void mdelay(unsigned int msec);
107void power_off(void); 102void power_off(void);
108void system_reboot(void); 103void system_reboot(void);
104bool in_interrupt_mode(void);
109 105
110#define DMA_LCD_CHANNEL 0 106#define DMA_LCD_CHANNEL 0
111#define DMA_NAND_CHANNEL 1 107#define DMA_NAND_CHANNEL 1