diff options
author | Liu Ying <Ying.Liu@freescale.com> | 2015-06-10 16:50:58 +0800 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2015-09-17 09:23:39 -0500 |
commit | 9fa830d8e3c7e9e0f48543a9aa5ff5ef267c9410 (patch) | |
tree | f6b4d92ffef190f6c3491b5e44e3506b0234753f /drivers/mxc | |
parent | 76fcac9db9165a486e70847504e4b9711f6ccd10 (diff) |
MLK-11082 mxc IPUv3: common: Explicitly set IDMAC0/1/2/3 AXI ID for various SoCs
The IDMAC0/1/2/3 channels are real time channels for video input capture via
the SMFC0/1/2/3 channels respectively. These IDMAC channels should have high
priority in IPUv3(controlled by the register IDMAC_CH_PRI_1) to make sure
the capture channels may access memory whenever they want. Accordingly,
the AXI ID of the IDMAC channels should reflect it's high priority nature in
the fabric settings(controlled by IPUx_IDy_RD/WR_QoS fields) with a relatively
good QoS value. This patch explicitly sets IDMAC0/1/2/3 AXI ID for various
SoCs to match the fabric settings(programmed in machine layer or bootloader).
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
Diffstat (limited to 'drivers/mxc')
-rw-r--r-- | drivers/mxc/ipu3/ipu_common.c | 17 | ||||
-rw-r--r-- | drivers/mxc/ipu3/ipu_prv.h | 2 |
2 files changed, 11 insertions, 8 deletions
diff --git a/drivers/mxc/ipu3/ipu_common.c b/drivers/mxc/ipu3/ipu_common.c index a0ddb2194159..7a277567b08f 100644 --- a/drivers/mxc/ipu3/ipu_common.c +++ b/drivers/mxc/ipu3/ipu_common.c @@ -307,7 +307,7 @@ struct ipu_devtype { struct ipu_platform_type { struct ipu_devtype devtype; - unsigned int ch0_axi; + unsigned int ch0123_axi; unsigned int ch23_axi; unsigned int ch27_axi; unsigned int ch28_axi; @@ -340,7 +340,7 @@ static struct ipu_platform_type ipu_type_imx51 = { .type = IPUv3EX, .idmac_used_bufs_present = false, }, - .ch0_axi = 1, + .ch0123_axi = 1, .ch23_axi = 1, .ch23_axi = 1, .ch27_axi = 1, @@ -370,7 +370,7 @@ static struct ipu_platform_type ipu_type_imx53 = { .type = IPUv3M, .idmac_used_bufs_present = true, }, - .ch0_axi = 1, + .ch0123_axi = 1, .ch23_axi = 1, .ch27_axi = 1, .ch28_axi = 1, @@ -401,7 +401,7 @@ static struct ipu_platform_type ipu_type_imx6q = { .type = IPUv3H, .idmac_used_bufs_present = true, }, - .ch0_axi = 0, + .ch0123_axi = 0, .ch23_axi = 0, .ch27_axi = 0, .ch28_axi = 0, @@ -432,7 +432,7 @@ static struct ipu_platform_type ipu_type_imx6qp = { .type = IPUv3H, .idmac_used_bufs_present = true, }, - .ch0_axi = 0, + .ch0123_axi = 0, .ch23_axi = 0, .ch27_axi = 2, .ch28_axi = 3, @@ -495,7 +495,7 @@ static int ipu_probe(struct platform_device *pdev) ipu->dev = &pdev->dev; ipu->id = id; ipu->devtype = devtype->type; - ipu->ch0_axi = iputype->ch0_axi; + ipu->ch0123_axi = iputype->ch0123_axi; ipu->ch23_axi = iputype->ch23_axi; ipu->ch27_axi = iputype->ch27_axi; ipu->ch28_axi = iputype->ch28_axi; @@ -1501,7 +1501,10 @@ int32_t ipu_init_channel_buffer(struct ipu_soc *ipu, ipu_channel_t channel, switch (dma_chan) { case 0: - _ipu_ch_param_set_axi_id(ipu, dma_chan, ipu->ch0_axi); + case 1: + case 2: + case 3: + _ipu_ch_param_set_axi_id(ipu, dma_chan, ipu->ch0123_axi); break; case 23: _ipu_ch_param_set_axi_id(ipu, dma_chan, ipu->ch23_axi); diff --git a/drivers/mxc/ipu3/ipu_prv.h b/drivers/mxc/ipu3/ipu_prv.h index 130d81102a39..0a77b580d6a1 100644 --- a/drivers/mxc/ipu3/ipu_prv.h +++ b/drivers/mxc/ipu3/ipu_prv.h @@ -143,7 +143,7 @@ struct ipu_soc { */ bool bypass_reset; - unsigned int ch0_axi; + unsigned int ch0123_axi; unsigned int ch23_axi; unsigned int ch27_axi; unsigned int ch28_axi; |