void SPI_Write_8bits(unsigned char Index,unsigned char REG_DATA) { unsigned char DeviceID = 0x70; unsigned char lcd_Index = (unsigned char)(Index & 0xff); unsigned char lcd_data0 = REG_DATA; /* Instruction format 3SPI * SPI CLK: rising edge * MOSI: 0 1 1 1 0 ID RS RW IB7 IB6 IB5 IB4 IB3 IB2 IB1 IB0 * |<-start byte->| |<-write index & instruction->| */ LCD_SPI_CS_LO; spi_gen(DeviceID | 0x0); spi_gen(lcd_Index); LCD_SPI_CS_HI; LCD_SPI_CS_LO; spi_gen(DeviceID | 0x2); spi_gen(lcd_data0); LCD_SPI_CS_HI; }
/* AUO LCM power on/off SPI commands */ void panel_poweron(int bOnOff) { unsigned char *ptr; if (bOnOff == 1) { /* Start Power on sequence*/ LCD_RST_HI; mdelay(1); LCD_RST_LO; mdelay(10); LCD_RST_HI; mdelay(120); LCD_SPI_CS_HI; mdelay(1); gpio_tlmm_config(GPIO_CFG(GPIO_PCLK, 1, GPIO_CFG_OUTPUT, GPIO_CFG_PULL_DOWN, GPIO_CFG_8MA), GPIO_CFG_ENABLE); gpio_tlmm_config(GPIO_CFG(GPIO_VSYNC, 1, GPIO_CFG_OUTPUT, GPIO_CFG_PULL_DOWN, GPIO_CFG_8MA), GPIO_CFG_ENABLE); gpio_tlmm_config(GPIO_CFG(GPIO_HSYNC, 1, GPIO_CFG_OUTPUT, GPIO_CFG_PULL_DOWN, GPIO_CFG_8MA), GPIO_CFG_ENABLE); gpio_tlmm_config(GPIO_CFG(GPIO_VDEN, 1, GPIO_CFG_OUTPUT, GPIO_CFG_PULL_DOWN, GPIO_CFG_8MA), GPIO_CFG_ENABLE); /* assign power-on table */ if (lcm_id < 2) ptr = auo_poweron_sequence; else ptr = auo_poweron_sequence_2_0; } else { /* assign power-off table */ ptr = auo_poweroff_sequence; } while( *ptr != CMD_END) { spi_gen(*ptr,*(ptr+1)); ptr += 2; } if (!bOnOff) LCD_SPI_CS_LO; }
void SPI_Write_16bits(unsigned char Index,unsigned short REG_DATA) { unsigned char DeviceID = 0x70; unsigned char lcd_Index = (unsigned char)(Index & 0xff); unsigned char lcd_data0 = (unsigned char)( (REG_DATA>>8) & 0xff); unsigned char lcd_data1 = (unsigned char)( REG_DATA & 0xff); LCD_SPI_CS_LO; spi_gen(DeviceID | 0x0); spi_gen(lcd_Index); LCD_SPI_CS_HI; LCD_SPI_CS_LO; spi_gen(DeviceID | 0x2); spi_gen(lcd_data0); LCD_SPI_CS_HI; LCD_SPI_CS_LO; spi_gen(DeviceID | 0x2); spi_gen(lcd_data1); LCD_SPI_CS_HI; }