@@ -260,6 +260,10 @@ static void setup_dma_cfg(struct tw686x_video_channel *vc)
reg_write(vc->dev, VIDEO_SIZE[vc->ch], (1 << 31) | (field_height << 16)
| field_width);
reg = reg_read(vc->dev, VIDEO_CONTROL1);
+ if (vc->video_standard & V4L2_STD_625_50)
+ reg |= 1 << (vc->ch + 13);
+ else
+ reg &= ~(1 << (vc->ch + 13));
reg_write(vc->dev, VIDEO_CONTROL1, reg);
}
@@ -569,8 +573,8 @@ static int video_thread(void *arg)
/* handle channel events */
if ((request & 0x01000000) |
- (reg_read(dev, VIDEO_FIFO_STATUS) & 0x01010001) |
- (reg_read(dev, VIDEO_PARSER_STATUS) & 0x00000101)) {
+ (reg_read(dev, VIDEO_FIFO_STATUS) & (0x01010001 << ch)) |
+ (reg_read(dev, VIDEO_PARSER_STATUS) & (0x00000101 << ch))) {
/* DMA Errors - reset channel */
u32 reg;
@@ -667,6 +671,7 @@ int tw686x_video_init(struct tw686x_dev *dev)
if (err)
return err;
+ reg_write(dev, VIDEO_CONTROL1, 0); /* NTSC, disable scaler */
reg_write(dev, PHASE_REF, 0x00001518); /* Scatter-gather DMA mode */
/* setup required SG table sizes */
> A driver for Intersil/Techwell TW686x-based PCIe frame grabbers. The v3 TW686x patch was missing a few small changes (attached). Will post complete v4 patch.