diff --git a/drivers/video/ipu.h b/drivers/video/ipu.h
index 348be58bf6abaa729401d0db9744bdc0cf801c90..ff91d18868b4dd438436c0d7cf71250386262b20 100644
--- a/drivers/video/ipu.h
+++ b/drivers/video/ipu.h
@@ -253,6 +253,7 @@ struct clk *clk_get_parent(struct clk *clk);
 
 void ipu_dump_registers(void);
 int ipu_probe(void);
+bool ipu_clk_enabled(void);
 
 void ipu_dmfc_init(int dmfc_type, int first);
 void ipu_init_dc_mappings(void);
diff --git a/drivers/video/ipu_common.c b/drivers/video/ipu_common.c
index f8d4488fcef4a94483de9cd66920e23b1825d78a..f259fb9633212ba42b39d1efe5015fbcc5ac984d 100644
--- a/drivers/video/ipu_common.c
+++ b/drivers/video/ipu_common.c
@@ -1243,3 +1243,8 @@ int ipu_set_ldb_clock(int rate)
 
 	return 0;
 }
+
+bool ipu_clk_enabled(void)
+{
+	return g_ipu_clk_enabled;
+}
diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c
index 0d0a0a97ff43c0d3a720e2689da53de09c0f34d4..1ab5cb7b1c87c37a5d16030c38520c96c3c576d8 100644
--- a/drivers/video/mxc_ipuv3_fb.c
+++ b/drivers/video/mxc_ipuv3_fb.c
@@ -571,6 +571,9 @@ void ipuv3_fb_shutdown(void)
 	int i;
 	struct ipu_stat *stat = (struct ipu_stat *)IPU_STAT;
 
+	if (!ipu_clk_enabled())
+		return;
+
 	for (i = 0; i < ARRAY_SIZE(mxcfb_info); i++) {
 		struct fb_info *fbi = mxcfb_info[i];
 		if (fbi) {