Revision d7585251 hw/pxa2xx_lcd.c

b/hw/pxa2xx_lcd.c
283 283
/* Load new Frame Descriptors from DMA */
284 284
static void pxa2xx_descriptor_load(struct pxa2xx_lcdc_s *s)
285 285
{
286
    struct pxa_frame_descriptor_s *desc[PXA_LCDDMA_CHANS];
286
    struct pxa_frame_descriptor_s desc;
287 287
    target_phys_addr_t descptr;
288 288
    int i;
289 289

  
290 290
    for (i = 0; i < PXA_LCDDMA_CHANS; i ++) {
291
        desc[i] = 0;
292 291
        s->dma_ch[i].source = 0;
293 292

  
294 293
        if (!s->dma_ch[i].up)
......
303 302
            descptr = s->dma_ch[i].descriptor;
304 303

  
305 304
        if (!(descptr >= PXA2XX_SDRAM_BASE && descptr +
306
                    sizeof(*desc[i]) <= PXA2XX_SDRAM_BASE + phys_ram_size))
305
                    sizeof(desc) <= PXA2XX_SDRAM_BASE + phys_ram_size))
307 306
            continue;
308 307

  
309
        descptr -= PXA2XX_SDRAM_BASE;
310
        desc[i] = (struct pxa_frame_descriptor_s *) (phys_ram_base + descptr);
311
        s->dma_ch[i].descriptor = desc[i]->fdaddr;
312
        s->dma_ch[i].source = desc[i]->fsaddr;
313
        s->dma_ch[i].id = desc[i]->fidr;
314
        s->dma_ch[i].command = desc[i]->ldcmd;
308
        cpu_physical_memory_read(descptr, (void *)&desc, sizeof(desc));
309
        s->dma_ch[i].descriptor = tswap32(desc.fdaddr);
310
        s->dma_ch[i].source = tswap32(desc.fsaddr);
311
        s->dma_ch[i].id = tswap32(desc.fidr);
312
        s->dma_ch[i].command = tswap32(desc.ldcmd);
315 313
    }
316 314
}
317 315

  

Also available in: Unified diff