提交 0d1ae97c 编写于 作者: A Anatolij Gustschin

video: ipuv3_fb: skip IPU shutdown if IPU was not enabled before

Boards can skip display interface init using board_video_skip().
If display interface was not initialized (e.g. no ipuv3 framebuffer
registered or IPU clock disabled), booting Linux stops due to the
crash in IPU shutdown function, when accessing IPU registers.
Check IPU clock and skip shutdown if clock is not enabled.
Signed-off-by: NAnatolij Gustschin <agust@denx.de>
上级 22aa21db
......@@ -13,6 +13,7 @@
#include <common.h>
#include <linux/errno.h>
#include <asm/arch/crm_regs.h>
#include <asm/global_data.h>
#include <linux/string.h>
#include <linux/list.h>
......@@ -568,8 +569,18 @@ err0:
void ipuv3_fb_shutdown(void)
{
int i;
struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
struct ipu_stat *stat = (struct ipu_stat *)IPU_STAT;
u32 reg;
int i;
/*
* Check if IPU clock was enabled before. Won't access
* IPU registers if clock is not enabled.
*/
reg = readl(&mxc_ccm->CCGR3);
if ((reg & MXC_CCM_CCGR3_IPU1_IPU_MASK) == 0)
return;
for (i = 0; i < ARRAY_SIZE(mxcfb_info); i++) {
struct fb_info *fbi = mxcfb_info[i];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册