示例#1
0
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;
}
示例#3
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, 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;
}
示例#4
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;
}