X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=drivers%2Fvideo%2Fbus_vcxk.c;h=67a59a75d62bd8781798c166afcc7d5e38c5c774;hb=b5d58d8500bfb918c7fec56f241e6ee1078c2be0;hp=b7875de6f07d34ce2705e197dfb81400bc28e134;hpb=50217deeb07911d686790d34d468eb9a5245f68d;p=u-boot diff --git a/drivers/video/bus_vcxk.c b/drivers/video/bus_vcxk.c index b7875de6f0..67a59a75d6 100644 --- a/drivers/video/bus_vcxk.c +++ b/drivers/video/bus_vcxk.c @@ -31,9 +31,29 @@ vu_long *vcxk_bws_long = ((vu_long *) (CONFIG_SYS_VCXK_BASE)); #ifdef CONFIG_AT91RM9200 #include + #include + #ifndef VCBITMASK #define VCBITMASK(bitno) (0x0001 << (bitno % 16)) #endif +#ifndef CONFIG_AT91_LEGACY +at91_pio_t *pio = (at91_pio_t *) AT91_PIO_BASE; +#define VCXK_INIT_PIN(PORT, PIN, DDR, I0O1) \ + do { \ + writel(PIN, &pio->PORT.per); \ + writel(PIN, &pio->PORT.DDR); \ + writel(PIN, &pio->PORT.mddr); \ + if (!I0O1) \ + writel(PIN, &pio->PORT.puer); \ + } while (0); + +#define VCXK_SET_PIN(PORT, PIN) writel(PIN, &pio->PORT.sodr); +#define VCXK_CLR_PIN(PORT, PIN) writel(PIN, &pio->PORT.codr); + +#define VCXK_ACKNOWLEDGE \ + (!(readl(&pio->CONFIG_SYS_VCXK_ACKNOWLEDGE_PORT.pdsr) & \ + CONFIG_SYS_VCXK_ACKNOWLEDGE_PIN)) +#else #define VCXK_INIT_PIN(PORT, PIN, DDR, I0O1) \ ((AT91PS_PIO) PORT)->PIO_PER = PIN; \ ((AT91PS_PIO) PORT)->DDR = PIN; \ @@ -46,7 +66,7 @@ vu_long *vcxk_bws_long = ((vu_long *) (CONFIG_SYS_VCXK_BASE)); #define VCXK_ACKNOWLEDGE \ (!(((AT91PS_PIO) CONFIG_SYS_VCXK_ACKNOWLEDGE_PORT)->\ PIO_PDSR & CONFIG_SYS_VCXK_ACKNOWLEDGE_PIN)) - +#endif #elif defined(CONFIG_MCF52x2) #include #ifndef VCBITMASK @@ -131,7 +151,7 @@ int vcxk_init(unsigned long width, unsigned long height) #endif #ifdef CONFIG_SYS_VCXK_DOUBLEBUFFERED - double_bws_word = (u_short *) double_bws; + double_bws_word = (u_short *)double_bws; double_bws_long = (u_long *)double_bws; debug("%lx %lx %lx \n", double_bws, double_bws_word, double_bws_long); #endif @@ -152,7 +172,8 @@ int vcxk_init(unsigned long width, unsigned long height) vcxk_bws_long[1] = 0x0; vcxk_bws_long[1] = 0x55AAAA55; vcxk_bws_long[5] = 0x0; - if (vcxk_bws_long[1] == 0x55AAAA55) VC4K16 = 1; + if (vcxk_bws_long[1] == 0x55AAAA55) + VC4K16 = 1; #else VC4K16 = 1; debug("No autodetect: use vc4k\n"); @@ -261,6 +282,7 @@ void vcxk_cls(void) void vcxk_clear(void) { int cnt; + for (cnt = 0; cnt < (16384 / 4); cnt++) { VCXK_BWS_LONG(cnt, 0) } @@ -317,7 +339,8 @@ int vcxk_request(void) int vcxk_acknowledge_wait(void) { - while (VCXK_ACKNOWLEDGE); + while (VCXK_ACKNOWLEDGE) + ; return 1; } @@ -332,7 +355,7 @@ int vcxk_acknowledge_wait(void) *** */ -void vcxk_draw_mono(unsigned char *dataptr, unsigned long linewidth, +void vcxk_draw_mono(unsigned char *dataptr, unsigned long linewidth, unsigned long cp_width, unsigned long cp_height) { unsigned char *lineptr; @@ -346,7 +369,8 @@ void vcxk_draw_mono(unsigned char *dataptr, unsigned long linewidth, else vcxk_setpixel(xcnt, ycnt-1, 0); - if ((xcnt % 8) == 7) lineptr++; + if ((xcnt % 8) == 7) + lineptr++; } /* endfor xcnt */ dataptr = dataptr + linewidth; } /* endfor ycnt */ @@ -376,7 +400,6 @@ int vcxk_display_bitmap(ulong addr, int x, int y) unsigned long c_width; unsigned long c_height; unsigned char *dataptr; - unsigned char *lineptr; bmp = (bmp_image_t *) addr; if ((bmp->header.signature[0] == 'B') && @@ -403,12 +426,12 @@ int vcxk_display_bitmap(ulong addr, int x, int y) if (c_height < height) dataptr = dataptr + lw * (height - c_height); switch (bpp) { - case 1: - vcxk_draw_mono(dataptr, lw, c_width, c_height); - break; - default: - printf("Error: %ld bit per pixel " - "not supported by VCxK\n", bpp); + case 1: + vcxk_draw_mono(dataptr, lw, c_width, c_height); + break; + default: + printf("Error: %ld bit per pixel " + "not supported by VCxK\n", bpp); return 0; } } else {