_ipu_ch_param_set_burst_size(dma_chan, 8);
_ipu_ch_param_set_block_mode(dma_chan);
} else if (_ipu_is_dmfc_chan(dma_chan)) {
- u32 dmfc_dp_chan, dmfc_wr_chan;
- /*
- * non-interleaving format need enlarge burst size
- * to work-around black flash issue.
- */
- if (((dma_chan == 23) || (dma_chan == 27) || (dma_chan == 28))
- && ((pixel_fmt == IPU_PIX_FMT_YUV420P) ||
- (pixel_fmt == IPU_PIX_FMT_YVU420P) ||
- (pixel_fmt == IPU_PIX_FMT_YUV420P2) ||
- (pixel_fmt == IPU_PIX_FMT_YVU422P) ||
- (pixel_fmt == IPU_PIX_FMT_YUV422P) ||
- (pixel_fmt == IPU_PIX_FMT_NV12))) {
- if (dma_chan == 23) {
- dmfc_dp_chan = __raw_readl(DMFC_DP_CHAN);
- dmfc_dp_chan &= ~(0xc0);
- dmfc_dp_chan |= 0x40;
- __raw_writel(dmfc_dp_chan, DMFC_DP_CHAN);
- } else if (dma_chan == 27) {
- dmfc_dp_chan = __raw_readl(DMFC_DP_CHAN);
- dmfc_dp_chan &= ~(0xc000);
- dmfc_dp_chan |= 0x4000;
- __raw_writel(dmfc_dp_chan, DMFC_DP_CHAN);
- } else if (dma_chan == 28) {
- dmfc_wr_chan = __raw_readl(DMFC_WR_CHAN);
- dmfc_wr_chan &= ~(0xc0);
- dmfc_wr_chan |= 0x40;
- __raw_writel(dmfc_wr_chan, DMFC_WR_CHAN);
- }
- _ipu_ch_param_set_burst_size(dma_chan, 64);
- } else {
- if (dma_chan == 23) {
- dmfc_dp_chan = __raw_readl(DMFC_DP_CHAN);
- dmfc_dp_chan &= ~(0xc0);
- dmfc_dp_chan |= 0x80;
- __raw_writel(dmfc_dp_chan, DMFC_DP_CHAN);
- } else if (dma_chan == 27) {
- dmfc_dp_chan = __raw_readl(DMFC_DP_CHAN);
- dmfc_dp_chan &= ~(0xc000);
- dmfc_dp_chan |= 0x8000;
- __raw_writel(dmfc_dp_chan, DMFC_DP_CHAN);
- } else {
- dmfc_wr_chan = __raw_readl(DMFC_WR_CHAN);
- dmfc_wr_chan &= ~(0xc0);
- dmfc_wr_chan |= 0x80;
- __raw_writel(dmfc_wr_chan, DMFC_WR_CHAN);
- }
- }
spin_lock_irqsave(&ipu_lock, lock_flags);
_ipu_dmfc_set_wait4eot(dma_chan, width);
spin_unlock_irqrestore(&ipu_lock, lock_flags);
* 1C, 2C and 6B, 6F unused;
*/
printk(KERN_INFO "IPU DMFC DC HIGH RESOLUTION: 1(0~3), 5B(4,5), 5F(6,7)\n");
- dmfc_wr_chan = 0x00000088;
- dmfc_dp_chan = 0x00009694;
+ dmfc_wr_chan = 0x00000008;
+ dmfc_dp_chan = 0x00001614;
dmfc_size_28 = 256*4;
dmfc_size_29 = 0;
dmfc_size_24 = 0;
* 1C, 2C and 6B, 6F unused;
*/
printk(KERN_INFO "IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)\n");
- dmfc_wr_chan = 0x00000090;
- dmfc_dp_chan = 0x0000968a;
+ dmfc_wr_chan = 0x00000010;
+ dmfc_dp_chan = 0x0000160a;
dmfc_size_28 = 128*4;
dmfc_size_29 = 0;
dmfc_size_24 = 0;
*/
printk(KERN_INFO "IPU DMFC ONLY-DP HIGH RESOLUTION: 5B(0~3), 5F(4~7)\n");
dmfc_wr_chan = 0x00000000;
- dmfc_dp_chan = 0x00008c88;
+ dmfc_dp_chan = 0x00000c08;
dmfc_size_28 = 0;
dmfc_size_29 = 0;
dmfc_size_24 = 0;
* 1C, 2C and 6B, 6F unused;
*/
printk(KERN_INFO "IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)\n");
- dmfc_wr_chan = 0x00000090;
- dmfc_dp_chan = 0x00009694;
+ dmfc_wr_chan = 0x00000010;
+ dmfc_dp_chan = 0x00001614;
dmfc_size_28 = 128*4;
dmfc_size_29 = 0;
dmfc_size_24 = 0;
case IPU_PIX_FMT_RGB565:
ipu_ch_param_set_field(¶ms, 0, 107, 3, 3); /* bits/pixel */
ipu_ch_param_set_field(¶ms, 1, 85, 4, 7); /* pix format */
- ipu_ch_param_set_field(¶ms, 1, 78, 7, 15); /* burst size */
+ ipu_ch_param_set_field(¶ms, 1, 78, 7, 31); /* burst size */
_ipu_ch_params_set_packing(¶ms, 5, 0, 6, 5, 5, 11, 8, 16);
break;