summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUdaya Mallavarapu <udaym@codeaurora.org>2016-10-18 18:38:13 +0530
committerUdaya Mallavarapu <udaym@codeaurora.org>2016-10-19 12:16:55 +0530
commit752a69d018aa8267bed496c6a5ed449a6ecd4dbf (patch)
tree5f9950af95574a92d4805c0823b70b2fe4f42d85
parentc6b7d9674c413431a6622844bdcbfc8a7f2942df (diff)
media: dvb-core: dvb dmxdev filter callback function changes
The demux driver migration from kernel 3.18 to 4.4 added extra parameter to dmx_ts_cb, dmx_section_cb callback functions to send demux status to dmxdev filters. Revert back the change to original prototype. CRs-Fixed: 1079183 Change-Id: I4bdced9942e6524e8cc21410532fa7231049454f Signed-off-by: Udaya Mallavarapu <udaym@codeaurora.org>
-rw-r--r--drivers/media/dvb-core/demux.h6
-rw-r--r--drivers/media/dvb-core/dmxdev.c51
-rw-r--r--drivers/media/dvb-core/dvb_demux.c16
-rw-r--r--drivers/media/dvb-core/dvb_net.c6
-rw-r--r--drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c4
5 files changed, 22 insertions, 61 deletions
diff --git a/drivers/media/dvb-core/demux.h b/drivers/media/dvb-core/demux.h
index cd02396abbe7..227dbfa97d64 100644
--- a/drivers/media/dvb-core/demux.h
+++ b/drivers/media/dvb-core/demux.h
@@ -407,8 +407,7 @@ typedef int (*dmx_ts_cb)(const u8 *buffer1,
size_t buffer1_length,
const u8 *buffer2,
size_t buffer2_length,
- struct dmx_ts_feed *source,
- enum dmx_success success);
+ struct dmx_ts_feed *source);
/**
* typedef dmx_section_cb - DVB demux TS filter callback function prototype
@@ -449,8 +448,7 @@ typedef int (*dmx_section_cb)(const u8 *buffer1,
size_t buffer1_len,
const u8 *buffer2,
size_t buffer2_len,
- struct dmx_section_filter *source,
- enum dmx_success success);
+ struct dmx_section_filter *source);
typedef int (*dmx_ts_fullness) (
struct dmx_ts_feed *source,
diff --git a/drivers/media/dvb-core/dmxdev.c b/drivers/media/dvb-core/dmxdev.c
index 63becfd57eaa..a9c4237d631a 100644
--- a/drivers/media/dvb-core/dmxdev.c
+++ b/drivers/media/dvb-core/dmxdev.c
@@ -2603,15 +2603,15 @@ static void dvb_dmxdev_filter_timer(struct dmxdev_filter *dmxdevfilter)
static int dvb_dmxdev_section_callback(const u8 *buffer1, size_t buffer1_len,
const u8 *buffer2, size_t buffer2_len,
- struct dmx_section_filter *filter,
- enum dmx_success success)
+ struct dmx_section_filter *filter)
{
struct dmxdev_filter *dmxdevfilter = filter->priv;
struct dmx_filter_event event;
ssize_t free;
+
if (!dmxdevfilter) {
- pr_err("%s: null filter. status=%d\n", __func__, success);
+ pr_err("%s: null filter.\n", __func__);
return -EINVAL;
}
@@ -2633,7 +2633,7 @@ static int dvb_dmxdev_section_callback(const u8 *buffer1, size_t buffer1_len,
}
if ((buffer1_len + buffer2_len) == 0) {
- if (success == DMX_CRC_ERROR) {
+ if (buffer1 == NULL && buffer2 == NULL) {
/* Section was dropped due to CRC error */
event.type = DMX_EVENT_SECTION_CRC_ERROR;
dvb_dmxdev_add_event(&dmxdevfilter->events, &event);
@@ -2671,11 +2671,6 @@ static int dvb_dmxdev_section_callback(const u8 *buffer1, size_t buffer1_len,
event.params.section.actual_length =
event.params.section.total_length;
- if (success == DMX_MISSED_ERROR)
- event.params.section.flags = DMX_FILTER_CC_ERROR;
- else
- event.params.section.flags = 0;
-
dvb_dmxdev_add_event(&dmxdevfilter->events, &event);
if (dmxdevfilter->params.sec.flags & DMX_ONESHOT)
@@ -2687,8 +2682,7 @@ static int dvb_dmxdev_section_callback(const u8 *buffer1, size_t buffer1_len,
static int dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len,
const u8 *buffer2, size_t buffer2_len,
- struct dmx_ts_feed *feed,
- enum dmx_success success)
+ struct dmx_ts_feed *feed)
{
struct dmxdev_filter *dmxdevfilter = feed->priv;
struct dvb_ringbuffer *buffer;
@@ -2697,11 +2691,10 @@ static int dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len,
ssize_t free;
if (!dmxdevfilter) {
- pr_err("%s: null filter (feed->is_filtering=%d) status=%d\n",
- __func__, feed->is_filtering, success);
+ pr_err("%s: null filter (feed->is_filtering=%d)\n",
+ __func__, feed->is_filtering);
return -EINVAL;
}
-
spin_lock(&dmxdevfilter->dev->lock);
if (dmxdevfilter->params.pes.output == DMX_OUT_DECODER ||
@@ -2725,36 +2718,8 @@ static int dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len,
return buffer->error;
}
- if (dmxdevfilter->params.pes.output == DMX_OUT_TAP) {
- if (success == DMX_OK && !events->current_event_data_size) {
- events->current_event_start_offset = buffer->pwrite;
- } else if (success == DMX_OK_PES_END) {
- event.type = DMX_EVENT_NEW_PES;
-
- event.params.pes.actual_length =
- events->current_event_data_size;
- event.params.pes.total_length =
- events->current_event_data_size;
-
- event.params.pes.base_offset =
- events->current_event_start_offset;
- event.params.pes.start_offset =
- events->current_event_start_offset;
-
- event.params.pes.flags = 0;
- event.params.pes.stc = 0;
- event.params.pes.transport_error_indicator_counter = 0;
- event.params.pes.continuity_error_counter = 0;
- event.params.pes.ts_packets_num = 0;
-
- /* Do not report zero length PES */
- if (event.params.pes.total_length)
- dvb_dmxdev_add_event(events, &event);
- events->current_event_data_size = 0;
- }
- } else if (!events->current_event_data_size) {
+ if (!events->current_event_data_size)
events->current_event_start_offset = buffer->pwrite;
- }
/* Verify output buffer has sufficient space, or report overflow */
free = dvb_ringbuffer_free(buffer);
diff --git a/drivers/media/dvb-core/dvb_demux.c b/drivers/media/dvb-core/dvb_demux.c
index d45bcc55b76a..7809770bd1ae 100644
--- a/drivers/media/dvb-core/dvb_demux.c
+++ b/drivers/media/dvb-core/dvb_demux.c
@@ -550,7 +550,7 @@ static inline int dvb_dmx_swfilter_payload(struct dvb_demux_feed *feed,
if (feed->pusi_seen == 0)
return 0;
- ret = feed->cb.ts(&buf[p], count, NULL, 0, &feed->feed.ts, DMX_OK);
+ ret = feed->cb.ts(&buf[p], count, NULL, 0, &feed->feed.ts);
/* Verify TS packet was copied successfully */
if (!ret) {
@@ -582,7 +582,7 @@ static int dvb_dmx_swfilter_sectionfilter(struct dvb_demux_feed *feed,
return 0;
return feed->cb.sec(feed->feed.sec.secbuf, feed->feed.sec.seclen,
- NULL, 0, &f->filter, DMX_OK);
+ NULL, 0, &f->filter);
}
static inline int dvb_dmx_swfilter_section_feed(struct dvb_demux_feed *feed)
@@ -613,7 +613,7 @@ static inline int dvb_dmx_swfilter_section_feed(struct dvb_demux_feed *feed)
/* Notify on CRC error */
feed->cb.sec(NULL, 0, NULL, 0,
- &f->filter, DMX_CRC_ERROR);
+ &f->filter);
return -1;
}
@@ -1256,9 +1256,9 @@ static inline void dvb_dmx_swfilter_output_packet(
*/
if (feed->tsp_out_format == DMX_TSP_FORMAT_192_HEAD)
feed->cb.ts(timestamp, TIMESTAMP_LEN, NULL,
- 0, &feed->feed.ts, DMX_OK);
+ 0, &feed->feed.ts);
- feed->cb.ts(buf, 188, NULL, 0, &feed->feed.ts, DMX_OK);
+ feed->cb.ts(buf, 188, NULL, 0, &feed->feed.ts);
/*
* if we output 192 packet with timestamp at tail of packet,
@@ -1266,7 +1266,7 @@ static inline void dvb_dmx_swfilter_output_packet(
*/
if (feed->tsp_out_format == DMX_TSP_FORMAT_192_TAIL)
feed->cb.ts(timestamp, TIMESTAMP_LEN, NULL,
- 0, &feed->feed.ts, DMX_OK);
+ 0, &feed->feed.ts);
if (feed->idx_params.enable)
dvb_dmx_index(feed, buf, timestamp);
@@ -1749,7 +1749,7 @@ void dvb_dmx_swfilter_raw(struct dvb_demux *demux, const u8 *buf, size_t count)
{
spin_lock(&demux->lock);
- demux->feed->cb.ts(buf, count, NULL, 0, &demux->feed->feed.ts, DMX_OK);
+ demux->feed->cb.ts(buf, count, NULL, 0, &demux->feed->feed.ts);
spin_unlock(&demux->lock);
}
@@ -2520,7 +2520,7 @@ static int dvbdmx_ts_insertion_insert_buffer(struct dmx_ts_feed *ts_feed,
return 0;
}
- feed->cb.ts(data, size, NULL, 0, ts_feed, DMX_OK);
+ feed->cb.ts(data, size, NULL, 0, ts_feed);
spin_unlock(&demux->lock);
diff --git a/drivers/media/dvb-core/dvb_net.c b/drivers/media/dvb-core/dvb_net.c
index 454584a8bf17..ce4332e80a91 100644
--- a/drivers/media/dvb-core/dvb_net.c
+++ b/drivers/media/dvb-core/dvb_net.c
@@ -761,8 +761,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
static int dvb_net_ts_callback(const u8 *buffer1, size_t buffer1_len,
const u8 *buffer2, size_t buffer2_len,
- struct dmx_ts_feed *feed,
- enum dmx_success success)
+ struct dmx_ts_feed *feed)
{
struct net_device *dev = feed->priv;
@@ -871,8 +870,7 @@ static void dvb_net_sec(struct net_device *dev,
static int dvb_net_sec_callback(const u8 *buffer1, size_t buffer1_len,
const u8 *buffer2, size_t buffer2_len,
- struct dmx_section_filter *filter,
- enum dmx_success success)
+ struct dmx_section_filter *filter)
{
struct net_device *dev = filter->priv;
diff --git a/drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c b/drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c
index d1e3c090c972..fb8f0c4bae37 100644
--- a/drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c
+++ b/drivers/media/platform/msm/dvb/demux/mpq_dmx_plugin_common.c
@@ -4186,7 +4186,7 @@ static int mpq_sdmx_section_filtering(struct mpq_feed *mpq_feed,
mpq_feed->sdmx_buf.size) {
feed->cb.sec(&mpq_feed->sdmx_buf.data[mpq_feed->sdmx_buf.pread],
header->payload_length,
- NULL, 0, &f->filter, DMX_OK);
+ NULL, 0, &f->filter);
} else {
int split = mpq_feed->sdmx_buf.size - mpq_feed->sdmx_buf.pread;
@@ -4194,7 +4194,7 @@ static int mpq_sdmx_section_filtering(struct mpq_feed *mpq_feed,
split,
&mpq_feed->sdmx_buf.data[0],
header->payload_length - split,
- &f->filter, DMX_OK);
+ &f->filter);
}
return 0;