static __inline void send_data_cmd(unsigned int data) { lcm_util.send_data((data)); }
static __inline unsigned int read_data_cmd(void) { return 0xFFFF & lcm_util.read_data(); }
static __inline void send_ctrl_cmd(unsigned int cmd) { lcm_util.send_cmd((cmd)); }
static __inline void send_data_cmd(unsigned int data) { // printf("d:%x", data); lcm_util.send_data(data&0xff); }
static __inline unsigned short read_data_cmd(void) { LCM_PRINT_FUNC(); return (unsigned short)(lcm_util.read_data()); }
static inline unsigned char read_data_cmd(void) { return 0xFF & lcm_util.read_data(); }
static __inline void send_ctrl_cmd(unsigned int cmd) { // printf("c:%x", cmd); lcm_util.send_cmd(cmd); }
static void sw_clear_panel(unsigned int color) { unsigned short x0, y0, x1, y1, x, y; unsigned short h_X_start,l_X_start,h_X_end,l_X_end,h_Y_start,l_Y_start,h_Y_end,l_Y_end; x0 = (unsigned short)0; y0 = (unsigned short)0; x1 = (unsigned short)FRAME_WIDTH-1; y1 = (unsigned short)FRAME_HEIGHT-1; h_X_start=((x0&0xFF00)>>8); l_X_start=(x0&0x00FF); h_X_end=((x1&0xFF00)>>8); l_X_end=(x1&0x00FF); h_Y_start=((y0&0xFF00)>>8); l_Y_start=(y0&0x00FF); h_Y_end=((y1&0xFF00)>>8); l_Y_end=(y1&0x00FF); #ifdef __LCM_WINDOW_CFG__ send_ctrl_cmd(0x2A00); send_data_cmd(h_X_start); send_ctrl_cmd(0x2A01); send_data_cmd(l_X_start); send_ctrl_cmd(0x2A02); send_data_cmd(h_X_end); send_ctrl_cmd(0x2A03); send_data_cmd(l_X_end); send_ctrl_cmd(0x2B00); send_data_cmd(h_Y_start); send_ctrl_cmd(0x2B01); send_data_cmd(l_Y_start); send_ctrl_cmd(0x2B02); send_data_cmd(h_Y_end); send_ctrl_cmd(0x2B03); send_data_cmd(l_Y_end); #else send_ctrl_cmd(0x2A00); send_data_cmd(h_X_start); send_data_cmd(l_X_start); send_data_cmd(h_X_end); send_data_cmd(l_X_end); send_ctrl_cmd(0x2B00); send_data_cmd(h_Y_start); send_data_cmd(l_Y_start); send_data_cmd(h_Y_end); send_data_cmd(l_Y_end); #endif //color=0x8410 ; // color=0xF800 ; //color=0xFFFF ; send_ctrl_cmd(0x2900); send_ctrl_cmd(0x2C00); for (y = y0; y <= y1; ++ y) { for (x = x0; x <= x1; ++ x) { lcm_util.send_data(color); } } }
static __inline unsigned short read_data_cmd(void) { return (unsigned short)(lcm_util.read_data()); }
static __inline void LCDSPI_InitDAT(unsigned char reg_Data) { lcm_util.send_data(reg_Data & 0xFF); }
// --------------------------------------------------------------------------- // 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 __inline void LCDSPI_InitCMD(unsigned char cmd) { lcm_util.send_cmd(cmd & 0xFF); }
static inline void set_lcm_gpio_mode(unsigned int GPIO, unsigned int mode) { lcm_util.set_gpio_mode(GPIO, mode); }
static inline void set_lcm_gpio_output_low(unsigned int GPIO) { lcm_util.set_gpio_mode(GPIO, GPIO_MODE_00); lcm_util.set_gpio_dir(GPIO, GPIO_DIR_OUT); lcm_util.set_gpio_out(GPIO, GPIO_OUT_ZERO); }
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(GPIO15, GPIO_MODE_00); lcm_util.set_gpio_dir(GPIO15, GPIO_DIR_OUT); lcm_util.set_gpio_out(GPIO15, 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(GPIO50, GPIO_MODE_00); lcm_util.set_gpio_dir(GPIO50, GPIO_DIR_OUT); lcm_util.set_gpio_out(GPIO50, GPIO_OUT_ONE); // LVDS_SHUTDOWN_N MDELAY(50); 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(120); // avoid LCD resume transint }
static __inline unsigned int read_data_cmd() { return lcm_util.read_data(); }
static __inline void send_data_cmd(unsigned int data) { lcm_util.send_data(0x0004 | data); }
static inline void send_data_cmd(unsigned int data) { lcm_util.send_data(data & 0xFF); }