void ResetDevice()
{
/*  SetLCDPorts();
  Init_MCU();*/
	// Initialize the device
	DriverInterfaceInit();
	DelayMs(1);				// Delay to let controller ready for next SetReg command

/*  LCD_nRESET = 1;
DelayMs(1); // Delay 1ms
LCD_nRESET = 0;
DelayMs(10); // Delay 10ms // This delay time is necessary
LCD_nRESET = 1;
DelayMs(120); // Delay 120 ms*/

  ResetLCD();

LCD_ILI9341_CMD(PowerControlB);        //Power control B (CFh)
LCD_ILI9341_Parameter(0x00);
LCD_ILI9341_Parameter(0x81);
LCD_ILI9341_Parameter(0X30);

LCD_ILI9341_CMD(PowerOnSequenceControl);
LCD_ILI9341_Parameter(0x64);
LCD_ILI9341_Parameter(0x03);
LCD_ILI9341_Parameter(0X12);
LCD_ILI9341_Parameter(0X81);

LCD_ILI9341_CMD(DriverTimingControlA);
LCD_ILI9341_Parameter(0x85);
LCD_ILI9341_Parameter(0x10);
LCD_ILI9341_Parameter(0x78);

LCD_ILI9341_CMD(PowerControlA);
LCD_ILI9341_Parameter(0x39);
LCD_ILI9341_Parameter(0x2C);
LCD_ILI9341_Parameter(0x00);
LCD_ILI9341_Parameter(0x34);
LCD_ILI9341_Parameter(0x02);

LCD_ILI9341_CMD(PumpRatioControl);
LCD_ILI9341_Parameter(0x20);

LCD_ILI9341_CMD(DriverTimingControlB);
LCD_ILI9341_Parameter(0x00);
LCD_ILI9341_Parameter(0x00);

LCD_ILI9341_CMD(FrameRateControlInNormalModeFullColors);
LCD_ILI9341_Parameter(0x00);
LCD_ILI9341_Parameter(0x1B);

LCD_ILI9341_CMD(DisplayFunctionControl);        // Display Function Control
LCD_ILI9341_Parameter(0x0A);
LCD_ILI9341_Parameter(0xA2);

LCD_ILI9341_CMD(PowerControl1);         //Power control
LCD_ILI9341_Parameter(0x21);            //VRH[5:0]

LCD_ILI9341_CMD(PowerControl2);         //Power control
LCD_ILI9341_Parameter(0x11);            //SAP[2:0];BT[3:0]

LCD_ILI9341_CMD(VCOMControl1);          //VCM control
LCD_ILI9341_Parameter(0x3F);
LCD_ILI9341_Parameter(0x3C);

LCD_ILI9341_CMD(VCOMControl2);          //VCM control2
LCD_ILI9341_Parameter(0Xb5);

LCD_ILI9341_CMD(PixelFormatSet);

#if defined (_64K_COLOR_MODE)
LCD_ILI9341_Parameter(BITPERPIXEL16);
#elif defined (_256K_COLOR_MODE)
LCD_ILI9341_Parameter(BITPERPIXEL18);
#endif

LCD_ILI9341_CMD(MemoryAccessControl);        // Memory Access Control
LCD_ILI9341_Parameter(RGBSET | MVSET | MXSET);

LCD_ILI9341_CMD(InterfaceControl);        // Memory Access Control
LCD_ILI9341_Parameter(0x01);
#if defined (_MDT00)
LCD_ILI9341_Parameter(MDT00);
#elif defined (_MDT01)
LCD_ILI9341_Parameter(MDT01);
#else
#error "You must define the MDT parameter !"
#endif

LCD_ILI9341_Parameter(0x00);

LCD_ILI9341_CMD(Enable3G);              // 3Gamma Function Disable
LCD_ILI9341_Parameter(0x00);
LCD_ILI9341_CMD(GammaSet);              //Gamma curve selected
LCD_ILI9341_Parameter(0x01);

LCD_ILI9341_CMD(PositiveGammaCorrection);        //Set Gamma
LCD_ILI9341_Parameter(0x0F);
LCD_ILI9341_Parameter(0x26);
LCD_ILI9341_Parameter(0x24);
LCD_ILI9341_Parameter(0x0B);
LCD_ILI9341_Parameter(0x0E);
LCD_ILI9341_Parameter(0x09);
LCD_ILI9341_Parameter(0x54);
LCD_ILI9341_Parameter(0XA8);
LCD_ILI9341_Parameter(0x46);
LCD_ILI9341_Parameter(0x0C);
LCD_ILI9341_Parameter(0x17);
LCD_ILI9341_Parameter(0x09);
LCD_ILI9341_Parameter(0x0F);
LCD_ILI9341_Parameter(0x07);
LCD_ILI9341_Parameter(0x00);

LCD_ILI9341_CMD(NegativeGammaCorrection);        //Set Gamma
LCD_ILI9341_Parameter(0x00);
LCD_ILI9341_Parameter(0x19);
LCD_ILI9341_Parameter(0x1B);
LCD_ILI9341_Parameter(0x04);
LCD_ILI9341_Parameter(0x10);
LCD_ILI9341_Parameter(0x07);
LCD_ILI9341_Parameter(0x2A);
LCD_ILI9341_Parameter(0x47);
LCD_ILI9341_Parameter(0x39);
LCD_ILI9341_Parameter(0x03);
LCD_ILI9341_Parameter(0x06);
LCD_ILI9341_Parameter(0x06);
LCD_ILI9341_Parameter(0x30);
LCD_ILI9341_Parameter(0x38);
LCD_ILI9341_Parameter(0x0F);

//lcdSetWindow(10, 230 - 1, 10, 310 - 1);

LCD_ILI9341_CMD(SleepOut);        //Exit Sleep
DelayMs(120);
//delayms(120);
LCD_ILI9341_CMD(0x29);        //Display on

DisplayBacklightOn();

}
Example #2
0
static Cyg_ErrNo w90n740_video_lookup(struct cyg_devtab_entry **tab, 
                  struct cyg_devtab_entry *sub_tab,
                  const char *name)
{
	w685cf_t *priv = (w685cf_t *)(*tab)->priv;
	int err = 0;
	int i;
#ifdef	W865THREAD
	int pid;
#endif
	
	init_waitqueue_head(&priv->wq);
	init_MUTEX(&priv->lock);

#ifndef W865THREAD	
	priv->rawbuf = (char *)malloc(W685BUF_SIZE*sizeof(char));
	if(!priv->rawbuf) 
	{
		err = -ENOMEM;
		goto out_nomem1;
	}
#endif
#ifdef W865THREAD
	init_waitqueue_head(&(priv->waitq));
	
	priv->images = (ImageContainer_t *)malloc(sizeof(ImageContainer_t));
	if(!priv->images)
	{	
		err = -ENOMEM;
		goto out_nomem1;
	}
	
	memset(priv->images, 0, sizeof(ImageContainer_t));
	priv->images->reading = IMGCONTAINERSIZE-1;	//init, put it to IMGCONTAINERSIZE-1
	IMAGEDATA(priv->images, 0) = (char *)kmalloc(W685BUF_SIZE*sizeof(char), GFP_KERNEL);
	if(!(IMAGEDATA(priv->images, 0))) 
	{
		err = -ENOMEM;
	}
	
	IMAGEDATA(priv->images, 1) = (char *)kmalloc(W685BUF_SIZE*sizeof(char), GFP_KERNEL);
	if(!(IMAGEDATA(priv->images, 1))) 
	{
		err = -ENOMEM;
	}
	for(i = 0; i < IMGCONTAINERSIZE; i++)
		init_MUTEX( &(IMAGEHOLD(priv->images, i).ilock) );
	
#endif
	//vdev->priv = priv;

#ifndef VERSION825
	InitCFI(0);
	wait_ms(20);
	if(DownLoadFWFlag == 1) {
		ResetLCD();
		wait_ms(20);
	
		InitCFI(1);
		wait_ms(20);
		InitLCD();
		wait_ms(20);
	}
	else if(DownLoadFWFlag == 0)
	{
		
		W99685CMD_SetOpMode(OP_STREAMING, PPC_YUV422, 1);

		W99685CMD_SetLCMNums(LCD1_ON_685,LCD_BUS_16);
		//KDEBUG("Have set LCMNUMS");
		W99685CMD_SelectLCM(LCM_1ST);
		printk("Have selected LCM\n");
		W99685CMD_SetLCMRes(128, 161);
		printk("Have set LCM resolution\n");
	
	//	W99685CMD_SetBridgeMode(0);
		LCM_FillChar(lcm_buf, LEN_LCMBF);
		printk("Have Filled LCM with char\n");

		W99685CMD_SetLCMWndPos(0, 32);
	//	KDEBUG("Have set LCM Wdn Pos");
	//	
		W99685CMD_SetLCMWndSize(128, 96);
	}
//		W99685CMD_SetOpMode(OP_SINGLE, PPC_RGB565, 0);
	
#else
		W99685CMD_SetOpMode(OP_STREAMING, PPC_YUV422, 1);
#endif

	
#ifdef	W865THREAD 
	pid = kernel_thread(w99685_thread, priv,
		CLONE_FS | CLONE_FILES | CLONE_SIGNAL);
	if(pid < 0) {
		printk("Init W99685 Thread failed\n");
		goto out;
	}
#endif
	w99685_v4l1_open(tab, sub_tab, name);
	return err;
out:
#ifndef W865THREAD	
	free(priv->rawbuf);
#endif
out_nomem1:
	free(priv);
out_nomem0:
	return err;
}