- static int prev_bpp = 0;
- int code = 0, bytes = 2;
- int rot_cmd[2] = { 0, 0 };
- unsigned int r;
- 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 */
- set_lcd_custom_rate(last_pal_setting);
-
- 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;
+ /* approximate /= 1000 */
+ unsigned long long v64;
+ v64 = (unsigned long long)gp2x_get_ticks_us_() * 4294968;
+ return v64 >> 32;