diff options
Diffstat (limited to 'firmware/target/arm/imx233/icoll-imx233.c')
-rw-r--r-- | firmware/target/arm/imx233/icoll-imx233.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/firmware/target/arm/imx233/icoll-imx233.c b/firmware/target/arm/imx233/icoll-imx233.c index cd96b6fae6..1c8774ad80 100644 --- a/firmware/target/arm/imx233/icoll-imx233.c +++ b/firmware/target/arm/imx233/icoll-imx233.c | |||
@@ -70,10 +70,14 @@ default_interrupt(INT_LCDIF_ERROR); | |||
70 | /* STMP3780+ specific */ | 70 | /* STMP3780+ specific */ |
71 | #if IMX233_SUBTARGET >= 3780 | 71 | #if IMX233_SUBTARGET >= 3780 |
72 | #endif | 72 | #endif |
73 | default_interrupt(INT_SOFTWARE0); | ||
74 | default_interrupt(INT_SOFTWARE1); | ||
75 | default_interrupt(INT_SOFTWARE2); | ||
76 | default_interrupt(INT_SOFTWARE3); | ||
73 | 77 | ||
74 | typedef void (*isr_t)(void); | 78 | typedef void (*isr_t)(void); |
75 | 79 | ||
76 | static isr_t isr_table[INT_SRC_NR_SOURCES] = | 80 | static isr_t isr_table[INT_SRC_COUNT] = |
77 | { | 81 | { |
78 | [INT_SRC_USB_CTRL] = INT_USB_CTRL, | 82 | [INT_SRC_USB_CTRL] = INT_USB_CTRL, |
79 | [INT_SRC_TIMER(0)] = INT_TIMER0, | 83 | [INT_SRC_TIMER(0)] = INT_TIMER0, |
@@ -111,13 +115,17 @@ static isr_t isr_table[INT_SRC_NR_SOURCES] = | |||
111 | #endif | 115 | #endif |
112 | #if IMX233_SUBTARGET >= 3780 | 116 | #if IMX233_SUBTARGET >= 3780 |
113 | #endif | 117 | #endif |
118 | [INT_SRC_SOFTWARE(0)] = INT_SOFTWARE0, | ||
119 | [INT_SRC_SOFTWARE(1)] = INT_SOFTWARE1, | ||
120 | [INT_SRC_SOFTWARE(2)] = INT_SOFTWARE2, | ||
121 | [INT_SRC_SOFTWARE(3)] = INT_SOFTWARE3, | ||
114 | }; | 122 | }; |
115 | 123 | ||
116 | #define IRQ_STORM_DELAY 100 /* ms */ | 124 | #define IRQ_STORM_DELAY 100 /* ms */ |
117 | #define IRQ_STORM_THRESHOLD 100000 /* allows irq / delay */ | 125 | #define IRQ_STORM_THRESHOLD 100000 /* allows irq / delay */ |
118 | 126 | ||
119 | static uint32_t irq_count_old[INT_SRC_NR_SOURCES]; | 127 | static uint32_t irq_count_old[INT_SRC_COUNT]; |
120 | static uint32_t irq_count[INT_SRC_NR_SOURCES]; | 128 | static uint32_t irq_count[INT_SRC_COUNT]; |
121 | 129 | ||
122 | struct imx233_icoll_irq_info_t imx233_icoll_get_irq_info(int src) | 130 | struct imx233_icoll_irq_info_t imx233_icoll_get_irq_info(int src) |
123 | { | 131 | { |
@@ -215,10 +223,10 @@ void imx233_icoll_init(void) | |||
215 | /* disable all interrupts */ | 223 | /* disable all interrupts */ |
216 | /* priority = 0, disable, disable fiq */ | 224 | /* priority = 0, disable, disable fiq */ |
217 | #if IMX233_SUBTARGET >= 3780 | 225 | #if IMX233_SUBTARGET >= 3780 |
218 | for(int i = 0; i < INT_SRC_NR_SOURCES; i++) | 226 | for(int i = 0; i < INT_SRC_COUNT; i++) |
219 | HW_ICOLL_INTERRUPTn(i) = 0; | 227 | HW_ICOLL_INTERRUPTn(i) = 0; |
220 | #else | 228 | #else |
221 | for(int i = 0; i < INT_SRC_NR_SOURCES / 4; i++) | 229 | for(int i = 0; i < INT_SRC_COUNT / 4; i++) |
222 | HW_ICOLL_PRIORITYn(i) = 0; | 230 | HW_ICOLL_PRIORITYn(i) = 0; |
223 | #endif | 231 | #endif |
224 | /* setup vbase as isr_table */ | 232 | /* setup vbase as isr_table */ |
@@ -226,4 +234,3 @@ void imx233_icoll_init(void) | |||
226 | /* enable final irq bit */ | 234 | /* enable final irq bit */ |
227 | BF_SET(ICOLL_CTRL, IRQ_FINAL_ENABLE); | 235 | BF_SET(ICOLL_CTRL, IRQ_FINAL_ENABLE); |
228 | } | 236 | } |
229 | |||