Пример #1
0
static __inline unsigned int spi_read_data(void)
{
  unsigned int i;
  s32 inA0 = -1;

  UDELAY(100);
  SET_LSCK_HIGH;
  SET_LSDA_HIGH;
  UDELAY(100);

  for (i = 0; i < 9; ++ i)
    {
	  SET_LSCK_LOW;
	  /* if (data & (0x100)) {  // 0x80= (1 << (9-1)) */
	  /* 	SET_LSDA_HIGH; */
	  /* 	dbg_print("~1"); */
	  /* } else { */
	  /* 	SET_LSDA_LOW; */
	  /* 	dbg_print("~0"); */
	  /* } */
	  UDELAY(100);
	  inA0 = GET_LSA0_IN;
	  //printf("`%d",inA0);
	  SET_LSCK_HIGH;
	  UDELAY(100);
    }
  //printf("\n");


  SET_LSDA_HIGH;
}
Пример #2
0
static __inline void spi_send_data(unsigned int data) 
{ 
	unsigned int i; 

	SET_LSCE_HIGH; 
	SET_LSCK_HIGH; 
	SET_LSDA_HIGH; 
	UDELAY(10); 

	SET_LSCE_LOW; 
	UDELAY(10); 
	for (i = 0; i < 24; ++i) 
	{ 
		if (data & (1 << 23))
		{ 
			SET_LSDA_HIGH; 
		}
		else 
		{ 
			SET_LSDA_LOW; 
		} 
		data <<= 1; 
		UDELAY(10); 
		SET_LSCK_LOW; 
		UDELAY(10); 
		SET_LSCK_HIGH; 
		UDELAY(10); 
	} 

	SET_LSDA_HIGH; 
	SET_LSCE_HIGH; 
} 
static void LCDSPI_GPIO_DAT(unsigned char data)
{
	unsigned int i;

	SET_LSCE_LOW;
	UDELAY(10);	

	SET_LSCK_LOW;
	SET_LSDA_HIGH;
	UDELAY(100);  

	SET_LSCK_HIGH;
	UDELAY(100);  

	for (i = 0; i < 8; i++ ) 
	{
		SET_LSCK_LOW;
		if (data & 0x80) 
		{
			SET_LSDA_HIGH;
		}
		else 
		{
			SET_LSDA_LOW;
		}
		UDELAY(100);   
		SET_LSCK_HIGH;
		UDELAY(100);   
		data <<= 1;
	}

	SET_LSCE_HIGH;
}
Пример #4
0
static __inline void spi_send_data_ICID(unsigned int data)
{
  unsigned int i;

  UDELAY(100);
  SET_LSCK_HIGH;
  SET_LSDA_HIGH;
  UDELAY(100);

  for (i = 0; i < 9; ++ i)
    {
	  SET_LSCK_LOW;
	  if (data & (0x100)) {  // 0x80= (1 << (9-1))
		SET_LSDA_HIGH;
		dbg_print("~1");
	  } else {
		SET_LSDA_LOW;
		dbg_print("~0");
	  }
	  UDELAY(100);
	  SET_LSCK_HIGH;
	  UDELAY(100);
	  data <<= 1;
    }

  SET_LSDA_HIGH;
}
static __inline void spi_send_data(unsigned int data)
{
    unsigned int i;

    SET_LSCE_LOW;
    UDELAY(1);
    SET_LSCK_HIGH;
    SET_LSDA_HIGH;
    UDELAY(1);

    for (i = 0; i < 9; ++ i)
    {
        SET_LSCK_LOW;
        if (data & (1 << 8)) {
            SET_LSDA_HIGH;
        } else {
            SET_LSDA_LOW;
        }
        UDELAY(1);
        SET_LSCK_HIGH;
        UDELAY(1);
        data <<= 1;
    }

    SET_LSDA_HIGH;
    SET_LSCE_HIGH;
    
}
Пример #6
0
static int
boot_cpu(imps_processor *proc)
{
	int apicid = proc->apic_id, success = 1, to;
	unsigned bootaddr, accept_status;
	unsigned bios_reset_vector = PHYS_TO_VIRTUAL(BIOS_RESET_VECTOR);

	/*
	 * Copy boot code for secondary CPUs here.  Find it in between
	 * "patch_code_start" and "patch_code_end" symbols.  The other CPUs
	 * will start there in 16-bit real mode under the 1MB boundary.
	 * "patch_code_start" should be placed at a 4K-aligned address
	 * under the 1MB boundary.
	 */

	extern char patch_code_start[];
	extern char patch_code_end[];
	bootaddr = (512-64)*1024;
	memcpy((char *)bootaddr, patch_code_start, patch_code_end - patch_code_start);

	/*
	 *  Generic CPU startup sequence starts here.
	 */

	/* set BIOS reset vector */
	CMOS_WRITE_BYTE(CMOS_RESET_CODE, CMOS_RESET_JUMP);
	*((volatile unsigned *) bios_reset_vector) = ((bootaddr & 0xFF000) << 12);

	/* clear the APIC error register */
	IMPS_LAPIC_WRITE(LAPIC_ESR, 0);
	accept_status = IMPS_LAPIC_READ(LAPIC_ESR);

	/* assert INIT IPI */
	send_ipi(apicid, LAPIC_ICR_TM_LEVEL | LAPIC_ICR_LEVELASSERT | LAPIC_ICR_DM_INIT);

	UDELAY(10000);

	/* de-assert INIT IPI */
	send_ipi(apicid, LAPIC_ICR_TM_LEVEL | LAPIC_ICR_DM_INIT);

	UDELAY(10000);

	/*
	 *  Send Startup IPIs if not an old pre-integrated APIC.
	 */

	if (proc->apic_ver >= APIC_VER_NEW) {
		int i;
		for (i = 1; i <= 2; i++) {
			send_ipi(apicid, LAPIC_ICR_DM_SIPI | ((bootaddr >> 12) & 0xFF));
			UDELAY(1000);
		}
	}
static unsigned char LCDSPI_Read(char cmd)
{
    char MB;
	unsigned int i,j;

	SET_LSCE_LOW;
	UDELAY(10);     

	SET_LSCK_LOW;
	
	SET_LSDA_LOW;
	UDELAY(10);   

	SET_LSCK_HIGH;
	UDELAY(100);  

	for (i = 0; i < 8; i++ ) 
	{
		SET_LSCK_LOW;

		if (cmd & 0x80) 
		{
			SET_LSDA_HIGH;
		} 
		else 
		{
			SET_LSDA_LOW;
		}

		UDELAY(100);  
		SET_LSCK_HIGH;
		UDELAY(100);  

		cmd <<= 1;
	}	

    UDELAY(20); 		       
 	
 	for(j=0;j<2;j++)
 	{	
 	    MB = 0x00;           
        for(i=0;i<8;i++)
        { 
	        SET_LSCK_LOW;              
            UDELAY(100);
            SET_LSCK_HIGH;
              
            if (1 == (mt_get_gpio_in(LSDI_GPIO_PIN))&0x1) 
                MB |= 1 << (7 - i);  
                            
	        UDELAY(100);
        }        
    }
    SET_LSCE_HIGH;
	SET_LSCK_HIGH;
	SET_LSDA_HIGH;     

    return MB;	
}
static void push_table(struct LCM_setting_table *table, unsigned int count, unsigned char force_update)
{
    unsigned int i;
    for(i = 0; i < count; i++)
    {
        unsigned cmd;
        cmd = table[i].cmd;

        switch (cmd) {

            case REGFLAG_DELAY :
                if(table[i].count <= 10)
                    MDELAY(table[i].count);
                else
                    MDELAY(table[i].count);
                break;
				
			case REGFLAG_UDELAY :
				UDELAY(table[i].count);
				break;

            case REGFLAG_END_OF_TABLE :
                break;

            default:
                dsi_set_cmdq_V2(cmd, table[i].count, table[i].para_list, force_update);
        }
    }
}
Пример #9
0
static void lcm_resume(void)
{
    //enable level shift in UBOOT
    mt_set_gpio_mode(GPIO100, GPIO_MODE_00);
    mt_set_gpio_dir(GPIO100, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO100, GPIO_OUT_ONE);
    MDELAY(5);	
    mt_set_gpio_mode(GPIO66, GPIO_MODE_00);
    mt_set_gpio_dir(GPIO66, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO66, GPIO_OUT_ONE);
    UDELAY(400);
    mt_set_gpio_mode(GPIO12, GPIO_MODE_00);    
    mt_set_gpio_dir(GPIO12, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO12, GPIO_OUT_ONE); // LCM_STBY
    MDELAY(10);
    mt_set_gpio_mode(GPIO49, GPIO_MODE_00);    
    mt_set_gpio_dir(GPIO49, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO49, GPIO_OUT_ONE); // LCM_RST
    MDELAY(5);
    mt_set_gpio_mode(GPIO52, GPIO_MODE_00);    
    mt_set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO52, GPIO_OUT_ONE); // LCM_VLED_EN
    MDELAY(5);
    mt_set_gpio_mode(GPIO84, GPIO_MODE_00);    
    mt_set_gpio_dir(GPIO84, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO84, GPIO_OUT_ONE); // LVDS_SHUTDOWN_N
    MDELAY(40);
    mt_set_gpio_out(GPIO49, GPIO_OUT_ZERO); // LCM_RST
    MDELAY(1);
    mt_set_gpio_out(GPIO49, GPIO_OUT_ONE); // LCM_RST
    MDELAY(100);
    mt_set_gpio_mode(GPIO48, GPIO_MODE_00);    
    mt_set_gpio_dir(GPIO48, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO48, GPIO_OUT_ONE); // LCM_BL_EN	
}
static void lcm_resume(void)
{
	#if 1
	send_ctrl_cmd(0x11);
	MDELAY(120);
	send_ctrl_cmd(0x29);
	MDELAY(50);
	#else
	unsigned int lcd_id = 0;
	
	SET_RESET_PIN(1);
	MDELAY(5);
    SET_RESET_PIN(0);
    MDELAY(20);  
    SET_RESET_PIN(1);
    MDELAY(20);  // 400

	send_ctrl_cmd(0xB9);
	send_data_cmd(0xFF);
	send_data_cmd(0x83);
	send_data_cmd(0x57);

	UDELAY(10);

	lcd_id = get_lcd_id_n(LCMID_REG, 2);
	LCD_PRINT("[JINCHI35_HX8357C]lcm_resume: lcd_id = 0x%x\n", lcd_id);

#if 0//ndef BUILD_UBOOT
	print_lcm_registers();
#endif

	init_lcm_registers();	
	#endif
}
Пример #11
0
static void lcm_resume(void)
{
	#if 1
	send_ctrl_cmd(0x1100);
	MDELAY(120);	
	send_ctrl_cmd(0x2900);
	MDELAY(50);
	#else
	unsigned int lcd_id = 0;
	
	SET_RESET_PIN(1);
	MDELAY(5);
    SET_RESET_PIN(0);
    MDELAY(50);  
    SET_RESET_PIN(1);
    MDELAY(100);  // 400

	send_ctrl_cmd(0xF000);send_data_cmd(0x55);
	send_ctrl_cmd(0xF001);send_data_cmd(0xAA);
	send_ctrl_cmd(0xF002);send_data_cmd(0x52);
	send_ctrl_cmd(0xF003);send_data_cmd(0x08);
	send_ctrl_cmd(0xF004);send_data_cmd(0x01);
	UDELAY(10);
	
	lcd_id = get_lcd_id_r(LCM_ID_REG) & 0xFF;
	lcd_id = (lcd_id << 8) | (get_lcd_id_r(LCM_ID_REG + 1) & 0xFF);

	LCD_PRINT(LCM_NAME"lcm_resume: lcd_id = 0x%x\n", lcd_id);

    init_lcm_registers();
	#endif
}
Пример #12
0
static unsigned int lcm_compare_id(void)
{	
	unsigned int lcd_id = 0;

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

	send_ctrl_cmd(0xF000);send_data_cmd(0x55);
	send_ctrl_cmd(0xF001);send_data_cmd(0xAA);
	send_ctrl_cmd(0xF002);send_data_cmd(0x52);
	send_ctrl_cmd(0xF003);send_data_cmd(0x08);
	send_ctrl_cmd(0xF004);send_data_cmd(0x01);
	UDELAY(10);

	lcd_id = get_lcd_id_r(LCM_ID_REG) & 0xFF;
	lcd_id = (lcd_id << 8) | (get_lcd_id_r(LCM_ID_REG + 1) & 0xFF);

	LCD_PRINT(LCM_NAME"lcm_compare_id: lcd_id = 0x%x\n", lcd_id);

		
    return (LCM_ID == lcd_id)?1:0;
}
Пример #13
0
static void lcm_resume(void)
{
	#if 1
	send_ctrl_cmd(0x1100);
	MDELAY(120);	
	send_ctrl_cmd(0x2900);
	MDELAY(50);
	#else
	unsigned int lcd_id = 0;
	
	SET_RESET_PIN(1);
	MDELAY(5);
    SET_RESET_PIN(0);
    MDELAY(50);  
    SET_RESET_PIN(1);
    MDELAY(100);  // 400

	send_ctrl_cmd(0xB9); 
	send_data_cmd(0xFF); 
	send_data_cmd(0x83); 
	send_data_cmd(0x63); 
	UDELAY(10);
	
	lcd_id = get_lcd_id_n(LCM_ID_REG, 2) & 0xFF;
	LCD_PRINT(LCM_NAME"lcm_resume: lcd_id = 0x%x\n", lcd_id);

    init_lcm_registers();
	#endif
}
static __inline void spi_send_data(unsigned int data)
{
    unsigned int i;

    for (i = 0; i < 8; ++ i)
    {
        SET_LSCK_LOW;
        if (data & 0x80) {
            SET_LSDA_HIGH;
        } else {
            SET_LSDA_LOW;
        }
        UDELAY(1);
        SET_LSCK_HIGH;
        UDELAY(1);
        data <<= 1;
    }
}
static __inline unsigned char  spi_get_data(unsigned int reg)
{
    unsigned int i;
    int k;
    unsigned char getbyte=0;

    reg =  (CTRL_ID | (reg & 0xFF));
    
    SET_LSCE_HIGH;
    SET_LSCK_LOW;
    SET_LSDA_HIGH;
    UDELAY(1);
    SET_LSCE_LOW;

    UDELAY(1);

    for (i = 0; i < 9;  i++)
    {
        SET_LSCK_LOW;
        if (reg & (1 << 8)) {
            SET_LSDA_HIGH;
        } else {
            SET_LSDA_LOW;
        }
        UDELAY(1);
        SET_LSCK_HIGH;
        UDELAY(1);
        reg <<= 1;
    }
    
    SET_LSA0_INPUT;
    UDELAY(2);    
  //  SET_LSCK_LOW;
   // UDELAY(2);      
    //   SET_LSCK_LOW;
   // UDELAY(2);      
   // SET_LSCK_HIGH;        
   // UDELAY(2);
    
    for (k = 7; k >= 0; k--)
    {
        SET_LSCK_LOW;       
        UDELAY(1);
        if (GET_LSA0_BIT) {
            getbyte |= (1 << k);
        }

       SET_LSCK_HIGH;    
        UDELAY(2);
    }    

   
    SET_LSDA_OUTPUT;
    
    SET_LSDA_HIGH;
    SET_LSCE_HIGH;

    return getbyte;
}
Пример #16
0
/*
*It used index to indentify command or data tyep.1:data.0:cmd.
*/
static  void spi_send(unsigned int index,  unsigned int data)
{
    unsigned int i;

    SET_LSCE_LOW;
    UDELAY(10);

    SET_LSCK_LOW;
    UDELAY(10);
    SET_GPIO_OUT(LSDA_GPIO_PIN, index);
    UDELAY(10);
    SET_LSCK_HIGH;

    for (i = 0; i < 8; i++)
    {
        if( data & 0x80 ) {
            SET_LSDA_HIGH;
        } else {
            SET_LSDA_LOW;
        }
        data <<= 1;
        UDELAY(10);
        SET_LSCK_LOW;
        UDELAY(10);
        SET_LSCK_HIGH;
        UDELAY(10);
    }

    SET_LSCE_HIGH;
}
Пример #17
0
static __inline unsigned char  spi_get_byte(unsigned int reg)
{
	unsigned int i;
	int k;
	unsigned char getbyte=0;

	// reg =  (CTRL_ID | (reg & 0xFF));
	SET_LSCK_HIGH;
	SET_LSDA_HIGH;
	UDELAY(1);
	SET_LSCE_LOW;
	UDELAY(1);


    for (i = 0; i < 8; ++ i)
    {
        SET_LSCK_LOW;
        if (reg & (1 << 7)) {
            SET_LSDA_HIGH;
        } else {
            SET_LSDA_LOW;
        }
        UDELAY(1);
        SET_LSCK_HIGH;
        UDELAY(1);
        reg <<= 1;
    }
    
    UDELAY(2);    
    for (k = 7; k >= 0; k--)
    {
	SET_LSCK_LOW;       
	UDELAY(5);
	SET_LSCK_HIGH;    
	UDELAY(5);
        if (GET_LSA0_BIT) {
            getbyte |= (1 << k);
        }

    }    

    UDELAY(2);    
     
    SET_LSDA_HIGH;
    SET_LSCE_HIGH;

    return getbyte;
}
static __inline void send_ctrl_cmd(unsigned int cmd)
{
    SET_LSCE_HIGH;
    SET_LSDA_HIGH;
    SET_LSCK_HIGH;

    SET_LSCE_LOW;
    UDELAY(1);

    SET_LSCK_LOW;
    SET_LSDA_LOW;
    UDELAY(1);

    SET_LSCK_HIGH;
    UDELAY(1);

    spi_send_data(cmd);

    SET_LSCK_HIGH;
    SET_LSDA_HIGH;
    SET_LSCE_HIGH;
    UDELAY(1);
}
static __inline void send_data_cmd(unsigned int data)
{
    SET_LSCE_HIGH;
    SET_LSDA_HIGH;
    SET_LSCK_HIGH;

    SET_LSCE_LOW;
    UDELAY(1);

    SET_LSCK_LOW;
    SET_LSDA_HIGH;
    UDELAY(1);

    SET_LSCK_HIGH;
    UDELAY(1);

    spi_send_data(data);

    SET_LSCK_HIGH;
    SET_LSDA_HIGH;
    SET_LSCE_HIGH;
    UDELAY(1);
}
Пример #20
0
static __inline void spi_send_data(unsigned int data)
{
  unsigned int i;

  int clk_num;
  int clk_mask;

  UDELAY(100);
  SET_LSCK_HIGH;
  SET_LSDA_HIGH;
  UDELAY(100);

  clk_num = 9;
  clk_mask = 0x100;
  dbg_print("\n^");
  UDELAY(50);
  for (i = 0; i < clk_num; ++ i)
    {
	  SET_LSCK_LOW;
	  if (data & (clk_mask)) {  // 0x80= (1 << (9-1))
		SET_LSDA_HIGH;
		dbg_print("~1");
	  } else {
		SET_LSDA_LOW;
		dbg_print("~0");
	  }
	  UDELAY(100);
	  SET_LSCK_HIGH;
	  UDELAY(100);
	  data <<= 1;
    }
  dbg_print("\n");

  SET_ICID_HIGH;

  SET_LSDA_HIGH;
}
Пример #21
0
static void LCDSPI_GPIO_CMD(unsigned char cmd)
{
	unsigned int i;

	SET_LSCE_LOW;
	UDELAY(10);     

	SET_LSCK_LOW;
	
	SET_LSDA_LOW;
	UDELAY(10);   

	SET_LSCK_HIGH;
	UDELAY(100);  

	for (i = 0; i < 8; i++ ) 
	{
		SET_LSCK_LOW;

		if (cmd & 0x80) 
		{
			SET_LSDA_HIGH;
		} 
		else 
		{
			SET_LSDA_LOW;
		}

		UDELAY(100);  
		SET_LSCK_HIGH;
		UDELAY(100);  

		cmd <<= 1;
	}

	SET_LSCE_HIGH;
}
Пример #22
0
static int
send_ipi(unsigned int dst, unsigned int v)
{
	int to, send_status;

	IMPS_LAPIC_WRITE(LAPIC_ICR+0x10, (dst << 24));
	IMPS_LAPIC_WRITE(LAPIC_ICR, v);

	/* Wait for send to finish */
	to = 0;
	do {
		UDELAY(100);
		send_status = IMPS_LAPIC_READ(LAPIC_ICR) & LAPIC_ICR_STATUS_PEND;
	} while (send_status && (to++ < 1000));

	return (to < 1000);
}
Пример #23
0
static __inline void send_ctrl_cmd(unsigned char cmd)
{
    unsigned char i;

    SET_LSCE_HIGH;
    UDELAY(1);
    SET_LSCK_HIGH;
	UDELAY(1);
    SET_LSDA_HIGH;
    UDELAY(1);
	
    SET_LSCE_LOW;
    UDELAY(1);

	SET_LSCK_LOW;
	UDELAY(1);
    SET_LSDA_LOW;//A0=0
    UDELAY(1);
    SET_LSCK_HIGH;
    UDELAY(1);

    for (i = 0; i < 8; ++ i)
    {
        SET_LSCK_LOW;
        if (cmd & (1 << 7)) {
            SET_LSDA_HIGH;
        } else {
            SET_LSDA_LOW;
        }
        UDELAY(1);
        SET_LSCK_HIGH;
        UDELAY(1);
        cmd <<= 1;
    }

    SET_LSDA_HIGH;
    SET_LSCE_HIGH;
}
Пример #24
0
static __inline void send_data_cmd(unsigned char data)
{
    unsigned char i;

    SET_LSCE_HIGH;
    UDELAY(1);
    SET_LSCK_HIGH;
	UDELAY(1);
    SET_LSDA_HIGH;
    UDELAY(1);
	
    SET_LSCE_LOW;
    UDELAY(1);

	SET_LSCK_LOW;
	UDELAY(1);
    SET_LSDA_HIGH;//A0=1
    UDELAY(1);
    SET_LSCK_HIGH;
    UDELAY(1);

    for (i = 0; i < 8; ++ i)
    {
        SET_LSCK_LOW;
        if (data & (1 << 7)) {
            SET_LSDA_HIGH;
        } else {
            SET_LSDA_LOW;
        }
        UDELAY(1);
        SET_LSCK_HIGH;
        UDELAY(1);
        data <<= 1;
    }

    SET_LSDA_HIGH;
    SET_LSCE_HIGH;
}
static unsigned int get_lcd_id_n(unsigned int addr, unsigned char count)
{
	volatile unsigned int id = 0;
	unsigned char k = 0;
	

	send_ctrl_cmd(addr);
    UDELAY(10);

	while (k < count)
	{
		id = read_data_cmd();
		k++;
	}
	LCD_PRINT("[JINCHI35_HX8357C]get_lcd_id_n: id = 0x%x\n", id);
	
    return id;
}
Пример #26
0
static __inline unsigned short Read_register(void) 
{ 
	unsigned char i,j,front_data; 
	unsigned short value = 0; 

	front_data=HX_RD_REGISTER; 

	SET_LSCE_HIGH; 
	SET_LSCK_HIGH; 
	SET_LSDA_HIGH; 
	UDELAY(10); 
	SET_LSCE_LOW; 
	UDELAY(10); 

	for(i=0;i<8;i++) // 8 Data 
	{ 

		if ( front_data& 0x80) 
			SET_LSDA_HIGH; 
		else 
			SET_LSDA_LOW; 
		front_data<<= 1; 
		UDELAY(10); 
		SET_LSCK_LOW; 
		UDELAY(10); 
		SET_LSCK_HIGH; 
		UDELAY(10); 
	} 
	MDELAY(1); 

	for(j=0;j<16;j++) // 16 Data 
	{ 

		SET_LSCK_HIGH; 
		UDELAY(10); 
		SET_LSCK_LOW; 
		value<<= 1; 
		value |= GET_HX_SDI; 

		UDELAY(10); 
	} 

	SET_LSCE_HIGH; 
	return value; 

} 
Пример #27
0
static void lcm_init(void)
{
#ifdef BUILD_LK

#elif (defined BUILD_UBOOT)
    // do nothing in uboot
#else
    //enable level shift in UBOOT
    mt_set_gpio_mode(GPIO100, GPIO_MODE_00);
    mt_set_gpio_dir(GPIO100, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO100, GPIO_OUT_ONE);
    MDELAY(5);	
    mt_set_gpio_mode(GPIO66, GPIO_MODE_00);
    mt_set_gpio_dir(GPIO66, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO66, GPIO_OUT_ONE);
    UDELAY(400);
    mt_set_gpio_mode(GPIO12, GPIO_MODE_00);    
    mt_set_gpio_dir(GPIO12, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO12, GPIO_OUT_ONE); // LCM_STBY
    MDELAY(10);
    mt_set_gpio_mode(GPIO49, GPIO_MODE_00);    
    mt_set_gpio_dir(GPIO49, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO49, GPIO_OUT_ONE); // LCM_RST
    MDELAY(5);
    mt_set_gpio_mode(GPIO52, GPIO_MODE_00);    
    mt_set_gpio_dir(GPIO52, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO52, GPIO_OUT_ONE); // LCM_VLED_EN
    MDELAY(5);
    mt_set_gpio_mode(GPIO84, GPIO_MODE_00);    
    mt_set_gpio_dir(GPIO84, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO84, GPIO_OUT_ONE); // LVDS_SHUTDOWN_N
    MDELAY(40);
    mt_set_gpio_out(GPIO49, GPIO_OUT_ZERO); // LCM_RST
    MDELAY(1);
    mt_set_gpio_out(GPIO49, GPIO_OUT_ONE); // LCM_RST
    MDELAY(100);
    mt_set_gpio_mode(GPIO48, GPIO_MODE_00);    
    mt_set_gpio_dir(GPIO48, GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO48, GPIO_OUT_ONE); // LCM_BL_EN
#endif 		
}
static unsigned int lcm_esd_check(void)
{
    unsigned char buffer[3] = {0};
    unsigned int array[3] = {0};

    UDELAY(600);

    array[0] = 0x00063902;
    array[1] = 0x0698ffff;
    array[2] = 0x00000004;
    dsi_set_cmdq(array, 3, 1);
    //---------------------------------
    // Set Maximum Return Size
    //---------------------------------

    array[0] = 0x00013700;
    dsi_set_cmdq(array, 1, 1);
    read_reg_v2(0x0A, &buffer[0], 1);
#if defined(BUILD_LK)
//    printf("lcm_esd_check 0x0A=%x\n",buffer[0]);
#else
//    printk("lcm_esd_check 0x0A=%x\n",buffer[0]);
#endif

    array[0] = 0x00063902;
    array[1] = 0x0698ffff;
    array[2] = 0x00000804;
    dsi_set_cmdq(array, 3, 1);

    if(0x9c == buffer[0])
    {
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}
static unsigned int lcm_compare_id(void)
{	
	unsigned int lcd_id = 0x0;

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

	send_ctrl_cmd(0xB9);
	send_data_cmd(0xFF);
	send_data_cmd(0x83);
	send_data_cmd(0x57);

	UDELAY(10);
	
	lcd_id = get_lcd_id_n(LCMID_REG, 2);
	LCD_PRINT("[JINCHI35_HX8357C]lcm_compare_id: lcd_id = 0x%x\n", lcd_id);
	
    return (LCM_ID == lcd_id)?1:0;
}
Пример #30
0
static unsigned int lcm_compare_id(void)
{	
	unsigned int lcd_id = 0;

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

	send_ctrl_cmd(0xB9); 
	send_data_cmd(0xFF); 
	send_data_cmd(0x83); 
	send_data_cmd(0x63); 
	UDELAY(10);
	
	lcd_id = get_lcd_id_n(LCM_ID_REG, 2) & 0xFF;

	LCD_PRINT(LCM_NAME"lcm_resume: lcd_id = 0x%x\n", lcd_id);
		
    return (LCM_ID == lcd_id)?1:0;
}