.num_resources = ARRAY_SIZE(mxc_i2c2_resources),
        .resource = mxc_i2c2_resources,
 };
+
+/* i.MX31 Image Processing Unit */
+
+/* The resource order is important! */
+static struct resource mx3_ipu_rsrc[] = {
+       {
+               .start = IPU_CTRL_BASE_ADDR,
+               .end = IPU_CTRL_BASE_ADDR + 0x5F,
+               .flags = IORESOURCE_MEM,
+       }, {
+               .start = IPU_CTRL_BASE_ADDR + 0x88,
+               .end = IPU_CTRL_BASE_ADDR + 0xB3,
+               .flags = IORESOURCE_MEM,
+       }, {
+               .start = MXC_INT_IPU_SYN,
+               .end = MXC_INT_IPU_SYN,
+               .flags = IORESOURCE_IRQ,
+       }, {
+               .start = MXC_INT_IPU_ERR,
+               .end = MXC_INT_IPU_ERR,
+               .flags = IORESOURCE_IRQ,
+       },
+};
+
+struct platform_device mx3_ipu = {
+       .name = "ipu-core",
+       .id = -1,
+       .num_resources = ARRAY_SIZE(mx3_ipu_rsrc),
+       .resource = mx3_ipu_rsrc,
+};
+
+static struct resource fb_resources[] = {
+       {
+               .start  = IPU_CTRL_BASE_ADDR + 0xB4,
+               .end    = IPU_CTRL_BASE_ADDR + 0x1BF,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+struct platform_device mx3_fb = {
+       .name           = "mx3_sdc_fb",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(fb_resources),
+       .resource       = fb_resources,
+       .dev            = {
+               .coherent_dma_mask = 0xffffffff,
+       },
+};