diff options
author | Solomon Peachy <pizza@shaftnet.org> | 2020-08-29 16:40:13 -0400 |
---|---|---|
committer | Solomon Peachy <pizza@shaftnet.org> | 2020-08-29 21:26:49 +0000 |
commit | 733821b59272af38be85a164b2cd40e2de87e895 (patch) | |
tree | b4913511becba2ead76dbcbced6eff6decf312ab /firmware | |
parent | 3dc4f817def3f106abab05db8e8395ff77c3d087 (diff) | |
download | rockbox-733821b59272af38be85a164b2cd40e2de87e895.tar.gz rockbox-733821b59272af38be85a164b2cd40e2de87e895.zip |
jz4760: Rework IRQ priorities, make audio the highest.
(it was effectively the _lowest_ prior to this. wtf?)
Change-Id: I6905c5ba0d87a5e14aeae5d5b79f8f515ac5b806
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/system-jz4760.c | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/system-jz4760.c b/firmware/target/mips/ingenic_jz47xx/system-jz4760.c index 73bd31c72c..78f9fc6cab 100644 --- a/firmware/target/mips/ingenic_jz47xx/system-jz4760.c +++ b/firmware/target/mips/ingenic_jz47xx/system-jz4760.c | |||
@@ -87,19 +87,20 @@ intr(GPIO187);intr(GPIO188);intr(GPIO189);intr(GPIO190);intr(GPIO191); | |||
87 | 87 | ||
88 | static void (* const irqvector[])(void) = | 88 | static void (* const irqvector[])(void) = |
89 | { | 89 | { |
90 | // @0 | ||
90 | I2C1,I2C0,UART3,UART2,UART1,UART0,GPU,SSI1, | 91 | I2C1,I2C0,UART3,UART2,UART1,UART0,GPU,SSI1, |
91 | SSI0,TSSI,UIRQ,KBC,UIRQ,UIRQ,UIRQ,UIRQ, | 92 | SSI0,TSSI,UIRQ,KBC,UIRQ,UIRQ,UIRQ,UIRQ, |
92 | UIRQ,UIRQ,SADC,ETH,UHC,OTG,UIRQ,UIRQ, | 93 | UIRQ,UIRQ,SADC,ETH,UHC,OTG,UIRQ,UIRQ, |
93 | UIRQ,TCU2,TCU1,TCU0,GPS,IPU,CIM,LCD, | 94 | UIRQ,TCU2,TCU1,TCU0,GPS,IPU,CIM,LCD, |
94 | 95 | // @32 | |
95 | RTC,OWI,AIC,MSC2,MSC1,MSC0,SCC,BCH, // 32 | 96 | RTC,OWI,AIC,MSC2,MSC1,MSC0,SCC,BCH, |
96 | PCM,HARB0,HARB2,AOSD,CPM,UIRQ, | 97 | PCM,HARB0,HARB2,AOSD,CPM, // end of HW IRQs, everything else is SW |
97 | 98 | // @45 | |
98 | DMA0,DMA1,DMA2,DMA3,DMA4,DMA5,DMA6,DMA7, // 46 | 99 | UIRQ,DMA0,DMA1,DMA2,DMA3,DMA4,DMA5, |
99 | DMA8,DMA9,DMA10,DMA11,MDMA0,MDMA1,MDMA2,BDMA0, | 100 | DMA6,DMA7,DMA8,DMA9,DMA10,DMA11,MDMA0,MDMA1, |
100 | BDMA1,BDMA2, | 101 | MDMA2,BDMA0,BDMA1,BDMA2, |
101 | 102 | // @64 | |
102 | GPIO0,GPIO1,GPIO2,GPIO3,GPIO4,GPIO5,GPIO6,GPIO7, // 64 | 103 | GPIO0,GPIO1,GPIO2,GPIO3,GPIO4,GPIO5,GPIO6,GPIO7, |
103 | GPIO8,GPIO9,GPIO10,GPIO11,GPIO12,GPIO13,GPIO14,GPIO15, | 104 | GPIO8,GPIO9,GPIO10,GPIO11,GPIO12,GPIO13,GPIO14,GPIO15, |
104 | GPIO16,GPIO17,GPIO18,GPIO19,GPIO20,GPIO21,GPIO22,GPIO23, | 105 | GPIO16,GPIO17,GPIO18,GPIO19,GPIO20,GPIO21,GPIO22,GPIO23, |
105 | GPIO24,GPIO25,GPIO26,GPIO27,GPIO28,GPIO29,GPIO30,GPIO31, | 106 | GPIO24,GPIO25,GPIO26,GPIO27,GPIO28,GPIO29,GPIO30,GPIO31, |
@@ -243,6 +244,23 @@ static int get_irq_number(void) | |||
243 | if (UNLIKELY(irq0 < 0) && UNLIKELY(irq1 < 0)) | 244 | if (UNLIKELY(irq0 < 0) && UNLIKELY(irq1 < 0)) |
244 | return -1; | 245 | return -1; |
245 | 246 | ||
247 | #if 1 | ||
248 | // Prioritze AIC and SADC, then everything on ipl1 (ie MSC mostly) | ||
249 | if (ipl1 & 1<<(IRQ_AIC-32)) { | ||
250 | irq = IRQ_AIC; | ||
251 | ipl1 &= ~(1<<(IRQ_AIC-32)); | ||
252 | } else if (ipl0 & 1<<IRQ_SADC) { | ||
253 | irq = IRQ_SADC; | ||
254 | ipl0 &= ~(1<<IRQ_SADC); | ||
255 | } else if (ipl1) { | ||
256 | irq = irq1 + 32; | ||
257 | ipl1 &= ~(1<<irq1); | ||
258 | } else { | ||
259 | irq = irq0; | ||
260 | ipl0 &= ~(1<<irq0); | ||
261 | } | ||
262 | #else | ||
263 | // Prioritize I2C0, I2C1, IPL0, and finally IPL1 | ||
246 | if (!(ipl0 & 3)) { | 264 | if (!(ipl0 & 3)) { |
247 | if (ipl0) { | 265 | if (ipl0) { |
248 | irq = irq0; | 266 | irq = irq0; |
@@ -251,7 +269,7 @@ static int get_irq_number(void) | |||
251 | irq = irq1 + 32; | 269 | irq = irq1 + 32; |
252 | ipl1 &= ~(1<<irq1); | 270 | ipl1 &= ~(1<<irq1); |
253 | } | 271 | } |
254 | } else { | 272 | } else { |
255 | if (ipl0 & 2) { | 273 | if (ipl0 & 2) { |
256 | irq = 1; | 274 | irq = 1; |
257 | ipl0 &= ~(1<<irq); | 275 | ipl0 &= ~(1<<irq); |
@@ -260,6 +278,7 @@ static int get_irq_number(void) | |||
260 | ipl0 &= ~(1<<irq); | 278 | ipl0 &= ~(1<<irq); |
261 | } | 279 | } |
262 | } | 280 | } |
281 | #endif | ||
263 | 282 | ||
264 | switch (irq) | 283 | switch (irq) |
265 | { | 284 | { |