]> git.sur5r.net Git - u-boot/blobdiff - drivers/video/bus_vcxk.c
Merge branch 'master' of git://git.denx.de/u-boot-arm
[u-boot] / drivers / video / bus_vcxk.c
index b7875de6f07d34ce2705e197dfb81400bc28e134..67a59a75d62bd8781798c166afcc7d5e38c5c774 100644 (file)
@@ -31,9 +31,29 @@ vu_long  *vcxk_bws_long = ((vu_long *) (CONFIG_SYS_VCXK_BASE));
 
 #ifdef CONFIG_AT91RM9200
        #include <asm/arch/hardware.h>
+       #include <asm/arch/at91_pio.h>
+
        #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 <asm/m5282.h>
        #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  {