summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/pvrusb2/pvrusb2-dvb.c
AgeCommit message (Collapse)Author
2009-03-06pvrusb2: Make a bunch of dvb config structures const (trivial)Mike Isely
From: Mike Isely <isely@pobox.com> Priority: normal Signed-off-by: Mike Isely <isely@pobox.com>
2008-07-27backport commit 27ac792ca0b0a1e7e65f20342260650516c95864Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> kernel-sync: Author: Andrea Righi <righi.andrea@gmail.com> Date: Wed Jul 23 21:28:13 2008 -0700 PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures On 32-bit architectures PAGE_ALIGN() truncates 64-bit values to the 32-bit boundary. For example: u64 val = PAGE_ALIGN(size); always returns a value < 4GB even if size is greater than 4GB. The problem resides in PAGE_MASK definition (from include/asm-x86/page.h for example): #define PAGE_SHIFT 12 #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) #define PAGE_MASK (~(PAGE_SIZE-1)) ... #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) The "~" is performed on a 32-bit value, so everything in "and" with PAGE_MASK greater than 4GB will be truncated to the 32-bit boundary. Using the ALIGN() macro seems to be the right way, because it uses typeof(addr) for the mask. Also move the PAGE_ALIGN() definitions out of include/asm-*/page.h in include/linux/mm.h. See also lkml discussion: http://lkml.org/lkml/2008/6/11/237 [akpm@linux-foundation.org: fix drivers/media/video/uvc/uvc_queue.c] [akpm@linux-foundation.org: fix v850] [akpm@linux-foundation.org: fix powerpc] [akpm@linux-foundation.org: fix arm] [akpm@linux-foundation.org: fix mips] [akpm@linux-foundation.org: fix drivers/media/video/pvrusb2/pvrusb2-dvb.c] [akpm@linux-foundation.org: fix drivers/mtd/maps/uclinux.c] [akpm@linux-foundation.org: fix powerpc] Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-05-02backport commit a6a3a17b7fdaf824e6d73e8e4a94c9d149302f74Mauro Carvalho Chehab
kernel-sync: Author: Harvey Harrison <harvey.harrison@gmail.com> Date: Mon Apr 28 16:50:03 2008 -0700 media: fix integer as NULL pointer warnings drivers/media/video/v4l2-common.c:719:16: warning: Using plain integer as NULL pointer drivers/media/video/au0828/au0828-dvb.c:122:19: warning: Using plain integer as NULL pointer drivers/media/video/ivtv/ivtv-yuv.c:1101:22: warning: Using plain integer as NULL pointer drivers/media/video/ivtv/ivtv-yuv.c:1102:23: warning: Using plain integer as NULL pointer drivers/media/video/pvrusb2/pvrusb2-audio.c:78:39: warning: Using plain integer as NULL pointer drivers/media/video/pvrusb2/pvrusb2-video-v4l.c:84:39: warning: Using plain integer as NULL pointer drivers/media/video/pvrusb2/pvrusb2-v4l2.c:1264:9: warning: Using plain integer as NULL pointer drivers/media/video/pvrusb2/pvrusb2-context.c:197:28: warning: Using plain integer as NULL pointer drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c:126:39: warning: Using plain integer as NULL pointer drivers/media/video/pvrusb2/pvrusb2-dvb.c:133:32: warning: Using plain integer as NULL pointer drivers/media/video/pvrusb2/pvrusb2-dvb.c:145:31: warning: Using plain integer as NULL pointer drivers/media/video/pvrusb2/pvrusb2-dvb.c:177:55: warning: Using plain integer as NULL pointer drivers/media/video/videobuf-core.c:100:9: warning: Using plain integer as NULL pointer Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-04-26pvrusb2-dvb: quiet down noise in kernel log for feed debugMichael Krufky
From: Michael Krufky <mkrufky@linuxtv.org> Get rid of the noise in dmesg during dvb feed changes, unless the appropriate debug trace flag is enabled. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Reviewed-by: Mike Isely <isely@pobox.com>
2008-04-20pvrusb2: Implement input selection enforcementMike Isely
From: Mike Isely <isely@pobox.com> In the pvrusb2 driver, different interfaces (e.g. V4L, DVB) have different abilities to handle various inputs. While the driver core can handle them all, the interfaces currently are not able to do this. Also, due to the fact that the DVB interface is directly touching the hardware, this limits what the V4L side can possibly do with digital reception, i.e. it has no means to control the digital tuner. This change implements a critical new feature in the driver where the interface instance can declare which inputs it is able to handle. The driver core then uses this information to narrow the list of legal input selections based on which interface(s) are active at the moment. The driver core will also perform an input switch (and consequently a mode switch) if the new narrowed list doesn't include the current mode. The overall effect of all of this is that now when a user opens the DVB interface, then the driver flips to dtv mode and likewise when the V4L video device is opened, the driver will disallow dtv selection. This also cleans up the handling of the V4L radio device - open that device and the driver will narrow to just the radio input. If the narrowing request results in the null set, e.g. attempting to narrow to dtv only while streaming analog, then the operation is disallowed and the caller gets an error. This has the effect of locking out mutually incompatible interfaces. For example, an attempt to operate a V4L interface will definitively fail when DVB is active. Thus we have locking and enforcement between the DVB and V4L sides. Hopefully at some point in the future we can expand the supported inputs in each interface, and at that point, the interface can just declare an expanded set of handled inputs and everything should continue to work itself out. This is a significant feature; it finally enables cooperative handling of pvrusb2-driven devices between DVB and V4L. Signed-off-by: Mike Isely <isely@pobox.com>
2008-04-06pvrusb2: Implement cleaner DVB kernel thread shutdownMike Isely
From: Mike Isely <isely@pobox.com> Earlier fix to handle DVB feed thread aborts was overly-aggressive. We can take better advantage of what kthread_stop() can do. This change simplifies things. Signed-off-by: Mike Isely <isely@pobox.com>
2008-03-30pvrusb2-dvb: Fix stuck thread on streaming abortMike Isely
From: Mike Isely <isely@pobox.com> If the device fails to stream, the feed thread will block forever waiting for buffers. But while in this state it was not looking for an exit condition from the driver DVB interface. This caused the thread to jam. Implement a new stop flag (which will be set appropriately) to tell the thread to stop. Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-09pvrusb2-dvb: Change usage of 0 --> NULLMike Isely
From: Mike Isely <isely@pobox.com> Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-09pvrusb2-dvb: Further clean up dvb init/tear-downMike Isely
From: Mike Isely <isely@pobox.com> Move pvr2_dvb_adapter usage out of the pvrusb2 driver core - it's really private to the pvrusb2-dvb module and nothing outside of the dvb implementation should care about it. Creation / destruction of the pvr2_dvb_adapter instance is now contained entirely within pvrusb2-dvb.c. Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-09pvrusb2-dvb: Don't initialize if device lacks a digital sideMike Isely
From: Mike Isely <isely@pobox.com> In the end we'd like the dvb interface to always be present - even for analog devices (via the mpeg encoder). However right now pvrusb2-dvb won't operate correctly if the hardware doesn't have a digital tuner, so don't initialize the DVB interface unless we know we have a digital tuner. Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-09pvrusb2-dvb: Remove digital_up flagMike Isely
From: Mike Isely <isely@pobox.com> Other pvrusb2-dvb changes have made the digital_up flag obsolete. So kill it. Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-09pvrusb2-dvb: Rework module tear-downMike Isely
From: Mike Isely <isely@pobox.com> Rather than making an explicit call to tear down the pvrusb2-dvb module, use the callback in the pvr2_channel structure. This has the advantage that now tear-down only happens when it makes sense. The previous implementation had scenarios where it was possible for the tear-down call to happen without a prior initialization. Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-06pvrusb2: Clean up dvb streaming start/stopMike Isely
From: Mike Isely <isely@pobox.com> Eliminate the need for a separate pvr2_dvb_fh; since in the DVB context there can only ever be a single instance then there is no need for a separate instance to handle streaming state. This simplifies the module. Also move streaming start/stop out of the feed thread and into the driver's main context - which makes it possible for streaming start up failures to be detected by the DVB core. Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-05pvrusb2: Fix oops in pvrusb2-dvbMike Isely
From: Mike Isely <isely@pobox.com> The pvrusb2-dvb feed thread cannot be allowed to exit by itself without first waiting for kthread_should_stop() to return true. Otherwise the driver will have a dangling task_struct context, which will cause a very nasty kernel oops. Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-09pvrusb2-dvb: set to DTV mode before attaching frontendMike Isely
From: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-03pvrusb2-dvb: finish up stream & buffer handlingMike Isely
From: Mike Isely <isely@pobox.com> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-03pvrusb2-dvb: start working on streaming / buffer handling codeMike Isely
From: Michael Krufky <mkrufky@linuxtv.org> start work on streaming / buffer handling code to feed the software demux Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-03pvrusb2-dvb: add pvr2_dvb_bus_ctrl to allow frontends to negotiate bus accessMike Isely
From: Michael Krufky <mkrufky@linuxtv.org> This function is just a skeleton for now - a placeholder to remind us to fix it. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-03pvrusb2: add DVB API frameworkMike Isely
From: Michael Krufky <mkrufky@linuxtv.org> Add basic framework for the DVB API. This is enough to control the tuner & demod of the digital frontend, but the stream & buffer handling is still missing. Additional note from Mike Isely <isely@pobox.com> - also, since these changes are still very experimental arrange for DVB changes to be compiled in via new CONFIG_VIDEO_PVRUSB2_DVB option, for now. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mike Isely <isely@pobox.com>