diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2011-08-09 10:05:54 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-08-16 13:15:02 +0200 |
commit | b9da78f638630fc1288d3cb16a3555fd84999342 (patch) | |
tree | 02c4c9c9423ff3d7b8b152cfb9d61364cf551061 | |
parent | 73f957093e9f17fe5d62d772c1ad9ebd6faf1d58 (diff) | |
download | gst-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.c | 15 |
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); } |