106
struct omap_mpu_state_s *mpu;
107
omap_clk clk;
108
qemu_irq irq[4];
109
- void (*intr_update)(struct omap_dma_s *s);
110
- int omap_3_1_mapping_disabled;
109
110
uint32_t gcr;
111
uint32_t ocp;
132
133
static inline void omap_dma_interrupts_update(struct omap_dma_s *s)
134
{
137
- s->intr_update(s);
135
+ struct omap_dma_channel_s *ch = s->ch;
136
+
137
+ /* First three interrupts are shared between two channels each. */
138
+ if (ch[0].status | ch[6].status) {
139
+ qemu_irq_raise(ch[0].irq);
140
+ }
141
+ if (ch[1].status | ch[7].status) {
142
+ qemu_irq_raise(ch[1].irq);
143
+ }
144
+ if (ch[2].status | ch[8].status) {
145
+ qemu_irq_raise(ch[2].irq);
146
+ }
147
+ if (ch[3].status) {
148
+ qemu_irq_raise(ch[3].irq);
149
+ }
150
+ if (ch[4].status) {
151
+ qemu_irq_raise(ch[4].irq);
152
+ }
153
+ if (ch[5].status) {
154
+ qemu_irq_raise(ch[5].irq);
155
+ }
156
}
157
158
static void omap_dma_channel_load(struct omap_dma_channel_s *ch)
312
}
313
}
314
297
-static void omap_dma_interrupts_3_1_update(struct omap_dma_s *s)
298
-{
299
- struct omap_dma_channel_s *ch = s->ch;
300
-
301
- /* First three interrupts are shared between two channels each. */
302
- if (ch[0].status | ch[6].status)
303
- qemu_irq_raise(ch[0].irq);
304
- if (ch[1].status | ch[7].status)
305
- qemu_irq_raise(ch[1].irq);
306
- if (ch[2].status | ch[8].status)
307
- qemu_irq_raise(ch[2].irq);
308
- if (ch[3].status)
309
- qemu_irq_raise(ch[3].irq);
310
- if (ch[4].status)
311
- qemu_irq_raise(ch[4].irq);
312
- if (ch[5].status)
313
- qemu_irq_raise(ch[5].irq);
314
-}
315
-
316
-static void omap_dma_enable_3_1_mapping(struct omap_dma_s *s)
317
-{
318
- s->omap_3_1_mapping_disabled = 0;
319
- s->chans = 9;
320
- s->intr_update = omap_dma_interrupts_3_1_update;
321
-}
322
-
315
static void omap_dma_process_request(struct omap_dma_s *s, int request)
316
{
317
int channel;
652
s->lcd_ch.condition = 0;
653
s->lcd_ch.interrupts = 0;
654
s->lcd_ch.dual = 0;
663
- omap_dma_enable_3_1_mapping(s);
655
for (i = 0; i < s->chans; i ++) {
656
s->ch[i].suspend = 0;
657
s->ch[i].prefetch = 0;
1184
s->clk = clk;
1185
s->lcd_ch.irq = lcd_irq;
1186
s->lcd_ch.mpu = mpu;
1187
+ s->chans = 9;
1188
1189
s->dma = soc_dma_init(9);
1190
s->dma->freq = omap_clk_getrate(clk);