+/* GP2X local */
+int default_cpu_clock;
+int gp2x_dev_id;
+int gp2x_current_bpp;
+void *gp2x_screens[4];
+
+#include <linux/input.h>
+
+static const char * const caanoo_keys[KEY_MAX + 1] = {
+ [0 ... KEY_MAX] = NULL,
+ [KEY_UP] = "Up",
+ [KEY_LEFT] = "Left",
+ [KEY_RIGHT] = "Right",
+ [KEY_DOWN] = "Down",
+ [BTN_TRIGGER] = "A",
+ [BTN_THUMB] = "X",
+ [BTN_THUMB2] = "B",
+ [BTN_TOP] = "Y",
+ [BTN_TOP2] = "L",
+ [BTN_PINKIE] = "R",
+ [BTN_BASE] = "Home",
+ [BTN_BASE2] = "Lock",
+ [BTN_BASE3] = "I",
+ [BTN_BASE4] = "II",
+ [BTN_BASE5] = "Push",
+};
+
+void gp2x_video_changemode(int bpp)
+{
+ gp2x_video_changemode_ll(bpp);
+
+ gp2x_current_bpp = bpp < 0 ? -bpp : bpp;
+}
+
+static void gp2x_memcpy_buffers(int buffers, void *data, int offset, int len)
+{
+ char *dst;
+ if (buffers & (1<<0)) { dst = (char *)gp2x_screens[0] + offset; if (dst != data) memcpy(dst, data, len); }
+ if (buffers & (1<<1)) { dst = (char *)gp2x_screens[1] + offset; if (dst != data) memcpy(dst, data, len); }
+ if (buffers & (1<<2)) { dst = (char *)gp2x_screens[2] + offset; if (dst != data) memcpy(dst, data, len); }
+ if (buffers & (1<<3)) { dst = (char *)gp2x_screens[3] + offset; if (dst != data) memcpy(dst, data, len); }
+}
+
+void gp2x_memcpy_all_buffers(void *data, int offset, int len)
+{
+ gp2x_memcpy_buffers(0xf, data, offset, len);
+}
+
+void gp2x_memset_all_buffers(int offset, int byte, int len)
+{
+ memset((char *)gp2x_screens[0] + offset, byte, len);
+ memset((char *)gp2x_screens[1] + offset, byte, len);
+ memset((char *)gp2x_screens[2] + offset, byte, len);
+ memset((char *)gp2x_screens[3] + offset, byte, len);
+}
+
+void gp2x_make_fb_bufferable(int yes)
+{
+ int ret = 0;
+
+ yes = yes ? 1 : 0;
+ ret |= warm_change_cb_range(WCB_B_BIT, yes, gp2x_screens[0], 320*240*2);
+ ret |= warm_change_cb_range(WCB_B_BIT, yes, gp2x_screens[1], 320*240*2);
+ ret |= warm_change_cb_range(WCB_B_BIT, yes, gp2x_screens[2], 320*240*2);
+ ret |= warm_change_cb_range(WCB_B_BIT, yes, gp2x_screens[3], 320*240*2);
+
+ if (ret)
+ fprintf(stderr, "could not make fb buferable.\n");
+ else
+ printf("made fb buferable.\n");
+}
+
+/* common */