summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--v4l2-apps/util/v4l2-dbg-tvp5150.h97
-rw-r--r--v4l2-apps/util/v4l2-dbg.cpp21
2 files changed, 117 insertions, 1 deletions
diff --git a/v4l2-apps/util/v4l2-dbg-tvp5150.h b/v4l2-apps/util/v4l2-dbg-tvp5150.h
new file mode 100644
index 000000000..ed5793b72
--- /dev/null
+++ b/v4l2-apps/util/v4l2-dbg-tvp5150.h
@@ -0,0 +1,97 @@
+/*
+ Copyright (C) 2008 Mauro Carvalho Chehab <mchehab@infradead.org>
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "v4l2-dbg.h"
+
+#define TVP5150_IDENT "tvp5150"
+
+/* Register name prefix */
+#define TVP5150_PREFIX "TVP5150_"
+
+static struct board_regs tvp5150_regs[] = {
+ {0x00, TVP5150_PREFIX "VD_IN_SRC_SEL_1", 1},
+ {0x01, TVP5150_PREFIX "ANAL_CHL_CTL", 1},
+ {0x02, TVP5150_PREFIX "OP_MODE_CTL", 1},
+ {0x03, TVP5150_PREFIX "MISC_CTL", 1},
+ {0x04, TVP5150_PREFIX "AUTOSW_MSK", 1},
+ {0x06, TVP5150_PREFIX "COLOR_KIL_THSH_CTL", 1},
+ {0x07, TVP5150_PREFIX "LUMA_PROC_CTL_1", 1},
+ {0x08, TVP5150_PREFIX "LUMA_PROC_CTL_2", 1},
+ {0x09, TVP5150_PREFIX "BRIGHT_CTL", 1},
+ {0x0a, TVP5150_PREFIX "SATURATION_CTL", 1},
+ {0x0b, TVP5150_PREFIX "HUE_CTL", 1},
+ {0x0c, TVP5150_PREFIX "CONTRAST_CTL", 1},
+ {0x0d, TVP5150_PREFIX "DATA_RATE_SEL", 1},
+ {0x0e, TVP5150_PREFIX "LUMA_PROC_CTL_3", 1},
+ {0x0f, TVP5150_PREFIX "CONF_SHARED_PIN", 1},
+ {0x11, TVP5150_PREFIX "ACT_VD_CROP_ST_MSB", 1},
+ {0x12, TVP5150_PREFIX "ACT_VD_CROP_ST_LSB", 1},
+ {0x13, TVP5150_PREFIX "ACT_VD_CROP_STP_MSB", 1},
+ {0x14, TVP5150_PREFIX "ACT_VD_CROP_STP_LSB", 1},
+ {0x15, TVP5150_PREFIX "GENLOCK", 1},
+ {0x16, TVP5150_PREFIX "HORIZ_SYNC_START", 1},
+ {0x18, TVP5150_PREFIX "VERT_BLANKING_START", 1},
+ {0x19, TVP5150_PREFIX "VERT_BLANKING_STOP", 1},
+ {0x1a, TVP5150_PREFIX "CHROMA_PROC_CTL_1", 1},
+ {0x1b, TVP5150_PREFIX "CHROMA_PROC_CTL_2", 1},
+ {0x1c, TVP5150_PREFIX "INT_RESET_REG_B", 1},
+ {0x1d, TVP5150_PREFIX "INT_ENABLE_REG_B", 1},
+ {0x1e, TVP5150_PREFIX "INTT_CONFIG_REG_B", 1},
+ {0x28, TVP5150_PREFIX "VIDEO_STD", 1},
+ {0x2c, TVP5150_PREFIX "CB_GAIN_FACT", 1},
+ {0x2d, TVP5150_PREFIX "CR_GAIN_FACTOR", 1},
+ {0x2e, TVP5150_PREFIX "MACROVISION_ON_CTR", 1},
+ {0x2f, TVP5150_PREFIX "MACROVISION_OFF_CTR", 1},
+ {0x30, TVP5150_PREFIX "REV_SELECT", 1},
+ {0x80, TVP5150_PREFIX "MSB_DEV_ID", 1},
+ {0x81, TVP5150_PREFIX "LSB_DEV_ID", 1},
+ {0x82, TVP5150_PREFIX "ROM_MAJOR_VER", 1},
+ {0x83, TVP5150_PREFIX "ROM_MINOR_VER", 1},
+ {0x84, TVP5150_PREFIX "VERT_LN_COUNT_MSB", 1},
+ {0x85, TVP5150_PREFIX "VERT_LN_COUNT_LSB", 1},
+ {0x86, TVP5150_PREFIX "INT_STATUS_REG_B", 1},
+ {0x87, TVP5150_PREFIX "INT_ACTIVE_REG_B", 1},
+ {0x88, TVP5150_PREFIX "STATUS_REG_1", 1},
+ {0x89, TVP5150_PREFIX "STATUS_REG_2", 1},
+ {0x8a, TVP5150_PREFIX "STATUS_REG_3", 1},
+ {0x8b, TVP5150_PREFIX "STATUS_REG_4", 1},
+ {0x8c, TVP5150_PREFIX "STATUS_REG_5", 1},
+ {0x90, TVP5150_PREFIX "CC_DATA", 4},
+ {0x94, TVP5150_PREFIX "WSS_DATA", 6},
+ {0x9a, TVP5150_PREFIX "VPS_DATA", 13},
+ {0xa7, TVP5150_PREFIX "VITC_DATA", 9},
+ {0xb0, TVP5150_PREFIX "VBI_FIFO_READ_DATA", 1},
+ {0xb1, TVP5150_PREFIX "TELETEXT_FIL1", 5},
+ {0xb6, TVP5150_PREFIX "TELETEXT_FIL2", 5},
+ {0xbb, TVP5150_PREFIX "TELETEXT_FIL_ENA", 1},
+ {0xc0, TVP5150_PREFIX "INT_STATUS_REG_A", 1},
+ {0xc1, TVP5150_PREFIX "INT_ENABLE_REG_A", 1},
+ {0xc2, TVP5150_PREFIX "INT_CONF", 1},
+ {0xc3, TVP5150_PREFIX "VDP_CONF_RAM_DATA", 1},
+ {0xc4, TVP5150_PREFIX "CONF_RAM_ADDR_LOW", 1},
+ {0xc5, TVP5150_PREFIX "CONF_RAM_ADDR_HIGH", 1},
+ {0xc6, TVP5150_PREFIX "VDP_STATUS_REG", 1},
+ {0xc7, TVP5150_PREFIX "FIFO_WORD_COUNT", 1},
+ {0xc8, TVP5150_PREFIX "FIFO_INT_THRESHOLD", 1},
+ {0xc9, TVP5150_PREFIX "FIFO_RESET", 1},
+ {0xca, TVP5150_PREFIX "LINE_NUMBER_INT", 1},
+ {0xcb, TVP5150_PREFIX "PIX_ALIGN_REG_LOW", 1},
+ {0xcc, TVP5150_PREFIX "PIX_ALIGN_REG_HIGH", 1},
+ {0xcd, TVP5150_PREFIX "FIFO_OUT_CTRL", 1},
+ {0xcf, TVP5150_PREFIX "FULL_FIELD_ENA", 1},
+ {0xd0, TVP5150_PREFIX "LINE_MODE", 43},
+ {0xfc, TVP5150_PREFIX "FULL_FIELD_MODE_REG", 1},
+};
diff --git a/v4l2-apps/util/v4l2-dbg.cpp b/v4l2-apps/util/v4l2-dbg.cpp
index c7ef1206b..577c8585e 100644
--- a/v4l2-apps/util/v4l2-dbg.cpp
+++ b/v4l2-apps/util/v4l2-dbg.cpp
@@ -46,6 +46,7 @@
#include "v4l2-dbg-saa7134.h"
#include "v4l2-dbg-em28xx.h"
#include "v4l2-dbg-ac97.h"
+#include "v4l2-dbg-tvp5150.h"
#define ARRAY_SIZE(arr) ((int)(sizeof(arr) / sizeof((arr)[0])))
@@ -92,6 +93,14 @@ static const struct board_list boards[] = {
em28xx_alt_regs,
ARRAY_SIZE(em28xx_alt_regs),
},
+ { /* From tvp5150-dbg.h */
+ TVP5150_IDENT,
+ sizeof(TVP5150_PREFIX) - 1,
+ tvp5150_regs,
+ ARRAY_SIZE(tvp5150_regs),
+ NULL,
+ 0,
+ },
};
struct driverid {
@@ -406,6 +415,7 @@ int main(int argc, char **argv)
std::vector<std::string> get_regs;
int match_type = V4L2_CHIP_MATCH_HOST;
int match_chip = 0;
+ char driver[255];
memset(&set_reg, 0, sizeof(set_reg));
memset(&get_reg, 0, sizeof(get_reg));
@@ -464,6 +474,7 @@ int main(int argc, char **argv)
break;
}
match_type = V4L2_CHIP_MATCH_I2C_DRIVER;
+ strcpy(driver, optarg);
match_chip = parse_chip(optarg);
if (!match_chip) {
fprintf(stderr, "unknown driver ID %s\n", optarg);
@@ -549,13 +560,20 @@ int main(int argc, char **argv)
if (match_type == V4L2_CHIP_MATCH_AC97) {
curr_bd = &boards[AC97_BOARD];
- } else {
+ } else if (match_type == V4L2_CHIP_MATCH_HOST) {
for (int board = ARRAY_SIZE(boards) - 1; board >= 0; board--) {
if (!strcasecmp((char *)vcap.driver, boards[board].name)) {
curr_bd = &boards[board];
break;
}
}
+ } else if (match_type == V4L2_CHIP_MATCH_I2C_DRIVER) {
+ for (int board = ARRAY_SIZE(boards) - 1; board >= 0; board--) {
+ if (!strcasecmp(driver, boards[board].name)) {
+ curr_bd = &boards[board];
+ break;
+ }
+ }
}
/* Set options */
@@ -651,6 +669,7 @@ int main(int argc, char **argv)
get_reg.match_type = match_type;
get_reg.match_chip = match_chip;
+
if (forcedstride) {
stride = forcedstride;
} else {