RK628D is a good chip with high cost performance, but unfortunately there is no official open information. I used what I could find on the Internet to design an evaluation board and extract the corresponding driver from the Linux kernel.
External MCU: CH582M
PCB board BUG: There is no 3213 packaged 32MHz crystal oscillator, so I found a 3225 crystal oscillator and installed it diagonally.
The LCD driver uses TPS65142. There may be some deviations in my understanding of this chip during the design. There is a problem with the output. The final voltage did not reach the recommended value in the screen specification.
It is recommended to switch to the LCD LED power supply + LCD positive and negative power supplies that are separated.

Screen: LQ055T3SX02Z. The initialization sequence of the 1920*1080

screen is set in panel.c, and the display parameters of the screen are set in rk628_config.c.
If you replace the microcontroller, the interface list that needs to be provided:
void rk628_delay_us(int us);void rk628_delay_ms(int ms);
int64_t rk628_gettime_us();
void rk628_set_RST_pin(int val);int rk628_get_DET_pin_level();
// To set scheduled tasks, you can use timing implement. A simple scheduled task management
void rk628_schedule_timer(void (*timer_cb)(), int time_us); void rk628_schedule_timer_interrupt(void (*timer_cb)(), int time_us);
void rk628_enable_INT_interrupt(void (*pin_cb) is written in the rk628_interface.c code )(), uint8_t type);void rk628_enable_DET_interrupt(void (*pin_cb)(), uint8_t type);
// The rk628 structure pointer is not used int rk628_i2c_write(struct rk628 *rk628, u32 reg, u32 value); int rk628_i2c_read( struct rk628 *rk628, u32 reg, u32 *value);
// This does not need to be changed int rk628_i2c_update_bits(struct rk628 *rk628, u32 reg, u32 mask, u32 val);
void dbg_print(char *fmt, ...);