summaryrefslogtreecommitdiff
path: root/drivers/mxc
diff options
context:
space:
mode:
authorLiu Ying <Ying.Liu@freescale.com>2015-06-10 16:50:58 +0800
committerNitin Garg <nitin.garg@freescale.com>2015-09-17 09:23:39 -0500
commit9fa830d8e3c7e9e0f48543a9aa5ff5ef267c9410 (patch)
treef6b4d92ffef190f6c3491b5e44e3506b0234753f /drivers/mxc
parent76fcac9db9165a486e70847504e4b9711f6ccd10 (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.c17
-rw-r--r--drivers/mxc/ipu3/ipu_prv.h2
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;