/* Zipit LCD control. * (c) 2005 Chris Studholme * GPL */ #include #include #include #include #include "hardware.h" volatile unsigned char* pddr = (unsigned char*)(CLPS7111_VIRT_BASE+PDDR); volatile unsigned int* syscon1 = (unsigned int*)(CLPS7111_VIRT_BASE+SYSCON1); static void read_lcd() { unsigned char l = *pddr; printf("%d %d\n",(l>>5)&1,(l>>1)&7); } int main(int argc, char **argv) { if (argc>=2) { int i = atoi(argv[1]); unsigned char d = *pddr; unsigned int s1 = *syscon1; if (i==0) { d &= ~(1<<5); s1 &= ~(1<<12); } else { d |= (1<<5); s1 |= (1<<12); } if (argc>=3) { int i = atoi(argv[2]); d &= ~14; d |= (i&7)<<1; } *syscon1 = s1; *pddr = d; } read_lcd(); return 0; }