mxsfb.c expects bits_per_pixel set to either 16 or 32 (i.e. RGBA, even though the "A" is completely ignored):
http://lxr.free-electrons.com/source/drivers/video/fbdev/mxsfb.c#L449
...but ugfx requests a video mode of 24 bits-per-pixel (i.e. RGB) when using GDISP_PIXELFORMAT_RGB888. I've not dug around enough to decide where the bug really is. However, one terrible bodge later:
Index: git/src/gdisp/gdisp_driver.h
===================================================================
--- git.orig/src/gdisp/gdisp_driver.h
+++ git/src/gdisp/gdisp_driver.h
@@ -820,7 +820,7 @@ typedef struct GDISPVMT {
#define LLDCOLOR_BITS_R ((GDISP_LLD_PIXELFORMAT>>8) & 0x0F)
#define LLDCOLOR_BITS_G ((GDISP_LLD_PIXELFORMAT>>4) & 0x0F)
#define LLDCOLOR_BITS_B ((GDISP_LLD_PIXELFORMAT>>0) & 0x0F)
- #define LLDCOLOR_BITS (LLDCOLOR_BITS_R + LLDCOLOR_BITS_G + LLDCOLOR_BITS_B)
+ #define LLDCOLOR_BITS (LLDCOLOR_BITS_R + LLDCOLOR_BITS_G + LLDCOLOR_BITS_B + LLDCOLOR_BITS_B)
// From the number of bits determine COLOR_TYPE, COLOR_TYPE_BITS and masking
#if LLDCOLOR_BITS <= 8
...and I was on my way. uGFX seems to work fine, but this obviously isn't production-quality code