1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void lcd_update()
{
    mutex_lock(&lcd_mtx);

    while (!(LCDC_STA & LCDC_MCU_IDLE));
    commit_discard_dcache_range(FBADDR(0,0), 2*LCD_WIDTH*LCD_HEIGHT);
    dwdma_start(0, scr_llp, 6);
    udelay(100);

    MCU_CTRL=(1<<1)|(1<<2)|(1<<5);


    while (DWDMA_CTL_L(0) & (1<<27))
        yield();

   mutex_unlock(&lcd_mtx);
}