summaryrefslogtreecommitdiff
path: root/linux/drivers/media/common/saa7146_hlp.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux/drivers/media/common/saa7146_hlp.c')
-rw-r--r--linux/drivers/media/common/saa7146_hlp.c64
1 files changed, 33 insertions, 31 deletions
diff --git a/linux/drivers/media/common/saa7146_hlp.c b/linux/drivers/media/common/saa7146_hlp.c
index cc7180954..1ba897b6f 100644
--- a/linux/drivers/media/common/saa7146_hlp.c
+++ b/linux/drivers/media/common/saa7146_hlp.c
@@ -356,7 +356,7 @@ void calculate_clipping_registers_rect(struct saa7146_dev *dev, struct saa7146_f
struct saa7146_video_dma *vdma2, u32* clip_format, u32* arbtr_ctrl, enum v4l2_field field)
{
struct saa7146_vv *vv = dev->vv_data;
- u32 *clipping = vv->clipping;
+ u32 *clipping = vv->d_clipping.cpu_addr;
int width = fh->ov.win.w.width;
int height = fh->ov.win.w.height;
@@ -465,9 +465,9 @@ void calculate_clipping_registers_rect(struct saa7146_dev *dev, struct saa7146_f
*arbtr_ctrl &= 0xffff00ff;
*arbtr_ctrl |= 0x00001c00;
- vdma2->base_even = virt_to_bus(clipping);
- vdma2->base_odd = virt_to_bus(clipping);
- vdma2->prot_addr = virt_to_bus(clipping)+((sizeof(u32))*(numdwords));
+ vdma2->base_even = vv->d_clipping.dma_handle;
+ vdma2->base_odd = vv->d_clipping.dma_handle;
+ vdma2->prot_addr = vv->d_clipping.dma_handle+((sizeof(u32))*(numdwords));
vdma2->base_page = 0x04;
vdma2->pitch = 0x00;
vdma2->num_line_byte = (0 << 16 | (sizeof(u32))*(numdwords-1) );
@@ -949,6 +949,8 @@ int calculate_video_dma_grab_planar(struct saa7146_dev* dev, struct saa7146_buf
return 0;
}
+#define WRITE_RPS0(x) dev->d_rps0.cpu_addr[ count++ ] = cpu_to_le32(x)
+
static
void program_capture_engine(struct saa7146_dev *dev, int planar)
{
@@ -968,54 +970,54 @@ void program_capture_engine(struct saa7146_dev *dev, int planar)
count = 0;
/* wait for o_fid_a/b / e_fid_a/b toggle only if bit 0 is not set*/
- dev->rps0[ count++ ] = CMD_PAUSE | CMD_OAN | CMD_SIG0 | e_wait;
- dev->rps0[ count++ ] = CMD_PAUSE | CMD_OAN | CMD_SIG0 | o_wait;
+ WRITE_RPS0(CMD_PAUSE | CMD_OAN | CMD_SIG0 | e_wait);
+ WRITE_RPS0(CMD_PAUSE | CMD_OAN | CMD_SIG0 | o_wait);
/* set bit 0 */
- dev->rps0[ count++ ] = CMD_WR_REG | (1 << 8) | (MC2/4);
- dev->rps0[ count++ ] = MASK_27 | MASK_11;
+ WRITE_RPS0(CMD_WR_REG | (1 << 8) | (MC2/4));
+ WRITE_RPS0(MASK_27 | MASK_11);
/* turn on video-dma1 */
- dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4);
- dev->rps0[ count++ ] = MASK_06 | MASK_22; /* => mask */
- dev->rps0[ count++ ] = MASK_06 | MASK_22; /* => values */
+ WRITE_RPS0(CMD_WR_REG_MASK | (MC1/4));
+ WRITE_RPS0(MASK_06 | MASK_22); /* => mask */
+ WRITE_RPS0(MASK_06 | MASK_22); /* => values */
if( 0 != planar ) {
/* turn on video-dma2 */
- dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4);
- dev->rps0[ count++ ] = MASK_05 | MASK_21; /* => mask */
- dev->rps0[ count++ ] = MASK_05 | MASK_21; /* => values */
+ WRITE_RPS0(CMD_WR_REG_MASK | (MC1/4));
+ WRITE_RPS0(MASK_05 | MASK_21); /* => mask */
+ WRITE_RPS0(MASK_05 | MASK_21); /* => values */
/* turn on video-dma3 */
- dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4);
- dev->rps0[ count++ ] = MASK_04 | MASK_20; /* => mask */
- dev->rps0[ count++ ] = MASK_04 | MASK_20; /* => values */
+ WRITE_RPS0(CMD_WR_REG_MASK | (MC1/4));
+ WRITE_RPS0(MASK_04 | MASK_20); /* => mask */
+ WRITE_RPS0(MASK_04 | MASK_20); /* => values */
}
/* wait for o_fid_a/b / e_fid_a/b toggle */
- dev->rps0[ count++ ] = CMD_PAUSE | e_wait;
- dev->rps0[ count++ ] = CMD_PAUSE | o_wait;
+ WRITE_RPS0(CMD_PAUSE | e_wait);
+ WRITE_RPS0(CMD_PAUSE | o_wait);
/* turn off video-dma1 */
- dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4);
- dev->rps0[ count++ ] = MASK_22 | MASK_06; /* => mask */
- dev->rps0[ count++ ] = MASK_22; /* => values */
+ WRITE_RPS0(CMD_WR_REG_MASK | (MC1/4));
+ WRITE_RPS0(MASK_22 | MASK_06); /* => mask */
+ WRITE_RPS0(MASK_22); /* => values */
if( 0 != planar ) {
/* turn off video-dma2 */
- dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4);
- dev->rps0[ count++ ] = MASK_05 | MASK_21; /* => mask */
- dev->rps0[ count++ ] = MASK_21; /* => values */
+ WRITE_RPS0(CMD_WR_REG_MASK | (MC1/4));
+ WRITE_RPS0(MASK_05 | MASK_21); /* => mask */
+ WRITE_RPS0(MASK_21); /* => values */
/* turn off video-dma3 */
- dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4);
- dev->rps0[ count++ ] = MASK_04 | MASK_20; /* => mask */
- dev->rps0[ count++ ] = MASK_20; /* => values */
+ WRITE_RPS0(CMD_WR_REG_MASK | (MC1/4));
+ WRITE_RPS0(MASK_04 | MASK_20); /* => mask */
+ WRITE_RPS0(MASK_20); /* => values */
}
/* generate interrupt */
- dev->rps0[ count++ ] = CMD_INTERRUPT;
+ WRITE_RPS0(CMD_INTERRUPT);
/* stop */
- dev->rps0[ count++ ] = CMD_STOP;
+ WRITE_RPS0(CMD_STOP);
}
void saa7146_set_capture(struct saa7146_dev *dev, struct saa7146_buf *buf, struct saa7146_buf *next)
@@ -1037,7 +1039,7 @@ void saa7146_set_capture(struct saa7146_dev *dev, struct saa7146_buf *buf, struc
}
/* write the address of the rps-program */
- saa7146_write(dev, RPS_ADDR0, virt_to_bus(&dev->rps0[ 0]));
+ saa7146_write(dev, RPS_ADDR0, dev->d_rps0.dma_handle);
/* turn on rps */
saa7146_write(dev, MC1, (MASK_12 | MASK_28));