From 8e4bff4cab0ddac6060645b0715210484d02ff40 Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Wed, 30 Aug 2017 08:25:59 +0000 Subject: Initial file dump from open source release --- drivers/video/sprdfb/lcd/lcd_nt35516_rgb_spi.c | 624 +++++++++++++++++++++++++ 1 file changed, 624 insertions(+) create mode 100755 drivers/video/sprdfb/lcd/lcd_nt35516_rgb_spi.c (limited to 'drivers/video/sprdfb/lcd/lcd_nt35516_rgb_spi.c') diff --git a/drivers/video/sprdfb/lcd/lcd_nt35516_rgb_spi.c b/drivers/video/sprdfb/lcd/lcd_nt35516_rgb_spi.c new file mode 100755 index 00000000..0ca42500 --- /dev/null +++ b/drivers/video/sprdfb/lcd/lcd_nt35516_rgb_spi.c @@ -0,0 +1,624 @@ +/* drivers/video/sc8825/lcd_nt35516_spi.c + * + * Support for nt35516 spi LCD device + * + * Copyright (C) 2010 Spreadtrum + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include "../sprdfb_panel.h" + +#define NT35516_SpiWriteCmd(cmd) \ +{ \ + spi_send_cmd((cmd & 0xFF));\ +} + +#define NT35516_SpiWriteData(data)\ +{ \ + spi_send_data((data & 0xFF));\ +} + +static int32_t nt35516_rgb_spi_init(struct panel_spec *self) +{ + uint32_t data = 0; + spi_send_cmd_t spi_send_cmd = self->info.rgb->bus_info.spi->ops->spi_send_cmd; + spi_send_data_t spi_send_data = self->info.rgb->bus_info.spi->ops->spi_send_data; + spi_read_t spi_read = self->info.rgb->bus_info.spi->ops->spi_read; + + // NT35516 + AUO 4.29' + // VCC=IOVCC=3.3V RGB_24Bit + + //NT35516_SpiWriteCmd(0xDB00); + //spi_read(&data); + + //TEST Commands + + NT35516_SpiWriteCmd(0xFF); + NT35516_SpiWriteData(0xAA);//AA + NT35516_SpiWriteData(0x55);//55 + NT35516_SpiWriteData(0x25);//08 + NT35516_SpiWriteData(0x01);//01 + + //NT35516_SpiWriteCmd(0xFA0F); NT35516_SpiWriteData(0x20); + + //NT35516_SpiWriteCmd(0xF300); NT35516_SpiWriteData(0x02); + //NT35516_SpiWriteCmd(0xF303); NT35516_SpiWriteData(0x15); + + //ENABLE PAGE 0 + NT35516_SpiWriteCmd(0xF0); + NT35516_SpiWriteData(0x55); //Manufacture Command Set Control + NT35516_SpiWriteData(0xAA); + NT35516_SpiWriteData(0x52); + NT35516_SpiWriteData(0x08); + NT35516_SpiWriteData(0x00); + + NT35516_SpiWriteCmd(0xB8); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x02); + + //NT35516_SpiWriteCmd(0xBC00); NT35516_SpiWriteData(0x05); //Zig-Zag Inversion + //NT35516_SpiWriteCmd(0xBC01); NT35516_SpiWriteData(0x05); + //NT35516_SpiWriteCmd(0xBC02); NT35516_SpiWriteData(0x05); + + //NT35516_SpiWriteCmd(0x4C00); NT35516_SpiWriteData(0x11); //DB4=1,Enable Vivid Color,DB4=0 Disable Vivid Color + + // ENABLE PAGE 1 + NT35516_SpiWriteCmd(0xF0); + NT35516_SpiWriteData(0x55); //Manufacture Command Set Control + NT35516_SpiWriteData(0xAA); + NT35516_SpiWriteData(0x52); + NT35516_SpiWriteData(0x08); + NT35516_SpiWriteData(0x01);//Page1 + + NT35516_SpiWriteCmd(0xB0); + NT35516_SpiWriteData(0x05); // Setting AVDD Voltage 6V + NT35516_SpiWriteData(0x05); + NT35516_SpiWriteData(0x05); + + NT35516_SpiWriteCmd(0xB6); + NT35516_SpiWriteData(0x44); // Setting AVEE boosting time 2.5*vpnl + NT35516_SpiWriteData(0x44); + NT35516_SpiWriteData(0x44); + + NT35516_SpiWriteCmd(0xB1); + NT35516_SpiWriteData(0x05); // Setting AVEE Voltage -6V + NT35516_SpiWriteData(0x05); + NT35516_SpiWriteData(0x05); + + //Setting AVEE boosting time -2.5xVPNL + NT35516_SpiWriteCmd(0xB7); + NT35516_SpiWriteData(0x34); + NT35516_SpiWriteData(0x34); + NT35516_SpiWriteData(0x34); + + //Setting VGLX boosting time AVEE-AVDD + NT35516_SpiWriteCmd(0xBA); + NT35516_SpiWriteData(0x14); //0x24 --> 0x14 + NT35516_SpiWriteData(0x14); + NT35516_SpiWriteData(0x14); + + //Gamma Voltage + NT35516_SpiWriteCmd(0xBC); + NT35516_SpiWriteData(0x00); +NT35516_SpiWriteData(0xA0);//VGMP 0x88=4.7V 0x78=4.5V 0xA0=5.0V +NT35516_SpiWriteData(0x00);//VGSP + + //Gamma Voltage + NT35516_SpiWriteCmd(0xBD); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xA0);//VGMN 0x88=-4.7V 0x78=-4.5V 0xA0=-5.0V + NT35516_SpiWriteData(0x00);//VGSN + + NT35516_SpiWriteCmd(0xBE); + NT35516_SpiWriteData(0x57); // Setting VCOM Offset Voltage 0x4E¸ÄΪ0x57 20111019 LIYAN + + //GAMMA RED Positive + NT35516_SpiWriteCmd(0xD1); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x32); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x41); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x54); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x67); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x7A); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x98); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xB0); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xDB); + + NT35516_SpiWriteCmd(0xD2); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x3F); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x70); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xB4); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xEC); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xED); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x1E); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x51); + + NT35516_SpiWriteCmd(0xD3); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x6C); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x8D); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xA5); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xC9); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xEA); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x19); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x45); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x7A); + + NT35516_SpiWriteCmd(0xD4); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xB0); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xF4); + + //Positive Gamma for GREEN + NT35516_SpiWriteCmd(0xD5); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x37); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x41); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x54); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x67); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x7A); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x98); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xB0); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xDB); + + NT35516_SpiWriteCmd(0xD6); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x3F); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x70); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xB4); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xEC); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xED); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x1E); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x51); + + NT35516_SpiWriteCmd(0xD7); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x6C); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x8D); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xA5); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xC9); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xEA); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x19); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x45); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x7A); + + NT35516_SpiWriteCmd(0xD8); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xA0); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xF4); + + //Positive Gamma for BLUE + NT35516_SpiWriteCmd(0xD9); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x32); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x41); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x54); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x67); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x7A); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x98); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xB0); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xDB); + + NT35516_SpiWriteCmd(0xDD); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x3F); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x70); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xB4); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xEC); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xED); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x1E); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x51); + + NT35516_SpiWriteCmd(0xDE); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x6C); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x8D); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xA5); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xC9); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xEA); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x19); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x45); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x7A); + + NT35516_SpiWriteCmd(0xDF); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xA0); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xF4); + + //Negative Gamma for RED + NT35516_SpiWriteCmd(0xE0); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x32); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x41); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x54); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x67); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x7A); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x98); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xB0); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xDB); + + NT35516_SpiWriteCmd(0xE1); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x3F); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x70); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xB4); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xEC); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xED); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x1E); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x51); + + NT35516_SpiWriteCmd(0xE2); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x6C); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x8D); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xA5); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xC9); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xEA); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x19); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x45); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x7A); + + NT35516_SpiWriteCmd(0xE3); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xA0); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xF4); + + //Negative Gamma for GERREN + NT35516_SpiWriteCmd(0xE4); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x32); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x41); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x54); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x67); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x7A); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x98); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xB0); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xDB); + + NT35516_SpiWriteCmd(0xE5); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x3F); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x70); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xB4); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xEC); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xED); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x1E); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x51); + + NT35516_SpiWriteCmd(0xE6); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x6C); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x8D); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xA5); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xC9); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xEA); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x19); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x45); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x7A); + + NT35516_SpiWriteCmd(0xE7); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xA0); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xF4); + + //Negative Gamma for BLUE + NT35516_SpiWriteCmd(0xE8); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x32); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x41); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x54); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x67); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x7A); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0x98); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xB0); + NT35516_SpiWriteData(0x00); + NT35516_SpiWriteData(0xDB); + + NT35516_SpiWriteCmd(0xE9); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x3F); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0x70); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xB4); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xEC); + NT35516_SpiWriteData(0x01); + NT35516_SpiWriteData(0xED); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x1E); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x51); + + NT35516_SpiWriteCmd(0xEA); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x6C); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0x8D); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xA5); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xC9); + NT35516_SpiWriteData(0x02); + NT35516_SpiWriteData(0xEA); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x19); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x45); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0x7A); + + NT35516_SpiWriteCmd(0xEB); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xA0); + NT35516_SpiWriteData(0x03); + NT35516_SpiWriteData(0xF4); + + NT35516_SpiWriteCmd(0x3A); NT35516_SpiWriteData(0x77); + + NT35516_SpiWriteCmd(0x35); NT35516_SpiWriteData(0x00); + + NT35516_SpiWriteCmd(0x11); // Sleep out + mdelay(140); + + NT35516_SpiWriteCmd(0x29); // Display On + mdelay(10); +} + +static uint32_t nt35516_rgb_spi_readid(struct panel_spec *self) +{ + /*Jessica TODO: need read id*/ + return 0x16; +} + +#if 0 +void NT35516_RGB_SPI_set_display_window( + uint16 left, // start Horizon address + uint16 right, // end Horizon address + uint16 top, // start Vertical address + uint16 bottom // end Vertical address + ) +{ + NT35516_SpiWriteCmd(0x2A00); NT35516_SpiWriteData((left>>8));// set left address + NT35516_SpiWriteCmd(0x2A01); NT35516_SpiWriteData((left&0xff)); + NT35516_SpiWriteCmd(0x2A02); NT35516_SpiWriteData((right>>8));// set right address + NT35516_SpiWriteCmd(0x2A03); NT35516_SpiWriteData((right&0xff)); + + NT35516_SpiWriteCmd(0x2B00); NT35516_SpiWriteData((top>>8));// set left address + NT35516_SpiWriteCmd(0x2B01); NT35516_SpiWriteData((top&0xff)); + NT35516_SpiWriteCmd(0x2B02); NT35516_SpiWriteData((bottom>>8));// set bottom address + NT35516_SpiWriteCmd(0x2B03); NT35516_SpiWriteData((bottom&0xff)); +} + +LCD_ERR_E NT35516_RGB_SPI_EnterSleep(BOOLEAN is_sleep) +{ + if(is_sleep==1) + { + NT35516_SpiWriteCmd(0x28); + LCD_Delay(200); + NT35516_SpiWriteCmd(0x10); + LCD_Delay(200); + //Lcd_EnvidOnOff(0);//RGB TIMENG OFF + //LCD_Delay(200); + + } + else + { + //Lcd_EnvidOnOff(1);//RGB TIMENG ON + //LCD_Delay(200); + //LCDinit_TFT(); + //LCD_Delay(200); + + } + + return 0; +} + +LCD_ERR_E NT35516_RGB_SPI_SetDisplayWindow( + uint16 left, //left of the window + uint16 top, //top of the window + uint16 right, //right of the window + uint16 bottom //bottom of the window + ) +{ + //NT35516_RGB_SPI_set_display_window(left, right, top, bottom); + + NT35516_SpiWriteCmd(0x2C); + return TRUE; +} +#endif + + +static struct panel_operations lcd_nt35516_rgb_spi_operations = { + .panel_init = nt35516_rgb_spi_init, + .panel_readid = nt35516_rgb_spi_readid, +}; + +static struct timing_rgb lcd_nt35516_rgb_timing = { + .hfp = 30, /* unit: pixel */ + .hbp = 16, + .hsync = 1, + .vfp = 16, /*unit: line*/ + .vbp = 16, + .vsync = 1, +}; + +static struct spi_info lcd_nt35516_rgb_spi_info = { + .ops = NULL, +}; + +static struct info_rgb lcd_nt35516_rgb_info = { + .cmd_bus_mode = SPRDFB_RGB_BUS_TYPE_SPI, + .video_bus_width = 24, /*18,16*/ + .h_sync_pol = SPRDFB_POLARITY_POS, + .v_sync_pol = SPRDFB_POLARITY_POS, + .de_pol = SPRDFB_POLARITY_POS, + .timing = &lcd_nt35516_rgb_timing, + .bus_info = { + .spi = &lcd_nt35516_rgb_spi_info, + } +}; + +struct panel_spec lcd_nt35516_rgb_spi_spec = { + .width = 540, + .height = 960, + .type = LCD_MODE_RGB, + .direction = LCD_DIRECT_NORMAL, +#ifdef CONFIG_FB_SCX15 + .fps = 56, +#endif + .info = { + .rgb = &lcd_nt35516_rgb_info + }, + .ops = &lcd_nt35516_rgb_spi_operations, +}; + +struct panel_cfg lcd_nt35516_rgb_spi = { + /* this panel can only be main lcd */ + .dev_id = SPRDFB_MAINLCD_ID, + .lcd_id = 0x16, + .lcd_name = "lcd_nt35516_rgb_spi", + .panel = &lcd_nt35516_rgb_spi_spec, +}; +static int __init lcd_nt35516_rgb_spi_init(void) +{ + return sprdfb_panel_register(&lcd_nt35516_rgb_spi); +} + +subsys_initcall(lcd_nt35516_rgb_spi_init); -- cgit v1.3.1