]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
v4l: xilinx: sdirxss: Add source change event support
authorVishal Sagar <vishal.sagar@xilinx.com>
Fri, 1 Sep 2017 05:48:58 +0000 (11:18 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Mon, 4 Sep 2017 07:04:06 +0000 (09:04 +0200)
Add support for V4L2_EVENT_SOURCE_CHANGE event by
generating this event when video lock occurs.

Signed-off-by: Vishal Sagar <vsagar@xilinx.com>
Reviewed-by: Hyun Kwon <hyun.kwon@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/media/platform/xilinx/xilinx-sdirxss.c

index ddf4dd83d2ec5110bcb9af3e7d340d45a71828ce..ed9d9bbb45d0b6d7d9b13718228d6b74ecafd87a 100644 (file)
@@ -515,6 +515,12 @@ static irqreturn_t xsdirxss_irq_handler(int irq, void *dev_id)
                        dev_dbg(core->dev, "valid st352 mask = 0x%08x\n", val1);
                        dev_dbg(core->dev, "st352 payload = 0x%08x\n", val2);
 
+                       memset(&state->event, 0, sizeof(state->event));
+                       state->event.type = V4L2_EVENT_SOURCE_CHANGE;
+                       state->event.u.src_change.changes =
+                               V4L2_EVENT_SRC_CH_RESOLUTION;
+                       v4l2_subdev_notify_event(&state->subdev, &state->event);
+
                        state->vidlocked = true;
                } else {
                        dev_dbg(core->dev, "video unlock before video lock!\n");
@@ -575,12 +581,14 @@ static int xsdirxss_subscribe_event(struct v4l2_subdev *sd,
        case V4L2_EVENT_XLNXSDIRX_UNDERFLOW:
        case V4L2_EVENT_XLNXSDIRX_OVERFLOW:
                ret = v4l2_event_subscribe(fh, sub, XSDIRX_MAX_EVENTS, NULL);
-               dev_dbg(core->dev, "Event subscribed : 0x%08x\n", sub->type);
+               break;
+       case V4L2_EVENT_SOURCE_CHANGE:
+               ret = v4l2_src_change_event_subscribe(fh, sub);
                break;
        default:
                return -EINVAL;
        }
-
+       dev_dbg(core->dev, "Event subscribed : 0x%08x\n", sub->type);
        return ret;
 }