static void lcm_suspend(void)
{
	unsigned int data_array[16];

	data_array[0]=0x00280500; // Display Off
	dsi_set_cmdq(data_array, 1, 1);
	
	data_array[0] = 0x00100500; // Sleep In
	dsi_set_cmdq(data_array, 1, 1);

	#if 1
	DSI_Enter_ULPM(1); /* Enter low power mode  */

	MDELAY(60);
	//SET_RESET_PIN(0);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);
	MDELAY(150);

	dct_pmic_VGP2_enable(0); /* [Ted 5-28] Disable VCI power to prevent lcd polarization */
	lcm_is_init = false;
	
	#else
	SET_RESET_PIN(1);	
	SET_RESET_PIN(0);
	MDELAY(1); // 1ms
	
	SET_RESET_PIN(1);
	MDELAY(120);     
	lcm_util.set_gpio_out(GPIO_LCD_ENN, GPIO_OUT_ZERO);
	lcm_util.set_gpio_out(GPIO_LCD_ENP, GPIO_OUT_ZERO); 
	#endif
}
static void lcm_init(void)
{
#ifdef BUILD_LK
	printf("%s, LK\n",__func__);
#else
	printk("%s, kernel\n",__func__);
#endif
	lcm_is_init = true;
	dct_pmic_VGP2_enable(1);
        MDELAY(10);
	mt_set_gpio_mode(GPIO112,GPIO_MODE_00);
	mt_set_gpio_dir(GPIO112,GPIO_DIR_OUT);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
    MDELAY(5);

    //SET_RESET_PIN(1);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);
    MDELAY(5);
    //SET_RESET_PIN(0);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
    MDELAY(5);
    //SET_RESET_PIN(1);
        mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);  
    MDELAY(5);

        mt_set_gpio_out(GPIO112,GPIO_OUT_ONE); 
        MDELAY(20);
        TC358768_DCS_write_1A_1P(0xFF, 0xEE);
        TC358768_DCS_write_1A_1P(0xFB, 0x01);
        TC358768_DCS_write_1A_1P(0x18, 0x40);
        MDELAY(10);
        TC358768_DCS_write_1A_1P(0X18, 0X00);
        MDELAY(20);  
    init_lcm_registers();
}
static void lcm_init(void)
{
		//SET_RESET_PIN(0);
		//MDELAY(20); 
		//SET_RESET_PIN(1);
		//MDELAY(20); 

		lcm_is_init = true;
		dct_pmic_VGP2_enable(1);
		MDELAY(5);
		mt_set_gpio_mode(GPIO112,GPIO_MODE_00);
		mt_set_gpio_dir(GPIO112,GPIO_DIR_OUT);
		mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
		MDELAY(5); 
	    
		//SET_RESET_PIN(0);
		mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);
		MDELAY(5);
		
		//SET_RESET_PIN(1);
		mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
		MDELAY(20); 
		
		dsi_set_cmdq_V3(lcm_initialization_setting,sizeof(lcm_initialization_setting)/sizeof(lcm_initialization_setting[0]),1);

	#ifdef BUILD_LK
	  printf("[LK]---cmd---hx8394_hd720_dsi_vdo_truly----%s------\n",__func__);
    #else
	  printk("[KERNEL]---cmd---hx8394_hd720_dsi_vdo_truly----%s------\n",__func__);
    #endif	
}
static void lcm_suspend(void)
{
	unsigned int data_array[16];
	//unsigned char buffer[2];

#ifdef BUILD_LK
	printf("%s, LK\n",__func__);
#else
	printk("%s, kernel\n",__func__);
#endif

	data_array[0]=0x00280500; // Display Off
	dsi_set_cmdq(data_array, 1, 1);
	
	data_array[0] = 0x00100500; // Sleep In
	dsi_set_cmdq(data_array, 1, 1);

	DSI_Enter_ULPM(1); /* Enter low power mode  */

	//Note: we need set PMIC related GPIO to 0, or LCM panel would be current leakage
//	dsi_lcm_set_gpio_out(GPIO139, GPIO_OUT_ZERO);
	
	MDELAY(60);
	//SET_RESET_PIN(0);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);
	MDELAY(150);

	dct_pmic_VGP2_enable(0); /* [Ted 5-28] Disable VCI power to prevent lcd polarization */
	lcm_is_init = false;
}
static unsigned int lcm_compare_id(void)
{
    unsigned int id_vol3 = 0xffffffff;

    dct_pmic_VGP2_enable(1);
    MDELAY(10);
	//SET_RESET_PIN(1);
    mt_set_gpio_mode(GPIO112,GPIO_MODE_00);
    mt_set_gpio_dir(GPIO112,GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
    MDELAY(5);
    //SET_RESET_PIN(0);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);
    MDELAY(5);
    //SET_RESET_PIN(1);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
    MDELAY(5);

    id_vol3 = GN_IMM_GetOneChannelValue(0, 20);
    LCM_DEBUG("trust_nt35596 lcm_compare_id(id_vol)= %d. \n", id_vol3);

  if((id_vol3>700) && (id_vol3<900)) //Trust id pin voltage is about 0.8v
  {
      return 1;
  }
  else
  {
      return 0;
  }

}
static void lcm_init(void)
{
	// Enable EN_PWR for NT50198 PMIC
//	dsi_lcm_set_gpio_mode(GPIO139, GPIO_MODE_GPIO);
//	dsi_lcm_set_gpio_dir(GPIO139, GPIO_DIR_OUT);
//	dsi_lcm_set_gpio_out(GPIO139, GPIO_OUT_ONE);
	//note:
	// we need set PMIC related GPIO to power on D-IC, or LCM panel not work
#ifdef BUILD_LK
	printf("%s, LK\n",__func__);
#else
	printk("%s, kernel\n",__func__);
#endif

	lcm_is_init = true;
	dct_pmic_VGP2_enable(1);

        MDELAY(10);
    
	//SET_RESET_PIN(1);
	mt_set_gpio_mode(GPIO112,GPIO_MODE_00);
	mt_set_gpio_dir(GPIO112,GPIO_DIR_OUT);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
	MDELAY(5); 
    
	//SET_RESET_PIN(0);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);
	MDELAY(5);
	
	//SET_RESET_PIN(1);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
	MDELAY(5); 
	
        mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);  
        MDELAY(5);

        mt_set_gpio_out(GPIO112,GPIO_OUT_ONE); 
        MDELAY(20);

        TC358768_DCS_write_1A_1P(0xFF, 0xEE);
        TC358768_DCS_write_1A_1P(0xFB, 0x01);
        TC358768_DCS_write_1A_1P(0x18, 0x40);
        MDELAY(10);
        TC358768_DCS_write_1A_1P(0X18, 0X00);
        MDELAY(20);  

	init_lcm_registers();
}
static unsigned int lcm_compare_id(void)
{
    unsigned char buffer[5] = {0};
    unsigned int data_array[16];

    dct_pmic_VGP2_enable(1);
    MDELAY(5);
    //SET_RESET_PIN(1);
    mt_set_gpio_mode(GPIO112,GPIO_MODE_00);
    mt_set_gpio_dir(GPIO112,GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
    MDELAY(5);
    //SET_RESET_PIN(0);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);
    MDELAY(5);
	
    //SET_RESET_PIN(1);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
    MDELAY(5);

    data_array[0] = 0x00023700;// read id return 1 byte
    dsi_set_cmdq(&data_array, 1, 1);
	
    read_reg_v2(0xf4, buffer, 5);

    #ifdef BUILD_LK
		printf("%s, LK nt35590 debug: nt35590 id = 0x%08x\n", __func__, data_array[0]);
    #else
		printk("%s, kernel nt35590 horse debug: nt35590 id = 0x%08x\n", __func__, data_array[0]);
    #endif

    if(buffer[0]== LCM_ID_NT35596)
    	return 1;
    else
        return 0;

}
static unsigned int lcm_compare_id(void)
{
    unsigned char buffer[5] = {0};
    unsigned int data_array[16];

    dct_pmic_VGP2_enable(1);
    MDELAY(5);

    //SET_RESET_PIN(1);
    mt_set_gpio_mode(GPIO112,GPIO_MODE_00);
    mt_set_gpio_dir(GPIO112,GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
    MDELAY(5);
    //SET_RESET_PIN(0);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);
    MDELAY(5);
    //SET_RESET_PIN(1);
    mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
    MDELAY(5);

    data_array[0] = 0x00053700;// read id return 1 byte
    dsi_set_cmdq(&data_array, 1, 1);
    read_reg_v2(0xBF, buffer, 5);
#ifdef BUILD_LK
	printf("r63315 compare_id buf[0]=0x%x,buf[1]=0x%x,buf[2]=0x%x,buf[3]=0x%x,buf[4]=0x%x\n",buffer[0],buffer[1],buffer[2],buffer[3],buffer[4]);
#else
	printk("r63315 compare_id buf[0]=0x%x,buf[1]=0x%x,buf[2]=0x%x,buf[3]=0x%x,buf[4]=0x%x\n",buffer[0],buffer[1],buffer[2],buffer[3],buffer[4]);
#endif	

    if ( (0x33 == buffer[2]) && (0x15 == buffer[3]) )
	{
	    return 1;
	}

	return 0;
}
static unsigned int lcm_compare_id(void)
{
#if 0
  	unsigned int ret = 0;

	ret = mt_get_gpio_in(GPIO92);
#if defined(BUILD_LK)
	printf("%s, [jx]hx8394a GPIO92 = %d \n", __func__, ret);
#endif	

	return (ret == 0)?1:0; 
#else
	unsigned int id=0;
	unsigned char buffer[2] = {0,0};
	unsigned int array[16];  

	dct_pmic_VGP2_enable(1);

	mt_set_gpio_mode(GPIO112,GPIO_MODE_00);
	mt_set_gpio_dir(GPIO112,GPIO_DIR_OUT);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
	MDELAY(5); 
		    
	//SET_RESET_PIN(0);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ZERO);
	MDELAY(50);
			
	//SET_RESET_PIN(1);
	mt_set_gpio_out(GPIO112,GPIO_OUT_ONE);
	MDELAY(105); 

	array[0] = 0x00043902;
	array[1] = 0x9483FFB9;// page enable
	dsi_set_cmdq(&array, 2, 1);
	MDELAY(10);

	array[0] = 0x00023902;
	array[1] = 0x000013BA;       	  
	dsi_set_cmdq(array, 2, 1);
	MDELAY(10);

	array[0] = 0x00013700;// return byte number
	dsi_set_cmdq(&array, 1, 1);
	MDELAY(10);

	read_reg_v2(0xF4, buffer, 1);
	id = buffer[0]; 

	#ifdef BUILD_LK
	printf("[LK]---cmd---hx8394_hd720_dsi_vdo_truly----%s------[0x%x]\n",__func__,buffer[0]);
    #else
	printk("[KERNEL]---cmd---hx8394_hd720_dsi_vdo_truly----%s------[0x%x]\n",__func__,buffer[0]);
    #endif	
	if(id==HX8394_LCM_ID)
	{
		int adcdata[4];
		int lcmadc=0;
		IMM_GetOneChannelValue(0,adcdata,&lcmadc);
		lcmadc = lcmadc * 1500/4096; 
		#ifdef BUILD_LK
		printf("[LK]---cmd---hx8394_hd720_dsi_vdo_truly----%s------adc[%d]\n",__func__,lcmadc);
		#else
		printk("[KERNEL]---cmd---hx8394_hd720_dsi_vdo_truly----%s------adc[%d]\n",__func__,lcmadc);
		#endif	
		if(lcmadc < 200)
			return 1;
	}
	return 0;//(id == HX8394_LCM_ID)?1:0;
#endif
}