Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eb55a2a9 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull media fixes from Mauro Carvalho Chehab:
 "For some last time fixes:
   - a regression detected on Kernel 3.16 related to VBI Teletext
     application breakage on drivers using videobuf2 (see
     https://bugzilla.kernel.org/show_bug.cgi?id=84401).  The bug was
     noticed on saa7134 (migrated to VB2 on 3.16), but also affects
     em28xx (migrated on 3.9 to VB2);
   - two additional sanity checks at videobuf2;
   - two fixups to restore proper VBI support at the em28xx driver;
   - two Kernel oops fixups (at cx24123 and cx2341x drivers);
   - a bug at adv7604 where an if was doing just the opposite as it
     would be expected;
   - some documentation fixups to match the behavior defined at the
     Kernel"

* tag 'media/v3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
  [media] em28xx-v4l: get rid of field "users" in struct em28xx_v4l2"
  [media] em28xx: fix VBI handling logic
  [media] DocBook media: improve the poll() documentation
  [media] DocBook media: fix the poll() 'no QBUF' documentation
  [media] vb2: fix VBI/poll regression
  [media] cx2341x: fix kernel oops
  [media] cx24123: fix kernel oops due to missing parent pointer
  [media] adv7604: fix inverted condition
  [media] media/radio: fix radio-miropcm20.c build with io.h header file
  [media] vb2: fix plane index sanity check in vb2_plane_cookie()
  [media] DocBook media: update version number and V4L2 changes
  [media] DocBook media: fix fieldname in struct v4l2_subdev_selection
  [media] vb2: fix vb2 state check when start_streaming fails
  [media] videobuf2-core.h: fix comment
  [media] videobuf2-core: add comments before the WARN_ON
  [media] videobuf2-dma-sg: fix for wrong GFP mask to sg_alloc_table_from_pages
parents a90e41e2 8e2c8717
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -2545,6 +2545,30 @@ fields changed from _s32 to _u32.
      </orderedlist>
    </section>

    <section>
      <title>V4L2 in Linux 3.16</title>
      <orderedlist>
        <listitem>
	  <para>Added event V4L2_EVENT_SOURCE_CHANGE.
	  </para>
        </listitem>
      </orderedlist>
    </section>

    <section>
      <title>V4L2 in Linux 3.17</title>
      <orderedlist>
        <listitem>
	  <para>Extended &v4l2-pix-format;. Added format flags.
	  </para>
        </listitem>
        <listitem>
	  <para>Added compound control types and &VIDIOC-QUERY-EXT-CTRL;.
	  </para>
        </listitem>
      </orderedlist>
    </section>

    <section id="other">
      <title>Relation of V4L2 to other Linux multimedia APIs</title>

+29 −6
Original line number Diff line number Diff line
@@ -29,9 +29,12 @@ can suspend execution until the driver has captured data or is ready
to accept data for output.</para>

    <para>When streaming I/O has been negotiated this function waits
until a buffer has been filled or displayed and can be dequeued with
the &VIDIOC-DQBUF; ioctl. When buffers are already in the outgoing
queue of the driver the function returns immediately.</para>
until a buffer has been filled by the capture device and can be dequeued
with the &VIDIOC-DQBUF; ioctl. For output devices this function waits
until the device is ready to accept a new buffer to be queued up with
the &VIDIOC-QBUF; ioctl for display. When buffers are already in the outgoing
queue of the driver (capture) or the incoming queue isn't full (display)
the function returns immediately.</para>

    <para>On success <function>poll()</function> returns the number of
file descriptors that have been selected (that is, file descriptors
@@ -44,10 +47,22 @@ Capture devices set the <constant>POLLIN</constant> and
flags. When the function timed out it returns a value of zero, on
failure it returns <returnvalue>-1</returnvalue> and the
<varname>errno</varname> variable is set appropriately. When the
application did not call &VIDIOC-QBUF; or &VIDIOC-STREAMON; yet the
application did not call &VIDIOC-STREAMON; the
<function>poll()</function> function succeeds, but sets the
<constant>POLLERR</constant> flag in the
<structfield>revents</structfield> field.</para>
<structfield>revents</structfield> field. When the
application has called &VIDIOC-STREAMON; for a capture device but hasn't
yet called &VIDIOC-QBUF;, the <function>poll()</function> function
succeeds and sets the <constant>POLLERR</constant> flag in the
<structfield>revents</structfield> field. For output devices this
same situation will cause <function>poll()</function> to succeed
as well, but it sets the <constant>POLLOUT</constant> and
<constant>POLLWRNORM</constant> flags in the <structfield>revents</structfield>
field.</para>

    <para>If an event occurred (see &VIDIOC-DQEVENT;) then
<constant>POLLPRI</constant> will be set in the <structfield>revents</structfield>
field and <function>poll()</function> will return.</para>

    <para>When use of the <function>read()</function> function has
been negotiated and the driver does not capture yet, the
@@ -58,10 +73,18 @@ continuously (as opposed to, for example, still images) the function
may return immediately.</para>

    <para>When use of the <function>write()</function> function has
been negotiated the <function>poll</function> function just waits
been negotiated and the driver does not stream yet, the
<function>poll</function> function starts streaming. When that fails
it returns a <constant>POLLERR</constant> as above. Otherwise it waits
until the driver is ready for a non-blocking
<function>write()</function> call.</para>

    <para>If the caller is only interested in events (just
<constant>POLLPRI</constant> is set in the <structfield>events</structfield>
field), then <function>poll()</function> will <emphasis>not</emphasis>
start streaming if the driver does not stream yet. This makes it
possible to just poll for events and not for buffers.</para>

    <para>All drivers implementing the <function>read()</function> or
<function>write()</function> function or streaming I/O must also
support the <function>poll()</function> function.</para>
+6 −5
Original line number Diff line number Diff line
@@ -152,10 +152,11 @@ structs, ioctls) must be noted in more detail in the history chapter
applications. -->

      <revision>
	<revnumber>3.16</revnumber>
	<date>2014-05-27</date>
	<authorinitials>lp</authorinitials>
	<revremark>Extended &v4l2-pix-format;. Added format flags.
	<revnumber>3.17</revnumber>
	<date>2014-08-04</date>
	<authorinitials>lp, hv</authorinitials>
	<revremark>Extended &v4l2-pix-format;. Added format flags. Added compound control types
and VIDIOC_QUERY_EXT_CTRL.
	</revremark>
      </revision>

@@ -538,7 +539,7 @@ and discussions on the V4L mailing list.</revremark>
</partinfo>

<title>Video for Linux Two API Specification</title>
 <subtitle>Revision 3.14</subtitle>
 <subtitle>Revision 3.17</subtitle>

  <chapter id="common">
    &sub-common;
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@
	  </row>
	  <row>
	    <entry>&v4l2-rect;</entry>
	    <entry><structfield>rect</structfield></entry>
	    <entry><structfield>r</structfield></entry>
	    <entry>Selection rectangle, in pixels.</entry>
	  </row>
	  <row>
+1 −0
Original line number Diff line number Diff line
@@ -1490,6 +1490,7 @@ static struct v4l2_ctrl *cx2341x_ctrl_new_custom(struct v4l2_ctrl_handler *hdl,
{
	struct v4l2_ctrl_config cfg;

	memset(&cfg, 0, sizeof(cfg));
	cx2341x_ctrl_fill(id, &cfg.name, &cfg.type, &min, &max, &step, &def, &cfg.flags);
	cfg.ops = &cx2341x_ops;
	cfg.id = id;
Loading