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
27
28
29
void lcd_write_data(const fb_data* p_bytes, int count)
{
    /* Interrupts seem to be faster than polling the status register */
start:
    full_empty = 0;
    DBOP_CTRL |= (1<<11|1<<5);
    while (!full_empty && count--)
    {
        DBOP_DOUT = *p_bytes++;
    }
    if (count > 0)
    {
    //   yield(); // yield() doesn't seem to make it any slower!
        goto start;
    }
    /* While push fifo is not empty */
#if 0
    full_empty = 0;
    DBOP_CTRL |= (1<<11|1<<8);
    if (DBOP_STAT & (1<<10))
        return;
    while(!full_empty);
#else
    /* this is slightly faster */
    while ((DBOP_STAT & (1<<10)) == 0);
#endif

}