void ipu_dump() { ipu_dump_registers(); printk(KERN_INFO "IPU_INT_STAT_1 = \t0x%08X\n", __raw_readl(IPU_STAT)); printk(KERN_INFO "IPU_INT_CTRL_1 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(1))); printk(KERN_INFO "IPU_INT_CTRL_2 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(2))); printk(KERN_INFO "IPU_INT_CTRL_3 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(3))); printk(KERN_INFO "IPU_INT_CTRL_4 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(4))); printk(KERN_INFO "IPU_INT_CTRL_5 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(5))); printk(KERN_INFO "IPU_INT_CTRL_6 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(6))); printk(KERN_INFO "IPU_INT_CTRL_7 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(7))); printk(KERN_INFO "IPU_INT_CTRL_8 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(8))); printk(KERN_INFO "IPU_INT_CTRL_9 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(9))); printk(KERN_INFO "IPU_INT_CTRL_10 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(10))); printk(KERN_INFO "IPU_INT_CTRL_11 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(11))); printk(KERN_INFO "IPU_INT_CTRL_12 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(12))); printk(KERN_INFO "IPU_INT_CTRL_13 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(13))); printk(KERN_INFO "IPU_INT_CTRL_14 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(14))); printk(KERN_INFO "IPU_INT_CTRL_15 = \t0x%08X\n", __raw_readl(IPU_INT_CTRL(15))); printk(KERN_INFO "IPU_INT_STAT_1 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(1))); printk(KERN_INFO "IPU_INT_STAT_2 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(2))); printk(KERN_INFO "IPU_INT_STAT_3 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(3))); printk(KERN_INFO "IPU_INT_STAT_4 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(4))); printk(KERN_INFO "IPU_INT_STAT_5 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(5))); printk(KERN_INFO "IPU_INT_STAT_6 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(6))); printk(KERN_INFO "IPU_INT_STAT_7 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(7))); printk(KERN_INFO "IPU_INT_STAT_8 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(8))); printk(KERN_INFO "IPU_INT_STAT_9 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(9))); printk(KERN_INFO "IPU_INT_STAT_10 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(10))); printk(KERN_INFO "IPU_INT_STAT_11 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(11))); printk(KERN_INFO "IPU_INT_STAT_12 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(12))); printk(KERN_INFO "IPU_INT_STAT_13 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(13))); printk(KERN_INFO "IPU_INT_STAT_14 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(14))); printk(KERN_INFO "IPU_INT_STAT_15 = \t0x%08X\n", __raw_readl(IPU_INT_STAT(15))); printk(KERN_INFO "IPU_CHA_BUF0_RDY(27) = \t0x%08X\n", __raw_readl(IPU_CHA_BUF0_RDY(27))); printk(KERN_INFO "IPU_CHA_BUF0_RDY(23) = \t0x%08X\n", __raw_readl(IPU_CHA_BUF0_RDY(23))); printk(KERN_INFO "IPU_CHA_CUR_BUF(27) = \t0x%08X\n", __raw_readl(IPU_CHA_CUR_BUF(27))); printk(KERN_INFO "IDMAC_CH_BUSY1(27) = \t0x%08X\n", __raw_readl(IDMAC_CH_BUSY1)); ipu_ch_param_dump(23); ipu_ch_param_dump(27); ipu_ch_param_dump(15); ipu_ch_param_dump(20); ipu_ch_param_dump(0); }
/* * Probe routine for the framebuffer driver. It is called during the * driver binding process. The following functions are performed in * this routine: Framebuffer initialization, Memory allocation and * mapping, Framebuffer registration, IPU initialization. * * @return Appropriate error code to the kernel common code */ static int mxcfb_probe(u32 interface_pix_fmt, uint8_t disp, struct fb_videomode const *mode) { struct fb_info *fbi; struct mxcfb_info *mxcfbi; int ret = 0; /* * Initialize FB structures */ fbi = mxcfb_init_fbinfo(); if (!fbi) { ret = -ENOMEM; goto err0; } mxcfbi = (struct mxcfb_info *)fbi->par; if (!g_dp_in_use) { mxcfbi->ipu_ch = MEM_BG_SYNC; mxcfbi->blank = FB_BLANK_UNBLANK; } else { mxcfbi->ipu_ch = MEM_DC_SYNC; mxcfbi->blank = FB_BLANK_POWERDOWN; } mxcfbi->ipu_di = disp; ipu_disp_set_global_alpha(mxcfbi->ipu_ch, 1, 0x80); ipu_disp_set_color_key(mxcfbi->ipu_ch, 0, 0); strcpy(fbi->fix.id, "DISP3 BG"); g_dp_in_use = 1; mxcfb_info[mxcfbi->ipu_di] = fbi; /* Need dummy values until real panel is configured */ mxcfbi->ipu_di_pix_fmt = interface_pix_fmt; fb_videomode_to_var(&fbi->var, mode); fbi->var.bits_per_pixel = 16; fbi->fix.line_length = fbi->var.xres * (fbi->var.bits_per_pixel / 8); fbi->fix.smem_len = fbi->var.yres_virtual * fbi->fix.line_length; mxcfb_check_var(&fbi->var, fbi); /* Default Y virtual size is 2x panel size */ fbi->var.yres_virtual = fbi->var.yres * 2; mxcfb_set_fix(fbi); /* allocate fb first */ if (mxcfb_map_video_memory(fbi) < 0) return -ENOMEM; mxcfb_set_par(fbi); panel.winSizeX = mode->xres; panel.winSizeY = mode->yres; panel.plnSizeX = mode->xres; panel.plnSizeY = mode->yres; panel.frameAdrs = (u32)fbi->screen_base; panel.memSize = fbi->screen_size; panel.gdfBytesPP = 2; panel.gdfIndex = GDF_16BIT_565RGB; ipu_dump_registers(); return 0; err0: return ret; }
/* * Probe routine for the framebuffer driver. It is called during the * driver binding process. The following functions are performed in * this routine: Framebuffer initialization, Memory allocation and * mapping, Framebuffer registration, IPU initialization. * * @return Appropriate error code to the kernel common code */ static int mxcfb_probe(u32 interface_pix_fmt, struct fb_videomode *mode, int di) { struct fb_info *fbi; struct mxcfb_info *mxcfbi; /* * Initialize FB structures */ fbi = mxcfb_init_fbinfo(); if (!fbi) return -ENOMEM; mxcfbi = fbi->par; if (!g_dp_in_use) { mxcfbi->ipu_ch = MEM_BG_SYNC; mxcfbi->blank = FB_BLANK_UNBLANK; } else { mxcfbi->ipu_ch = MEM_DC_SYNC; mxcfbi->blank = FB_BLANK_POWERDOWN; } mxcfbi->ipu_di = di; ipu_disp_set_global_alpha(mxcfbi->ipu_ch, 1, 0x80); ipu_disp_set_color_key(mxcfbi->ipu_ch, 0, 0); strcpy(fbi->fix.id, "DISP3 BG"); g_dp_in_use = 1; mxcfb_info[mxcfbi->ipu_di] = fbi; /* Need dummy values until real panel is configured */ fbi->var.xres = panel_info.vl_col; fbi->var.yres = panel_info.vl_row; mxcfbi->ipu_di_pix_fmt = interface_pix_fmt; fb_videomode_to_var(&fbi->var, mode); fbi->var.bits_per_pixel = NBITS(panel_info.vl_bpix); fbi->fix.line_length = fbi->var.xres * (fbi->var.bits_per_pixel / 8); fbi->fix.smem_len = fbi->var.yres_virtual * fbi->fix.line_length; mxcfb_check_var(&fbi->var, fbi); mxcfb_set_fix(fbi); /* allocate fb first */ if (mxcfb_map_video_memory(fbi) < 0) return -ENOMEM; mxcfb_set_par(fbi); lcd_line_length = (panel_info.vl_col * NBITS(panel_info.vl_bpix)) / 8; debug("MXC IPUV3 configured\n" "XRES = %d YRES = %d BitsXpixel = %d\n", panel_info.vl_col, panel_info.vl_row, panel_info.vl_bpix); ipu_dump_registers(); return 0; }
/* * Probe routine for the framebuffer driver. It is called during the * driver binding process. The following functions are performed in * this routine: Framebuffer initialization, Memory allocation and * mapping, Framebuffer registration, IPU initialization. * * @return Appropriate error code to the kernel common code */ static int mxcfb_probe(u32 interface_pix_fmt, struct fb_videomode *mode) { struct fb_info *fbi; struct mxcfb_info *mxcfbi; int ret = 0; /* * Initialize FB structures */ fbi = mxcfb_init_fbinfo(); if (!fbi) { ret = -ENOMEM; goto err0; } mxcfbi = (struct mxcfb_info *)fbi->par; if (!g_dp_in_use) { mxcfbi->ipu_ch = MEM_BG_SYNC; mxcfbi->blank = FB_BLANK_UNBLANK; } else { mxcfbi->ipu_ch = MEM_DC_SYNC; mxcfbi->blank = FB_BLANK_POWERDOWN; } mxcfbi->ipu_di = 0; ipu_disp_set_global_alpha(mxcfbi->ipu_ch, 1, 0x80); ipu_disp_set_color_key(mxcfbi->ipu_ch, 0, 0); strcpy(fbi->fix.id, "DISP3 BG"); g_dp_in_use = 1; mxcfb_info[mxcfbi->ipu_di] = fbi; /* Need dummy values until real panel is configured */ fbi->var.xres = 640; fbi->var.yres = 480; fbi->var.bits_per_pixel = 16; mxcfbi->ipu_di_pix_fmt = interface_pix_fmt; fb_videomode_to_var(&fbi->var, mode); mxcfb_check_var(&fbi->var, fbi); /* Default Y virtual size is 2x panel size */ fbi->var.yres_virtual = fbi->var.yres * 2; mxcfb_set_fix(fbi); /* alocate fb first */ if (mxcfb_map_video_memory(fbi) < 0) return -ENOMEM; mxcfb_set_par(fbi); /* Setting panel_info for lcd */ panel_info.cmap = NULL; panel_info.vl_col = fbi->var.xres; panel_info.vl_row = fbi->var.yres; panel_info.vl_bpix = LCD_BPP; lcd_line_length = (panel_info.vl_col * NBITS(panel_info.vl_bpix)) / 8; debug("MXC IPUV3 configured\n" "XRES = %d YRES = %d BitsXpixel = %d\n", panel_info.vl_col, panel_info.vl_row, panel_info.vl_bpix); ipu_dump_registers(); return 0; err0: return ret; }