Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 271680
b: refs/heads/master
c: 69d232a
h: refs/heads/master
v: v3
  • Loading branch information
Sakari Ailus authored and Mauro Carvalho Chehab committed Aug 29, 2011
1 parent a62abeb commit 5361f54
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: eab00a0da292fa7118aaf20da78e834866de00ae
refs/heads/master: 69d232ae8e95a229e7544989d6014e875deeb121
9 changes: 5 additions & 4 deletions trunk/Documentation/video4linux/omap3isp.txt
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,11 @@ Events
The OMAP 3 ISP driver does support the V4L2 event interface on CCDC and
statistics (AEWB, AF and histogram) subdevs.

The CCDC subdev produces V4L2_EVENT_OMAP3ISP_HS_VS type event on HS_VS
interrupt which is used to signal frame start. The event is triggered exactly
when the reception of the first line of the frame starts in the CCDC module.
The event can be subscribed on the CCDC subdev.
The CCDC subdev produces V4L2_EVENT_FRAME_SYNC type event on HS_VS
interrupt which is used to signal frame start. Earlier version of this
driver used V4L2_EVENT_OMAP3ISP_HS_VS for this purpose. The event is
triggered exactly when the reception of the first line of the frame starts
in the CCDC module. The event can be subscribed on the CCDC subdev.

(When using parallel interface one must pay account to correct configuration
of the VS signal polarity. This is automatically correct when using the serial
Expand Down
11 changes: 9 additions & 2 deletions trunk/drivers/media/video/omap3isp/ispccdc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1404,11 +1404,14 @@ static int __ccdc_handle_stopping(struct isp_ccdc_device *ccdc, u32 event)

static void ccdc_hs_vs_isr(struct isp_ccdc_device *ccdc)
{
struct isp_pipeline *pipe =
to_isp_pipeline(&ccdc->video_out.video.entity);
struct video_device *vdev = &ccdc->subdev.devnode;
struct v4l2_event event;

memset(&event, 0, sizeof(event));
event.type = V4L2_EVENT_OMAP3ISP_HS_VS;
event.type = V4L2_EVENT_FRAME_SYNC;
event.u.frame_sync.frame_sequence = atomic_read(&pipe->frame_number);

v4l2_event_queue(vdev, &event);
}
Expand Down Expand Up @@ -1690,7 +1693,11 @@ static long ccdc_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
static int ccdc_subscribe_event(struct v4l2_subdev *sd, struct v4l2_fh *fh,
struct v4l2_event_subscription *sub)
{
if (sub->type != V4L2_EVENT_OMAP3ISP_HS_VS)
if (sub->type != V4L2_EVENT_FRAME_SYNC)
return -EINVAL;

/* line number is zero at frame start */
if (sub->id != 0)
return -EINVAL;

return v4l2_event_subscribe(fh, sub, OMAP3ISP_CCDC_NEVENTS);
Expand Down
2 changes: 0 additions & 2 deletions trunk/include/linux/omap3isp.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,12 @@
* V4L2_EVENT_OMAP3ISP_AEWB: AEWB statistics data ready
* V4L2_EVENT_OMAP3ISP_AF: AF statistics data ready
* V4L2_EVENT_OMAP3ISP_HIST: Histogram statistics data ready
* V4L2_EVENT_OMAP3ISP_HS_VS: Horizontal/vertical synchronization detected
*/

#define V4L2_EVENT_OMAP3ISP_CLASS (V4L2_EVENT_PRIVATE_START | 0x100)
#define V4L2_EVENT_OMAP3ISP_AEWB (V4L2_EVENT_OMAP3ISP_CLASS | 0x1)
#define V4L2_EVENT_OMAP3ISP_AF (V4L2_EVENT_OMAP3ISP_CLASS | 0x2)
#define V4L2_EVENT_OMAP3ISP_HIST (V4L2_EVENT_OMAP3ISP_CLASS | 0x3)
#define V4L2_EVENT_OMAP3ISP_HS_VS (V4L2_EVENT_OMAP3ISP_CLASS | 0x4)

struct omap3isp_stat_event_status {
__u32 frame_number;
Expand Down

0 comments on commit 5361f54

Please sign in to comment.