diff options
author | Eric Nelson <eric.nelson@boundarydevices.com> | 2012-09-23 07:30:54 +0000 |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2012-09-24 10:48:19 +0200 |
commit | 5f8e17ce158894b46acb25b975c579fae2350523 (patch) | |
tree | 3148c340ae3d6b8c1c34c618e4084cfbc5da0ebf | |
parent | 5436eaeab9155633fd858e0a6b876d1077348d94 (diff) | |
download | u-boot-midas-5f8e17ce158894b46acb25b975c579fae2350523.tar.gz u-boot-midas-5f8e17ce158894b46acb25b975c579fae2350523.tar.bz2 u-boot-midas-5f8e17ce158894b46acb25b975c579fae2350523.zip |
i.MX: mxc_ipuv3_fb: add ipuv3_fb_shutdown() routine to stop IPU frame buffer
Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
Tested-by: Fabio Estevam <fabio.estevam@freescale.com>
-rw-r--r-- | drivers/video/mxc_ipuv3_fb.c | 20 | ||||
-rw-r--r-- | include/ipu_pixfmt.h | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c index c38e22de1f..47b336e7aa 100644 --- a/drivers/video/mxc_ipuv3_fb.c +++ b/drivers/video/mxc_ipuv3_fb.c @@ -38,6 +38,7 @@ #include "videomodes.h" #include "ipu.h" #include "mxcfb.h" +#include "ipu_regs.h" static int mxcfb_map_video_memory(struct fb_info *fbi); static int mxcfb_unmap_video_memory(struct fb_info *fbi); @@ -576,6 +577,25 @@ err0: return ret; } +void ipuv3_fb_shutdown(void) +{ + int i; + struct ipu_stat *stat = (struct ipu_stat *)IPU_STAT; + + for (i = 0; i < ARRAY_SIZE(mxcfb_info); i++) { + struct fb_info *fbi = mxcfb_info[i]; + if (fbi) { + struct mxcfb_info *mxc_fbi = fbi->par; + ipu_disable_channel(mxc_fbi->ipu_ch); + ipu_uninit_channel(mxc_fbi->ipu_ch); + } + } + for (i = 0; i < ARRAY_SIZE(stat->int_stat); i++) { + __raw_writel(__raw_readl(&stat->int_stat[i]), + &stat->int_stat[i]); + } +} + void *video_hw_init(void) { int ret; diff --git a/include/ipu_pixfmt.h b/include/ipu_pixfmt.h index 0019898d51..4baa71187d 100644 --- a/include/ipu_pixfmt.h +++ b/include/ipu_pixfmt.h @@ -77,5 +77,6 @@ #define IPU_PIX_FMT_YUV422P fourcc('4', '2', '2', 'P') /*< 16 YUV 4:2:2 */ int ipuv3_fb_init(struct fb_videomode *mode, uint8_t disp, uint32_t pixfmt); +void ipuv3_fb_shutdown(void); #endif |