Example #1
0
int lcd_init(void)
{
	static __lcd_panel_fun_t lcd0_cfg;
	static __lcd_panel_fun_t lcd1_cfg;

	memset(&lcd0_cfg, 0, sizeof(__lcd_panel_fun_t));
	memset(&lcd1_cfg, 0, sizeof(__lcd_panel_fun_t));

    LCD_get_panel_funs_0(&lcd0_cfg);
	LCD_get_panel_funs_1(&lcd1_cfg);
	LCD_set_panel_funs(&lcd0_cfg, &lcd1_cfg);

    DRV_DISP_Init();

	Fb_Init(0);

	return 0;
}
Example #2
0
static int __init disp_probe(struct platform_device *pdev)//called when platform_driver_register
{
	fb_info_t * info = NULL;
	struct resource *res;
	int ret = 0;
	int size;
	int i;

	__msg("disp_probe call\n");
	
	info = &g_fbi;
	
	info->dev = &pdev->dev;
	platform_set_drvdata(pdev,info);
	
	for(i=0;i<DISP_IO_NUM;i++)
	{
		res = platform_get_resource(pdev, IORESOURCE_MEM, i);
		if (res == NULL) 
		{
			__wrn("failed to get memory registers\n");
			ret = -ENXIO;
			if(i==DISP_IO_SCALER0)
			{
				goto dealloc_fb;
			}
			else if(i==DISP_IO_SCALER1)
			{
				goto release_regs0;
			}
			else if(i==DISP_IO_IMAGE0)
			{
				goto release_regs1;
			}
			else if(i==DISP_IO_IMAGE1)
			{
				goto release_regs2;
			}
			else if(i==DISP_IO_LCDC0)
			{
				goto release_regs3;
			}
			else if(i==DISP_IO_LCDC1)
			{
				goto release_regs4;
			}
			else if(i==DISP_IO_TVEC)
			{
				goto release_regs5;
			}
		}
		
		size = (res->end - res->start) + 1;
		info->mem[i] = request_mem_region(res->start, size, pdev->name);
		if (info->mem[i] == NULL) 
		{
			__wrn("failed to get memory region\n");
			ret = -ENOENT;
			if(i==DISP_IO_SCALER0)
			{
				goto dealloc_fb;
			}
			else if(i==DISP_IO_SCALER1)
			{
				goto release_regs0;
			}
			else if(i==DISP_IO_IMAGE0)
			{
				goto release_regs1;
			}
			else if(i==DISP_IO_IMAGE1)
			{
				goto release_regs2;
			}
			else if(i==DISP_IO_LCDC0)
			{
				goto release_regs3;
			}
			else if(i==DISP_IO_LCDC1)
			{
				goto release_regs4;
			}
			else if(i==DISP_IO_TVEC)
			{
				goto release_regs5;
			}
		}

		info->io[i] = ioremap(res->start, size);
		if (info->io[i] == NULL) 
		{
			__wrn("ioremap() of registers failed\n");
			ret = -ENXIO;
			if(i==DISP_IO_SCALER0)
			{
				goto release_mem0;
			}
			else if(i==DISP_IO_SCALER1)
			{
				goto release_mem1;
			}
			else if(i==DISP_IO_IMAGE0)
			{
				goto release_mem2;
			}
			else if(i==DISP_IO_IMAGE1)
			{
				goto release_mem3;
			}
			else if(i==DISP_IO_LCDC0)
			{
				goto release_mem4;
			}
			else if(i==DISP_IO_LCDC1)
			{
				goto release_mem5;
			}
			else if(i==DISP_IO_TVEC)
			{
				goto release_mem6;
			}
	    }
	}

	info->base_ccmu = 0xf1c20000; 
	info->base_sdram = 0xf1c01000;
	info->base_pio = 0xf1c20800; 
	
	__msg("SCALER0 base 0x%08x\n", (__u32)info->io[DISP_IO_SCALER0]);
	__msg("SCALER1 base 0x%08x\n", (__u32)info->io[DISP_IO_SCALER1]);
	__msg("IMAGE0 base 0x%08x\n", (__u32)info->io[DISP_IO_IMAGE0]);
	__msg("IMAGE1 base 0x%08x\n", (__u32)info->io[DISP_IO_IMAGE1]);
	__msg("LCDC0 base 0x%08x\n", (__u32)info->io[DISP_IO_LCDC0]);
	__msg("LCDC1 base 0x%08x\n", (__u32)info->io[DISP_IO_LCDC1]);
	__msg("TVEC base 0x%08x\n", (__u32)info->io[DISP_IO_TVEC]);
	__msg("CCMU base 0x%08x\n", info->base_ccmu);
	__msg("SDRAM base 0x%08x\n", info->base_sdram);
	__msg("PIO base 0x%08x\n", info->base_pio);

    DRV_DISP_Init();

//tmp use begin!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//    writel(0x00000709, g_fbi.base_sdram+0x70);
//    writel(0x00000709, g_fbi.base_sdram+0x84);
//tmp use end!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

	return 0;

release_mem6:
	release_resource(info->mem[6]);
	kfree(info->mem[6]);

release_regs5:
	iounmap(info->io[5]);
release_mem5:
	release_resource(info->mem[5]);
	kfree(info->mem[5]);

release_regs4:
	iounmap(info->io[4]);
release_mem4:
	release_resource(info->mem[4]);
	kfree(info->mem[4]);

release_regs3:
	iounmap(info->io[3]);
release_mem3:
	release_resource(info->mem[3]);
	kfree(info->mem[3]);

release_regs2:
	iounmap(info->io[2]);
release_mem2:
	release_resource(info->mem[2]);
	kfree(info->mem[2]);

release_regs1:
	iounmap(info->io[1]);
release_mem1:
	release_resource(info->mem[1]);
	kfree(info->mem[1]);

release_regs0:
	iounmap(info->io[0]);
release_mem0:
	release_resource(info->mem[0]);
	kfree(info->mem[0]);
	
dealloc_fb:
	platform_set_drvdata(pdev, NULL);
	kfree(info);

	return ret;
}