V4L changes for OMAP 3 camera, try 2
cover V4L changes for OMAP 3 camera, try 2
Hi,
I've made some changes to the patchset I sent some time ago.
As suggested by Laurent Pinchart, VIDIOC_G_PRIV_MEM is no more. According to suggestion from Hans, I have also added more comments to the patch that changes how vidioc_int_s_power works.
The patches apply against v4l-dvb, Linus' tree or linux-omap.
Regards,
Signature · 8 lines
Sakari Ailus [email protected] -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 V4L: Int if: Add cropcap, g_crop and s_crop commands.
--- include/media/v4l2-int-device.h | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
include/media/v4l2-int-device.h +6 -0
@@ -170,6 +170,9 @@ enum v4l2_int_ioctl_num { vidioc_int_queryctrl_num, vidioc_int_g_ctrl_num, vidioc_int_s_ctrl_num, + vidioc_int_cropcap_num, + vidioc_int_g_crop_num, + vidioc_int_s_crop_num, vidioc_int_g_parm_num, vidioc_int_s_parm_num,
@@ -266,6 +269,9 @@ V4L2_INT_WRAPPER_1(try_fmt_cap, struct v4l2_format, *); V4L2_INT_WRAPPER_1(queryctrl, struct v4l2_queryctrl, *); V4L2_INT_WRAPPER_1(g_ctrl, struct v4l2_control, *); V4L2_INT_WRAPPER_1(s_ctrl, struct v4l2_control, *); +V4L2_INT_WRAPPER_1(cropcap, struct v4l2_cropcap, *); +V4L2_INT_WRAPPER_1(g_crop, struct v4l2_crop, *); +V4L2_INT_WRAPPER_1(s_crop, struct v4l2_crop, *); V4L2_INT_WRAPPER_1(g_parm, struct v4l2_streamparm, *); V4L2_INT_WRAPPER_1(s_parm, struct v4l2_streamparm, *);
Signature · 6 lines
1.5.0.6 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
PATCH 1/1 V4L: Add 10-bit RAW Bayer formats
Add 10-bit raw bayer format expanded to 16 bits. Adds also definition for 10-bit raw bayer format dpcm-compressed to 8 bits.
--- include/linux/videodev2.h | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
include/linux/videodev2.h +7 -0
@@ -315,6 +315,13 @@ struct v4l2_pix_format {/* see http://www.siliconimaging.com/RGB%20Bayer.htm */ #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')/* 8 BGBG.. GRGR.. */ #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')/* 8 GBGB.. RGRG.. */ +/* +* 10bit raw bayer, expanded to 16 bits +* xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... +*/ +#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') +/* 10bit raw bayer DPCM compressed to 8 bits */ +#define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2')/* 16 BGBG.. GRGR.. */ /* compressed formats */
Signature · 6 lines
1.5.0.6 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
PATCH 1/1 V4L: Int if: Define new power state changes
Use enum v4l2_power instead of int as second argument to vidioc_int_s_power. The new functionality is that standby state is also recognised.
--- include/media/v4l2-int-device.h | 24 ++++++++++++++++++++++-- 1 files changed, 22 insertions(+), 2 deletions(-)
include/media/v4l2-int-device.h +22 -2
@@ -96,6 +96,26 @@ int v4l2_int_ioctl_1(struct v4l2_int_device *d, int cmd, void *arg);* */ +/* +* Slave power state & commands +* +* V4L2_POWER_OFF, V4L2_POWER_ON and V4L2_POWER_STANDBY are the slave +* power states. Resume is a command for transitioning form +* V4L2_POWER_STANDBY to V4L2_POWER_ON. +* +* Possible state transitions: +* +* V4L2_POWER_OFF: V4L2_POWER_ON +* V4L2_POWER_ON: V4L2_POWER_OFF, V4L2_POWER_STANDBY +* V4L2_POWER_STANDBY: V4L2_POWER_OFF, V4L2_POWER_ON (V4L2_POWER_RESUME) +*/ +enum v4l2_power { +V4L2_POWER_OFF =0 , +V4L2_POWER_ON , +V4L2_POWER_STANDBY , +V4L2_POWER_RESUME , +}; +/* Slave interface type. */ enum v4l2_if_type {/*
@@ -185,7 +205,7 @@ enum v4l2_int_ioctl_num { vidioc_int_dev_init_num =1000 ,/* Delinitialise the device at slave detach. */ vidioc_int_dev_exit_num, -/* Set device power state: 0 is off, non-zero is on. */ +/* Set device power state. */ vidioc_int_s_power_num,/* * Get slave private data, e.g. platform-specific slave
@@ -277,7 +297,7 @@ V4L2_INT_WRAPPER_1(s_parm, struct v4l2_streamparm, *);V4L2_INT_WRAPPER_0 (dev_init);V4L2_INT_WRAPPER_0 (dev_exit); -V4L2_INT_WRAPPER_1(s_power, int, ); +V4L2_INT_WRAPPER_1(s_power, enum v4l2_power, ); V4L2_INT_WRAPPER_1(g_priv, void, *); V4L2_INT_WRAPPER_1(g_ifparm, struct v4l2_ifparm, *); V4L2_INT_WRAPPER_1(g_needs_reset, void, *);
Signature · 6 lines
1.5.0.6 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
PATCH 1/1 V4L: Int if: Export more interfaces to modules
Export v4l2_int_device_try_attach_all. This allows initiating the initialisation of int if device after the drivers have been registered.
Also allow drivers to call ioctls if v4l2-int-if was compiled as module.
--- drivers/media/video/v4l2-int-device.c | 5 ++++- include/media/v4l2-int-device.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletions(-)
drivers/media/video/v4l2-int-device.c +4 -1
@@ -32,7 +32,7 @@static DEFINE_MUTEX (mutex);static LIST_HEAD (int_list); -static void v4l2_int_device_try_attach_all (void ) +void v4l2_int_device_try_attach_all (void ) {struct v4l2_int_device *m, *s;
@@ -66,6 +66,7 @@ static void v4l2_int_device_try_attach_all(void) } } } +EXPORT_SYMBOL_GPL (v4l2_int_device_try_attach_all);static int ioctl_sort_cmp (const void *a,const void *b) {
@@ -144,6 +145,7 @@ int v4l2_int_ioctl_0(struct v4l2_int_device *d, int cmd)find_ioctl (d->u.slave, cmd, (v4l2_int_ioctl_func *)no_such_ioctl_0))(d); } +EXPORT_SYMBOL_GPL (v4l2_int_ioctl_0);static int no_such_ioctl_1 (struct v4l2_int_device *d,void *arg) {
@@ -156,5 +158,6 @@ int v4l2_int_ioctl_1(struct v4l2_int_device *d, int cmd, void *arg)find_ioctl (d->u.slave, cmd, (v4l2_int_ioctl_func *)no_such_ioctl_1))(d, arg); } +EXPORT_SYMBOL_GPL (v4l2_int_ioctl_1);MODULE_LICENSE ("GPL" );
include/media/v4l2-int-device.h +2 -0
@@ -84,6 +84,8 @@ struct v4l2_int_device {void *priv; }; +void v4l2_int_device_try_attach_all (void ); +int v4l2_int_device_register (struct v4l2_int_device *d);void v4l2_int_device_unregister (struct v4l2_int_device *d);
Signature · 6 lines
1.5.0.6 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
PATCH 1/1 V4L: Int if: Add enum_framesizes and enum_frameintervals ioctls.
--- include/media/v4l2-int-device.h | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)
include/media/v4l2-int-device.h +4 -0
@@ -218,6 +218,8 @@ enum v4l2_int_ioctl_num { vidioc_int_g_ifparm_num,/* Does the slave need to be reset after VIDIOC_DQBUF? */ vidioc_int_g_needs_reset_num, + vidioc_int_enum_framesizes_num, + vidioc_int_enum_frameintervals_num,/* *
@@ -303,6 +305,8 @@ V4L2_INT_WRAPPER_1(s_power, enum v4l2_power, ); V4L2_INT_WRAPPER_1(g_priv, void, *); V4L2_INT_WRAPPER_1(g_ifparm, struct v4l2_ifparm, *); V4L2_INT_WRAPPER_1(g_needs_reset, void, *); +V4L2_INT_WRAPPER_1(enum_framesizes, struct v4l2_frmsizeenum, *); +V4L2_INT_WRAPPER_1(enum_frameintervals, struct v4l2_frmivalenum, *);V4L2_INT_WRAPPER_0 (reset);V4L2_INT_WRAPPER_0 (init);
Signature · 6 lines
1.5.0.6 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
Re: [PATCH] V4L: Int if: Define new power state changes
In reply to Sakari AilusHi Sakari,
I'm OK with the other changes, but the V4L2_POWER_RESUME command in this patch is still really very ugly. In my opinion you should either let the slave store the old powerstate (this seems to be the more logical approach), or let s_power pass the old powerstate as an extra argument if you think it is really needed. But the RESUME command is just unnecessary. Without the RESUME there is no more need to document anything, since then it is suddenly self-documenting.
Regards,
Hans
Quoted 59 lines · On Monday 06 October 2008 13:07:50 Sakari Ailus wrote:
Use enum
v4l2_powerinstead of int as second argument tovidioc_int_s_power. The new functionality is that standby state is also recognised.Signed-off-by Sakari Ailus <[email protected]>--- include/media/v4l2-int-device.h | 24 ++++++++++++++++++++++-- 1 files changed, 22 insertions(+), 2 deletions(-)(quoted diff) +0
-0
b/include/media/v4l2-int-device.hindex cee941c..bf11de7 100644include/media/v4l2-int-device.h +0
-0@@ -96,6 +96,26 @@ int v4l2_int_ioctl_1(struct v4l2_int_device *d,int cmd, void *arg); *
*/+/*
+ * Slave power state & commands
+ *
+ *V4L2_POWER_OFF,V4L2_POWER_ONandV4L2_POWER_STANDBYare the slave
+ * power states. Resume is a command for transitioning form
+ *V4L2_POWER_STANDBYtoV4L2_POWER_ON.
+ *
+ * Possible state transitions:
+ *
+ *V4L2_POWER_OFF:V4L2_POWER_ON
+ *V4L2_POWER_ON:V4L2_POWER_OFF,V4L2_POWER_STANDBY
+ *V4L2_POWER_STANDBY:V4L2_POWER_OFF,V4L2_POWER_ON(V4L2_POWER_RESUME) + */include/media/v4l2-int-device.h +9
-2+enum v4l2_power { +V4L2_POWER_OFF =0 , +V4L2_POWER_ON , +V4L2_POWER_STANDBY , +V4L2_POWER_RESUME , +}; +/* Slave interface type. */ enum v4l2_if_type {/* @@ -185,7 +205,7 @@ enum v4l2_int_ioctl_num { vidioc_int_dev_init_num =1000 ,/* Delinitialise the device at slave detach. */ vidioc_int_dev_exit_num, -/* Set device power state: 0 is off, non-zero is on. */ +/* Set device power state. */ vidioc_int_s_power_num,/* * Get slave private data, e.g. platform-specific slave @@ -277,7 +297,7 @@ V4L2_INT_WRAPPER_1(s_parm, struct v4l2_streamparm, *);V4L2_INT_WRAPPER_0 (dev_init);V4L2_INT_WRAPPER_0 (dev_exit); -V4L2_INT_WRAPPER_1(s_power, int, ); +V4L2_INT_WRAPPER_1(s_power, enum v4l2_power, ); V4L2_INT_WRAPPER_1(g_priv, void, *); V4L2_INT_WRAPPER_1(g_ifparm, struct v4l2_ifparm, *);
Quoted 1 line
V4L2_INT_WRAPPER_1(g_needs_reset, void, *);
--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
Re: [PATCH] V4L: Int if: Define new power state changes
Quoted 3 lines · ext Hans Verkuil
Hi Sakari,
I'm OK with the other changes, but the
V4L2_POWER_RESUMEcommand in this patch is still really very ugly. In my opinion you should either let the slave store the old powerstate (this seems to be the more logical approach), or lets_powerpass the old powerstate as an extra argument if you think it is really needed. But the RESUME command is just unnecessary. Without the RESUME there is no more need to document anything, since then it is suddenly self-documenting.
Yeah, I agree. I'll remove that and send a new patchset, this time with git-format-patch -n. :-)
Ps. Last time the first patch got caught by a spam filter and my hunch is that it'll happen again.
Regards,
Signature · 7 lines
Sakari Ailus [email protected] -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 2/6 V4L: Int if: Add cropcap, g_crop and s_crop commands.
--- include/media/v4l2-int-device.h | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
include/media/v4l2-int-device.h +6 -0
@@ -170,6 +170,9 @@ enum v4l2_int_ioctl_num { vidioc_int_queryctrl_num, vidioc_int_g_ctrl_num, vidioc_int_s_ctrl_num, + vidioc_int_cropcap_num, + vidioc_int_g_crop_num, + vidioc_int_s_crop_num, vidioc_int_g_parm_num, vidioc_int_s_parm_num,
@@ -266,6 +269,9 @@ V4L2_INT_WRAPPER_1(try_fmt_cap, struct v4l2_format, *); V4L2_INT_WRAPPER_1(queryctrl, struct v4l2_queryctrl, *); V4L2_INT_WRAPPER_1(g_ctrl, struct v4l2_control, *); V4L2_INT_WRAPPER_1(s_ctrl, struct v4l2_control, *); +V4L2_INT_WRAPPER_1(cropcap, struct v4l2_cropcap, *); +V4L2_INT_WRAPPER_1(g_crop, struct v4l2_crop, *); +V4L2_INT_WRAPPER_1(s_crop, struct v4l2_crop, *); V4L2_INT_WRAPPER_1(g_parm, struct v4l2_streamparm, *); V4L2_INT_WRAPPER_1(s_parm, struct v4l2_streamparm, *);
Signature · 6 lines
1.5.0.6 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
PATCH 3/6 V4L: Add 10-bit RAW Bayer formats
Add 10-bit raw bayer format expanded to 16 bits. Adds also definition for 10-bit raw bayer format dpcm-compressed to 8 bits.
--- include/linux/videodev2.h | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
include/linux/videodev2.h +7 -0
@@ -315,6 +315,13 @@ struct v4l2_pix_format {/* see http://www.siliconimaging.com/RGB%20Bayer.htm */ #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')/* 8 BGBG.. GRGR.. */ #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')/* 8 GBGB.. RGRG.. */ +/* +* 10bit raw bayer, expanded to 16 bits +* xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... +*/ +#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') +/* 10bit raw bayer DPCM compressed to 8 bits */ +#define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2')/* 16 BGBG.. GRGR.. */ /* compressed formats */
Signature · 6 lines
1.5.0.6 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
PATCH 4/6 V4L: Int if: Define new power state changes
Use enum v4l2_power instead of int as second argument to vidioc_int_s_power. The new functionality is that standby state is also recognised.
--- include/media/v4l2-int-device.h | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-)
include/media/v4l2-int-device.h +8 -2
@@ -96,6 +96,12 @@ int v4l2_int_ioctl_1(struct v4l2_int_device *d, int cmd, void *arg);* */ +enum v4l2_power { +V4L2_POWER_OFF =0 , +V4L2_POWER_ON , +V4L2_POWER_STANDBY , +}; +/* Slave interface type. */ enum v4l2_if_type {/*
@@ -185,7 +191,7 @@ enum v4l2_int_ioctl_num { vidioc_int_dev_init_num =1000 ,/* Delinitialise the device at slave detach. */ vidioc_int_dev_exit_num, -/* Set device power state: 0 is off, non-zero is on. */ +/* Set device power state. */ vidioc_int_s_power_num,/* * Get slave private data, e.g. platform-specific slave
@@ -277,7 +283,7 @@ V4L2_INT_WRAPPER_1(s_parm, struct v4l2_streamparm, *);V4L2_INT_WRAPPER_0 (dev_init);V4L2_INT_WRAPPER_0 (dev_exit); -V4L2_INT_WRAPPER_1(s_power, int, ); +V4L2_INT_WRAPPER_1(s_power, enum v4l2_power, ); V4L2_INT_WRAPPER_1(g_priv, void, *); V4L2_INT_WRAPPER_1(g_ifparm, struct v4l2_ifparm, *); V4L2_INT_WRAPPER_1(g_needs_reset, void, *);
Signature · 6 lines
1.5.0.6 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
PATCH 5/6 V4L: Int if: Export more interfaces to modules
Export v4l2_int_device_try_attach_all. This allows initiating the initialisation of int if device after the drivers have been registered.
Also allow drivers to call ioctls if v4l2-int-if was compiled as module.
--- drivers/media/video/v4l2-int-device.c | 5 ++++- include/media/v4l2-int-device.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletions(-)
drivers/media/video/v4l2-int-device.c +4 -1
@@ -32,7 +32,7 @@static DEFINE_MUTEX (mutex);static LIST_HEAD (int_list); -static void v4l2_int_device_try_attach_all (void ) +void v4l2_int_device_try_attach_all (void ) {struct v4l2_int_device *m, *s;
@@ -66,6 +66,7 @@ static void v4l2_int_device_try_attach_all(void) } } } +EXPORT_SYMBOL_GPL (v4l2_int_device_try_attach_all);static int ioctl_sort_cmp (const void *a,const void *b) {
@@ -144,6 +145,7 @@ int v4l2_int_ioctl_0(struct v4l2_int_device *d, int cmd)find_ioctl (d->u.slave, cmd, (v4l2_int_ioctl_func *)no_such_ioctl_0))(d); } +EXPORT_SYMBOL_GPL (v4l2_int_ioctl_0);static int no_such_ioctl_1 (struct v4l2_int_device *d,void *arg) {
@@ -156,5 +158,6 @@ int v4l2_int_ioctl_1(struct v4l2_int_device *d, int cmd, void *arg)find_ioctl (d->u.slave, cmd, (v4l2_int_ioctl_func *)no_such_ioctl_1))(d, arg); } +EXPORT_SYMBOL_GPL (v4l2_int_ioctl_1);MODULE_LICENSE ("GPL" );
include/media/v4l2-int-device.h +2 -0
@@ -84,6 +84,8 @@ struct v4l2_int_device {void *priv; }; +void v4l2_int_device_try_attach_all (void ); +int v4l2_int_device_register (struct v4l2_int_device *d);void v4l2_int_device_unregister (struct v4l2_int_device *d);
Signature · 6 lines
1.5.0.6 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
PATCH 6/6 V4L: Int if: Add enum_framesizes and enum_frameintervals ioctls.
--- include/media/v4l2-int-device.h | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)
include/media/v4l2-int-device.h +4 -0
@@ -204,6 +204,8 @@ enum v4l2_int_ioctl_num { vidioc_int_g_ifparm_num,/* Does the slave need to be reset after VIDIOC_DQBUF? */ vidioc_int_g_needs_reset_num, + vidioc_int_enum_framesizes_num, + vidioc_int_enum_frameintervals_num,/* *
@@ -289,6 +291,8 @@ V4L2_INT_WRAPPER_1(s_power, enum v4l2_power, ); V4L2_INT_WRAPPER_1(g_priv, void, *); V4L2_INT_WRAPPER_1(g_ifparm, struct v4l2_ifparm, *); V4L2_INT_WRAPPER_1(g_needs_reset, void, *); +V4L2_INT_WRAPPER_1(enum_framesizes, struct v4l2_frmsizeenum, *); +V4L2_INT_WRAPPER_1(enum_frameintervals, struct v4l2_frmivalenum, *);V4L2_INT_WRAPPER_0 (reset);V4L2_INT_WRAPPER_0 (init);
Signature · 6 lines
1.5.0.6 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
Re: [PATCH] V4L: Int if: Define new power state changes
In reply to Sakari AilusQuoted 12 lines · On Tuesday 07 October 2008 18:17:48 Sakari Ailus wrote:
Quoted 10 lines · ext Hans Verkuil
Hi Sakari,
I'm OK with the other changes, but the
V4L2_POWER_RESUMEcommand in this patch is still really very ugly. In my opinion you should either let the slave store the old powerstate (this seems to be the more logical approach), or lets_powerpass the old powerstate as an extra argument if you think it is really needed. But the RESUME command is just unnecessary. Without the RESUME there is no more need to document anything, since then it is suddenly self-documenting.
Quoted 5 lines
Yeah, I agree. I'll remove that and send a new patchset, this time with git-format-patch -n. :-)
Ps. Last time the first patch got caught by a spam filter and my hunch is that it'll happen again.
No problems this time.
Anyway, here is my SoB for this series of 6 patches:
Mauro, can you merge there patches directly, or do you want me to setup a v4l-dvb tree for you that you can merge from?
Thanks,
Hans
--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list