-/* doulblebuffered flip */
-static void gp2x_video_flip2_(void)
-{
- pollux_video_flip(2);
-}
-
-static void gp2x_video_changemode_ll_(int bpp)
-{
- static int prev_bpp = 0;
- int code = 0, bytes = 2;
- int rot_cmd[2] = { 0, 0 };
- unsigned int r;
- char buff[32];
- int ret;
-
- if (bpp == prev_bpp)
- return;
- prev_bpp = bpp;
-
- printf("changemode: %dbpp rot=%d\n", abs(bpp), bpp < 0);
-
- /* negative bpp means rotated mode */
- rot_cmd[0] = (bpp < 0) ? 6 : 5;
- ret = ioctl(fbdev, _IOW('D', 90, int[2]), rot_cmd);
- if (ret < 0)
- perror("rot ioctl failed");
- memregl[0x4004>>2] = (bpp < 0) ? 0x013f00ef : 0x00ef013f;
- memregl[0x4000>>2] |= 1 << 3;
-
- /* the above ioctl resets LCD timings, so set them here */
- snprintf(buff, sizeof(buff), "POLLUX_LCD_TIMINGS_%s", last_pal_setting ? "PAL" : "NTSC");
- pollux_set_fromenv(buff);
-
- switch (abs(bpp))
- {
- case 8:
- code = 0x443a;
- bytes = 1;
- break;
-
- case 15:
- case 16:
- code = 0x4432;
- bytes = 2;
- break;
-
- default:
- printf("unhandled bpp request: %d\n", abs(bpp));
- return;
- }
-
- memregl[0x405c>>2] = bytes;
- memregl[0x4060>>2] = bytes * (bpp < 0 ? 240 : 320);
-
- r = memregl[0x4058>>2];
- r = (r & 0xffff) | (code << 16) | 0x10;
- memregl[0x4058>>2] = r;
-}
-
-static void gp2x_video_setpalette_(int *pal, int len)
-{
- /* pollux palette is 16bpp only.. */
- int i;
- for (i = 0; i < len; i++)
- {
- int c = pal[i];
- c = ((c >> 8) & 0xf800) | ((c >> 5) & 0x07c0) | ((c >> 3) & 0x001f);
- memregl[0x4070>>2] = (i << 24) | c;
- }
-}
-
-static void gp2x_video_RGB_setscaling_(int ln_offs, int W, int H)