From: "Daniel Glöckner" <daniel-gl@gmx.net>
To: Robert Longbottom <rongblor@googlemail.com>
Cc: "linux-media@vger.kernel.org" <linux-media@vger.kernel.org>
Subject: Re: Conexant PCI-8604PW 4 channel BNC Video capture card (bttv)
Date: Sat, 25 Jan 2014 16:23:40 +0100 [thread overview]
Message-ID: <20140125152339.GA18168@minime.bse> (raw)
In-Reply-To: <52E1273F.90207@googlemail.com>
[-- Attachment #1: Type: text/plain, Size: 1416 bytes --]
On Thu, Jan 23, 2014 at 02:29:19PM +0000, Robert Longbottom wrote:
> Jan 23 14:24:48 quad kernel: [154562.493224] bits: FMTCHG* VSYNC
> HSYNC OFLOW FBUS NUML => 625
> Jan 23 14:24:49 quad kernel: [154562.994015] bttv: 0: timeout:
> drop=0 irq=1868/1868, risc=146da000, bits: VSYNC HSYNC OFLOW
> Jan 23 14:24:49 quad kernel: [154563.496010] bttv: 0: timeout:
> drop=0 irq=1868/1868, risc=146da000, bits: VSYNC HSYNC OFLOW
> Jan 23 14:24:50 quad kernel: [154563.997020] bttv: 0: timeout:
> drop=0 irq=1868/1868, risc=146da000, bits: VSYNC HSYNC OFLOW
> Jan 23 14:24:50 quad kernel: [154564.498018] bttv: 0: timeout:
> drop=0 irq=1868/1868, risc=146da000, bits: VSYNC HSYNC OFLOW
> Jan 23 14:24:51 quad kernel: [154564.999023] bttv: 0: timeout:
> drop=0 irq=1868/1868, risc=146da000, bits: VSYNC HSYNC OFLOW
> Jan 23 14:24:51 quad kernel: [154565.500024] bttv: 0: timeout:
> drop=0 irq=1868/1868, risc=146da000, bits: VSYNC HSYNC OFLOW
> Jan 23 14:24:52 quad kernel: [154566.001014] bttv: 0: timeout:
> drop=0 irq=1868/1868, risc=146da000, bits: VSYNC HSYNC OFLOW
> Jan 23 14:24:52 quad kernel: [154566.502016] bttv: 0: timeout:
> drop=0 irq=1868/1868, risc=146da000, bits: VSYNC HSYNC OFLOW
The chip didn't lock to the input signal.
What kind of input are you feeding into the card?
Can you run the attached program while xawtv is running?
It will dump most of the registers of the bt8xx video function.
Daniel
[-- Attachment #2: dumpbt8xx.c --]
[-- Type: text/plain, Size: 4427 bytes --]
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static char path[100], *fname;
#define BT848 (1 << 0)
#define BT848A (1 << 1)
#define BT878 (1 << 2)
#define SINCE_BT878 BT878
#define SINCE_BT848A SINCE_BT878 | BT848A
#define SINCE_BT848 SINCE_BT848A | BT848
static const struct {
uint16_t offset;
uint16_t chips;
const char *name;
} regs[] = {
0x000, SINCE_BT848, "DSTATUS",
0x004, SINCE_BT848, "IFORM",
0x008, SINCE_BT848, "TDEC",
0x00C, SINCE_BT848, "E_CROP",
0x010, SINCE_BT848, "E_VDELAY_LO",
0x014, SINCE_BT848, "E_VACTIVE_LO",
0x018, SINCE_BT848, "E_HDELAY_LO",
0x01C, SINCE_BT848, "E_HACTIVE_LO",
0x020, SINCE_BT848, "E_HSCALE_HI",
0x024, SINCE_BT848, "E_HSCALE_LO",
0x028, SINCE_BT848, "BRIGHT",
0x02C, SINCE_BT848, "E_CONTROL",
0x030, SINCE_BT848, "CONTRAST_LO",
0x034, SINCE_BT848, "SAT_U_LO",
0x038, SINCE_BT848, "SAT_V_LO",
0x03C, SINCE_BT848, "HUE",
0x040, SINCE_BT848, "E_SCLOOP",
0x044, SINCE_BT848, "WC_UP",
0x048, SINCE_BT848, "OFORM",
0x04C, SINCE_BT848, "E_VSCALE_HI",
0x050, SINCE_BT848, "E_VSCALE_LO",
0x054, SINCE_BT848, "TEST",
0x058, SINCE_BT878, "ARESET",
0x060, SINCE_BT848, "ADELAY",
0x064, SINCE_BT848, "BDELAY",
0x068, SINCE_BT848, "ADC",
0x06C, SINCE_BT848, "E_VTC",
0x078, SINCE_BT848, "WC_DOWN",
0x080, SINCE_BT848A, "TGLB",
0x084, SINCE_BT848A, "TGCTRL",
0x08C, SINCE_BT848, "O_CROP",
0x090, SINCE_BT848, "O_VDELAY_LO",
0x094, SINCE_BT848, "O_VACTIVE_LO",
0x098, SINCE_BT848, "O_HDELAY_LO",
0x09C, SINCE_BT848, "O_HACTIVE_LO",
0x0A0, SINCE_BT848, "O_HSCALE_HI",
0x0A4, SINCE_BT848, "O_HSCALE_LO",
0x0AC, SINCE_BT848, "O_CONTROL",
0x0B0, SINCE_BT848, "VTOTAL_LO",
0x0B4, SINCE_BT848, "VTOTAL_HI",
0x0C0, SINCE_BT848, "O_SCLOOP",
0x0CC, SINCE_BT848, "O_VSCALE_HI",
0x0D0, SINCE_BT848, "O_VSCALE_LO",
0x0D4, SINCE_BT848, "COLOR_FMT",
0x0D8, SINCE_BT848, "COLOR_CTL",
0x0DC, SINCE_BT848, "CAP_CTL",
0x0E0, SINCE_BT848, "VBI_PACK_SIZE",
0x0E4, SINCE_BT848, "VBI_PACK_DEL",
0x0E8, SINCE_BT848A, "FCAP",
0x0EC, SINCE_BT848, "O_VTC",
0x0F0, SINCE_BT848A, "PLL_F_LO",
0x0F4, SINCE_BT848A, "PLL_F_HI",
0x0F8, SINCE_BT848A, "PLL_XCI",
0x0FC, SINCE_BT848A, "DVSIF",
0x100, SINCE_BT848, "INT_STAT",
0x104, SINCE_BT848, "INT_MASK",
0x10C, SINCE_BT848, "GPIO_DMA_CTL",
0x110, SINCE_BT848, "I2C",
0x114, SINCE_BT848, "RISC_STRT_ADD",
0x118, SINCE_BT848, "GPIO_OUT_EN",
0x11C, SINCE_BT848, "GPIO_REG_INP",
0x120, SINCE_BT848, "RISC_COUNT",
0x200, SINCE_BT848, "GPIO_DATA",
};
#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
static long get_attr(const char *attr)
{
char name[80], buf[20] = {0};
int fd;
strcpy(fname, attr);
fd = open(path, O_RDONLY);
if (fd == -1) {
perror("open");
return -1;
}
read(fd, buf, sizeof(buf) - 1);
close(fd);
return strtol(buf, NULL, 0);
}
static uint32_t get_config(unsigned int offset)
{
uint8_t buf[4];
ssize_t n;
int fd;
strcpy(fname, "config");
fd = open(path, O_RDONLY);
if (fd == -1) {
perror("open");
return 0;
}
n = pread(fd, buf, 4, offset);
close(fd);
if (n != 4) {
perror("pread");
return 0;
}
return (buf[3] << 24) + (buf[2] << 16) + (buf[1] << 8) + buf[0];
}
int main(int argc, char **argv)
{
int fd, i, chip;
uint32_t *p;
struct stat st;
if (argc != 2) {
fprintf(stderr, "%s /dev/videoX\n", argv[0]);
return 1;
}
if (stat(argv[1], &st)) {
perror("stat");
return 1;
}
if (!S_ISCHR(st.st_mode) || major(st.st_rdev) != 81) {
fprintf(stderr, "%s is not a video device\n", argv[1]);
return 1;
}
fname = path + sprintf(path, "/sys/dev/char/81:%i/device/", minor(st.st_rdev));
if (get_attr("vendor") != 0x109e) {
bad_chip:
fputs("Not a bt8xx device\n", stderr);
return 1;
}
switch (get_attr("device")) {
case 0x0350:
if ((get_config(8) & 0xff) == 0x12)
chip = BT848A;
else
chip = BT848;
break;
case 0x0351:
chip = BT848A;
break;
case 0x036e:
case 0x036f:
case 0x036c:
chip = BT878;
break;
default:
goto bad_chip;
}
strcpy(fname, "resource0");
fd = open(path, O_RDWR|O_SYNC);
if (fd == -1)
return 1;
p = mmap(NULL, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
if (p == MAP_FAILED)
return 1;
for (i = 0; i < ARRAY_SIZE(regs); i++) {
if (chip & regs[i].chips)
printf("%03X %08X %s\n", regs[i].offset,
p[regs[i].offset / 4], regs[i].name);
}
return 0;
}
next prev parent reply other threads:[~2014-01-25 15:23 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-20 21:39 Conexant PCI-8604PW 4 channel BNC Video capture card (bttv) Robert Longbottom
2014-01-20 22:55 ` Andy Walls
2014-01-21 9:27 ` Robert Longbottom
2014-01-21 10:19 ` Daniel Glöckner
2014-01-21 19:49 ` Robert Longbottom
2014-01-21 20:59 ` Robert Longbottom
2014-01-22 11:53 ` Daniel Glöckner
2014-01-22 13:09 ` Robert Longbottom
2014-01-22 13:50 ` Daniel Glöckner
2014-01-22 18:15 ` Robert Longbottom
2014-01-23 13:27 ` Daniel Glöckner
2014-01-23 14:29 ` Robert Longbottom
2014-01-25 15:23 ` Daniel Glöckner [this message]
2014-01-26 11:21 ` Robert Longbottom
2014-01-26 12:55 ` Daniel Glöckner
2014-01-26 16:23 ` Robert Longbottom
2014-01-27 3:20 ` Daniel Glöckner
2014-01-27 20:55 ` Robert Longbottom
2014-01-28 2:02 ` Daniel Glöckner
2014-02-05 13:16 ` Robert Longbottom
2014-02-11 13:38 ` Daniel Glöckner
2014-02-11 18:25 ` Robert Longbottom
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140125152339.GA18168@minime.bse \
--to=daniel-gl@gmx.net \
--cc=linux-media@vger.kernel.org \
--cc=rongblor@googlemail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox