MLK-19007-1: camera: add "QCIF, QVGA, NTSC, PAL, XGA, QSXGA" support
authorGuoniu.Zhou <guoniu.zhou@nxp.com>
Wed, 25 Jul 2018 02:46:00 +0000 (10:46 +0800)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
1. add resolution "QCIF, QVGA, NTSC, PAL, XGA, QSXGA" support for
parallel camera sensor driver

2. enable ISI channel line buffer chain when image having higher
than 2048 horizontal resolution

Signed-off-by: Guoniu.Zhou <guoniu.zhou@nxp.com>
Reviewed-by: Robby.Cai <robby.cai@nxp.com>
drivers/media/platform/imx8/mxc-isi-hw.c

index cfb3665..6ecfa7c 100644 (file)
@@ -104,6 +104,23 @@ static bool is_yuv(u32 pix_fmt)
        }
 }
 
+static void chain_buf(struct mxc_isi_dev *mxc_isi)
+{
+       struct mxc_isi_frame *src_f = &mxc_isi->isi_cap.src_f;
+       u32 val;
+
+       if (src_f->o_width > 2048) {
+               val = readl(mxc_isi->regs + CHNL_CTRL);
+               val &= ~CHNL_CTRL_CHAIN_BUF_MASK;
+               val |= (CHNL_CTRL_CHAIN_BUF_2_CHAIN << CHNL_CTRL_CHAIN_BUF_OFFSET);
+               writel(val, mxc_isi->regs + CHNL_CTRL);
+       } else if (!mxc_isi->chain_buf) {
+               val = readl(mxc_isi->regs + CHNL_CTRL);
+               val &= ~CHNL_CTRL_CHAIN_BUF_MASK;
+               writel(val, mxc_isi->regs + CHNL_CTRL);
+       }
+}
+
 void mxc_isi_channel_set_outbuf(struct mxc_isi_dev *mxc_isi, struct mxc_isi_buffer *buf)
 {
        struct vb2_buffer *vb2_buf = &buf->v4l2_buf.vb2_buf;
@@ -508,6 +525,9 @@ void mxc_isi_channel_config(struct mxc_isi_dev *mxc_isi)
        struct mxc_isi_frame *src_f = &mxc_isi->isi_cap.src_f;
        u32 val;
 
+       /* images having higher than 2048 horizontal resolution */
+       chain_buf(mxc_isi);
+
        /* config output frame size and format */
        val = src_f->o_width | (src_f->o_height << CHNL_IMG_CFG_HEIGHT_OFFSET);
        writel(val, mxc_isi->regs + CHNL_IMG_CFG);