summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-05-19 12:11:54 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-05-19 12:11:54 +0000
commit6f2afd36bc3ad1dfe6a747060e4575caa186c010 (patch)
tree3a774d0f8094d1c1a9d8b2190d6a73bbc5d96aa9
parenta53785911aeb37864eef81d3ec422645a04e4b0d (diff)
downloadrockbox-6f2afd36bc3ad1dfe6a747060e4575caa186c010.tar.gz
rockbox-6f2afd36bc3ad1dfe6a747060e4575caa186c010.zip
as3525: reorder vectored interrupts
The list is ordered by priority, put the DMA and SD interrupts at the top This seems to fix the random freezes on heavy storage operation like building database or pictureflow cache The recently added audio interrupt had a priority higher than SD slot on as3525v1, give it a lower priority git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26160 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/as3525/system-as3525.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/firmware/target/arm/as3525/system-as3525.c b/firmware/target/arm/as3525/system-as3525.c
index ae7c71d939..0bb8c4ce95 100644
--- a/firmware/target/arm/as3525/system-as3525.c
+++ b/firmware/target/arm/as3525/system-as3525.c
@@ -108,22 +108,24 @@ struct vec_int_src
108/* Vectored interrupts (16 available) */ 108/* Vectored interrupts (16 available) */
109struct vec_int_src vec_int_srcs[] = 109struct vec_int_src vec_int_srcs[] =
110{ 110{
111 { INT_SRC_TIMER1, INT_TIMER1 }, 111 /* Highest priority at the top of the list */
112 { INT_SRC_TIMER2, INT_TIMER2 },
113 { INT_SRC_DMAC, INT_DMAC }, 112 { INT_SRC_DMAC, INT_DMAC },
114 { INT_SRC_NAND, INT_NAND }, 113 { INT_SRC_NAND, INT_NAND },
115 { INT_SRC_I2C_AUDIO, INT_I2C_AUDIO },
116 { INT_SRC_AUDIO, INT_AUDIO },
117 { INT_SRC_USB, INT_USB, },
118#if (defined HAVE_MULTIDRIVE && CONFIG_CPU == AS3525) 114#if (defined HAVE_MULTIDRIVE && CONFIG_CPU == AS3525)
119 { INT_SRC_MCI0, INT_MCI0 }, 115 { INT_SRC_MCI0, INT_MCI0 },
120#endif 116#endif
121#ifdef HAVE_HOTSWAP 117 { INT_SRC_USB, INT_USB, },
122 { INT_SRC_GPIOA, INT_GPIOA, },
123#endif
124#ifdef HAVE_RECORDING 118#ifdef HAVE_RECORDING
125 { INT_SRC_I2SIN, INT_I2SIN, }, 119 { INT_SRC_I2SIN, INT_I2SIN, },
126#endif 120#endif
121 { INT_SRC_TIMER1, INT_TIMER1 },
122 { INT_SRC_TIMER2, INT_TIMER2 },
123 { INT_SRC_I2C_AUDIO, INT_I2C_AUDIO },
124 { INT_SRC_AUDIO, INT_AUDIO },
125#ifdef HAVE_HOTSWAP
126 { INT_SRC_GPIOA, INT_GPIOA, },
127#endif
128 /* Lowest priority at the end of the list */
127}; 129};
128 130
129static void setup_vic(void) 131static void setup_vic(void)