From patchwork Mon May 14 22:10:50 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Krufky X-Patchwork-Id: 11259 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1SU3UV-0006Rv-Cv for patchwork@linuxtv.org; Tue, 15 May 2012 00:11:43 +0200 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.75/mailfrontend-2) with esmtp for id 1SU3UU-0003NQ-IS; Tue, 15 May 2012 00:11:43 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932536Ab2ENWLk (ORCPT ); Mon, 14 May 2012 18:11:40 -0400 Received: from mail-qa0-f46.google.com ([209.85.216.46]:55766 "EHLO mail-qa0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932528Ab2ENWL2 (ORCPT ); Mon, 14 May 2012 18:11:28 -0400 Received: by mail-qa0-f46.google.com with SMTP id b17so3179695qad.19 for ; Mon, 14 May 2012 15:11:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=Ycfugw8Wj99ccz6pmjEzQV9WZptpl2fxd7UcKGeUt4c=; b=SbpHFZlBxRWLbKS7kvL2/klzO5jJUdVyMWi36kS+eljZ90WMrG7jMIbcvPXTicX+3i 18+ddfwREG0bqJqs6dCYSZsEzhUUCIFVs++leR1q/biNWuzKViW6MESHRhnOM5oLLrDm jmuN8JlX1HlLFqVIR0r9g2VZEgZyRce04GC35Z/Bw/GYGX8EBVDjaMgkeY0I2ig1uhpb wM8kZKZh5VVtzLul0sQv7HDm0lK7kLzjLfDlV3z7en9ebSZ5qUAZihpsgUUUcikVY5G4 5SMHnIpRQMhL0uKrlPdfUZDvydH4Ib2Z18o1iPggl9w1hvuqtFrlyvqBt+q7ISDSE7Vk vo4g== Received: by 10.229.102.65 with SMTP id f1mr4867103qco.81.1337033488300; Mon, 14 May 2012 15:11:28 -0700 (PDT) Received: from outlands.localdomain6 (cpe-67-247-37-142.nyc.res.rr.com. [67.247.37.142]) by mx.google.com with ESMTPS id i8sm41897420qap.0.2012.05.14.15.11.27 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 14 May 2012 15:11:27 -0700 (PDT) From: Michael Krufky To: linux-media@vger.kernel.org Cc: mchehab@infradead.org, Michael Krufky , Michael Krufky Subject: [PATCH 08/11] dvb-usb: add support for dvb-usb-adapters that deliver raw payload Date: Mon, 14 May 2012 18:10:50 -0400 Message-Id: <1337033453-22119-8-git-send-email-mkrufky@linuxtv.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1337033453-22119-1-git-send-email-mkrufky@linuxtv.org> References: <1337033453-22119-1-git-send-email-mkrufky@linuxtv.org> X-Gm-Message-State: ALoCoQnvFCVBU9Vay4qknqlLY5X4STQu34OXl7Zv5RoLu2cbmar50ROA31oNi013xifp9VTGYFH0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2012.5.14.220018 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' MULTIPLE_RCPTS 0.1, HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_2000_2999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, DATE_TZ_NA 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __MIME_TEXT_ONLY 0, __MULTIPLE_RCPTS_CC_X2 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0, __URI_NS ' From: Michael Krufky Select this feature setting the dvb-usb-adapter caps field with DVB_USB_ADAP_RECEIVES_RAW_PAYLOAD Signed-off-by: Michael Krufky --- drivers/media/dvb/dvb-usb/dvb-usb-urb.c | 12 ++++++++++++ drivers/media/dvb/dvb-usb/dvb-usb.h | 1 + 2 files changed, 13 insertions(+) diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-urb.c b/drivers/media/dvb/dvb-usb/dvb-usb-urb.c index 53a5c30..5c8f651 100644 --- a/drivers/media/dvb/dvb-usb/dvb-usb-urb.c +++ b/drivers/media/dvb/dvb-usb/dvb-usb-urb.c @@ -80,6 +80,14 @@ static void dvb_usb_data_complete_204(struct usb_data_stream *stream, u8 *buffer dvb_dmx_swfilter_204(&adap->demux, buffer, length); } +static void dvb_usb_data_complete_raw(struct usb_data_stream *stream, + u8 *buffer, size_t length) +{ + struct dvb_usb_adapter *adap = stream->user_priv; + if (adap->feedcount > 0 && adap->state & DVB_USB_ADAP_STATE_DVB) + dvb_dmx_swfilter_raw(&adap->demux, buffer, length); +} + int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap) { int i, ret = 0; @@ -90,6 +98,10 @@ int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap) adap->fe_adap[i].stream.complete = dvb_usb_data_complete_204; else + if (adap->props.fe[i].caps & DVB_USB_ADAP_RECEIVES_RAW_PAYLOAD) + adap->fe_adap[i].stream.complete = + dvb_usb_data_complete_raw; + else adap->fe_adap[i].stream.complete = dvb_usb_data_complete; adap->fe_adap[i].stream.user_priv = adap; ret = usb_urb_init(&adap->fe_adap[i].stream, diff --git a/drivers/media/dvb/dvb-usb/dvb-usb.h b/drivers/media/dvb/dvb-usb/dvb-usb.h index 6d7d13f..86cfa86 100644 --- a/drivers/media/dvb/dvb-usb/dvb-usb.h +++ b/drivers/media/dvb/dvb-usb/dvb-usb.h @@ -141,6 +141,7 @@ struct dvb_usb_adapter_fe_properties { #define DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF 0x02 #define DVB_USB_ADAP_NEED_PID_FILTERING 0x04 #define DVB_USB_ADAP_RECEIVES_204_BYTE_TS 0x08 +#define DVB_USB_ADAP_RECEIVES_RAW_PAYLOAD 0x10 int caps; int pid_filter_count;