Beispiel #1
0
static void lcm_suspend(void)
{
    //SET_RESET_PIN(0);  //CH7035B reset control

    //lcm_util.set_gpio_mode(GPIO60, GPIO_MODE_00);    
    //lcm_util.set_gpio_dir(GPIO60, GPIO_DIR_OUT);
    //lcm_util.set_gpio_out(GPIO60, GPIO_OUT_ZERO); // HDMI_POWER_EN

    //lcm_util.set_gpio_mode(GPIO47, GPIO_MODE_00);    
    //lcm_util.set_gpio_dir(GPIO47, GPIO_DIR_OUT);
    //lcm_util.set_gpio_out(GPIO47, GPIO_OUT_ZERO); // LCM_BL_ENABLE
    //MDELAY(10);
    lcm_util.set_gpio_mode(GPIO51, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO51, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO51, GPIO_OUT_ZERO); // LVDS_SHUTDOWN_N      
    MDELAY(10);
    lcm_util.set_gpio_mode(GPIO48, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO48, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO48, GPIO_OUT_ZERO); // LCM_STBY     
    MDELAY(10);
    lcm_util.set_gpio_mode(GPIO49, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO49, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO49, GPIO_OUT_ZERO); // LCM_RST    
    MDELAY(10);
    lcm_util.set_gpio_mode(GPIO52, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO52, GPIO_OUT_ZERO); // LCM_VLED_EN
    MDELAY(60); // avoid LCD resume transint
}
static void config_gpio(void)
{
    lcm_util.set_gpio_mode(LSSHUT_GPIO_PIN, GPIO_MODE_00);
    lcm_util.set_gpio_mode(LSCE_GPIO_PIN, GPIO_DISP_LSCE_PIN_M_GPIO);
    lcm_util.set_gpio_mode(LSCK_GPIO_PIN, GPIO_DISP_LSCK_PIN_M_GPIO);
    lcm_util.set_gpio_mode(LSDA_GPIO_PIN, GPIO_DISP_LSDA_PIN_M_GPIO);
    lcm_util.set_gpio_mode(LSDIN_GPIO_PIN, GPIO_MODE_00);

    lcm_util.set_gpio_dir(LSSHUT_GPIO_PIN, GPIO_DIR_OUT);

    lcm_util.set_gpio_dir(LSCE_GPIO_PIN, GPIO_DIR_OUT);

    lcm_util.set_gpio_dir(LSCK_GPIO_PIN, GPIO_DIR_OUT);

    lcm_util.set_gpio_dir(LSDA_GPIO_PIN, GPIO_DIR_OUT);

    lcm_util.set_gpio_dir(LSDIN_GPIO_PIN, GPIO_DIR_IN);

 
    //lcm_util.set_gpio_pull_enable(LSSHUT_GPIO_PIN, GPIO_PULL_DISABLE);

    lcm_util.set_gpio_pull_enable(LSCE_GPIO_PIN, GPIO_PULL_DISABLE);

    lcm_util.set_gpio_pull_enable(LSCK_GPIO_PIN, GPIO_PULL_DISABLE);

    lcm_util.set_gpio_pull_enable(LSDA_GPIO_PIN, GPIO_PULL_DISABLE);

    lcm_util.set_gpio_pull_enable(LSDIN_GPIO_PIN, GPIO_PULL_ENABLE);

    mt_set_gpio_pull_select(LSDIN_GPIO_PIN, GPIO_PULL_UP);

}
Beispiel #3
0
static void config_gpio(void)
{
  dbg_print("===> [ILI9481_DPI] <%s %s> %s:%d %s(): :  \n", __DATE__, __TIME__, __FILE__, __LINE__, __func__); 

  const unsigned int USED_GPIOS[] = 
    {
	  LSCE_GPIO_PIN,
	  LSCK_GPIO_PIN,
	  LSDA_GPIO_PIN
    };

  unsigned int i;

  lcm_util.set_gpio_mode(LSA0_GPIO_PIN, GPIO_DISP_LSA0_PIN_M_GPIO);
  lcm_util.set_gpio_mode(LSCE_GPIO_PIN, GPIO_DISP_LSCE_PIN_M_GPIO);
  lcm_util.set_gpio_mode(LSCK_GPIO_PIN, GPIO_DISP_LSCK_PIN_M_GPIO);
  lcm_util.set_gpio_mode(LSDA_GPIO_PIN, GPIO_DISP_LSDA_PIN_M_GPIO);



  for (i = 0; i < ARY_SIZE(USED_GPIOS); ++ i)
    {
	  lcm_util.set_gpio_dir(USED_GPIOS[i], 1);               // GPIO out
	  lcm_util.set_gpio_pull_enable(USED_GPIOS[i], 0);
    }

  // Swithc LSA0 pin to GPIO mode to avoid data contention,
  // since A0 is connected to LCM's SPI SDO pin
  //
  lcm_util.set_gpio_dir(LSA0_GPIO_PIN, 0);                   // GPIO in
}
Beispiel #4
0
static void lcm_resume(void)
{
    //SET_RESET_PIN(1);  //CH7035B reset control

    //lcm_util.set_gpio_mode(GPIO60, GPIO_MODE_00);    
    //lcm_util.set_gpio_dir(GPIO60, GPIO_DIR_OUT);
    //lcm_util.set_gpio_out(GPIO60, GPIO_OUT_ONE); // HDMI_POWER_EN

    lcm_util.set_gpio_mode(GPIO48, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO48, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO48, GPIO_OUT_ONE); // LCM_STBY
    MDELAY(5);
    lcm_util.set_gpio_mode(GPIO52, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO52, GPIO_OUT_ONE); // LCM_VLED_EN 
    MDELAY(50);
    lcm_util.set_gpio_mode(GPIO49, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO49, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO49, GPIO_OUT_ONE); // LCM_RST
    MDELAY(5);
    lcm_util.set_gpio_mode(GPIO51, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO51, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO51, GPIO_OUT_ONE); // LVDS_SHUTDOWN_N   
    MDELAY(120);
    //lcm_util.set_gpio_mode(GPIO47, GPIO_MODE_00);    
    //lcm_util.set_gpio_dir(GPIO47, GPIO_DIR_OUT);
    //lcm_util.set_gpio_out(GPIO47, GPIO_OUT_ONE); // LCM_BL_ENABLE
}
static void config_gpio(void)
{
    LCM_DEBUG("[LCM_gionee: config_gpio. \n");

	const unsigned int USED_GPIOS[] = 
    {
        LSDI_GPIO_PIN,
        LSCE_GPIO_PIN,
        LSCK_GPIO_PIN,
        LSDA_GPIO_PIN,
    };

    unsigned int i;

    for (i = 0; i < ARY_SIZE(USED_GPIOS); ++i)
    {
#ifdef GN_MTK_BSP_LCD_SW_SPI    	
        lcm_util.set_gpio_mode(USED_GPIOS[i],GPIO_MODE_00);
#else
        lcm_util.set_gpio_mode(USED_GPIOS[i],GPIO_MODE_01);
#endif
        lcm_util.set_gpio_dir(USED_GPIOS[i], 1);              
        lcm_util.set_gpio_pull_enable(USED_GPIOS[i], 0);
    }
#ifdef GN_MTK_BSP_LCD_SW_SPI     	
    lcm_util.set_gpio_dir(LSDI_GPIO_PIN, 0);  
#endif    	
}
static void config_gpio(void)
{
    const unsigned int USED_GPIOS[] = 
    {
        LSCE_GPIO_PIN,
        LSCK_GPIO_PIN,
        LSDA_GPIO_PIN
    };

    unsigned int i;

    lcm_util.set_gpio_mode(LSA0_GPIO_PIN, GPIO_DISP_LSA0_PIN_M_GPIO);
    lcm_util.set_gpio_mode(LSCE_GPIO_PIN, GPIO_DISP_LSCE_PIN_M_GPIO);
    lcm_util.set_gpio_mode(LSCK_GPIO_PIN, GPIO_DISP_LSCK_PIN_M_GPIO);
    lcm_util.set_gpio_mode(LSDA_GPIO_PIN, GPIO_DISP_LSDA_PIN_M_GPIO);

    for (i = 0; i < ARY_SIZE(USED_GPIOS); ++ i)
    {
        lcm_util.set_gpio_dir(USED_GPIOS[i], 1);               // GPIO out
        lcm_util.set_gpio_pull_enable(USED_GPIOS[i], 0);
    }

    // Swithc LSA0 pin to GPIO mode to avoid data contention,
    // since A0 is connected to LCM's SPI SDO pin
    //
    lcm_util.set_gpio_dir(LSA0_GPIO_PIN, 0);                   // GPIO in
}
Beispiel #7
0
static void lcm_resume(void)
{
    SET_RESET_PIN(1);
    
    lcm_util.set_gpio_mode(GPIO47, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO47, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO47, GPIO_OUT_ONE); // LCM_BL_ENABLE
    
    lcm_util.set_gpio_mode(GPIO52, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO52, GPIO_OUT_ONE); // LCM_VLED_EN

    MDELAY(120); // avoid LCD resume transint
}
Beispiel #8
0
static void lcm_init(void)
{
    SET_RESET_PIN(0);
    MDELAY(10);
    SET_RESET_PIN(1);

    lcm_util.set_gpio_mode(GPIO47, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO47, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO47, GPIO_OUT_ONE); // LCM_BL_ENABLE
    
    lcm_util.set_gpio_mode(GPIO52, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO52, GPIO_OUT_ONE); // LCM_VLED_EN    
}
Beispiel #9
0
static void lcm_suspend(void)
{
    SET_RESET_PIN(0);
    
    lcm_util.set_gpio_mode(GPIO47, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO47, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO47, GPIO_OUT_ZERO); // LCM_BL_ENABLE
    
    lcm_util.set_gpio_mode(GPIO52, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO52, GPIO_OUT_ZERO); // LCM_VLED_EN

    MDELAY(60); // avoid LCD resume transint
}
static void lcm_init(void)
{
#ifdef BUILD_LK
printf("shaokai:lcm_init");
#endif
    lcm_util.set_gpio_mode(GPIO_LCM_AVDD_EN_PIN, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO_LCM_AVDD_EN_PIN, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO_LCM_AVDD_EN_PIN, GPIO_OUT_ONE); // LCM_AVDD

    MDELAY(50);
    lcm_util.set_gpio_mode(GPIO_LVDS_LCD_SHUTDOWN_EN, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO_LVDS_LCD_SHUTDOWN_EN, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO_LVDS_LCD_SHUTDOWN_EN, GPIO_OUT_ONE); // LVDS_SHUTDOWN_N   
    MDELAY(120);
}
Beispiel #11
0
static void lcm_resume(void)
{
    lcm_util.set_gpio_mode(GPIO18, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO18, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO18, GPIO_OUT_ONE); // RST	
	MDELAY(30);
    lcm_util.set_gpio_mode(GPIO52, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO52, GPIO_OUT_ONE); // LCM_VLED_EN 
    MDELAY(30);	
    lcm_util.set_gpio_mode(GPIO47, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO47, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO47, GPIO_OUT_ONE); // LCM_BL_ENABLE
    MDELAY(60);
}
static void lcm_suspend(void)
{
	unsigned int data_array[16];

	data_array[0]=0x00280500; 
	dsi_set_cmdq(data_array, 1, 1);
	MDELAY(10);

	data_array[0] = 0x00100500; 
	dsi_set_cmdq(data_array, 1, 1);
	MDELAY(120);//delay more for 3 frames time  17*3=54ms

	data_array[0] = 0x04B02900;
	dsi_set_cmdq(data_array, 1, 1);

	data_array[0] = 0x00000500;
	dsi_set_cmdq(data_array, 1, 1);

	data_array[0] = 0x00000500;
	dsi_set_cmdq(data_array, 1, 1);

	data_array[0] = 0x01B12900;//Deep standby
	dsi_set_cmdq(data_array, 1, 1);

	lcm_util.set_gpio_mode(GPIO112, GPIO_MODE_00);
	lcm_util.set_gpio_dir(GPIO112, GPIO_DIR_OUT); 
	lcm_util.set_gpio_pull_enable(GPIO112, GPIO_PULL_DISABLE); 
	lcm_util.set_gpio_out(GPIO112 , 0);

	MDELAY(2);
	SET_GPIO_OUT(LCD_LDO_ENN_GPIO_PIN , 0);
	MDELAY(10);
	SET_GPIO_OUT(LCD_LDO_ENP_GPIO_PIN , 0);
}
static void lcm_suspend(void)
{
    lcm_util.set_gpio_mode(GPIO12, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO12, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO12, GPIO_OUT_ZERO); // LCM_DISP
    MDELAY(50); 
}
static void lcm_resume(void)
{
    lcm_util.set_gpio_mode(GPIO12, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO12, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO12, GPIO_OUT_ONE); // LCM_DISP
    MDELAY(50);
}
Beispiel #15
0
static void lcm_resume(void)
{
    lcm_util.set_gpio_mode(GPIO12, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO12, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO12, GPIO_OUT_ONE); // LCM_STBY
    MDELAY(50);
    lcm_util.set_gpio_mode(GPIO14, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO14, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO14, GPIO_OUT_ONE); // LCM_RST 
    //SET_RESET_PIN(1); // LCM_RST
    MDELAY(50);
    lcm_util.set_gpio_mode(GPIO52, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO52, GPIO_OUT_ONE); // LVDS_SHUTDOWN_N   
    MDELAY(120); 
}
Beispiel #16
0
static void lcm_suspend(void)
{
    lcm_util.set_gpio_mode(GPIO52, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO52, GPIO_OUT_ZERO); // LVDS_SHUTDOWN_N      
    MDELAY(10);
    lcm_util.set_gpio_mode(GPIO12, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO12, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO12, GPIO_OUT_ZERO); // LCM_STBY     
    MDELAY(50);
    lcm_util.set_gpio_mode(GPIO14, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO14, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO14, GPIO_OUT_ZERO); // LCM_RST
    //SET_RESET_PIN(0); // LCM_RST 
    MDELAY(60); // avoid LCD resume transint
}
Beispiel #17
0
// ---------------------------------------------------------------------------
//  Local Functions
// ---------------------------------------------------------------------------
static void config_gpio(void)
{
    lcm_util.set_gpio_mode(LSA0_GPIO_PIN, GPIO_MODE_01);
    lcm_util.set_gpio_mode(LSCE_GPIO_PIN, GPIO_MODE_01);
    lcm_util.set_gpio_mode(LSCK_GPIO_PIN, GPIO_MODE_01);
    lcm_util.set_gpio_mode(LSDA_GPIO_PIN, GPIO_MODE_01);

    lcm_util.set_gpio_dir(LSA0_GPIO_PIN, GPIO_DIR_OUT);
    lcm_util.set_gpio_dir(LSCE_GPIO_PIN, GPIO_DIR_OUT);
    lcm_util.set_gpio_dir(LSCK_GPIO_PIN, GPIO_DIR_OUT);
    lcm_util.set_gpio_dir(LSDA_GPIO_PIN, GPIO_DIR_OUT);

	lcm_util.set_gpio_pull_enable(LSA0_GPIO_PIN, GPIO_PULL_DISABLE);
	lcm_util.set_gpio_pull_enable(LSCE_GPIO_PIN, GPIO_PULL_DISABLE);
	lcm_util.set_gpio_pull_enable(LSCK_GPIO_PIN, GPIO_PULL_DISABLE);
	lcm_util.set_gpio_pull_enable(LSDA_GPIO_PIN, GPIO_PULL_DISABLE);
}
static void lcm_init(void)
{
#if 0
    //cause reset pin bug, we change to uart pin
	lcm_util.set_gpio_mode(GPIO24,GPIO_MODE_00);
	lcm_util.set_gpio_dir(GPIO24,GPIO_DIR_OUT);
	lcm_util.set_gpio_out(GPIO24,1);
	MDELAY(50);  //recommand 10ms (+50ms)  300ms



    //cause reset pin bug, we change to uart pin
	lcm_util.set_gpio_mode(GPIO77,GPIO_MODE_00);
	lcm_util.set_gpio_dir(GPIO77,GPIO_DIR_OUT);
	lcm_util.set_gpio_out(GPIO77,1);
	MDELAY(10);
    lcm_util.set_gpio_out(GPIO77,0);
	MDELAY(30);  //recommand 10ms
	lcm_util.set_gpio_out(GPIO77,1);
	MDELAY(200);  //recommand 10ms (+50ms)  300ms
#else

	SET_RESET_PIN(1);
	MDELAY(5);
	SET_RESET_PIN(0);
	
	MDELAY(10);
	
	SET_RESET_PIN(1);
	MDELAY(50); 

    init_lcm_registers();
#endif

#if 0
	SET_RESET_PIN(1);
	SET_RESET_PIN(0);
	MDELAY(1);
	
	SET_RESET_PIN(1);
	MDELAY(20);      

	init_lcm_registers();
#endif

}
Beispiel #19
0
static void lcm_init(void)
{
    lcm_util.set_gpio_dir(GPIO138, GPIO_DIR_OUT);
    lcm_util.set_gpio_mode(GPIO138, GPIO_MODE_01);
    //program reset pin
    SET_RESET_PIN(0);
    MDELAY(25);
    SET_RESET_PIN(1);
    MDELAY(50);
}
Beispiel #20
0
static void lcm_init(void)
{
    lcm_util.set_gpio_dir(GPIO138, GPIO_DIR_OUT);
    lcm_util.set_gpio_mode(GPIO138, GPIO_MODE_01);
    SET_RESET_PIN(0);
    MDELAY(25);
    SET_RESET_PIN(1);
    MDELAY(50);

 //   init_lcm_registers();
}
Beispiel #21
0
static void lcm_suspend(void)
{
    lcm_util.set_gpio_mode(GPIO14, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO14, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO14, GPIO_OUT_ZERO); // LCD_RST
    MDELAY(10);    
	//lcm_util.set_gpio_mode(GPIO96, GPIO_MODE_00);    
    //lcm_util.set_gpio_dir(GPIO96, GPIO_DIR_OUT);
    //lcm_util.set_gpio_out(GPIO96, GPIO_OUT_ZERO); // LCD_PWREN
    //MDELAY(10);
}
Beispiel #22
0
static void lcm_init(void)
{
#ifdef BUILD_UBOOT
    // do nothing in uboot
#else
    lcm_util.set_gpio_mode(GPIO12, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO12, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO12, GPIO_OUT_ONE); // LCM_STBY
    MDELAY(50);
    lcm_util.set_gpio_mode(GPIO14, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO14, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO14, GPIO_OUT_ONE); // LCM_RST 
    //SET_RESET_PIN(1); // LCM_RST
    MDELAY(50);
    lcm_util.set_gpio_mode(GPIO52, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO52, GPIO_OUT_ONE); // LVDS_SHUTDOWN_N   
    MDELAY(120); 
#endif    
}
Beispiel #23
0
static void lcm_init(void)
{
	//lcm_util.set_gpio_mode(GPIO96, GPIO_MODE_00);    
    //lcm_util.set_gpio_dir(GPIO96, GPIO_DIR_OUT);
    //lcm_util.set_gpio_out(GPIO96, GPIO_OUT_ONE); // LCD_PWREN
    //MDELAY(10); 
    lcm_util.set_gpio_mode(GPIO14, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO14, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO14, GPIO_OUT_ONE); // LCD_RST
    MDELAY(10);
}
Beispiel #24
0
static void config_gpio(void)
{
    lcm_util.set_gpio_mode(LSCE_GPIO_PIN, GPIO_MODE_00);
    lcm_util.set_gpio_mode(LSCK_GPIO_PIN, GPIO_MODE_00);
    lcm_util.set_gpio_mode(LSDA_GPIO_PIN, GPIO_MODE_00);

    lcm_util.set_gpio_dir(LSCE_GPIO_PIN, GPIO_DIR_OUT);
    lcm_util.set_gpio_dir(LSCK_GPIO_PIN, GPIO_DIR_OUT);
    lcm_util.set_gpio_dir(LSDA_GPIO_PIN, GPIO_DIR_OUT);

    lcm_util.set_gpio_pull_enable(LSCE_GPIO_PIN, GPIO_PULL_DISABLE);
    lcm_util.set_gpio_pull_enable(LSCK_GPIO_PIN, GPIO_PULL_DISABLE);
    lcm_util.set_gpio_pull_enable(LSDA_GPIO_PIN, GPIO_PULL_DISABLE);

    SET_LSCE_HIGH;
    SET_LSCK_HIGH;
    SET_LSDA_HIGH;

    MDELAY(100);

}
static void lcm_resume(void)
{
#if ( !defined(BUILD_LK)) && (!defined(BUILD_UBOOT))

	if (down_interruptible(&sem_lcm_resume)) {
        //printk("[fb driver] can't get semaphore:%d\n", __LINE__);
        return;
    }
#endif
    lcm_util.set_gpio_mode(GPIO_LCM_AVDD_EN_PIN, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO_LCM_AVDD_EN_PIN, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO_LCM_AVDD_EN_PIN, GPIO_OUT_ONE); // LCM_AVDD
    MDELAY(50);
    lcm_util.set_gpio_mode(GPIO_LVDS_LCD_SHUTDOWN_EN, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO_LVDS_LCD_SHUTDOWN_EN, GPIO_DIR_OUT);
    lcm_util.set_gpio_out(GPIO_LVDS_LCD_SHUTDOWN_EN, GPIO_OUT_ONE); // LVDS_SHUTDOWN_N   
    MDELAY(120);
#if ( !defined(BUILD_LK)) && (!defined(BUILD_UBOOT))
	up(&sem_lcm_resume);
#endif
}
static void lcm_gpio_set(int num, int enable)
{
#ifdef BUILD_LK
printf("\n\n\n===================== %s %d: num:%d => %d =======================\n\n\n", __func__, __LINE__, num, enable);
#endif
	lcm_util.set_gpio_mode(num, GPIO_MODE_00);
	lcm_util.set_gpio_dir(num, GPIO_DIR_OUT);

	if (enable)
		lcm_util.set_gpio_out(num, GPIO_OUT_ONE);
	else
		lcm_util.set_gpio_out(num, GPIO_OUT_ZERO);
}
// ---------------------------------------------------------------------------
//  LCM Driver Implementations
// ---------------------------------------------------------------------------
static void config_gpio(void)
{
    lcm_util.set_gpio_mode(LSCE_GPIO_PIN, GPIO_DISP_LSCE_PIN_M_GPIO);
    lcm_util.set_gpio_mode(LSCK_GPIO_PIN, GPIO_DISP_LSCK_PIN_M_GPIO);
    lcm_util.set_gpio_mode(LSDA_GPIO_PIN, GPIO_DISP_LSDA_PIN_M_GPIO);
    lcm_util.set_gpio_mode(LSDI_GPIO_PIN, GPIO_MODE_00);

    lcm_util.set_gpio_dir(LSCE_GPIO_PIN, GPIO_DIR_OUT);
    lcm_util.set_gpio_dir(LSCK_GPIO_PIN, GPIO_DIR_OUT);
    lcm_util.set_gpio_dir(LSDA_GPIO_PIN, GPIO_DIR_OUT);
    lcm_util.set_gpio_dir(LSDI_GPIO_PIN, GPIO_DIR_IN);

	
	lcm_util.set_gpio_pull_enable(LSCE_GPIO_PIN, GPIO_PULL_DISABLE);
	lcm_util.set_gpio_pull_enable(LSCK_GPIO_PIN, GPIO_PULL_DISABLE);
	lcm_util.set_gpio_pull_enable(LSDA_GPIO_PIN, GPIO_PULL_DISABLE);
	lcm_util.set_gpio_pull_enable(LSDI_GPIO_PIN, GPIO_PULL_ENABLE);
	mt_set_gpio_pull_select(LSDI_GPIO_PIN, GPIO_PULL_UP);

	//set pwm output clk
	lcm_util.set_gpio_mode(SSD2825_MIPI_CLK_GPIO_PIN, GPIO_MODE_02);
	lcm_util.set_gpio_dir(SSD2825_MIPI_CLK_GPIO_PIN, GPIO_DIR_OUT); 
	lcm_util.set_gpio_pull_enable(SSD2825_MIPI_CLK_GPIO_PIN, GPIO_PULL_DISABLE); 
	lcd_set_pwm(PWM0);
	MDELAY(10);
	
	//set ssd2825 shut ping high
	lcm_util.set_gpio_mode(SSD2825_SHUT_GPIO_PIN, GPIO_MODE_00);
	lcm_util.set_gpio_dir(SSD2825_SHUT_GPIO_PIN, GPIO_DIR_OUT); 
	lcm_util.set_gpio_pull_enable(SSD2825_SHUT_GPIO_PIN, GPIO_PULL_DISABLE); 
	SET_GPIO_OUT(SSD2825_SHUT_GPIO_PIN , 1);
	MDELAY(1);
	
	//set ssd2825 poweron
	lcm_util.set_gpio_mode(SSD2825_POWER_GPIO_PIN, GPIO_MODE_00);
	lcm_util.set_gpio_dir(SSD2825_POWER_GPIO_PIN, GPIO_DIR_OUT); 
	lcm_util.set_gpio_pull_enable(SSD2825_POWER_GPIO_PIN, GPIO_PULL_DISABLE); 
	SET_GPIO_OUT(SSD2825_POWER_GPIO_PIN , 1);
	MDELAY(1);

	//set s6e8aa poweron
	lcm_util.set_gpio_mode(LCD_POWER_GPIO_PIN, GPIO_MODE_00);
	lcm_util.set_gpio_dir(LCD_POWER_GPIO_PIN, GPIO_DIR_OUT); 
	lcm_util.set_gpio_pull_enable(LCD_POWER_GPIO_PIN, GPIO_PULL_DISABLE); 
	SET_GPIO_OUT(LCD_POWER_GPIO_PIN , 1);
	MDELAY(50);
	
}
static void lcm_init(void)
{
    lcm_util.set_gpio_mode(GPIO_DISP_LRSTB_PIN, GPIO_MODE_00);  //huawei use GPIO 49: LSA0 to be reset pin
    lcm_util.set_gpio_dir(GPIO_DISP_LRSTB_PIN, GPIO_DIR_OUT);
	/*Optimization LCD initialization time*/
    lcm_util.set_gpio_out(GPIO_DISP_LRSTB_PIN, GPIO_OUT_ONE);
    mdelay(30);  //lcm power on , reset output high , delay 30ms ,then output low
    lcm_util.set_gpio_out(GPIO_DISP_LRSTB_PIN, GPIO_OUT_ZERO);
    msleep(30);
    lcm_util.set_gpio_out(GPIO_DISP_LRSTB_PIN, GPIO_OUT_ONE);
    msleep(50);
	push_table(tianma_ips_init, sizeof(tianma_ips_init) / sizeof(struct LCM_setting_table), 1);
    #ifdef BUILD_LK
	printf("LCD otm9608a_tianma lcm_init\n");
    #else
	printk("LCD otm9608a_tianma lcm_init\n");
    #endif
}
static void lcm_init(void)
{
	lcm_util.set_gpio_mode(GPIO112, GPIO_MODE_00);
	lcm_util.set_gpio_dir(GPIO112, GPIO_DIR_OUT); 
	lcm_util.set_gpio_pull_enable(GPIO112, GPIO_PULL_DISABLE); 

	lcm_util.set_gpio_out(GPIO112 , 0);
	MDELAY(50);

	SET_GPIO_OUT(LCD_LDO_ENP_GPIO_PIN , 1);
	MDELAY(10);
	SET_GPIO_OUT(LCD_LDO_ENN_GPIO_PIN , 1);
	MDELAY(100);
    
	lcm_util.set_gpio_out(GPIO112 , 1);
	MDELAY(20);

	init_lcm_registers();
}
static void config_gpio_for_read(void)
{
    LCM_DEBUG("[LCM_gionee: config_gpio_for read. \n");

	const unsigned int USED_GPIOS[] = 
    {
        LSDI_GPIO_PIN,
        LSCE_GPIO_PIN,
        LSCK_GPIO_PIN,
        LSDA_GPIO_PIN,
    };

    unsigned int i;

    for (i = 0; i < ARY_SIZE(USED_GPIOS); ++i)
    {   	
        lcm_util.set_gpio_mode(USED_GPIOS[i],GPIO_MODE_00);
        lcm_util.set_gpio_dir(USED_GPIOS[i], 1);
    }
   	
    lcm_util.set_gpio_dir(LSDI_GPIO_PIN, 0); 
    lcm_util.set_gpio_pull_enable(USED_GPIOS[i], 0);  	
}