diff --git a/board/boundary/nitrogen8m_som/lcdif.c b/board/boundary/nitrogen8m_som/lcdif.c index 71c1657f95f07c545996413668da263165f00243..77f13ca3cfe0e833eee4d1f5e49d3c991e13d7a8 100644 --- a/board/boundary/nitrogen8m_som/lcdif.c +++ b/board/boundary/nitrogen8m_som/lcdif.c @@ -984,3 +984,15 @@ out: printf("lcdif: video_hw_init(): %s\n", err); return NULL; } + +void +video_hw_exit(void) +{ + lcdifreset(); + + mr(resetc, SRC_MIPIPHY_RCR, 0, RCR_MIPI_DSI_RESET_N); + mr(resetc, SRC_MIPIPHY_RCR, 0, RCR_MIPI_DSI_PCLK_RESET_N); + mr(resetc, SRC_MIPIPHY_RCR, 0, RCR_MIPI_DSI_ESC_RESET_N); + mr(resetc, SRC_MIPIPHY_RCR, 0, RCR_MIPI_DSI_RESET_BYTE_N); + mr(resetc, SRC_MIPIPHY_RCR, 0, RCR_MIPI_DSI_DPI_RESET_N); +} diff --git a/board/boundary/nitrogen8m_som/nitrogen8m_som.c b/board/boundary/nitrogen8m_som/nitrogen8m_som.c index ae0fbe906f392ae74a5bf7ccdee1df93d3d591a6..c2373707f4030f4ac0637684e1d8b6dcefad49ad 100644 --- a/board/boundary/nitrogen8m_som/nitrogen8m_som.c +++ b/board/boundary/nitrogen8m_som/nitrogen8m_som.c @@ -391,3 +391,20 @@ int board_late_init(void) return 0; } + +void +board_quiesce_devices(void) +{ + extern void video_hw_exit(void); /* lcdif.c */ + + /* + * Linux kermel mode setting seems to fail to + * properly reset the mipi core, causing the + * screen to be shifted to the right. + * + * As a work around, we reset the lcdif and + * mipi core for it. + */ + if (images.os.os == IH_OS_LINUX) + video_hw_exit(); +}