diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2007-02-24 00:55:14 +0100 |
---|---|---|
committer | Hans Verkuil <hverkuil@xs4all.nl> | 2007-02-24 00:55:14 +0100 |
commit | 547bf60a782e5d6397e4ed6c001bd1ae0633d8f0 (patch) | |
tree | d5723ea3f30bbf1d07cd8a3725ec886b43b6e3e2 /linux/include | |
parent | 834c26ef6c6e90c342478b0ce181bd0c91af4062 (diff) | |
download | mediapointer-dvb-s2-547bf60a782e5d6397e4ed6c001bd1ae0633d8f0.tar.gz mediapointer-dvb-s2-547bf60a782e5d6397e4ed6c001bd1ae0633d8f0.tar.bz2 |
Improve chip matching in v4l2_register for VIDIOC_DBG_G/S_REGISTER
From: Hans Verkuil <hverkuil@xs4all.nl>
The chip matching in struct v4l2_register was rather primitive. It could
not be extended to other busses besides i2c and it lacked a way to
differentiate between two i2c chips driven by the same driver on one
board (e.g. a PVR500 with two tuner chips, one for analog TV and one for
radio).
It has now been improved making it much more powerful.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
CC: Mike Isely <isely@isely.net>
CC: Trent Piepho <xyzzy@speakeasy.org>
Diffstat (limited to 'linux/include')
-rw-r--r-- | linux/include/linux/videodev2.h | 11 | ||||
-rw-r--r-- | linux/include/media/v4l2-common.h | 8 |
2 files changed, 17 insertions, 2 deletions
diff --git a/linux/include/linux/videodev2.h b/linux/include/linux/videodev2.h index 588c7694d..6a4123620 100644 --- a/linux/include/linux/videodev2.h +++ b/linux/include/linux/videodev2.h @@ -1384,10 +1384,17 @@ struct v4l2_streamparm */ /* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */ + +#define V4L2_CHIP_MATCH_ALWAYS 0 /* Match always (match_chip is not used) */ +#define V4L2_CHIP_MATCH_HOST 1 /* Match against chip ID on host (0 for the host) */ +#define V4L2_CHIP_MATCH_I2C_DRIVER 2 /* Match against I2C driver ID */ +#define V4L2_CHIP_MATCH_I2C_ADDR 3 /* Match against I2C 7-bit address */ + struct v4l2_register { + __u32 match_type; /* Match type */ + __u32 match_chip; /* Match this chip, meaning determined by match_type */ __u64 reg; - __u32 i2c_id; /* I2C driver ID of the I2C chip, or 0 for the host */ - __u32 val; + __u64 val; }; /* diff --git a/linux/include/media/v4l2-common.h b/linux/include/media/v4l2-common.h index 08a002966..e5a73cc08 100644 --- a/linux/include/media/v4l2-common.h +++ b/linux/include/media/v4l2-common.h @@ -100,6 +100,14 @@ u32 v4l2_ctrl_next(const u32 * const *ctrl_classes, u32 id); /* ------------------------------------------------------------------------- */ +/* Register/chip ident helper function */ + +struct i2c_client; /* forward reference */ +int v4l2_chip_match_i2c_client(struct i2c_client *c, u32 id_type, u32 chip_id); +int v4l2_chip_match_host(u32 id_type, u32 chip_id); + +/* ------------------------------------------------------------------------- */ + /* Internal ioctls */ /* VIDIOC_INT_DECODE_VBI_LINE */ |