Merge tag 'media/v4.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media updates from Mauro Carvalho Chehab:
 - new DVB frontend drivers: ascot2e, cxd2841er, horus3a, lnbh25
 - new HDMI capture driver: tc358743
 - new driver for NetUP DVB new boards (netup_unidvb)
 - IR support for DVBSky cards (smipcie-ir)
 - Coda driver has gain macroblock tiling support
 - Renesas R-Car gains JPEG codec driver
 - new DVB platform driver for STi boards: c8sectpfe
 - added documentation for the media core kABI to device-drivers DocBook
 - lots of driver fixups, cleanups and improvements

* tag 'media/v4.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (297 commits)
  [media] c8sectpfe: Remove select on undefined LIBELF_32
  [media] i2c: fix platform_no_drv_owner.cocci warnings
  [media] cx231xx: Use wake_up_interruptible() instead of wake_up_interruptible_nr()
  [media] tc358743: only queue subdev notifications if devnode is set
  [media] tc358743: add missing Kconfig dependency/select
  [media] c8sectpfe: Use %pad to print 'dma_addr_t'
  [media] DocBook media: Fix typo "the the" in xml files
  [media] tc358743: make reset gpio optional
  [media] tc358743: set direction of reset gpio using devm_gpiod_get
  [media] dvbdev: document most of the functions/data structs
  [media] dvb_frontend.h: document the struct dvb_frontend
  [media] dvb-frontend.h: document struct dtv_frontend_properties
  [media] dvb-frontend.h: document struct dvb_frontend_ops
  [media] dvb: Use DVBFE_ALGO_HW where applicable
  [media] dvb_frontend.h: document struct analog_demod_ops
  [media] dvb_frontend.h: Document struct dvb_tuner_ops
  [media] Docbook: Document struct analog_parameters
  [media] dvb_frontend.h: get rid of dvbfe_modcod
  [media] add documentation for struct dvb_tuner_info
  [media] dvb_frontend: document dvb_frontend_tune_settings
  ...
This commit is contained in:
Linus Torvalds
2015-09-05 18:21:14 -07:00
277 changed files with 18659 additions and 4356 deletions

View File

