summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2011-08-09 10:05:54 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2011-08-16 13:15:02 +0200
commitb9da78f638630fc1288d3cb16a3555fd84999342 (patch)
tree02c4c9c9423ff3d7b8b152cfb9d61364cf551061
parent73f957093e9f17fe5d62d772c1ad9ebd6faf1d58 (diff)
downloadgst-plugins-fsl-vpu-b9da78f638630fc1288d3cb16a3555fd84999342.tar.gz
gst-plugins-fsl-vpu-b9da78f638630fc1288d3cb16a3555fd84999342.tar.xz
kernel module: use iram in encoder
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--module/imx-vpu.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/module/imx-vpu.c b/module/imx-vpu.c
index cfb1fbd..9efe698 100644
--- a/module/imx-vpu.c
+++ b/module/imx-vpu.c
@@ -728,7 +728,7 @@ static int noinline vpu_enc_get_initial_info(struct vpu_instance *instance)
vpu_write(vpu, V1_BIT_SEARCH_RAM_BASE_ADDR, vpu->iram_phys);
} else {
vpu_write(vpu, V2_CMD_ENC_SEQ_SEARCH_BASE, vpu->iram_phys);
- vpu_write(vpu, V2_CMD_ENC_SEQ_SEARCH_SIZE, V2_IRAM_SIZE);
+ vpu_write(vpu, V2_CMD_ENC_SEQ_SEARCH_SIZE, 48 * 1024);
}
vpu_write(vpu, BIT_BUSY_FLAG, 0x1);
@@ -757,10 +757,10 @@ static int noinline vpu_enc_get_initial_info(struct vpu_instance *instance)
if (vpu->drvdata->version == 2) {
vpu_write(vpu, CMD_SET_FRAME_SOURCE_BUF_STRIDE,
ROUND_UP_8(instance->width));
- vpu_write(vpu, V2_CMD_SET_FRAME_AXI_BIT_ADDR, 0x0);
- vpu_write(vpu, V2_CMD_SET_FRAME_AXI_IPACDC_ADDR, 0x0);
- vpu_write(vpu, V2_CMD_SET_FRAME_AXI_DBKY_ADDR, 0x0);
- vpu_write(vpu, V2_CMD_SET_FRAME_AXI_DBKC_ADDR, 0x0);
+ vpu_write(vpu, V2_CMD_SET_FRAME_AXI_DBKY_ADDR, vpu->iram_phys + 48 * 1024);
+ vpu_write(vpu, V2_CMD_SET_FRAME_AXI_DBKC_ADDR, vpu->iram_phys + 53 * 1024);
+ vpu_write(vpu, V2_CMD_SET_FRAME_AXI_BIT_ADDR, vpu->iram_phys + 58 * 1024);
+ vpu_write(vpu, V2_CMD_SET_FRAME_AXI_IPACDC_ADDR, vpu->iram_phys + 68 * 1024);
vpu_write(vpu, V2_CMD_SET_FRAME_AXI_OVL_ADDR, 0x0);
}
@@ -949,6 +949,7 @@ static void noinline vpu_enc_start_frame(struct vpu_instance *instance)
int stridey = ROUND_UP_4(instance->width);
int ustride;
unsigned long u;
+ u32 val;
vpu_write(vpu, CMD_ENC_PIC_ROT_MODE, 0x10);
@@ -961,6 +962,8 @@ static void noinline vpu_enc_start_frame(struct vpu_instance *instance)
vpu_write(vpu, CMD_ENC_PIC_SRC_ADDR_CR, u + ustride * ROUND_UP_2(height) / 2);
vpu_write(vpu, CMD_ENC_PIC_OPTION, (0 << 5) | (0 << 1));
+ vpu_write(vpu, V2_BIT_AXI_SRAM_USE, 1 | (1<<7) | (1<<4) | (1<<11));
+
vpu_write(vpu, BIT_BUSY_FLAG, 0x1);
vpu_bit_issue_command(instance, PIC_RUN);
}
@@ -1003,6 +1006,8 @@ static void vpu_dec_start_frame(struct vpu_instance *instance)
vpu_write(vpu, CMD_DEC_PIC_OPTION, 1); /* Enable prescan */
vpu_write(vpu, CMD_DEC_PIC_SKIP_NUM, 0);
+ vpu_write(vpu, V2_BIT_AXI_SRAM_USE, 0);
+
vpu_write(vpu, BIT_BUSY_FLAG, 0x1);
vpu_bit_issue_command(instance, PIC_RUN);
}