From patchwork Tue May 1 04:12:23 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Krufky X-Patchwork-Id: 10943 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1SP4SO-00012M-Ln for patchwork@linuxtv.org; Tue, 01 May 2012 06:12:56 +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-4) with esmtp for id 1SP4SO-00032W-9q; Tue, 01 May 2012 06:12:56 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752258Ab2EAEMw (ORCPT ); Tue, 1 May 2012 00:12:52 -0400 Received: from mail-vb0-f46.google.com ([209.85.212.46]:49271 "EHLO mail-vb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750916Ab2EAEMt (ORCPT ); Tue, 1 May 2012 00:12:49 -0400 Received: by mail-vb0-f46.google.com with SMTP id ff1so2558685vbb.19 for ; Mon, 30 Apr 2012 21:12:49 -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=2X+Gqvoo7QSrcftcHpD8vgZpmgeMOwgawIJPLHI+6Io=; b=BVgTOyV2VN43MDCcnVIsNAYVgPo2FsnR3cyrOPiGd1fK3a4J2W/8STEnsvQnKUaATM HWqZQ+njbDgf48YQ/i0arWDT7dA28WJ2AX/c9gHxiDMbEEOCvvhdDO3f4mLzjshi4EwA cSIcz/vu6Ie3lajws7deZXY7dwjmO81GT7rpeh2dKkZjKCDX7G/4F/RlCRgkkLiwcU79 IF1Hmrtu1boE8xdemtV9XFD8nLcXYG/s0kSU6WwtzhBkBWo+AOSWqJqj5LefE5xinQz0 gJgKBfp6pyT9gmYlYJjxbSVwnKAwRnuCoY4HmL8JINZPmanpOIcvKBquxcHDPTi+a5u0 FakA== Received: by 10.52.94.233 with SMTP id df9mr8068593vdb.119.1335845569285; Mon, 30 Apr 2012 21:12:49 -0700 (PDT) Received: from localhost.localdomain (cpe-67-247-37-142.nyc.res.rr.com. [67.247.37.142]) by mx.google.com with ESMTPS id iz3sm30262079vdb.11.2012.04.30.21.12.48 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 30 Apr 2012 21:12:48 -0700 (PDT) From: Michael Krufky To: linux-media Cc: Mauro Carvalho Chehab , Michael Krufky , Michael Krufky Subject: [PATCH 08/10] dvb-usb: add support for dvb-usb-adapters that deliver raw payload Date: Tue, 1 May 2012 00:12:23 -0400 Message-Id: <1335845545-20879-8-git-send-email-mkrufky@linuxtv.org> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1335845545-20879-1-git-send-email-mkrufky@linuxtv.org> References: <1335845545-20879-1-git-send-email-mkrufky@linuxtv.org> X-Gm-Message-State: ALoCoQlyPFOOFWHUbtjQY4uEYCrIsg4BCwTGlGfUXTKEpYAGCQr/k7PlhPezA2K/sYHFdTOJssKZ 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.1.40034 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, __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(+), 0 deletions(-) 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;