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