static void _serigo(uint8 reg, uint8 data) { uint8 start_byte_reg = DEVICE_ID | WRITE_REGISTER; uint8 start_byte_data = DEVICE_ID | WRITE_CONTENT; seriout_transfer_byte(reg, start_byte_reg); seriout_transfer_byte(data, start_byte_data); }
int process_lcdc_table(struct sequence *table, size_t count, lcd_panel_type lcd_panel) { unsigned int i; uint32 reg = 0; uint32 value = 0; uint32 time = 0; uint8 start_byte = 0; int ret = 0; for (i = 0; i < count; i++) { reg = table[i].reg; value = table[i].value; time = table[i].time; switch(lcd_panel) { case LCD_S6D74A0_SAMSUNG_HVGA: seriout_ext((uint16)reg, (uint16)value, (uint16)time); break; case LCD_HX8368A_SEIKO_QVGA: case LCD_HX8368A_TRULY_QVGA: if (value & TYPE_COMMAND) { start_byte = START_BYTE_COMMAND; } else if (value & TYPE_PARAMETER) { start_byte = START_BYTE_PARAMETER; } /* 16 bit SPI to write the command and data */ seriout_transfer_byte((uint8)reg, start_byte); break; case LCD_HX8357B_TIANMA_HVGA: case LCD_S6D05A0_INNOLUX_HVGA: case LCD_R61529_TRULY_HVGA: case LCD_ILI9481D_INNOLUX_HVGA: case LCD_ILI9481DS_TIANMA_HVGA: /*add an new lcd for U8510*/ case LCD_NT35410_CHIMEI_HVGA: if (value & TYPE_COMMAND) { start_byte = START_BYTE_COMMAND; } else if (value & TYPE_PARAMETER) { start_byte = START_BYTE_PARAMETER; } /* 9 bit SPI to write the command and data */ seriout_byte_9bit(start_byte, (uint8)reg); break; // Ignore MDDI displays case LCD_MDDI_NT35582_BYD_WVGA: case LCD_MDDI_NT35582_TRULY_WVGA: case LCD_MDDI_NT35510_ALPHA_SI_WVGA: default: break; } if (time != 0) { LCD_MDELAY(time); } } return ret; }