diff options
author | Robby Cai <robby.cai@nxp.com> | 2016-06-15 23:36:59 +0800 |
---|---|---|
committer | Robby Cai <robby.cai@nxp.com> | 2016-06-16 19:17:12 +0800 |
commit | 5a3631d58c2e3f64b0408484605d9e5984494bae (patch) | |
tree | 1ea40fa2e11037b6087d38c34b80f2d9582c06b8 /drivers/dma | |
parent | d8311b368c0b33ee016d680e7350f65c09e4c7de (diff) |
MLK-12908-2 damengine: pxp: fix the histogram setting for i.mx7d
the commit 1b98a9be39a37c2d3ad239c3a1a3a1af1d4ac637 breaks the setting for mx7d.
the patch fixes it.
Signed-off-by: Robby Cai <robby.cai@nxp.com>
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/pxp/pxp_dma_v3.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/drivers/dma/pxp/pxp_dma_v3.c b/drivers/dma/pxp/pxp_dma_v3.c index b6781070cbe4..07e4bfdd0a57 100644 --- a/drivers/dma/pxp/pxp_dma_v3.c +++ b/drivers/dma/pxp/pxp_dma_v3.c @@ -1989,6 +1989,8 @@ static enum dma_status pxp_tx_status(struct dma_chan *chan, static void pxp_data_path_config_v3p(struct pxps *pxp) { + u32 val = 0; + __raw_writel( BF_PXP_DATA_PATH_CTRL0_MUX15_SEL(0)| BF_PXP_DATA_PATH_CTRL0_MUX14_SEL(1)| @@ -2012,9 +2014,13 @@ static void pxp_data_path_config_v3p(struct pxps *pxp) * MUX17: HIST_B as histogram: 0: output buffer, 1: wfe_store * MUX16: HIST_A as collision: 0: output buffer, 1: wfe_store */ - __raw_writel(BF_PXP_DATA_PATH_CTRL1_MUX17_SEL(1)| - BF_PXP_DATA_PATH_CTRL1_MUX16_SEL(1), - pxp->base + HW_PXP_DATA_PATH_CTRL1); + if (pxp_is_v3(pxp)) + val = BF_PXP_DATA_PATH_CTRL1_MUX17_SEL(1)| + BF_PXP_DATA_PATH_CTRL1_MUX16_SEL(0); + else if (pxp_is_v3p(pxp)) + val = BF_PXP_DATA_PATH_CTRL1_MUX17_SEL(1)| + BF_PXP_DATA_PATH_CTRL1_MUX16_SEL(1); + __raw_writel(val, pxp->base + HW_PXP_DATA_PATH_CTRL1); } static void pxp_soft_reset(struct pxps *pxp) @@ -4065,15 +4071,22 @@ static void pxp_histogram_enable(struct pxps *pxp, unsigned int width, unsigned int height) { + u32 val = 0; + __raw_writel( BF_PXP_HIST_B_BUF_SIZE_HEIGHT(height)| BF_PXP_HIST_B_BUF_SIZE_WIDTH(width), pxp->base + HW_PXP_HIST_B_BUF_SIZE); + if (pxp_is_v3(pxp)) + val = 64; + else if (pxp_is_v3p(pxp)) + val = 64 + 4; + __raw_writel( BF_PXP_HIST_B_MASK_MASK_EN(1)| BF_PXP_HIST_B_MASK_MASK_MODE(0)| - BF_PXP_HIST_B_MASK_MASK_OFFSET(64+4)| + BF_PXP_HIST_B_MASK_MASK_OFFSET(val)| BF_PXP_HIST_B_MASK_MASK_WIDTH(0)| BF_PXP_HIST_B_MASK_MASK_VALUE0(1) | BF_PXP_HIST_B_MASK_MASK_VALUE1(0), @@ -4114,15 +4127,22 @@ static void pxp_collision_detection_enable(struct pxps *pxp, unsigned int width, unsigned int height) { + u32 val = 0; + __raw_writel( BF_PXP_HIST_A_BUF_SIZE_HEIGHT(height)| BF_PXP_HIST_A_BUF_SIZE_WIDTH(width), pxp_reg_base + HW_PXP_HIST_A_BUF_SIZE); + if (pxp_is_v3(pxp)) + val = 65; + else if (pxp_is_v3p(pxp)) + val = 65 + 4; + __raw_writel( BF_PXP_HIST_A_MASK_MASK_EN(1)| BF_PXP_HIST_A_MASK_MASK_MODE(0)| - BF_PXP_HIST_A_MASK_MASK_OFFSET(65+4)| + BF_PXP_HIST_A_MASK_MASK_OFFSET(val)| BF_PXP_HIST_A_MASK_MASK_WIDTH(0)| BF_PXP_HIST_A_MASK_MASK_VALUE0(1) | BF_PXP_HIST_A_MASK_MASK_VALUE1(0), |