@@ -93,90 +93,183 @@ SHOW_FIELD
{ V4L2_TC_USERBITS_USERDEFINED, "USERBITS_USERDEFINED" }, \
{ V4L2_TC_USERBITS_8BITCHARS, "USERBITS_8BITCHARS" })
#define V4L2_TRACE_EVENT(event_name) \
TRACE_EVENT(event_name, \
TP_PROTO(int minor, struct v4l2_buffer *buf), \
\
TP_ARGS(minor, buf), \
\
TP_STRUCT__entry( \
__field(int, minor) \
__field(u32, index) \
__field(u32, type) \
__field(u32, bytesused) \
__field(u32, flags) \
__field(u32, field) \
__field(s64, timestamp) \
__field(u32, timecode_type) \
__field(u32, timecode_flags) \
__field(u8, timecode_frames) \
__field(u8, timecode_seconds) \
__field(u8, timecode_minutes) \
__field(u8, timecode_hours) \
__field(u8, timecode_userbits0) \
__field(u8, timecode_userbits1) \
__field(u8, timecode_userbits2) \
__field(u8, timecode_userbits3) \
__field(u32, sequence) \
), \
\
TP_fast_assign( \
__entry->minor = minor; \
__entry->index = buf->index; \
__entry->type = buf->type; \
__entry->bytesused = buf->bytesused; \
__entry->flags = buf->flags; \
__entry->field = buf->field; \
__entry->timestamp = \
timeval_to_ns(&buf->timestamp); \
__entry->timecode_type = buf->timecode.type; \
__entry->timecode_flags = buf->timecode.flags; \
__entry->timecode_frames = \
buf->timecode.frames; \
__entry->timecode_seconds = \
buf->timecode.seconds; \
__entry->timecode_minutes = \
buf->timecode.minutes; \
__entry->timecode_hours = buf->timecode.hours; \
__entry->timecode_userbits0 = \
buf->timecode.userbits[0]; \
__entry->timecode_userbits1 = \
buf->timecode.userbits[1]; \
__entry->timecode_userbits2 = \
buf->timecode.userbits[2]; \
__entry->timecode_userbits3 = \
buf->timecode.userbits[3]; \
__entry->sequence = buf->sequence; \
), \
\
TP_printk("minor = %d, index = %u, type = %s, " \
"bytesused = %u, flags = %s, " \
"field = %s, timestamp = %llu, timecode = { " \
"type = %s, flags = %s, frames = %u, " \
"seconds = %u, minutes = %u, hours = %u, " \
"userbits = { %u %u %u %u } }, " \
"sequence = %u", __entry->minor, \
__entry->index, show_type(__entry->type), \
__entry->bytesused, \
show_flags(__entry->flags), \
show_field(__entry->field), \
__entry->timestamp, \
show_timecode_type(__entry->timecode_type), \
show_timecode_flags(__entry->timecode_flags), \
__entry->timecode_frames, \
__entry->timecode_seconds, \
__entry->timecode_minutes, \
__entry->timecode_hours, \
__entry->timecode_userbits0, \
__entry->timecode_userbits1, \
__entry->timecode_userbits2, \
__entry->timecode_userbits3, \
__entry->sequence \
) \
)
DECLARE_EVENT_CLASS(v4l2_event_class,
TP_PROTO(int minor, struct v4l2_buffer *buf),
V4L2_TRACE_EVENT(v4l2_dqbuf);
V4L2_TRACE_EVENT(v4l2_qbuf);
TP_ARGS(minor, buf),
TP_STRUCT__entry(
__field(int, minor)
__field(u32, index)
__field(u32, type)
__field(u32, bytesused)
__field(u32, flags)
__field(u32, field)
__field(s64, timestamp)
__field(u32, timecode_type)
__field(u32, timecode_flags)
__field(u8, timecode_frames)
__field(u8, timecode_seconds)
__field(u8, timecode_minutes)
__field(u8, timecode_hours)
__field(u8, timecode_userbits0)
__field(u8, timecode_userbits1)
__field(u8, timecode_userbits2)
__field(u8, timecode_userbits3)
__field(u32, sequence)
),
TP_fast_assign(
__entry->minor = minor;
__entry->index = buf->index;
__entry->type = buf->type;
__entry->bytesused = buf->bytesused;
__entry->flags = buf->flags;
__entry->field = buf->field;
__entry->timestamp = timeval_to_ns(&buf->timestamp);
__entry->timecode_type = buf->timecode.type;
__entry->timecode_flags = buf->timecode.flags;
__entry->timecode_frames = buf->timecode.frames;
__entry->timecode_seconds = buf->timecode.seconds;
__entry->timecode_minutes = buf->timecode.minutes;
__entry->timecode_hours = buf->timecode.hours;
__entry->timecode_userbits0 = buf->timecode.userbits[0];
__entry->timecode_userbits1 = buf->timecode.userbits[1];
__entry->timecode_userbits2 = buf->timecode.userbits[2];
__entry->timecode_userbits3 = buf->timecode.userbits[3];
__entry->sequence = buf->sequence;
),
TP_printk("minor = %d, index = %u, type = %s, bytesused = %u, "
"flags = %s, field = %s, timestamp = %llu, "
"timecode = { type = %s, flags = %s, frames = %u, "
"seconds = %u, minutes = %u, hours = %u, "
"userbits = { %u %u %u %u } }, sequence = %u", __entry->minor,
__entry->index, show_type(__entry->type),
__entry->bytesused,
show_flags(__entry->flags),
show_field(__entry->field),
__entry->timestamp,
show_timecode_type(__entry->timecode_type),
show_timecode_flags(__entry->timecode_flags),
__entry->timecode_frames,
__entry->timecode_seconds,
__entry->timecode_minutes,
__entry->timecode_hours,
__entry->timecode_userbits0,
__entry->timecode_userbits1,
__entry->timecode_userbits2,
__entry->timecode_userbits3,
__entry->sequence
)
)
DEFINE_EVENT(v4l2_event_class, v4l2_dqbuf,
TP_PROTO(int minor, struct v4l2_buffer *buf),
TP_ARGS(minor, buf)
);
DEFINE_EVENT(v4l2_event_class, v4l2_qbuf,
TP_PROTO(int minor, struct v4l2_buffer *buf),
TP_ARGS(minor, buf)
);
DECLARE_EVENT_CLASS(vb2_event_class,
TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),
TP_ARGS(q, vb),
TP_STRUCT__entry(
__field(int, minor)
__field(u32, queued_count)
__field(int, owned_by_drv_count)
__field(u32, index)
__field(u32, type)
__field(u32, bytesused)
__field(u32, flags)
__field(u32, field)
__field(s64, timestamp)
__field(u32, timecode_type)
__field(u32, timecode_flags)
__field(u8, timecode_frames)
__field(u8, timecode_seconds)
__field(u8, timecode_minutes)
__field(u8, timecode_hours)
__field(u8, timecode_userbits0)
__field(u8, timecode_userbits1)
__field(u8, timecode_userbits2)
__field(u8, timecode_userbits3)
__field(u32, sequence)
),
TP_fast_assign(
__entry->minor = q->owner ? q->owner->vdev->minor : -1;
__entry->queued_count = q->queued_count;
__entry->owned_by_drv_count =
atomic_read(&q->owned_by_drv_count);
__entry->index = vb->v4l2_buf.index;
__entry->type = vb->v4l2_buf.type;
__entry->bytesused = vb->v4l2_planes[0].bytesused;
__entry->flags = vb->v4l2_buf.flags;
__entry->field = vb->v4l2_buf.field;
__entry->timestamp = timeval_to_ns(&vb->v4l2_buf.timestamp);
__entry->timecode_type = vb->v4l2_buf.timecode.type;
__entry->timecode_flags = vb->v4l2_buf.timecode.flags;
__entry->timecode_frames = vb->v4l2_buf.timecode.frames;
__entry->timecode_seconds = vb->v4l2_buf.timecode.seconds;
__entry->timecode_minutes = vb->v4l2_buf.timecode.minutes;
__entry->timecode_hours = vb->v4l2_buf.timecode.hours;
__entry->timecode_userbits0 = vb->v4l2_buf.timecode.userbits[0];
__entry->timecode_userbits1 = vb->v4l2_buf.timecode.userbits[1];
__entry->timecode_userbits2 = vb->v4l2_buf.timecode.userbits[2];
__entry->timecode_userbits3 = vb->v4l2_buf.timecode.userbits[3];
__entry->sequence = vb->v4l2_buf.sequence;
),
TP_printk("minor = %d, queued = %u, owned_by_drv = %d, index = %u, "
"type = %s, bytesused = %u, flags = %s, field = %s, "
"timestamp = %llu, timecode = { type = %s, flags = %s, "
"frames = %u, seconds = %u, minutes = %u, hours = %u, "
"userbits = { %u %u %u %u } }, sequence = %u", __entry->minor,
__entry->queued_count,
__entry->owned_by_drv_count,
__entry->index, show_type(__entry->type),
__entry->bytesused,
show_flags(__entry->flags),
show_field(__entry->field),
__entry->timestamp,
show_timecode_type(__entry->timecode_type),
show_timecode_flags(__entry->timecode_flags),
__entry->timecode_frames,
__entry->timecode_seconds,
__entry->timecode_minutes,
__entry->timecode_hours,
__entry->timecode_userbits0,
__entry->timecode_userbits1,
__entry->timecode_userbits2,
__entry->timecode_userbits3,
__entry->sequence
)
)
DEFINE_EVENT(vb2_event_class, vb2_buf_done,
TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),
TP_ARGS(q, vb)
);
DEFINE_EVENT(vb2_event_class, vb2_buf_queue,
TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),
TP_ARGS(q, vb)
);
DEFINE_EVENT(vb2_event_class, vb2_dqbuf,
TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),
TP_ARGS(q, vb)
);
DEFINE_EVENT(vb2_event_class, vb2_qbuf,
TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),
TP_ARGS(q, vb)
);
#endif /* if !defined(_TRACE_V4L2_H) || defined(TRACE_HEADER_MULTI_READ) */