1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
volatile int lcd_updating = 0;

void INT_DWDMA(void)
{
    DWDMA_CLEAR_TFR |= 1;
    lcd_updating = 0;
}

void lcd_update()
{
    while(lcd_updating);

    lcd_updating = 1;

    lcd_set_gram_area(0, 0, LCD_WIDTH, LCD_HEIGHT);
    lcdctrl_bypass(0);

    commit_discard_dcache_range(FBADDR(0,0), 2*LCD_WIDTH*LCD_HEIGHT);

    while (!(LCDC_STA & LCDC_MCU_IDLE));

    dwdma_start(0, scr_llp, 6);
    udelay(10);

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