Re: [PATCH] Add patch to allow compilation on versions 3.5 with CONFIG_OF

2014-06-18 Thread Devin Heitmueller
 Doesn't this produce compiler warnings since the static v4l2_of_parse_*
 functions are now never called?

Those functions are inside the #if 0, so the compiler never sees them.

 I would patch v4l2-core/Makefile instead to just never compile v4l2-of.o.

Because the final Makefile is generated by a script, I didn't think
you actually could address it at the make prepare phase.  That said,
now I see that I could have patched
linux/drivers/media/vl2-core/Makefile as you suggested.

I don't have time to regenerate/resubmit at this point.  Take the
patch if you want it, feel free to recreate the patch slightly
differently with no discernible benefit, or eventually I will get
around to it the next time I'm working on that tree.

Cheers,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [alsa-devel] [PATCH 1/3] sound: Add a quirk to enforce period_bytes

2014-06-16 Thread Devin Heitmueller
 This looks like a workaround for a userspace bug that would affect all
 USB audio devices.  What period/buffer sizes are xawtv/tvtime trying to
 use?

I have similar concerns, although I don't know what the right solution
is.  For example, the last time Mauro tweaked the latency in tvtime,
it broke support for all cx231xx devices (note that tvtime and xawtv
share essentially the same ALSA code):

http://git.linuxtv.org/cgit.cgi/tvtime.git/commit/?id=3d58ba563bfcc350c180b59a94cec746ccad6ebe

It seems like there is definitely something wrong with the
latency/period selection in both applications, but we need some
insight from people who are better familiar with the ALSA subsystem
for advice on the right way to do low latency audio capture (i.e.
properly negotiating minimal latency in a way that works with all
devices).

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [alsa-devel] [PATCH 1/3] sound: Add a quirk to enforce period_bytes

2014-06-16 Thread Devin Heitmueller
 The official TV playback application, found on the CD with drivers,
 captures samples from the card into its buffer, and plays from the other
 end of the buffer concurrently. If there are, on average for a few
 seconds, too few samples in the buffer, it means that they are consumed
 faster than they arrive, and so the SAA chip is told to produce them a
 bit faster. If they accumulate too much, the SAA chip is told to produce
 them slower. That's it.

 Ok. Well, xc5000 (with does the audio sampling) doesn't have it, AFAIKT.

 
  The xc5000 tuner used on this TV device doesn't provide any mechanism
  to control audio PLL. It just sends the audio samples to au0828 via a
  I2S bus. All the audio control is done by the USB bridge at au0828,
  and that is pretty much limited. The only control that au0828 accepts
  is the control of the URB buffers (e. g., number of URB packets and
  URB size).

It's probably worth noting that Mauro's explanation here is incorrect
- the xc5000 does *not* put out I2S.  It outputs an SIF which is fed
to the au8522.  The au8522 has the audio decoder, and it's responsible
for putting out I2S to the au0828.

Hence the xc5000's PLL would have no role here.

In fact, you should see the exact same behavior on the A/V input,
since the au8522 is responsible for the I2S clock which drives the
cs5503 (the 5503 is in slave mode).

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Add patch to allow compilation on versions 3.5 with CONFIG_OF

2014-06-12 Thread Devin Heitmueller
Support for Open Firmware was introduced in the V4L2 tree, but
it depends on features only found in 3.5+.  Add a patch to disable
the support for earlier kernels.

Tested on Ubuntu 10.04 with kernel 3.2.0-030200-generic (which has
CONFIG_OF enabled by default).

Signed-off-by: Devin Heitmueller dheitmuel...@kernellabs.com
---
 backports/backports.txt   |  1 +
 backports/v3.4_openfirmware.patch | 13 +
 2 files changed, 14 insertions(+)
 create mode 100644 backports/v3.4_openfirmware.patch

diff --git a/backports/backports.txt b/backports/backports.txt
index 281c263..08908e6 100644
--- a/backports/backports.txt
+++ b/backports/backports.txt
@@ -43,6 +43,7 @@ add v3.6_i2c_add_mux_adapter.patch
 
 [3.4.255]
 add v3.4_i2c_add_mux_adapter.patch
+add v3.4_openfirmware.patch
 
 [3.2.255]
 add v3.2_devnode_uses_mode_t.patch
diff --git a/backports/v3.4_openfirmware.patch 
b/backports/v3.4_openfirmware.patch
new file mode 100644
index 000..f0a8d36
--- /dev/null
+++ b/backports/v3.4_openfirmware.patch
@@ -0,0 +1,13 @@
+--- a/drivers/media/v4l2-core/v4l2-of.c2014-06-11 17:05:02.0 
-0700
 b/drivers/media/v4l2-core/v4l2-of.c2014-06-11 17:05:34.0 
-0700
+@@ -1,3 +1,5 @@
++/* Depends on symbols not present until kernel 3.5 */
++#if 0
+ /*
+  * V4L2 OF binding parsing library
+  *
+@@ -142,3 +144,4 @@
+   return 0;
+ }
+ EXPORT_SYMBOL(v4l2_of_parse_endpoint);
++#endif
-- 
1.9.1

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Pinnacle 320cx -- /dev/video ?

2014-05-29 Thread Devin Heitmueller
 According to:
 http://www.linuxtv.org/wiki/index.php/TerraTec_Cinergy_T_USB_RC

 Pinnacle Expresscard 320cx  ✔ Yes, in kernel since 2.6.26   2304:022e
 USB2.0  dvb-usb-dib0700-1.20.fw

 I've just bought this card and it is correctly recognized and
 initialized, however it doesn't work. Precisely: tvtime and similar
 applications say: `no video device' and no /dev/video0 nor similar
 device files are created. Does the _analog_ part work? Am I missing sth?

There is no Linux support for the analog video capture with the
dib0700 driver.  Hence you will only be able to use that device for
digital reception.

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] au0828: fix logic of tuner disconnection

2014-05-07 Thread Devin Heitmueller
On Tue, May 6, 2014 at 11:58 PM,  cb.xi...@samsung.com wrote:
 From: Changbing Xiong cb.xi...@samsung.com

 The driver crashed when the tuner was disconnected while restart stream
 operations are still being performed. Fixed by adding a flag in struct
 au0828_dvb to indicate whether restart stream operations can be performed.

 If the stream gets misaligned, the work of restart stream operations are
  usually scheduled for many times in a row. If tuner is disconnected at
 this time and some of restart stream operations are still not flushed,
 then the driver crashed due to accessing the resource which used in
 restart stream operations has been released.

 Signed-off-by: Changbing Xiong cb.xi...@samsung.com

I haven't yet reviewed the logic in detail, but at a minimum this
should really be two patches - one to address the disconnect bug and a
second to deal with failure to cancel to the worker thread.  Also, you
need to pick a name for the variable that is more explanatory than
flag.

Please resubmit this as two separate patches with flag renamed, and
I will then look at the actual implementation to see if it causes any
problems.

Thanks,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/4] drivers/base: add managed token devres interfaces

2014-05-05 Thread Devin Heitmueller
On Mon, May 5, 2014 at 3:36 PM, Tejun Heo t...@kernel.org wrote:
 On Mon, May 05, 2014 at 03:30:34PM -0400, Devin Heitmueller wrote:
 On Mon, May 5, 2014 at 3:26 PM, Tejun Heo t...@kernel.org wrote:
  As such, please consider the patches nacked and try to find someone
  who can shepherd the code.  Mauro, can you help out here?

 We actually discussed this proposal at length at the media summit last
 week.  The patches are being pulled pending further internal review

 being pulled into a tree or being pulled for more work?

Sorry, I wasn't clear.  They are being pulled for more work.  After
discussion with the rest of the linux-media developers, it was
determined that the patches don't cover all the use cases and the
patch submission was premature.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Elgato Eye TV Deluxe V2 supported?

2014-04-25 Thread Devin Heitmueller
On Fri, Apr 25, 2014 at 2:31 PM, Another Sillyname
anothersn...@googlemail.com wrote:
 I have an Elgato Eye TV V2 USB device  USB ID 0fd9:002c which reading here

 https://github.com/mirrors/linux-2.6/blob/master/drivers/staging/media/as102/as102_usb_drv.h

 Looks like it should be supported (it looks like Devin wrote some of
 the code?)..it gets recognised in dmesg and indeed lsusb sees it,
 but no firmware is loaded (I have the required as102 files in
 /lib/firmware) and in effect it never 'initialises'.

Hi Tony,

Sorry, I saw your email yesterday but forgot to reply.  The issue is
that the as102 is still in staging, so it won't appear in mainline
kernels by default.  You would need to install the media_build tree,
run make menuconfig, enable staging drivers and then enable the
as102 bridge.

The messages you are seeing in dmesg and lsusb are just the kernel
finding the hardware at a USB level - these messages will appear
whether there is a driver or not for the actual device.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Elgato Eye TV Deluxe V2 supported?

2014-04-25 Thread Devin Heitmueller
 Is the as102 tree ever likely to go mainline?

The only reason it's in staging is because it doesn't meet the coding
standards (i.e. whitespace, variable naming, etc).  Somebody needs to
come along and expend the energy to satisfy the whitespace gods.

Seems like a fantastically stupid reason to keep a working driver out
of the mainline, but that's just my opinion.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Terratec Cinergy T XS Firmware (Kernel 3.14.1)

2014-04-24 Thread Devin Heitmueller
 Yes, I am sure. The tuner-xc2028 module even reports FW Version 2.7.

Yeah, the firmware image itself looks fine.

 What I suspect is, that this piece of hardware simply doesn't work with
 that firmware version.

You've got the right blob (that's the only firmware that has ever run
on the xc3028a chip).  The message you provided which says Device is
Xceive 34584 version 8.7, firmware version 1.8 is the value read out
of the xc3028 chip after the firmware is loaded.  The value isn't read
out of the firmware blob.

There are really three possibilities here:

1.  The xc3028 is being held in reset.  They've screwed up the GPIOs
in the em28xx driver so many times that I've lost count.  If the chip
is in reset during the firmware load or when reading the version info,
you'll get whatever garbage happened to be in memory when the I2C call
was made.  Alternatively, the xc3028 gets it's reset line probed
between loading the firmware and reading the version (but this is less
likely).

2.  The xc3028 is not in reset, and the firmware load failed.  In this
case, for whatever reason the firmware wasn't loaded properly into the
chip (for example, due to a bug in the I2C code in the em28xx driver)
and the CPU on the 3028 never gets started.  Hence when it goes to
subsequently read the firmware version back out of the chip, the CPU
on the 3028 isn't running so you're getting a garbage value back from
the 3028.

3. The firmware loaded properly, but due to some other condition the
I2C call to read the firmware version never actually made it to the
3028 and you're getting back whatever garbage value happened to be in
the kernel memory that was supposed to be populated with the I2C
response.

The right way to debug this is probably to put a logic analyzer on the
I2C bus and see if the traffic is making it to the xc3028 at all.
Would also monitor the reset line with a scope and make sure it's high
and watch for it being strobed when it shouldn't be.  Of course both
of those debugging techniques require hardware.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Terratec Cinergy T XS Firmware (Kernel 3.14.1)

2014-04-23 Thread Devin Heitmueller
On Wed, Apr 23, 2014 at 4:34 PM, Daniel Exner d...@dragonslave.de wrote:
 Hi,

 (Please keep me in CC as I'm currently not subscribed to this Mailinglist)

 I happened to inherit one of those DVB-T Sticks

 ID 0ccd:0043 TerraTec Electronic GmbH Cinergy T XS

 and of course it isn't working as exspected.

 So far I extracted the firmware the tuner_xc2028 module was telling me
 (xc3028-v27.fw) and the module loaded.
 But no dvb device nodes where created.

 I tried connecting directly to it using xawtv and that gave me a load of
 Incorrect readback of firmware version. messages.

 Then I tried loading the module with debug=1 and now I see:

 Device is Xceive 34584 version 8.7, firmware version 1.8

 So I guess the driver is trying to use the wrong firmware file.

 I extracted some file named merlinC.rom from the Terratec Windows
 Drivers that I suspect to contain the firmware.

 Now I need some help how to verify that and create a usable fw File for
 the driver.

You can get the firmware via the following procedure:

http://www.linuxtv.org/wiki/index.php/Xceive_XC3028/XC2028#How_to_Obtain_the_Firmware

or if you're on Ubuntu it's already packaged in
linux-firmware-nonfree.  The file itself is 66220 bytes and has an MD5
checksum of 293dc5e915d9a0f74a368f8a2ce3cc10.

Note that if you have that file in /lib/firmware, it's entirely
possible that the driver is just broken (this happens quite often).
The values read back by dmesg are from the device itself, so if the
chip wasn't properly initialized fields such as the version will
contain garbage values.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEW PATCH 3/3] saa7134: convert to vb2

2014-04-18 Thread Devin Heitmueller
 This was a bit confusing following the previous paragraph. I meant to say 
 that the
 *saa7134* userptr implementation is not USERPTR at all but 
 PAGE_ALIGNED_USERPTR.

 A proper USERPTR implementation (like in bttv) can use any malloc()ed pointer 
 as
 it should, but saa7134 can't as it requires the application to align the 
 pointer
 to a page boundary, which is non-standard.

It's probably worth mentioning at this point that there's a bug in
videobuf2_vmalloc() where it forces the buffer provided by userptr
mode to be page aligned.  This causes issues if you hand it a buffer
that isn't actually page aligned, as it writes to an arbitrary offset
into the buffer instead of the start of the buffer you provided.

I've had the following patch in my private tree for months, but had
been hesitant to submit it since I didn't know if it would effect
other implementations.  I wasn't sure if USERPTR mode required the
buffers to be page aligned and I was violating the spec.

Devin

From: Devin Heitmueller dheitmuel...@kernellabs.com
Date: Fri, 17 May 2013 19:53:02 + (-0400)
Subject: Fix alignment bug when using VB2 with userptr mode

Fix alignment bug when using VB2 with userptr mode

If we pass in a USERPTR buffer that isn't page aligned, the driver
will align it (and not tell userland).  The result is that the driver
thinks the video starts in one place while userland thinks it starts
in another.  This manifests itself as the video being horizontally
shifted and there being garbage from the start of the field up to
that point.

This problem was seen with both the em28xx and uvc drivers when
testing on the Davinci platform (where the buffers allocated are
not necessarily page aligned).
---

diff --git a/linux/drivers/media/v4l2-core/videobuf2-vmalloc.c
b/linux/drivers/media/v4l2-core/videobuf2-vmalloc.c
index 94efa04..ad7ce7c 100644
--- a/linux/drivers/media/v4l2-core/videobuf2-vmalloc.c
+++ b/linux/drivers/media/v4l2-core/videobuf2-vmalloc.c
@@ -82,7 +82,7 @@ static void *vb2_vmalloc_get_userptr(void
*alloc_ctx, unsigned long vaddr,
  return NULL;

  buf-write = write;
- offset = vaddr  ~PAGE_MASK;
+ offset = 0;
  buf-size = size;

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEW PATCH 3/3] saa7134: convert to vb2

2014-04-18 Thread Devin Heitmueller
Hi Hans,

 This makes no sense. The vivi driver uses vb2-vmalloc as well, and that works
 perfectly fine in userptr mode. Applying this patch breaks vivi userptr mode,
 so this is a NACK for this patch.

Don't misunderstand, I acknowledge the very real possibility that I
don't fully understand the underlying problem.  And to be clear I
wasn't intending to send the patch to this mailing list expecting it
to be merged.  That said, I reproduced it on the ti81xx platform on
both em28xx and uvcvideo, so I was comfortable it wasn't an issue with
my em28xx VB2 conversion.

 I wonder though if this is related to this thread:

 http://www.spinics.net/lists/linux-media/msg75815.html

 I suspect that in your case the vb2_get_contig_userptr() function is called
 which as far as I can tell is the wrong function to call for the vmalloc case
 since there is absolutely no requirement that user pointers should be
 physically contiguous for vmalloc drivers.

Entirely possible.  I hadn't followed that thread previously but will
take a look.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Hauppauge ImpactVCB-e 01385

2014-04-16 Thread Devin Heitmueller
 Anyway, I would recommend that you make a safety copy of your modules
 first (just in case :-) ), and then move all the newly install modules
 to the right place.

Yeah, I generally recommend that in such cases you just rm -rf
/lib/modules/`uname -r`/kernel/drivers/media before running make
install, so you know you're in a clean state (make a backup copy
first though, just in case).  This avoids having to figure out which
driver moved and the old version of which didn't get deleted.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: No channels on Hauppauge 950Q

2014-03-30 Thread Devin Heitmueller
On Sun, Mar 30, 2014 at 12:25 PM, Sunset Machine
sunsetmachi...@gmail.com wrote:
 Today is March 30, 2014

 The 950Q is a USB TV Stick. The driver loads, the firmware loads.
 Various software sees the device but none of them find any channels. I
 use an antenna for over-the-air HD television in the US. The device
 works on Windows but not Linux (Debian 7.3, Squeeze).

What kernel version are you using?  What applications have you tested
with?  If you have a relatively recent version of the HVR-950q stick
with a kernel older than 3.7, then you are likely to have issues with
not having some required driver updates for the new tuner chip inside
the unit.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: No channels on Hauppauge 950Q

2014-03-30 Thread Devin Heitmueller
On Sun, Mar 30, 2014 at 3:16 PM, Sunset Machine
sunsetmachi...@gmail.com wrote:
 kernel 3.2.0-4-686-pae and a new 950q

Ok.  If you own a Revision E1H3 device, then that kernel definitely
won't work (the Rev is printed on the back of the stick above the
barcode).

 3.13-1-686-pae is available in Debian testing.  I'll look into it.

 TVTime, MythTV, Mplayer, Kaffeine, and w_scan. scan would oddly
 leave the green signal light on when the program finished, as if it
 were tuned, but reporting 0 channels found.

Well TVTime won't do OTA broadcasts since it's digital only.  That
said, the others should assuming you configured them properly.

Definitely check the stick revision and try a much newer kernel.
There have been a ton of fixes since 3.2 so it isn't worth even trying
to debug on that kernel.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] saa7134: automatic norm detection

2014-03-28 Thread Devin Heitmueller
 Let me explain why I created a new thread.
 My company is engaged in the monitoring of TV air. All TV channels are
 recorded 24/7 for further analysis. But some local TV channels change
 the standard over time (SECAM-PAL, PAL-SECAM). So the recording
 software must be notified about these changes to set a new standard and
 record the picture but not the noise.

 OK, fair enough.

This is a perfectly reasonable use case, but since we don't do this
with any other devices we probably need to decide whether this really
should be the responsibility of the kernel at all, or whether it
really should be done in userland.  Doing it in userland would be
trivial (even just a script which periodically runs QUERYSTD in a loop
would accomplish the same thing), and the extra complexity of having a
thread combined with the inconsistent behavior with all the other
drivers might make it more worthwhile to do it in userland.

If it were hooked to an interrupt line on the video decoder, I could
certainly see doing it in kernel, but for something like this the loop
that checks the standard could just as easily be done in userland.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: xc2038/3028 firmware

2014-03-21 Thread Devin Heitmueller
Hi Frank,

I specifically asked for and received permission from
Xceive/CrestaTech to make the xc5000 firmware freely redistributable.
They were unwilling to entertain that though for the xc2028/3028 as
they considered it a long deprecated product.

In order to include firmware blobs in linux-firmware, there needs to
be an actual license legally permitting redistribution - we don't have
that for the 2028/3028.

In general CrestaTech have been extremely cooperative with the Linux
community, especially in recent years.  However in this case they just
couldn't justify the effort to do the paperwork for a chip that they
stopped shipping years ago.

Devin

On Fri, Mar 21, 2014 at 1:25 PM, Frank Schäfer
fschaefer@googlemail.com wrote:
 Hi,

 are there any reasons why the xc2028/3028 firmware files are not
 included in the linux-firmware tree ?
 The xc5000 firmware is already there, so it seems Xceive|has nothing
 against| redistribution of their firmware... ?!

 Regards,
 Frank
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/79] Add support for ATSC PCTV 80e USB stick

2014-03-04 Thread Devin Heitmueller
On Mon, Mar 3, 2014 at 5:05 AM, Mauro Carvalho Chehab
m.che...@samsung.com wrote:
 This patch series finally merge a long waited driver, for Micronas/Trident
 DRX-J ATSC frontends.

 It is based on a previous work from Devin, who made the original port
 of the Trident driver and got license to ship the firmware.

 Latter, it got some attention from Patrick that tried to upstream it.

 However, this driver had very serious issues, and didn't fit into Linux
 Kernel code quality standards.

 So, I made some patches, back in 2012, in order to try helping to get
 this driver merged, but, as I didn't have the device, and Patrick never
 sent a final tested version, the patches got hibernated for a long time.

 Finally, this year, I got one hardware for me, and one for Shuah, as
 she offered her help to fix suspend/resume issues at the subsystem.

 This series is a result of this work: the driver got major cleanups,
 and several relevant bug fixes. The most serious one is that the
 device was not fully initializing the struct that was enabling the
 MPEG output. Worse than that, the routine that was setting the MPEG
 output was also rewriting the default values for a dirty set.

 The type of output was also wrong: on this board, PCTV 80e is wired
 for serial MPEG transfer, but the driver was initialized to parallel.

 All those bugs got fixed, and, at least on my tests with a PCTV
 80e model 01134, the device is now properly working.

 Not sure if all patches will arrive the ML, as there are some very big
 ones here that could be biger than VGER's max limit for posts.

 Anyway, all patches can be found at:
 
 http://git.linuxtv.org/mchehab/experimental.git/shortlog/refs/heads/drx-j-v3

 Have fun!
 Mauro

 Devin Heitmueller (2):
   [media] drx-j: add a driver for Trident drx-j frontend
   [media] drx-j: put under 3-clause BSD license

 Mauro Carvalho Chehab (74):
   [media] drx-j: CodingStyle fixes
   [media] drx-j: Fix compilation and un-comment it
   [media] drx-j: Fix CodingStyle
   [media] drx-j: get rid of the typedefs on bsp_i2c.h
   [media] drx-j: remove the const annotate on HICommand()
   [media] drx-j: get rid of the integer typedefs
   [media] drx-j: get rid of the other typedefs at bsp_types.h
   [media] drx-j: get rid of the bsp*.h headers
   [media] drx-j: get rid of most of the typedefs
   [media] drx-j: fix whitespacing on pointer parmameters
   [media] drx-j: Use checkpatch --fix to solve several issues
   [media] drx-j: Don't use CamelCase
   [media] drx-j: do more CodingStyle fixes
   [media] drx-j: remove the unused tuner_i2c_write_read() function
   [media] drx-j: Remove a bunch of unused but assigned vars
   [media] drx-j: Some minor CodingStyle fixes at headers
   [media] drx-j: make a few functions static
   [media] drx-j: Get rid of drx39xyj/bsp_tuner.h
   [media] drx-j: get rid of typedefs in drx_driver.h
   [media] drx-j: Get rid of typedefs on drxh.h
   [media] drx-j: a few more CodingStyle fixups
   [media] drx-j: Don't use buffer if an error occurs
   [media] drx-j: replace the ugly CHK_ERROR() macro
   [media] drx-j: don't use parenthesis on return
   [media] drx-j: Simplify logic expressions
   [media] drx-j: More CamelCase fixups
   [media] drx-j: Remove typedefs in drxj.c
   [media] drx-j: CodingStyle fixups on drxj.c
   [media] drx-j: Use the Linux error codes
   [media] drx-j: Replace printk's by pr_foo()
   [media] drx-j: get rid of some ugly macros
   [media] drx-j: remove typedefs at drx_driver.c
   [media] drx-j: remove drxj_options.h
   [media] drx-j: make checkpatch.pl happy
   [media] drx-j: remove the useless microcode_size
   [media] drx-j: Fix release and error path on drx39xxj.c
   [media] drx-j: Be sure that all allocated data are properly initialized
   [media] drx-j: dynamically load the firmware
   [media] drx-j: Split firmware size check from the main routine
   [media] em28xx: add support for PCTV 80e remote controller
   [media] drx-j: remove unused code from drx_driver.c
   [media] drx-j: get rid of its own be??_to_cpu() implementation
   [media] drx-j: reset the DVB scan configuration at powerup
   [media] drx-j: Allow standard selection
   [media] drx-j: Some cleanups at drx_driver.c source
   [media] drx-j: prepend function names with drx_ at drx_driver.c
   [media] drx-j: get rid of drx_driver.c
   [media] drx-j: Avoid any regressions by preserving old behavior
   [media] drx-j: Remove duplicated firmware upload code
   [media] drx-j: get rid of drx_ctrl
   [media] drx-j: get rid of the remaining drx generic functions
   [media] drx-j: move drx39xxj into drxj.c
   [media] drx-j: get rid of drxj_ctrl()
   [media] drx-j: comment or remove unused code
   [media] drx-j: remove some ugly bindings from drx39xxj_dummy.c
   [media] drx-j: get rid of tuner dummy get/set frequency
   [media] drx-j: be sure to use tuner's IF
   [media] drx-j: avoid calling power_down_foo twice
   [media] drx-j: call ctrl_set_standard even if a standard is powered
   [media

Re: V4L2 and frames vs fields

2014-03-03 Thread Devin Heitmueller
Hi Hans,

 For field formats where both fields are used the spec is reasonably clear. The
 v4l2_format height field refers to the full frame height (combining both 
 fields).

No dispute here.

 For the TOP/BOTTOM/ALTERNATE setting the format's height refers to that of the
 field, not the frame. So the resulting buffer size is still height * 
 bytesperline.

What is the assertion based on?  Looking at different drivers (and if
so, which ones)?  Looking at different userland apps (and if so which
one)?  Somewhere in the spec?

 Drivers can use several strategies on how to handle this:

 Some support only one field setting: INTERLACED if height  frameheight / 2 
 and
 TOP if height = frameheight / 2. In this case the application cannot change 
 the
 field, it is set by the driver based on the height chosen by the application.

So you're saying that an app says I want V4L2_FIELD_INTERLACED with a
height of 320x240, and the driver will change the field type to
V4L2_FIELD_TOP in the response to the S_FMT call?

 The reverse is also possible: the driver allows you to change the field but 
 not
 the height. So INTERLACED will give a height of 576 and TOP a height of 288.

 If there is a hardware scaler as well, then changing the field setting must 
 not
 change the format's height, instead the scaler is adjusted. So if the height
 is 576 and the field is TOP, then the image will be scaled up by a factor of 
 2.

Are you making a general statement about what you think should be the
desired behavior, or citing what some particular driver does?

 If there are limitations in what the scaler can do (say it can only downscale)
 then it depends on the height which field values are honored. So attempts to
 set FIELD_TOP if the height is 576 and only a downscaler is available should
 result in FIELD_INTERLACE and an unchanged height. Only at heights = 288 will
 the FIELD_TOP setting work.

 When implementing FIELD_ANY drivers can choose to select FIELD_TOP (or BOTTOM)
 if the height = frameheight / 2 instead of FIELD_INTERLACED.

 The description of FIELD_ALTERNATE in the spec has this phrase: Image sizes
 refer to the frame, not fields. That seems nonsense to me and none of the
 drivers that support FIELD_ALTERNATE does that. If any of FIELD_TOP, BOTTOM
 or ALTERNATE is selected the width, height and sizeimage fields all relate
 to the size of a (possibly scaled) field.

 I plan on updating the spec, but I'd like to run this by you all to see if
 I missed anything or got it wrong after all.

This all looks like a pretty big mess, so I'm really wondering who is
actually using any of this functionality (both on the driver and
application side).  If we can't find any apps that actually use any of
this functionality, and the behavior is undefined in the spec, then it
might make sense to decide on what is the right approach and then
make the drivers conform rather than trying to figure out what
approach is taken by the most drivers and then updating the spec to
reflect that.

I can appreciate there's a good bit of extra complexity here as a
result of how different chipsets implement their video pipeline and
scaler.  The specific use case *I* care about is that I've got 720x480
NTSC video coming in and I'm rendering it to a small LCD.  I want to
be able to throw away the bottom field since the LCD is smaller than
240 high and this allows me to not require any deinterlacing (simply
rescaling the video to 320x240 using the hardware scaler won't solve
the problem since I'll still get interlaced video, just 120 lines of
the top field and 120 of the bottom).

I suspect at least some of the cases that prompted the creation of
these different field formats is similar, while others such as
ALTERNATE are a result of really old hardware that cannot report which
field it is returning.  I also suspect many of the drivers have code
that implements support for some of these formats not because somebody
needed it but rather because the code was copied from some other
driver (and may not even actually work).

If nothing else, it would be very helpful if you could make more clear
which of the statements you made above are the result of
interpretation of the spec, evaluation of some of the current drivers
which claim to support these field types, or what you think the
correct behavior *should* be independent of how various drivers do it
today.

Cheers,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Unknown EM2800 video grabber (card=0)

2014-03-02 Thread Devin Heitmueller
 No idea what's going wrong here, but this dmesg output is definitely
 incomplete.
 Or maybe you modifed the driver and messed things up ? ;-)

My guess is that it's not actually an em28xx device at all (and the
doc the user is referring to refers to some device by the manufacturer
with the same name).

Open it up and send us some hi-res photos of the PCB.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] media/drx39xyj: fix DJH_DEBUG path null pointer dereferences, and compile errors.

2014-02-28 Thread Devin Heitmueller
On Fri, Feb 28, 2014 at 4:22 PM, Shuah Khan shuah...@samsung.com wrote:
 This patch series fixes null pointer dereference boot failure as well as
 compile errors.

Seems kind of strange that I wasn't on the CC for this, since I was
the original author of all that code (in fact, DJH are my initials).

Mauro, did you strip off my authorship when you pulled the patches from my tree?

The patches themselves look sane, and I will send a formal Acked-by
once I can get in front of a real computer.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 07/24] xc5000: properly report i2c write failures

2014-02-10 Thread Devin Heitmueller
On Mon, Feb 10, 2014 at 3:25 AM, Joonyoung Shim dofm...@gmail.com wrote:
 As you said, i modified like below patch and it is working well.

 Thanks for your advice.

 diff --git a/drivers/media/usb/au0828/au0828-cards.c
 b/drivers/media/usb/au0828/au0828-cards.c
 index 0cb7c28..9936875 100644
 --- a/drivers/media/usb/au0828/au0828-cards.c
 +++ b/drivers/media/usb/au0828/au0828-cards.c
 @@ -108,7 +108,7 @@ struct au0828_board au0828_boards[] = {
  .name= DViCO FusionHDTV USB,
  .tuner_type = UNSET,
  .tuner_addr = ADDR_UNSET,
 -.i2c_clk_divider = AU0828_I2C_CLK_250KHZ,
 +.i2c_clk_divider = AU0828_I2C_CLK_20KHZ,
  },
  [AU0828_BOARD_HAUPPAUGE_WOODBURY] = {
  .name = Hauppauge Woodbury,

Great.  Feel free to submit a patch to the mailing list with your SOB,
and we'll merge that change upstream.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 07/24] xc5000: properly report i2c write failures

2014-02-07 Thread Devin Heitmueller
 I can't load firmware like error of below link.

 https://bugs.launchpad.net/ubuntu/+source/linux-firmware-nonfree/+bug/1263837

 This error is related with this patch. This fix is right but above error is
 created after this fix
 because my device makes WatchDogTimer to 0 when load firmware.
 Maybe it will be related with XREG_BUSY register but i can't check it.

 I removed this fix, but i have faced at other error with xc5000: PLL not
 running after fwload
 So i have commented like below.

 static const struct xc5000_fw_cfg xc5000a_1_6_114 = {
 .name = XC5000A_FIRMWARE,
 .size = 12401,
 //.pll_reg = 0x806c,
 };

 Then, xc5000 device works well.

 I don't have xc5000 datasheet so i can't debug xc5000 driver anymore.

Hi Joonyoung,

Assuming this is the DViCO FusionHDTV7 device that uses the
au0828/au8522, I suspect that what's happening here is your I2C
controller is not stable.  The I2C clock stretching done by the xc5000
often exposed bugs in various bridge drivers and the au0828 was no
exception.  I had to work around these hardware bugs in the au0828
driver but I made them specific to the HVR-950q since that was the
only device I could test with.

In other words, the xc5000 is most likely doing exactly what it is
supposed to, and the increased robustness of the tuner driver with
those two patches exposed intermittent I2C failures in au0828 that
were previously being silently discarded (resulting in indeterminate
behavior).

I would recommending looking at the changes in au0828-cards.c for the
HVR-950q and add the code necessary to make them also apply for the
DVICO device, and that should resolve your problems (in particular the
i2c_clk_divider field should be set).

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: au0828 errors and mangled video with Hauppauge 950Q

2014-02-05 Thread Devin Heitmueller
On Wed, Feb 5, 2014 at 1:05 AM, Connor Behan connor.be...@gmail.com wrote:
 Ccing Devin. I'm pretty sure the analog side has a problem at the driver
 level.

 On most days, one cannot pickup an ATSC signal where I am, so I am
 trying to capture analog video with a Hauppauge WinTV HVR 950Q. Whether
 I use Television, Composite or S-Video, I see the same corrupted video
 such as this: http://imgur.com/c398F4v

Looks like insufficient USB bandwidth available to support the 24
MB/second required for uncompressed analog video.

Is this on an x86 PC?  Or some embedded target such as ARM?  If the
latter, then the answer is almost certainly that the USB host
controller implementation is garbage and cannot handle the throughput.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/3] e4000: convert DVB tuner to I2C driver model

2014-01-28 Thread Devin Heitmueller
Hi Antti,

 My biggest point was to criticize that general resistance of new design
 models which has been DVB side, not only that simple change but many others
 too. I am pretty sure the many mistakes are taken when there has not been
 better alternative available at the time, and later was developed proper
 solution, which is not still taken into use.

Sometimes the simplest looking changes can introduce all sorts of
regressions.  Just look at the mess that was caused by Mauro's
supposedly trivial dynamic stack allocation fixes as a prime
example.

In principle I don't have any objection to adopting common frameworks.
 That said, the changes you've proposed do deviate from how the
framework currently works, and it might have been more constructive to
post an RFC to the mailing list describing your proposed changes to
the framework rather than just submitting a patch for a single tuner.

In this particular case, your approach does give us some advantages in
being able to leverage the I2C framework, but it has costs as well.
Specifically my concerns are as follows:

1.  Removing the abstraction layer that dvb_attach() provided will
make it more difficult to add resource tracking code to handle tuner
locking/sharing.  To solve those problems would actually require us to
later *reintroduce* a layer of abstraction between the bridge and
tuner drivers if this patch were accepted as-is.

Case in point - in the V4L2 layer, they actually went in the opposite
direction - adding the V4L2 subdev framework in order to provide
additional abstraction between the bridge and I2C devices.

2.  Your approach now makes it the responsibility of the caller to
explicitly call request_module(), something that is taken care of
today by dvb_attach().  Right now you can't forget to include the
dependency since it's taken care of for you - with your change the
implementor *can* forget, and the result will be that it will fail
*sometimes* based on whether the module happens to already be loaded.
In theory your approach would give us a bit more flexibility to have
drivers with fewer module dependencies if people are compiling the
kernel from scratch for a single tuner, but that's hardly the common
use case and it significantly increases the risk of new bugs in
failing to specify dependencies.

3.  Your change gives no consideration to analog or hybrid tuners.
This isn't surprising since you've never worked in that area, but if
the model you are proposing is to be applied to all tuners, then we
need to fully understand the effects on tuner-core.ko.

 I have also feeling that these wrong solutions and design models used are
 one source of problems we have. All the chip I/Os should be modeled in a
 standard manner to make sure it is possible to interconnect flexible. GPIOs
 should be implemented as kernel GPIOs. I2C should be implemented as kernel
 I2C. Clock should be implemented as a kernel clock. Chip power-management
 should be implement as regulator (or what ever that is). TS interface also
 should be modeled and implement in a standard manner. Implementing things
 like that makes it possible to interconnect complex hardware without fearing
 some small change will break functionality because of some home-brew
 solution.

Sure.  Modular design practices are a good thing.  Thanks for stating
the obvious.  Did they also teach you about how refactoring can
introduce bugs, especially in instances where there are no unit tests
and you cannot exercise all the possible code paths?  :-)

I am confident that after the above factors are considered/addressed
that some variant of this patch can certainly be incorporated
upstream, and I look forward to seeing the continued improvement of
the codebase while not introducing new regressions.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/3] e4000: convert DVB tuner to I2C driver model

2014-01-26 Thread Devin Heitmueller
On Sun, Jan 26, 2014 at 7:16 PM, Antti Palosaari cr...@iki.fi wrote:
 Driver conversion from proprietary DVB tuner model to more
 general I2C driver model.

Mike should definitely weigh in on this.  Eliminating the existing
model of using dvb_attach() for tuners is something that needs to be
considered carefully, and this course of action should be agreed on by
the subsystem maintainers before we start converting drivers.  This
could be particularly relevant for hybrid tuners where the driver
instance is instantiated via tuner-core using dvb_attach() for the
analog side.

In the meantime, this change makes this driver work differently than
every other tuner in the tree.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Problem getting sensible video out of Hauppauge HVR-1100 composite

2014-01-20 Thread Devin Heitmueller
On Mon, Jan 20, 2014 at 1:26 PM, Neil Bird gn...@fnxweb.com wrote:
   But, flip me, it's spewing 800 MB+ for a minute's worth of video. That'd
 be ~48GB for an hour's TV (the intention is to use this for a MythTV PVR).

   Am I likely to be able to do anything about that?  Even with
 post-transcoding that's going to be an excessive amount of filing to deal
 with :-(

The device doesn't have an MPEG encoder - you're getting raw
uncompressed video.  You would either have to buy a different device
that has an encoder or do software encoding in real-time to MPEG2 or
H.264 if your goal is to store the video.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [ANNOUNCE EXPERIMENTAL] PCTV 80e driver

2014-01-19 Thread Devin Heitmueller
On Sun, Jan 19, 2014 at 8:39 AM, Mauro Carvalho Chehab
m.che...@samsung.com wrote:
 It seems that subsequent tuning makes the device worse, reducing the
 maximum effective packet bandwidth. Btw, this happens with both xHCI
 and EHCI drivers, so, it is not related to any USB 3.0 issue.

I'm pretty sure I saw this and had a patch.  I don't recall the exact
circumstances under which it happened, but I believe it had to do with
stopping and then restarting the streaming on the em28xx too quickly.
The state machine inside the em28xx gets confused and you end up
getting a misaligned stream (which is why you see hundreds of
different PIDs in output from tools such as dvbtraffic).

 Enabling some demux logs, it is possible to see that there are too many
 FEC errors:

 [73514.186880] dvb_dmx_swfilter_packet: 4546 callbacks suppressed
 [73514.186933] TEI detected. PID=0x17f data1=0xc1
 [73514.186965] TEI detected. PID=0x1c68 data1=0xbc
 [73514.186993] TEI detected. PID=0x17f data1=0xc1
 [73514.187022] TEI detected. PID=0x1c68 data1=0xbc
 [73514.187049] TEI detected. PID=0x17f data1=0xc1
 [73514.187080] TEI detected. PID=0x1c68 data1=0xbc
 [73514.187105] TEI detected. PID=0x17f data1=0xc1
 [73514.194878] TEI detected. PID=0x1c68 data1=0xbc
 [73514.194906] TEI detected. PID=0x17f data1=0xc1
 [73514.194927] TEI detected. PID=0x1c68 data1=0xbc
 [73521.569205] TS speed 402 Kbits/sec

Are these actually valid PIDs you're expecting data on?  If not, then
it could just be the issue I described above.  Does the TEI check
occur after it has found the SYNC byte?

 I'm starting to suspect that this could be a hardware issue.

 It would be good to see if others can use it and tune to several
 channels.

 Ah, I didn't work at the remote controller yet. I'll handle it after
 doing more tests with the DVB functionality.

 Remote controller support was added.

Should be trivial - I added the support for the em2874's RC using that
device - the RC support went upstream years ago but not the actual
board profile.

Probably worth mentioning that while I got signal lock on ATSC, I
didn't any significant analysis into the quality of the SNR. It's
possible that additional optimization of the frontend is required in
order to achieve optimal performance.  Also, I didn't do the ClearQAM
support yet, although that should be a fairly straightforward exercise
(should just be another block in the set_frontend() call which sets
the modulation appropriately).

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [ANNOUNCE EXPERIMENTAL] PCTV 80e driver

2014-01-19 Thread Devin Heitmueller
On Sun, Jan 19, 2014 at 12:32 PM, Mauro Carvalho Chehab
m.che...@samsung.com wrote:
 Em Sun, 19 Jan 2014 11:50:55 -0500
 Devin Heitmueller dheitmuel...@kernellabs.com escreveu:

 On Sun, Jan 19, 2014 at 8:39 AM, Mauro Carvalho Chehab
 m.che...@samsung.com wrote:
  It seems that subsequent tuning makes the device worse, reducing the
  maximum effective packet bandwidth. Btw, this happens with both xHCI
  and EHCI drivers, so, it is not related to any USB 3.0 issue.

 I'm pretty sure I saw this and had a patch.  I don't recall the exact
 circumstances under which it happened, but I believe it had to do with
 stopping and then restarting the streaming on the em28xx too quickly.
 The state machine inside the em28xx gets confused and you end up
 getting a misaligned stream (which is why you see hundreds of
 different PIDs in output from tools such as dvbtraffic).

 Do you still has your old tree? I'm not seeing it anymore at kernellabs.

Yeah, I still have the tree.  It's not the HG tree that you saw a
couple of years ago - it's on one of my private git trees because it
was part of a commercial project.  I'll have to dig around and see if
I can find it.


  Enabling some demux logs, it is possible to see that there are too many
  FEC errors:
 
  [73514.186880] dvb_dmx_swfilter_packet: 4546 callbacks suppressed
  [73514.186933] TEI detected. PID=0x17f data1=0xc1
  [73514.186965] TEI detected. PID=0x1c68 data1=0xbc
  [73514.186993] TEI detected. PID=0x17f data1=0xc1
  [73514.187022] TEI detected. PID=0x1c68 data1=0xbc
  [73514.187049] TEI detected. PID=0x17f data1=0xc1
  [73514.187080] TEI detected. PID=0x1c68 data1=0xbc
  [73514.187105] TEI detected. PID=0x17f data1=0xc1
  [73514.194878] TEI detected. PID=0x1c68 data1=0xbc
  [73514.194906] TEI detected. PID=0x17f data1=0xc1
  [73514.194927] TEI detected. PID=0x1c68 data1=0xbc
  [73521.569205] TS speed 402 Kbits/sec

 Are these actually valid PIDs you're expecting data on?  If not, then
 it could just be the issue I described above.  Does the TEI check
 occur after it has found the SYNC byte?

 Yes. it keeps repeating several times, even after finding the SYNC.

 This patch makes the behavior stable:
 
 http://git.linuxtv.org/mchehab/experimental.git/commitdiff/88c9318cbea60d189a9b10cbc4c5a73f8b002336

 Even so, the bitstream of my test signal is 19Mbps, while the measured
 speed with the valid packets is being about 3Mbps.

Something is seriously wrong then - I had it delivering all 19 Mbps.

 Probably worth mentioning that while I got signal lock on ATSC, I
 didn't any significant analysis into the quality of the SNR. It's
 possible that additional optimization of the frontend is required in
 order to achieve optimal performance.

 It is unlikely to be due to some optimization, as I'm not injecting
 any errors via the RF generator.

Sorry, I wasn't clear.  I didn't intend to suggest any RF optimization
is causing the issue you're seeing.  I was just saying that I didn't
do any optimization of the RF path so while it works under ideal
signal conditions it may not work as well under more adverse signal
conditions.  In other words, I did what most of the other LinuxTV
developers do - I got a successful signal lock and said good enough.
 ;-)

On that note, it's probably worth mentioning that particular design
has an LNA controlled by one of the GPIOs on the DRX-J.  So if you're
consistently having poor RF performance (especially with a generator),
try sticking an attenuator in-line, and/or make sure that the LNA is
actually being properly disabled.

 Btw, I noticed that there are two extra firmwares, that aren't currently
 used, defined, on your driver, at drxj_mc_vsb.h and drxj_mc_vsbqam.h.

 Do you remember when those should be used? Or are them just two variants
 of the main firmware, with support for just VSB and just ClearQAM?

I would have to look at the source again to be sure, but if I recall
it was just so you could reduce the size of the firmware if you didn't
care about the other modulation scheme.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] au8522, au0828: Added demodulator reset

2014-01-13 Thread Devin Heitmueller
On Sat, Jan 11, 2014 at 5:12 PM, Tim Mester tmes...@ieee.org wrote:
   My device is the 950q, so it uses the AU8522_DEMODLOCKING method.

No devices do tuner locking for digital (it's always the demodulator).
 That code should really just be ripped out.

 It does not appear to be an xc5000 issue on the surface.   When I
 originally put the patch together, I removed the return if the
 frequency was the same, and added the reset_demodulator() call at the
 end of the set_frontend() function. It seemed to work the same as the
 patch that I submitted.

I'm pretty sure that we accomplish the same thing through the patch I
have which reworks the clock management. except for removing the part
where the set_frontend() call returns if the freq/modulation are
already set.

 I have not been able to tell that it keeps the au8522 from losing
 lock, but it allows it to come back.  I see this issue about once a
 every 2-3 weeks on average, which is less frequent than the other
 issues.

 If you believe that this issue could result in a xc5000 and au8522
 interaction, then I should be able to try out the updated firmware. It
 will just take some time to know the results.

My instinct would be to get you to try that patch series I have in
git.  I suspect that it will address your issue with no further
patches required (we might need the one additional patch to remove the
early return in set_frontend, but let's see).  The testing of the new
firmware can be done in a separate series (the issue it addresses is
completely unrelated to the behavior you are seeing).

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: How can I find out what is the driver for device node '/dev/video11'

2014-01-08 Thread Devin Heitmueller
On Wed, Jan 8, 2014 at 1:50 PM, m silverstri
michael.j.silvers...@gmail.com wrote:
 In linux kernel, a device (e.g. codec) can register as a file (e.g.
 /dev/video11).

 How can I find out from the code which driver is registered as
 '/dev/video11'. i.e. what is the driver will be invoked when I
 open('/dev/video11', O_RDWR,0) in my user space code?
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html

The QUERYCAP ioctl() will tell you the driver name.

http://linuxtv.org/downloads/v4l-dvb-apis/vidioc-querycap.html

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: How can I find out what is the driver for device node '/dev/video11'

2014-01-08 Thread Devin Heitmueller
On Wed, Jan 8, 2014 at 2:03 PM, m silverstri
michael.j.silvers...@gmail.com wrote:
 Thanks. I don't have the a running hardware.
 If I can only search within the code space, how can I find out which
 driver is for '/dev/video11'?

 Is there a config file which I can look it up?

If you don't actually have the hardware platform, then determining it
just from the source code is a huge undertaking (unless it's some well
known device which happens to always create it at that offset).

What is the hardware platform, and what is the capture device?

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] au8522, au0828: Added demodulator reset

2014-01-08 Thread Devin Heitmueller
Hi Tim,

On Wed, Jan 8, 2014 at 12:12 AM, Tim Mester tmes...@ieee.org wrote:
   Commit 2e68a75990011ccd looks interesting.  It makes sense to me
 that if we are gating the clock, and it is possible that we are
 glitching the clock line, it could put the internal synchronous logic
 into a bad state.  If that happens, it would generally require a reset
 under a stable clock to get out of that condition.  I will give that
 patch a try an see if it addresses issue 1), mentioned above.

Yeah, the whole thing about the clocks not being enabled/disabled in
the correct order relative to enabling the sub-blocks did result in
some strange cases where sub-block wouldn't reactivate properly,
requiring a reset to return it to a working state.  It was
specifically this issue I was concerned about might be the right fix
for the problem you are hitting.

Note:  you need more than just 2e68a75990011ccd.  That is actually an
add-on to the real commit that restructures the clock managment:
39c39b0e612b5d35feb00329b527b266df8f7fd2

 However, I'm not sure if that will do anything about issue 2). Do you
 have any insight into that one?

Well, I've never been a fan of how the code just does a blind return
0 if the target modulation and frequency are the same as it's in
theory already tuned to.  Have you tried commenting out just that
block and see if it makes a difference?  IIRC, the dvb-frontend kernel
thread should automatically re-issue a set_frontend() call if the
signal lock drops out.

As for the underlying problem, I'm not sure.  Generally once the
signal is locked it continues to work.  If you set the xc5000 debug=1
modprobe option, do you see lines in the log that say xc5000: PLL not
locked?

How reproducible is the issue, and how often does it happen?  I've got
some newer firmware that might be worth trying which isn't upstream
yet (assuming for a moment that it's an xc5000 issue).  If you believe
you can repro the issue pretty regularly, you and I can work offline
to try that out.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] au8522, au0828: Added demodulator reset

2014-01-07 Thread Devin Heitmueller
On Tue, Jan 7, 2014 at 9:58 AM, Mauro Carvalho Chehab
m.che...@samsung.com wrote:
 Patches 1 and 2 are ok? If so, could you please reply to them with your
 ack?

Sure, no problem.

 http://git.kernellabs.com/?p=dheitmueller/linuxtv.git;a=shortlog;h=refs/heads/950q_improv

 I'm not against the hack you've proposed if it's really warranted, but
 a reset is really a last resort and I'm very concerned it's masking
 over the real problem.

 Are you planning to submit the above patches upstream soon?

Yeah, I've just been busy and haven't had a chance to send them to the
list (except for the last patch on the series, which is customer
specific).  I've got a couple of others which haven't been pushed and
need to be put onto that series before it can be merged.  Will
definitely be good to get it all upstream before somebody does some
refactoring and then a rebase is required.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/3] au8028: Fix cleanup on kzalloc fail

2014-01-07 Thread Devin Heitmueller
(dev, 0x60b, 0x01);
 +   au0828_start_transport(dev);
 start_urb_transfer(dev);

 mutex_unlock(dvb-lock);
 @@ -375,6 +404,9 @@ static int dvb_register(struct au0828_dev *dev)

 /* register network adapter */
 dvb_net_init(dvb-adapter, dvb-net, dvb-demux.dmx);
 +
 +   dvb-start_count = 0;
 +   dvb-stop_count = 0;
 return 0;

  fail_fe_conn:
 diff --git a/linux/drivers/media/usb/au0828/au0828.h 
 b/linux/drivers/media/usb/au0828/au0828.h
 index ef1f57f..a00b400 100644
 --- a/linux/drivers/media/usb/au0828/au0828.h
 +++ b/linux/drivers/media/usb/au0828/au0828.h
 @@ -102,6 +102,8 @@ struct au0828_dvb {
 struct dmx_frontend fe_mem;
 struct dvb_net net;
 int feeding;
 +   int start_count;
 +   int stop_count;
  };

  enum au0828_stream_state {
 --
 1.8.1.4

 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html

Acked-by: Devin Heitmueller dheitmuel...@kernellabs.com

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] au0828: Add option to preallocate digital transfer buffers

2014-01-07 Thread Devin Heitmueller
 = 0; i  URB_COUNT; i++)
 +   kfree(dev-dig_transfer_buffer[i]);
 +   }
 +
 +
  }

  /* All the DVB attach calls go here, this function get's modified
 diff --git a/linux/drivers/media/usb/au0828/au0828.h 
 b/linux/drivers/media/usb/au0828/au0828.h
 index a00b400..5439772 100644
 --- a/linux/drivers/media/usb/au0828/au0828.h
 +++ b/linux/drivers/media/usb/au0828/au0828.h
 @@ -262,6 +262,10 @@ struct au0828_dev {
 /* USB / URB Related */
 int urb_streaming;
 struct urb  *urbs[URB_COUNT];
 +
 +   /* Preallocated transfer digital transfer buffers */
 +
 +   char *dig_transfer_buffer[URB_COUNT];
  };

  /* --- */
 --
 1.8.1.4

 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html

Acked-by: Devin Heitmueller dheitmuel...@kernellabs.com

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] au8522, au0828: Added demodulator reset

2014-01-06 Thread Devin Heitmueller
On Mon, Jan 6, 2014 at 11:29 PM, Tim Mester ttmest...@gmail.com wrote:
 The demodulator can get in a state in ATSC mode where just
 restarting the feed alone does not correct the corrupted stream.  The
 demodulator reset in addition to the feed restart seems to correct
 the condition.

 The au8522 driver has been modified so that when set_frontend() is
 called with the same frequency and modulation mode, the demodulator
 will be reset.  The au0282 drives uses this feature when it attempts
 to restart the feed.

What is the actual corruption that you are seeing?  Can you describe
it in greater detail?  The original fix was specifically related to
the internal FIFO on the au0828 where it can get shifted by one or
more bits (i.e. the leading byte is no longer 0x47 but 0x47  X).
Hence it's an issue unrelated to the actual au8522.

I suspect this is actually a different problem which out of dumb luck
gets fixed by resetting the chip.  Without more details on the
specific behavior you are seeing though I cannot really advise on what
the correct change is.

This patch should not be accepted upstream without more discussion.

Regards,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] au8522, au0828: Added demodulator reset

2014-01-06 Thread Devin Heitmueller
 I suspect this is actually a different problem which out of dumb luck
 gets fixed by resetting the chip.  Without more details on the
 specific behavior you are seeing though I cannot really advise on what
 the correct change is.

Tim,

It might be worth trying out the following patch series and see if it
addresses the problem you're seeing.  There was a host of problems
with the clock management on the device which could result in the
various sub-blocks getting wedged.  The TS output block was just one
of those cases.

http://git.kernellabs.com/?p=dheitmueller/linuxtv.git;a=shortlog;h=refs/heads/950q_improv

I'm not against the hack you've proposed if it's really warranted, but
a reset is really a last resort and I'm very concerned it's masking
over the real problem.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Fwd: v4l2: The device does not support the streaming I/O method.

2014-01-01 Thread Devin Heitmueller
On Wed, Jan 1, 2014 at 2:41 PM, Andy dssnos...@gmail.com wrote:
 I am trying to stream /dev/video0 to http and encode it in h.264.

Last I checked, the ffmpeg v4l2 input interface is just for raw video.
 What you probably want to do is just use v4l2-ctl to setup the tuner
appropriately, and then pass in /dev/video0 as a standard filehandle
to ffmpeg (i.e. -i /dev/video0).

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Fwd: v4l2: The device does not support the streaming I/O method.

2014-01-01 Thread Devin Heitmueller
On Wed, Jan 1, 2014 at 5:18 PM, Andy Walls awa...@md.metrocast.net wrote:
 uncompressed video is available from /dev/video32 in an odd Conexant
 macroblock format that is called 'HM12' under linux.

I should have been more clear - last I checked it only supported raw
video in streaming mode (mmap).  So even though the driver has this
capability it won't really help.

 raw PCM audio samples are available from /dev/video24

Same basic issue, I think it will only acquire audio via ALSA.

 Note that /dev/video0 is always MPEG-2 compressed video.

 I assume ffmpeg and mencoder can transcode from MPEG-2 PS to H.264 on
 the fly, however, they will consume more CPU to do the decompression of
 the MPEG-2 PS.  The advantage of working with the MPEG-2 PS as the
 source is that one avoids the audio  video synchronization problem one
 might encounter working with the separate uncompressed audio  video
 streams.

Agreed that transcoding is more CPU expensive, but I suspect if he's
willing to transcode he can actually get something working today
without any modifications to the sources of either the driver or
ffmpeg.  And as you suggested, it does help avoid the A/V sync
problems associated with raw capture.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Fwd: v4l2: The device does not support the streaming I/O method.

2014-01-01 Thread Devin Heitmueller
On Wed, Jan 1, 2014 at 5:21 PM, Devin Heitmueller
dheitmuel...@kernellabs.com wrote:
 On Wed, Jan 1, 2014 at 5:18 PM, Andy Walls awa...@md.metrocast.net wrote:
 uncompressed video is available from /dev/video32 in an odd Conexant
 macroblock format that is called 'HM12' under linux.

One more point worth making - I doubt ffmpeg supports HM12 natively.
You would either have to add the functionality to ffmpeg to do the
colorspace conversion, or you might be able to wrap ffmpeg around
libv4l2convert via LD_LIBRARY_PATH.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH RFC v3 6/7] rtl2832_sdr: convert to SDR API

2013-12-19 Thread Devin Heitmueller
 I haven't
 looked situation more carefully yet, but one thing that must be done at the
 very first is to add some lock to prevent only DVB or V4L2 API could access
 the hardware at time.

Probably worth mentioning that we have *lots* of devices that suffer
from this problem.  Our general tact has to been to do nothing and let
the driver crash and burn in non-predictable ways when userland tries
to use both APIs at the same time.

So while it's pretty pathetic that we still haven't resolved this
after all these years, if you didn't address the issue in the initial
release then you wouldn't be much worse off than lots of other
devices.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH RFC v3 6/7] rtl2832_sdr: convert to SDR API

2013-12-19 Thread Devin Heitmueller
 I think I could add some lock quite easily. I remember when I implemented
 cxd2820r DVB-T/T2/C demod driver and at the time it implements 2 frontends,
 one for DVB-T/T2 and one for DVB-C. I used shared lock to prevent access
 only for single fe at time. I think same solution works in that case too.

Locking between v4l and dvb is more problematic because of known bugs
related to the dvb_frontend deferring the shutdown of the tuner.  As a
result there is a race condition if you try to close the DVB device
and then immediately open the V4L device (which would be a common use
case if using an application like MythTV when switching from digital
to analog mode).

You can't simply add a lock because the V4L side will get hit with
-EBUSY because the DVB frontend hasn't completely shutdown yet.

Unfortunately it's one of those cases where it seems easy until you
start scoping out the edge cases and race conditions.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: stable regression: tda18271_read_regs: [1-0060|M] ERROR: i2c_transfer returned: -19

2013-12-17 Thread Devin Heitmueller
On Tue, Dec 17, 2013 at 4:09 PM, Antti Palosaari cr...@iki.fi wrote:
 That shared DVB / V4L2 tuner is one problem that I have also currently (SDR
 is on V4L2 API and DTV is provided via DVB API). I have decided to try model
 where I separate RF tuner totally independent used DVB / V4L2 APIs, just to
 plain I2C driver model. Idea is here to provide needed set of general
 callbacks and communication and device binding is done via I2C driver model.
 I am not sure though if there is any big caveats I haven't realized yet...

It's a tough problem - a more strictly defined API in theory allows
for better uniformity across drivers (although admittedly we've done a
piss-poor job in practice).  However such a strictly defined API makes
it harder to add hacks that are sometimes required by the silicon.

The additional abstractions provided by v4l2 subdev and tuner-core
just make it that much harder to get past those layers and poke the
device directly (which as much as I hate to admit it, is sometimes
required to work around bugs and weird edge cases in the silicon not
addressable via the API).  These problems are exacerbated by cases
where there are order-of-operations requirements that cannot be
accommodated by the API.

All that said though, moving to an entirely I2C based API feels like
to provides too much flexibility such that every bridge will talk a
little differently to every tuner.  Given what a crappy job we've done
in the past even with a strict framework, I cringe to think how much
worse the problem would be if every developer took a different
approach.

I'm not against implementing a callback which allows you to feed
arbitrary I2C commands to a device, to be used *sparingly* for those
cases where it is *really* required to do something not supported via
the framework's API.  But I don't see it as a replacement for the
existing frameworks for addressing tuners.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: stable regression: tda18271_read_regs: [1-0060|M] ERROR: i2c_transfer returned: -19

2013-12-16 Thread Devin Heitmueller
Hi Connor,

On Tue, Dec 17, 2013 at 12:28 AM, Connor Behan connor.be...@gmail.com wrote:
 Thanks for the detailed answer. I have tried your patch and updated the
 wiki page. Would a 950 or 950Q be safer to buy next time?

The 950 has long since been obsoleted.  You cannot buy them anymore.
The 950q though is well supported and doesn't have this issue as it
uses a different chip.

 On 14/12/13 05:17 PM, Devin Heitmueller wrote:
 I had a patch kicking around which fixed part of the issue, but it
 didn't completely work because of the lgdt3305 having AGC enabled at
 chip powerup (which interferes with analog tuning on the shared
 tuner), and the internal v4l-dvb APIs don't provide any easy way to
 reset the AGC from the analog side of the device.

 By this do you mean that the functions exist but they aren't part of the
 public API? Maybe this problem can be addressed if there is ever v4l3
 or some other reason to break compatibility.

No, these are internal APIs that dictate how the various driver
components talk to each other.  Because the V4L and DVB subsystems
were developed independently of each other, they do a really crappy
job of communicating between them (a problem which manifests itself in
particular when sharing hardware resources such as tuners).

The problem *can* be fixed, but it would likely require
extensions/changes to the basic frameworks used to communicate between
the different drivers.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [3.12.5] Regression with PCTV 290e DVB-T2 adapter.

2013-12-15 Thread Devin Heitmueller
 I have just tested my PCTV 290e DVB-T2 adapter with 3.12.5 and discovered 
 that it fails with logs of messages like these:

 [11720.780975] __tda18271_write_regs: [7-0060|M] ERROR: idx = 0x5, len = 1, 
 i2c_transfer returned: -19
 [11720.788726] tda18271_init: [7-0060|M] error -19 on line 832
 [11720.793001] tda18271_tune: [7-0060|M] error -19 on line 910
 [11720.797279] tda18271_set_params: [7-0060|M] error -19 on line 985

 Reverting to 3.11.10 fixes this problem. I have raised 
 https://bugzilla.kernel.org/show_bug.cgi?id=67041

Already reported and fixed.  See the thread that's been going on over
the last two days named stable regression: tda18271_read_regs:
[1-0060|M] ERROR: i2c_transfer returned: -19.

Cheers,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: stable regression: tda18271_read_regs: [1-0060|M] ERROR: i2c_transfer returned: -19

2013-12-14 Thread Devin Heitmueller
 My basic problem is

 __tda18271_write_regs: [1-0060|M] ERROR: idx = 0x0, len = 39, i2c_transfer 
 returned: -32

 where it attaches lgdt3305 before tda18271. Do you know a similar patch
 that could help me?

It's a totally different issue.  The problem with the US Exeter has to
do with the lgdt3305 wedging the I2C bus after initialization because
there's a timing window where you have to strobe the reset after chip
powerup.

I had a patch kicking around which fixed part of the issue, but it
didn't completely work because of the lgdt3305 having AGC enabled at
chip powerup (which interferes with analog tuning on the shared
tuner), and the internal v4l-dvb APIs don't provide any easy way to
reset the AGC from the analog side of the device.

In short, it's been a known issue for almost three years and nobody's
gotten around to fixing it, and it sees unlikely anyone with the
appropriate level of knowledge of the device will anytime soon.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] femon: Display SNR in dB

2013-11-24 Thread Devin Heitmueller
On Sun, Nov 24, 2013 at 1:02 PM, Chris Lee update...@gmail.com wrote:
 This is a frustration of mine. Some report it in SNR others report it
 in terms of % (current snr / (max_snr-min_snr)) others its completely
 random.

 Seems many dvb-s report arbitrary % which is stupid and many atsc
 report snr by 123 would be 12.3db. But there isnt any standardization
 around.

 imo everything should be reported in terms of db, why % was ever
 chosen is beyond logic.

 Is this something we can get ratified ?

I wouldn't hold your breath.  We've been arguing about this for years.
 You can check the archives for the dozens of messages exchanged on
the topic.

Given almost all the Linux drivers for ATSC/ClearQAM devices sold
today report in 0.1 dB increments, I'm tempted to put a hack in the
various applications to assume all ATSC devices are in that format.
I've essentially given up on any hope that there will be any agreement
on a kernel API which applications can rely on for a uniform format.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] femon: Display SNR in dB

2013-11-24 Thread Devin Heitmueller
On Sun, Nov 24, 2013 at 1:40 PM, Chris Lee update...@gmail.com wrote:
 I made an exception in my app if the system is ATSC/QAM it uses the
 snr = snr * 10.0 and havent found a card yet that it doesnt work with.
 Ive also converted quite a few of my dvb-s tuners to report db in the
 same way. Havent found a card yet that doesnt have the ability to
 report snr in db. Im sure there is one, but I wonder how old it is and
 if anyone still uses them.

The devices which have the ldgt3303 demodulator report in (SNR *
1/256), and there are still quite a few of those out there and in use.
 But yeah, since most of the ATSC/ClearQAM devices out there nowadays
have a demod driver written by one of three people, all who agreed on
the same format, you won't find many devices out there nowadays which
don't use 0.1 dB increments.

That said, everything in the previous paragraph applies exclusively to
ATSC/ClearQAM devices.  There is much more variation once you start
talking about DVB-T/S/S2, etc.

 I have found a few tuner/demods that dont have a method of reporting
 signal strength and just use a calc based off the snr in db to make a
 fake strength.

Yup, there is definitely more ambiguity across demods with the signal
strength field.  In some cases it reports the same as the SNR field,
in other cases it scales the SNR to a 0-65535 range, in yet other
cases it returns garbage or no value at all.

 How I look at is if snr in % is completely arbitrary and means nothing
 when compared from one tuner to another, whats the harm in that
 particularly weird tuner/demod of reporting a fake SNR that is
 arbitrary and have every other device in Linux report something
 useful. Seems dumb to have every device in Linux report an arbitrary
 useless value just because one or two devices cant report anything
 useful.

The whole argument over the years is what that useful format should
be.  The problem is bad enough where a whole new API has been proposed
which allows the demod to specify its reporting format explicitly.
That proposed new API has a whole host of *other* problems, but that
was the last attempt to bring some clarity to the problem.

 I just hate seeing every device reporting useless values just because
 one or two tuner/demods are reporting useless values. Why destroy that
 useful data for the sake of making all data uniformly useless.

Unfortunately we're not talking about one or two - we're talking about
dozens.  I wouldn't be remotely surprised to see that more than 50% of
devices out there do not report in 0.1dB increments.  Certainly a
large part of the problem is that users such as yourself have a
slightly skewed viewpoint because your experience is based on the
handful of tuners you own (if you actually own a handful, that's
comparatively quite a lot - most people only own a single tuner).

Yeah, the situation is frustrating.  No easy answers here.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Dual licensing for v4l2-common.h userland headers

2013-11-20 Thread Devin Heitmueller
As a result of a code audit the VLC group is doing, they stumbled on
the fact that v4l2-common.h is not dual licensed (it's marked as GPL
only).  This obviously poses a problem especially since v4l2-common.h
is included by videodev2.h (which is the key header people include
when they want to use the V4L2 API from userland).

Would it be possible to get the header changed to reflect dual licensing?

Thanks,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: SAA7134 driver reports zero frame rate

2013-11-16 Thread Devin Heitmueller
On Sat, Nov 16, 2013 at 6:19 PM, Tim E. Real termt...@rogers.com wrote:
 The SAA7134 driver causes libav to crash because the
  driver reports zero frame rate.
 Thus it is virtually impossible to do any recording.

Step #1:  Open a bug against libav.  The app should return an error or
not let you start streaming.  If it crashes (regardless of the
underlying reason), they've got a bug in their library.

 About a year ago I debugged and found I had to do this,
  (but it was not enough, more fixes would be needed):

 In libav/libavdevice/v4l2.c :

 static int v4l2_set_parameters(AVFormatContext *s1, AVFormatParameters *ap)
 {
 ...
 s1-streams[0]-codec-time_base.den = tpf-denominator;
 s1-streams[0]-codec-time_base.num = tpf-numerator;

 // By Tim. BUG: The saa7134 driver (at least) reports zero framerate,
 //  causing abort in rescale. So just force it.
 if(s1-streams[0]-codec-time_base.den == 0 ||
 s1-streams[0]-codec-time_base.num == 0)
 {
   s1-streams[0]-codec-time_base.num = 1;
   s1-streams[0]-codec-time_base.den = 30;
 }

 s-timeout = 100 +
 av_rescale_q(1, s1-streams[0]-codec-time_base,
 (AVRational){1, 1000});

 return 0;
 }

 I looked at the SAA7134 module parameters but couldn't seem to
  find anything to help.

 Does anyone know how to make the module work so it sets a proper
  frame rate, or if this problem been fixed recently?

Have you tried it with the latest kernel?  Many of the drivers have
had fixes in the last year for V4L2 conformance, so it's possible this
was already fixed.

I would recommend you try it with the latest kernel and see if it
still happens.  If it does still occur, then somebody can dig into it
(assuming they have time/energy/inclination).

I'm not arguing that you probably found a bug, but you'll have to do a
bit more of the legwork to make sure it's still a real issue before
somebody else gets involved.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: I2C transfer logs for Antti's DS3103 driver and DVBSky's DS3103 driver

2013-11-15 Thread Devin Heitmueller
On Fri, Nov 15, 2013 at 8:32 AM, David Howells dhowe...@redhat.com wrote:
 Whilst that may be so, something clears it between one call to
 m88ds3103_set_frontend() and the next, so you probably need to unconditionally
 reload the program init table.

Check your GPIO config for the specific board in the cx23885 driver.
Registers unexpectedly resetting to their default value between tunes
could very well be because your GPIO setup is incorrect and the
demodulator chip's reset line is being strobed between tuning
requests.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH RFC] libv4lconvert: SDR conversion from U8 to FLOAT

2013-11-15 Thread Devin Heitmueller
On Fri, Nov 15, 2013 at 2:11 PM, Antti Palosaari cr...@iki.fi wrote:
 When I do it inside Kernel, in URB completion handler at the same time when
 copying data to videobuf2, using pre-calculated LUTs and using mmap it eats
 0.5% CPU to transfer stream to app.

 When I do same but using libv4lconvert as that patch, it takes ~11% CPU.

How are you measuring?  Interrupt handlers typically don't count
toward the CPU performance counters.  It's possible that the cost is
the same but you're just not seeing it in top.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Hauppauge ImpactVCB-e 01381 PCIe driver resolution.

2013-09-16 Thread Devin Heitmueller
On Sun, Sep 15, 2013 at 7:11 PM, Steve Cookson i...@sca-uk.com wrote:
 Hi Devin,

 Thanks for responding.

 So my question would be then, is it worth fixing?

 I can't find any PCIe cards that give me a reasonable quality.

 If I use an external card like the Dazzle it seems quite fast and better
 quality than many s-video cards.

 Could the ImpactVCB-e be better than the Dazzle?

Hi Steve,

Whether it's worth fixing, it's largely a question of worth it to
whom?  Apparently nobody had noticed it was broken until now, hence
making it questionable how important it is to the general community.

It's worth noting that the problem isn't specific to the ImpactVCB-e;
it would happen with any cx23885 based board.

The quality will probably be comparable to the Dazzle.  In terms of
quite fast, they should both be the exact same speed since they are
both delivering raw video in realtime.  One key advantage of the
ImpactVCB-e is that you can have multiple installed in a single
system, while in the case of the Dazzle you will likely only be able
to use one device since it uses more than half of the USB bus
bandwidth.

I'm not sure what other cards you've tried.  Nowadays they should all
deliverable comparable performance for s-video (since no chroma
separation is involved), if they don't then it's almost certainly a
Linux driver bug.

If you have a commercial need for the device to work, we can discuss
offlist doing some consulting to resolve the issue.  However if not
then you're pretty much at the mercy of the community in terms of the
state of quality/support.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Canvassing for Linux support for Startech PEXHDCAP

2013-09-16 Thread Devin Heitmueller
On Mon, Sep 16, 2013 at 4:27 PM, Steve Cookson i...@sca-uk.com wrote:
 Here is the spec:

 http://www.startech.com/AV/Converters/Video/PCI-Express-HD-Video-Capture-Card-1080p-HDMI-DVI-VGA-Component~PEXHDCAP#tchspcs

 But the main spec points (for me at least) are

 - It's based on the Mstar MST3367CMK chip as are many similar cards,
 - It's PCIe connection
 - It has inputs of:
 --- Component Video (YPbPr)
 --- DVI-I   (plus a vga adaptor)
 --- HDMI
 --- Stereo Audio
 - Maximum Digital Resolution: 1080p30
 - TV input resolution: 1080i/p, 720p, 576i/p, 480i/p
 - PC input resolution: 1920x1080, 1440x900, 1280x1024, 1280x960, 1280x720,
 1024x768, 800x600
 - MPEG4/H.264 hardware compression.

To be clear, this card is a *raw* capture card.  It does not have any
hardware compression for H.264.  It's done entirely in software.

Aside from the mstar video decoder (for which there is no public
documentation), you would also need a driver for the saa7160 chip,
which there have been various half-baked drivers floating around but
nothing upstream, and none of them currently support HD capture
(AFAIK).

As always, a driver *can* be written, but it would be a rather large
project (probably several weeks of an engineer working full time on
it, assuming the engineer has experience in this area).  In this case
it's worse because a significant amount of reverse engineering would
be required.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Hauppauge ImpactVCB-e 01381 PCIe driver resolution.

2013-09-16 Thread Devin Heitmueller
Hi Steve,

 What I really want is a fast, analogue RGBS 480i  1080i capture card.

Raw HD capture is essentially non-existent under Linux.  We have a
couple of closed source drivers, none of which are cost effective for
non-commercial applications (we have drivers for a couple of Avermedia
HDMI/component capture cards).

 Maybe like the Epiphan VGA2USB LR (internal version), but it is sooo
 expensive.

 For 25% of the price I can get a Blackmagic Design Intensity Pro, but
 it only does YPbPr 1080i and the decklinksrc gstreamer module is a
 bit ropey.  Actually very ropey.  But it also accepts s-video.

 So then I fall back on the old tried and tested s-video stuff.  I have to
 accept 480i but I can still have a fast response.  Dazzle is about 100
 msecs but some others, like the old ImpactVCB pci card with
 3 av ports and an s-video port, has worse quality video than the Dazzle
 and is slower.  I've tested another couple of PCI cards but they are all
 very slow and poor video quality.

The slow aspect is probably just a misconfiguration in the number of
buffers the V4L2 driver delivers.  All of the cards should support a
minimum of two buffers, which would put latency at 60ms.  Anything
greater is probably the application doing some prebuffering.

 The one I'd really like, at about $100 on Amazon, is the Startech
 VGA capture card, I could put a synch splitter/inverter in front of it, for
 say $25, to convert RGB3 1080i to VGA HD1080.  It runs like a dream
 with a fast response.  It's Linux compatible as far as I can see, that
 is to say lspci should say something if you plug it in, but there is no
 driver for it.

To be clear, the fact that it shows up in lspci is absolutely no
indicator of being Linux compatible.  It just means the device
conforms to the PCI standard and can thus the hardware can be
enumerated.

 The one I saw, which was not the Startech one but a
 similar one from Kato vision, was PCIe, with onboard h.264
 hardware compression and a direct memory access module.  It
 just screamed through that video signal.  I wasn't able to do any timer
 tests
 on it, but I would guess much faster than the dazzle.  Maybe 50 msecs
 latency.

Are you using the same application for capture in both cases?  They
really shouldn't behave any differently.

Raw video is essentially no latency since the card typically doesn't
have enough memory to do any buffering (unlike compressed video where
you can have latency of several seconds depending on the encoder
used).  Any latency you are seeing is either in the driver or the
application.

Cheers,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: 950Q CC Extraction (V4L2/VBI)

2013-07-31 Thread Devin Heitmueller
On Wed, Jul 31, 2013 at 11:55 AM, Trevor Anonymous
trevor.for...@gmail.com wrote:
 Hi all, new to the list, hope this is an appropriate place to ask this.

 Quick question:
 I can extract NTSC analog closed captions with the Hauppauge 950Q as follows:
 1. Run v4l2-ctl -i 1 ## Set input to composite
 2. In a test application, open file /dev/video0
 3. Read 1 byte from the file
 ** Note: This seems to be sufficient to start the device
 ** Calling VIDIOC_STREAMON ioctl is *not* sufficient
 4. Run: zvbi-ntsc-cc -c -d /dev/vbi0 ## Prints the closed captions
 5. Close file handle to /dev/video0 when finished. Device stops.
 My question: Is opening the device and reading 1 byte a good/ok way to
 start the device? I'm only interested in closed captions, and want
 this to be as small a footprint as possible. I'm worried that this
 method may break in future driver versions.

Hi Trevor,

The fact that you need video streaming in order to access CC is a bug
in the driver (brought to my attention only a couple of weeks ago).  I
didn't properly setup the referencing counting for when to start/stop
the isoc FIFO, so the arrival of data is implicitly tied to the use of
/dev/video.

The hack you've described should work as long as you keep the
filehandle open (in fact it's pretty much what the other user hacked
in userland to workaround the bug).  That said, I would like to fix
the underlying bug so that the driver behaves like it's supposed to
(which means you should be able to access /dev/vbi for CC capture
without having to muck with streaming from /dev/video).  I suspect
that the fix won't cause the workaround you're proposing to stop
working.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Green/purple video from 950Q + security cam

2013-07-29 Thread Devin Heitmueller
Hi Michael,

On Sun, Jul 28, 2013 at 6:00 PM, Michael Conrad m...@nrdvana.net wrote:
 When I plug either of these cameras into the video plug on a plain old TV,
 they work great.  When I plug either camera into the 950Q on Windows using
 the supplied WinTV software, they work great.  When I plug the rear-view
 camera into the 950Q on Linux, it works great.  But when I plug the security
 camera into 950Q on Linux, it mostly works and then the picture starts
 randomly jumping sideways (like it is having trouble keeping a horizontal
 sync on the signal) and then will suddenly flip to a green-grayscale image
 with all bright areas as purple-grayscale.  Once turned green/purple, it
 remains like this until I reset the camera, but the video is full framerate,
 low latency, and looks flawless aside from the bizarre colors.

Yeah, there have been some issues with frame alignment on that
particular chip, which primarily manifest themselves when using highly
unstable video sources.  This might sound like a cop-out, but you
would be better suited with *any* $29 capture device from NewEgg than
with the 950q.

I've got workarounds in the driver code which cover most of the edge
cases, but they aren't foolproof.

 For the tests under Linux, I am using the v4l2 API directly in a simple demo
 C program I wrote.  It is attached.  I tried both the read API, and the
 mmap API.  Both produce identical results.

Won't make a difference whether using mmap or read in this case.

 My other attempts on Linux had been to use v4l2-ctl to select the composite
 channel, and then play the device with VLC or Cheese.  Neither were
 successful (no video at all) but I need to do this from C in the long run,
 anyway.

Cheese typically doesn't work with anything other than webcams since
they typically don't support all the colorspaces (and the 950q in
particular uses one that is unusual for raw video).  VLC should work
though if you get the correct magic incantation of command line
arguments (I use it regularly with the 950q).

 Anyone seen anything like this before?

Yes, I have.  :-)

It can certainly be made to work via hacking at the driver (but I
don't have a video source which readily reproduces the issue).  But
with Kworld 2800d units being available for $29 on Ebay, that is
probably by far the easier approach.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Very verbose message about em28174 chip.

2013-07-28 Thread Devin Heitmueller
On Sun, Jul 28, 2013 at 9:19 AM, Chris Rankin ranki...@yahoo.com wrote:
 Hi,

 I plugged my PCTV 290e device into my newly compiled 3.10.3 kernel today, and 
 found this message in the dmesg log.


 [  511.041412] usb 10-4: new high-speed USB device number 3 using ehci-pci
 [  511.216218] em28xx: New device PCTV Systems PCTV 290e @ 480 Mbps 
 (2013:024f, interface 0, class 0)
 [  511.223916] em28xx: DVB interface 0 found: isoc
 [  511.227398] em28xx: chip ID is em28174
 [  511.548310] em28174 #0: i2c eeprom : 26 00 01 00 02 09 d8 85 80 80 e5 
 80 f4 f5 94 90
 [  511.54] em28174 #0: i2c eeprom 0010: 78 0d e4 f0 f5 46 12 00 5a c2 eb 
 c2 e8 30 e9 03
 [  511.562682] em28174 #0: i2c eeprom 0020: 12 09 de 30 eb 03 12 09 10 30 ec 
 f1 12 07 72 80
 [  511.569827] em28174 #0: i2c eeprom 0030: ec 00 60 00 e5 f5 64 01 60 09 e5 
 f5 64 09 60 03
 [  511.576937] em28174 #0: i2c eeprom 0040: c2 c6 22 e5 f7 b4 03 13 e5 f6 b4 
 87 03 02 09 92
 [  511.584138] em28174 #0: i2c eeprom 0050: e5 f6 b4 93 03 02 07 e6 c2 c6 22 
 c2 c6 22 12 09
 [  511.591273] em28174 #0: i2c eeprom 0060: cf 02 06 19 1a eb 67 95 13 20 4f 
 02 c0 13 6b 10
 [  511.598453] em28174 #0: i2c eeprom 0070: a0 1a ba 14 ce 1a 39 57 00 5c 18 
 00 00 00 00 00
 [  511.605572] em28174 #0: i2c eeprom 0080: 00 00 00 00 44 36 00 00 f0 10 02 
 00 00 00 00 00
 [  511.612694] em28174 #0: i2c eeprom 0090: 5b 23 c0 00 00 00 20 40 20 80 02 
 20 01 01 00 00
 [  511.619821] em28174 #0: i2c eeprom 00a0: 00 00 00 00 00 00 00 00 00 00 00 
 00 00 00 00 00
 [  511.627001] em28174 #0: i2c eeprom 00b0: c6 40 00 00 00 00 a7 00 00 00 00 
 00 00 00 00 00
 [  511.634120] em28174 #0: i2c eeprom 00c0: 00 00 00 00 00 00 00 00 00 00 00 
 00 00 00 38 32
 [  511.641199] em28174 #0: i2c eeprom 00d0: 34 31 30 31 31 36 36 30 31 37 31 
 31 32 36 58 59
 [  511.648319] em28174 #0: i2c eeprom 00e0: 56 49 00 4f 53 49 30 30 33 30 38 
 44 30 31 30 36
 [  511.655473] em28174 #0: i2c eeprom 00f0: 58 59 56 49 00 00 00 00 00 00 00 
 00 00 00 30 36
 [  511.662628] em28174 #0: i2c eeprom 0100: ... (skipped)
 [  511.666500] em28174 #0: EEPROM ID = 26 00 01 00, EEPROM hash = 0x1eb936d2
 [  511.672023] em28174 #0: EEPROM info:
 [  511.674338] em28174 #0: microcode start address = 0x0004, boot 
 configuration = 0x01
 [  511.705368] em28174 #0: No audio on board.
 [  511.708286] em28174 #0: 500mA max power
 [  511.710988] em28174 #0: Table at offset 0x00, strings=0x, 0x, 
 0x
 [  511.717120] em28174 #0: Identified as PCTV nanoStick T2 290e (card=78)
 [  511.722436] em28174 #0: v4l2 driver version 0.2.0
 [  511.731410] em28174 #0: V4L2 video device registered as video1
 [  511.736043] em28174 #0: dvb set to isoc mode.
 [  511.739638] usbcore: registered new interface driver em28xx
 [  511.821414] tda18271 7-0060: creating new instance
 [  511.829520] TDA18271HD/C2 detected @ 7-0060
 [  512.000542] DVB: registering new adapter (em28174 #0)
 [  512.004325] usb 10-4: DVB: registering adapter 0 frontend 0 (Sony 
 CXD2820R)...
 [  512.011191] em28174 #0: Successfully loaded em28xx-dvb
 [  512.015077] Em28xx: Initialized (Em28xx dvb Extension) extension
 [  512.056753] Registered IR keymap rc-pinnacle-pctv-hd
 [  512.060784] input: em28xx IR (em28174 #0) as 
 /devices/pci:00/:00:1d.7/usb10/10-4/rc/rc0/input16
 [  512.069167] rc0: em28xx IR (em28174 #0) as 
 /devices/pci:00/:00:1d.7/usb10/10-4/rc/rc0
 [  512.076882] Em28xx: Initialized (Em28xx Input Extension) extension
 [  552.064828] tda18271: performing RF tracking filter calibration
 [  554.417676] tda18271: RF tracking filter calibration complete

Nothing out of the ordinary in this output.

 Presumably something this verbose is intended to be shared, so here it is. (I 
 can't think of any other reason why this amount of information would be 
 logged by default).

The complexity of these devices (variations on demodulators, tuner
chips used, etc) have resulted in putting out more debug by default on
initialization compared to other drivers (typically to aid in
debugging when users report issues).  The amount of output is not
inconsistent with most other linuxtv drivers though.

Regards,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Very verbose message about em28174 chip.

2013-07-28 Thread Devin Heitmueller
On Sun, Jul 28, 2013 at 9:58 AM, Chris Rankin ranki...@yahoo.com wrote:
 - Original Message -

 From: Devin Heitmueller dheitmuel...@kernellabs.com

The amount of output is not inconsistent with most other linuxtv drivers 
though.

 It's the EEPROM dump that really caught my eye: 16+ lines of pure WTF?.

Yeah, nowadays the eeprom output is one of the less useful pieces of
output (in fact, I intentionally didn't do support for dumping it out
on the em2874, but somebody did it anyway).  That said, I certainly
wouldn't nack any patch submitted which changed the debug level for
the eeprom output so it's not visible by default.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: UVC and V4L2_CAP_AUDIO

2013-07-25 Thread Devin Heitmueller
On Thu, Jul 25, 2013 at 5:10 AM, Laurent Pinchart
laurent.pinch...@ideasonboard.com wrote:
 Not without dirty hacks. The UVC interfaces don't report whether the device
 has an audio function, the driver would need to look at all the interfaces of
 the parent USB device and find out whether they match one of the USB audio
 drivers. That's not something I would be inclined to merge in the uvcvideo
 driver.

We need this functionality anyway for other snd-usb-audio based tuners
like em28xx and au0828, so I think some sort of solution is
unavoidable.  I hacked something together for em28xx a few years ago
to do such an enumeration, but in reality we should probably have an
export in snd-usb-audio which would help figuring this out in a less
hacky way.

 If not, then it looks like the only way to find the associated alsa device
 is to use libmedia_dev (or its replacement, although I wonder if anyone is
 still working on that).

Yup, it's 2013 and we still don't have a way for applications to ask
the kernel which ALSA device is tied to a given /dev/video node.
Hans, remember when I proposed adding a trivial ioctl() call back in
2009 that would allow this, and you rejected it saying the media
controller API was the answer?  It's hard not to feel like salt in the
wound that it's four years later and there *still* isn't a solution.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Expected behavior for S_INPUT while streaming in progress?

2013-07-22 Thread Devin Heitmueller
Hello,

I'm doing some cleanup on the au8522 driver, and one thing I noticed
was that you are actually allowed to issue an S_INPUT while streaming
is active.  This seems like dangerous behavior, since it can result in
things like the standard and/or resolution changing while the device
is actively streaming video.

Should we be returning -EBUSY for S_INPUT if streaming is in progress?
 I see cases in drivers where we prevent S_STD from working while
streaming is in progress, but it seems like S_INPUT is a superset of
S_STD (it typically happens earlier in the setup process).

If we did do this, how badly do we think it would break existing
applications?  It could require applications to do a STREAMOFF before
setting the input (to handle the possibility that the call wasn't
issued previously when an app was done with the device), which I
suspect many applications aren't doing today.

Alternatively, we can based it on not just whether streamon was called
and instead base it on the combination of streamon having been called
and a filehandle actively doing streaming.  In this case case would
return EBUSY if both conditions were met, but if only streamon was
called but streaming wasn't actively being done by a filehandle, we
would internally call streamoff and then change the input.  This would
mean that if an application like tvtime were running, externally
toggling the input would return EBUSY.  But if nothing was actively
streaming via a /dev/videoX device then the call to set input would be
successful (after internally stopping the stream).

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] au8522_dig: fix snr lookup table

2013-07-17 Thread Devin Heitmueller
On Wed, Jul 17, 2013 at 8:30 PM, Chris Lee update...@gmail.com wrote:
 This patch fixes an if() statement that was preventing the last
 element in the table from ever being utilized, preventing the snr from
 ever displaying 27db. Also some of the gaps in the lookup table were
 filled in.

 Signed-off-by: Chris Lee update...@gmail.com

I don't have any specific objection to this patch, other than that I
have no idea if the values he's adding are actually correct.  I'd have
to pull out the datasheet and see what the formula looks like to
actually calculate the correct values.

This is of course assuming Chris didn't have the formula and just
picked numbers that were roughly in between the adjacent values.

The off-by-one is legit (syntactically at least - there is indeed no
value that would result in 0 being selected), although frankly I don't
know whether value 0 is supposed to be 26.0 or 27.0.  It's entirely
possible that 0=26.0 and the whole table is off by one value (this was
actually the case with the QAM256 table, except in that case it was
much worse because it was oscillating between 40.0 and 0.00).

Anyway, hard to argue this isn't an improvement and thus shouldn't be
accepted -- except for the real possibility that the patch introduces
wrong values into the table.

Acked-by:  Devin Heitmueller dheitmuel...@kernellabs.com

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] cx23885: Fix interrupt storm that happens in some cards when IR is enabled.

2013-07-17 Thread Devin Heitmueller
On Wed, Jul 17, 2013 at 9:33 PM, Luis Alves lja...@gmail.com wrote:
 Hi,

 This i2c init should stop the interrupt storm that happens in some cards when 
 the IR receiver in enabled.
 It works perfectly in my TBS6981.

What is at I2C address 0x4c?  Might be useful to have a comment in
there explaining what this patch actually does.  This assumes you
know/understand what it does - if you don't then a comment saying I
don't know why this is needed but my board doesn't work right without
it is just as valuable.

 It would be good to test in other problematic cards.

 In this patch I've added the IR init to the TeVii S470/S471 (and some others 
 that fall in the same case statment).
 Other cards but these that suffer the same issue should also be tested.

Without fully understanding the nature of this patch and what cards
that it actually effects, it may make sense to move your board into a
separate case statement.  Generally it's bad form to make changes like
against other cards without any testing against those cards (otherwise
you can introduce regressions).  Stick it in its own case statement,
and users of the other boards can move their cards into that case
statement *after* it's actually validated.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 4/4] [media] em28xx: Fix vidioc fmt vid cap v4l2 compliance

2013-07-17 Thread Devin Heitmueller
On Tue, Jul 16, 2013 at 7:06 PM, Alban Browaeys
alban.browa...@gmail.com wrote:
 Set fmt.pix.priv to zero in vidioc_g_fmt_vid_cap
  and vidioc_try_fmt_vid_cap.

Any reason not to have the v4l2 core do this before dispatching to the
driver?  Set it to zero before the core calls g_fmt.  This avoids all
the drivers (most of which don't use the field) from having to set the
value themselves.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] cx23885: Fix interrupt storm that happens in some cards when IR is enabled.

2013-07-17 Thread Devin Heitmueller
On Wed, Jul 17, 2013 at 10:15 PM, Antti Palosaari cr...@iki.fi wrote:
 hmm, I looked again the cx23885 driver.

 0x4c == [0x98  1] = flatiron == some internal block of the chip

Yeah, ok.  Pretty sure Flatiron is the codename for the ADC for the SIF.

 There is routine which dumps registers out, 0x00 - 0x23
 cx23885_flatiron_dump()

 There is also existing routine to write those Flatiron registers. So, that
 direct I2C access could be shorten to:
 cx23885_flatiron_write(dev, 0x1f, 0x80);
 cx23885_flatiron_write(dev, 0x23, 0x80);

Yeah, the internal register routines should be used to avoid confusion.

 Unfortunately these two register names are not defined. Something clock or
 interrupt related likely.

Strange.  The ADC output is usually tied directly to the Merlin.  I
wonder why it would ever generate interrupts.

No easy answers here.  WIll probably have to take a closer look at the
datasheet, or just ask Andy.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: CX23103 Video Grabber seems to be supported by cx231xx driver

2013-07-14 Thread Devin Heitmueller
On Sun, Jul 14, 2013 at 9:23 AM, Florian Streibelt
flor...@inet.tu-berlin.de wrote:
 Be aware that I consider this driver to be flaky, so I would not at all be
 surprised if there are bugs lurking in the code.


 Hum. Because of code quality or due to the missing documentation from the 
 vendor?

While this is all too common for vendors, it really isn't a reasonable
assertion in this case.  Conexant (the chip vendor) wrote the original
driver, and they have been very supportive in the past.  They provided
documentation (under NDA) and reference designs at no cost.  They've
also answered questions I've had in the past regarding the chip and
you'll also note that the email address of the maintainer was a
Conexant engineer until he left the company.

Regarding the flakiness, there indeed have been some reliability
problems - some of them were in the original driver sources, a couple
I introduced doing the cleanup work to get it upstream (and long ago
fixed), and some were regressions introduced after the driver went
upstream.  It's tough maintaining a driver on an ongoing basis that
supports many different cards from different vendors, in particular
since individuals making changes to the driver to make it work with
some new device, don't have all of the other products to test with (to
ensure regressions aren't introduced).

These drivers also tend to suffer from bitrot.  If they aren't
actively being used by many people and if there isn't a developer who
actively maintains the driver, then regressions sneak in there and go
unnoticed for months/years.

 If you have any documents on the chip I would be happy.

I don't think there are any documents that aren't under NDA.  That
said, you don't need the register docs to debug a system hang.  If you
don't have the time to jam a few printk() statements into the source,
then there's no point in going through the effort to get you docs.

Your best bet at this point is probably to wait [indefinitely] for
some developer who has a need for the device to work to stumble across
the problem and debug it.  You get what you pay for.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [media] cx25821 regression from 3.9: BUG: bad unlock balance detected!

2013-07-14 Thread Devin Heitmueller
On Sun, Jul 14, 2013 at 5:39 PM, Hans Verkuil hverk...@xs4all.nl wrote:
  If you can get cx25821-video.c to work with vb2, then we can take a look 
  at the alsa
  code.

If I can make a suggestion:  fix the lock problem first.  The last
thing you want to do is simultaneously debug a known buffer management
problem at the same time you're trying to port to VB2.  I panic'd my
system enough times during the em28xx conversion where you really want
to know whether the source is the VB2 work in progress or some other
issue with buffer management.

I'm not saying to not do the VB2 port -- just that you would be well
served to have a reasonable stable driver before attempting to do the
port.

That said, I guess it's possible that digging into the code enough to
understand what specifically has to be done for a VB2 port might
reveal the source of the locking problem, but that's not how I would
do it.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 36/50] media: usb: em28xx: spin_lock in complete() cleanup

2013-07-11 Thread Devin Heitmueller
On Thu, Jul 11, 2013 at 5:05 AM, Ming Lei ming@canonical.com wrote:
 Complete() will be run with interrupt enabled, so change to
 spin_lock_irqsave().

 Cc: Mauro Carvalho Chehab mche...@redhat.com
 Cc: linux-media@vger.kernel.org
 Signed-off-by: Ming Lei ming@canonical.com
 ---
  drivers/media/usb/em28xx/em28xx-core.c |5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)

 diff --git a/drivers/media/usb/em28xx/em28xx-core.c 
 b/drivers/media/usb/em28xx/em28xx-core.c
 index fc157af..0d698f9 100644
 --- a/drivers/media/usb/em28xx/em28xx-core.c
 +++ b/drivers/media/usb/em28xx/em28xx-core.c
 @@ -941,6 +941,7 @@ static void em28xx_irq_callback(struct urb *urb)
  {
 struct em28xx *dev = urb-context;
 int i;
 +   unsigned long flags;

 switch (urb-status) {
 case 0: /* success */
 @@ -956,9 +957,9 @@ static void em28xx_irq_callback(struct urb *urb)
 }

 /* Copy data from URB */
 -   spin_lock(dev-slock);
 +   spin_lock_irqsave(dev-slock, flags);
 dev-usb_ctl.urb_data_copy(dev, urb);
 -   spin_unlock(dev-slock);
 +   spin_unlock_irqrestore(dev-slock, flags);

 /* Reset urb buffers */
 for (i = 0; i  urb-number_of_packets; i++) {
 --
 1.7.9.5

 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html

I actually stumbled across this a couple of weeks ago, and have had an
identical patch running in a local dev tree.

Reviewed-by: Devin Heitmueller dheitmuel...@kernellabs.com
Tested-by: Devin Heitmueller dheitmuel...@kernellabs.com

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: lgdt3304

2013-06-27 Thread Devin Heitmueller
On Thu, Jun 27, 2013 at 2:38 PM, Carl-Fredrik Sundstrom
c...@blueflowamericas.com wrote:

 Has the driver for lgdt3304 been tested ? I am trying to get a new card
 working

 AVerMedia AVerTVHD Duet PCTV tuner (A188) A188-AF PCI-Express x1 Interface

 It is using

 1 x saa7160E
 2 x LGDT3304
 2 x TDA18271HD/C2

 I get so far that I can load a basic driver by modifying the existing
 saa716x driver, I can detect the TDA18271HD/C2, but I fail to detect the
 LGDT3304 when attaching it using the 3305 driver.

 I always fail at the first read from LGDT3305_GEN_CTRL_2, does this register
 even exist in lgdt3304 or is it specific to lgdt3305?

 /* verify that we're talking to a lg dt3304/5 */
  ret = lgdt3305_read_reg(state, LGDT3305_GEN_CTRL_2, val);
  if ((lg_fail(ret)) | (val == 0))
 {
 printk(fail 1\n);
 goto fail;
 }

 Since I do find the TDA18271HD/C2 I don't think there is something wrong
 with the i2c buss. I also tried every possible i2c address without success.
 The lgdt3305 has option between address 0x0e and 0x59, is it the same for
 3304 ?

 This is the first time I am trying to get a driver to work in Linux. Please
 help me.

Either the i2c is broken or the lgdt3304 is being held in reset by a GPIO.

Also, that device has multiple i2c busses, so you could be looking on
the wrong bus.

Do you see *any* i2c devices (such as an eeprom).

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Doing a v4l-utils-1.0.0 release

2013-06-14 Thread Devin Heitmueller
I've got a fix for a really bad performance bug, so if you can hold
off on doing a release a couple of hours until I can get in front of
my Linux box and submit a patch, I would appreciate it.

Thanks,

Devin

On Fri, Jun 14, 2013 at 4:51 AM, Hans Verkuil hverk...@xs4all.nl wrote:
 On Fri 14 June 2013 09:15:02 Hans de Goede wrote:
 Hi All,

 IIRC the 0.9.x series were meant as development releases leading up to a new
 stable 1.0.0 release. Lately there have been no maintenance 0.8.x releases
 and a lot of interesting development going on in the 0.9.x, while at the
 same time there have been no issues reported against 0.9.x (iow it seems
 stable).

 So how about taking current master and releasing that as a 1.0.0 release ?

 Fine by me!

 Note that the libv4l2rds code is now finalized, so that can be released as
 well.

 Regards,

 Hans
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Don't call G_TUNER unless actually performing a tuning related call

2013-06-14 Thread Devin Heitmueller
Making G_TUNER calls can take a long time on some tuners, in
particular those that load firmware or do power management.  As a
result, we don't want to call G_TUNER unless the user is actually
doing a tuning related call.  The current code makes a G_TUNER
call regardless of what command the user is attempting to perform.

Problem originally identified on the HVR-950q, where even doing
operations like toggling from the composite to the s-video input
would take over 1000ms.

Signed-off-by: Devin Heitmueller dheitmuel...@kernellabs.com
---
 utils/v4l2-ctl/v4l2-ctl-tuner.cpp | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/utils/v4l2-ctl/v4l2-ctl-tuner.cpp 
b/utils/v4l2-ctl/v4l2-ctl-tuner.cpp
index ebe74d3..9af6b13 100644
--- a/utils/v4l2-ctl/v4l2-ctl-tuner.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl-tuner.cpp
@@ -254,6 +254,13 @@ void tuner_set(int fd)
V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
double fac = 16;
 
+   if (!options[OptSetFreq]  ! options[OptSetTuner]  
!options[OptListFreqBands]
+!options[OptSetModulator]  !options[OptFreqSeek]) {
+   /* Don't actually call G_[MODULATOR/TUNER] if we don't intend to
+  actually perform any tuner related function */
+   return;
+   }
+
if (capabilities  V4L2_CAP_MODULATOR) {
type = V4L2_TUNER_RADIO;
modulator.index = tuner_index;
-- 
1.8.1.2

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Hauppauge WinTV HVR 930C-HD - new USB ID 2040:b130 ?

2013-05-07 Thread Devin Heitmueller
On Tue, May 7, 2013 at 6:39 PM, Jan Kiszka jan.kis...@web.de wrote:
 To pick up this old topic (as I just got the wrong 930C delivered :( ):

 What is blocking the development of a si2165 driver? Lacking specs (due
 to NDAs)? Or lacking interest / developer bandwidth?

Probably a bit of both.  I've got the documentation under NDA, and
last I checked it's not otherwise publicly available.  That said, the
chip has been around for several years and no developer has ever cared
to do a reverse engineered driver.  The chip isn't overly complicated
(I could probably write a driver for it in a week even without the
datasheets), alas there has never really been any interest.

 In case of the
 latter, how much effort may it take for a kernel hacker without
 particular experience in the DVB subsystem to get things running?

Not rocket science, for sure.  Probably the bigger issue is
familiarity with reverse engineering techniques and a good
understanding of how demodulators work.  Learning the API itself is
the easy part (given there are plenty of example drivers to use as a
model).

I can count on one hand the number of developers who are actively
contributing tuner/demod drivers.  There just is very little developer
interest in this area nowadays.

Devin

--
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Driver for KWorld UB435Q Version 3 (ATSC) USB id: 1b80:e34c

2013-05-03 Thread Devin Heitmueller
On Fri, May 3, 2013 at 3:50 PM, The Bit Pit thebit...@earthlink.net wrote:
 I am Wilson Michaels, please let me introduce myself:

 Eight years ago I contributed a driver for the DViCO FusionHDTV 3  5
 PCI TV tuner cards (see lgdt330x.c).  The code is still in linux today.
  One of my tuners is starting to fail so a purchased a KWorld UB435Q
 Version 3 (ATSC) from Newegg.  It's not supported so I started working
 on a driver. Is anyone else working on a driver for the  KWorld UB435Q V-3?

 I opened the case easily as it just snaps together with a plastic clip.
 It is not glued :-) I verified that it contains:
 EM2874B
 NXP TDA18272/M
 lgdt3305

 I git the latest media_build tree and added entries to make it recognize
 the KWorld USB id: 1b80:e34c.  The added code is like the KWorld UB435Q
 Version 2 code with lgdt3304 replaced by lgdt3305 and no .dvb_gpio or
 .tuner_gpio. It reports finding an em2874 chip using bulk transfer mode
 as expected.

No bulk support currently for em28xx dvb.  I never got around to it
because the only sticks I ever came across them that use them is that
particular KWorld model, and from everything I've heard it's a piece
of garbage (unreliable, prone to failure even under WIndows).

That said, a bulk endpoint driver isn't rocket science to add support for.  :-)

 There appears to be code in the em28xx driver to handle
 bulk transfer.  It does not recognize the lgdt3305.

The lgdt3305 is probably on the second i2c bus -- typical for em2874
based devices.  The tuner is probably gated behind the 3305.

It's also likely that the 3305 is being held in reset by default.
You'll probably need to tweak a GPIO to take it out of reset before it
will answer i2c.

 I discovered (brute force scan) that there are two i2c addresses 0x50
 and 0xd0. The lgdt3305 detection code is able to read something from
 either i2c address, but is is always 0.

One is probably the eeprom.

 Does the eeprom data below have anything to help writing a driver for
 the KWorld UB435Q?

Almost certainly not.

 I suspect some initialization needs to be done, but I don't know what to
 try.  Does anyone have any information about how the hardware is
 configured or information captured from the Windows driver?

 Does anyone know where I can get a copy of the programming spec for the
 lgdt3305?  The em2874 spec would be useful too.

I have them both, but under NDA (neither are publicly available).  You
probably don't need either though.  Aside from the bulk support, the
em2874 implementation is pretty complete.  Same goes for the 3305.

Devin

--
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Video Signal Type in V4L

2013-04-25 Thread Devin Heitmueller
 Is there any way by which I can know Input signal type (in terms of
 DVI/Composite/USB/SDI) and refresh rate from a V4L video capture device.
 Any available V4L Structure/Flag from which I can deduce this information.
 Please help !

The extent to which the data is available is the name field in the G_FMT call:

http://linuxtv.org/downloads/v4l-dvb-apis/vidioc-enuminput.html

For most devices, the driver developer names the individual inputs
Composite, S-Video, Tuner, etc.

The only level of distinction other than the name is the type field,
which today is V4L2_INPUT_TYPE_TUNER for an RF tuner and
V4L2_INPUT_TYPE_CAMERA for everything else.

To my knowledge there aren't any current drivers in the main tree that
support DVI or SDI capture, so nobody has really cared to make the API
more flexible to extend the type field with other values (which
would both be easier to machine parse, localize, and be consistent
across boards).

Devin

--
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Elgato DTT Deluxe V2

2013-04-23 Thread Devin Heitmueller
On Tue, Apr 23, 2013 at 8:13 AM, Another Sillyname
anothersn...@googlemail.com wrote:
 I recently picked up one of these very cheap and am trying to load it into 
 'nix.

 According to this

 http://www.linuxtv.org/wiki/index.php/Elgato_EyeTV_DTT_deluxe_v2

 It should be recognised and load, and indeed when plugged in dmesg
 correctly reports it being detected and lsusb sees the device and the
 correctly reports the device ID.

 However there's no DVB section loading and I'm not sure why.

 I've copied the two .hex files to firmware and dmesg is not reporting
 any other outstanding requirements, however it's just not
 partying

 Installed into a windows machine the drivers load and it reports OK
 (it's not tuning but I'm pretty sure that's a location issue at the
 moment).

 any ideas anyone?

The driver is still in the staging tree, and isn't compiled into the
kernel by default.  You'll have to either recompile your kernel to
include the AS102 driver, or build the media_build tree.

--
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Keene

2013-04-19 Thread Devin Heitmueller
On Fri, Apr 19, 2013 at 5:58 AM, Hans Verkuil hverk...@xs4all.nl wrote:
 So perhaps this can be solved with two generic controls:

 bool CID_POWER_OFF_AT_LAST_CLOSE
 int CID_POWER_OFF_DELAY (unit: seconds)

 If POWER_OFF_AT_LAST_CLOSE is false, then you never power off. If it is true,
 then power off after a given delay. If the delay == 0 then power off 
 immediately.

 Drivers can decide on proper default values. But radio devices must start
 with CID_POWER_OFF_AT_LAST_CLOSE set to false for compatibility reasons.

 I don't have time for the next few weeks to investigate this further, so if
 you are interested...

Bear in mind that deferred shutdown opens a huge set of problems with
hybrid tuners.  We already have many, many race known conditions
related to closing V4L and then immediately opening the corresponding
DVB device (and closing DVB then immediately opening the V4L device).
Without a proper framework, a change such as this will exacerbate the
problem.

These race conditions typically result in completely undefined
behavior, as you either having both sides of the device powered up at
the same time, or you have the second half powered up and then
conflicting commands are received to power it down because of deferred
commands for the first half to go to sleep.

It's an absolute mess.

And please don't forget that this isn't just about a shared tuner chip
- it's about the state of video decoders and demodulators as well.
You cannot just introduce simple locking in tuner-core and hope that
resolves the problem.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] bttv: Add noname Bt848 capture card with 14MHz xtal

2013-04-14 Thread Devin Heitmueller
On Sun, Apr 14, 2013 at 5:19 PM, Ondrej Zary li...@rainbow-software.org wrote:
 I wonder why the bttv driver probes for IR chips even when the has_remote
 flag is not set?

Probably so you can add a remote via userland even if there isn't an
default remote specified in the in-kernel board profile.

That said, it probably makes more sense to require a default remote in
the board profile for those devices which have an onboard IR
controller, and use that to determine whether IR support is present on
the board at all.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] em28xx: clean up end extend the GPIO port handling

2013-04-13 Thread Devin Heitmueller
On Sat, Apr 13, 2013 at 11:30 AM, Frank Schäfer
fschaefer@googlemail.com wrote:
 I've checked the documentation about the gpio and led frameworks a few
 weeks ago to find out if it makes sense to use them for the
 gpio/buttons/led stuff of the VAD Laplace webcam.
 AFAICS, there are no benfits as long as you are dealing with these
 things internally. It just increases the code size and adds an
 additional dependency in this case.
 Of course, the situation is different when there is an interaction with
 other modules or userspace. In that case using gpiolib could make sense.
 I don't know which case applies to the LAN stuff, but for the
 buttons/leds it's the first case.

IMHO, it would be a bad idea to expose the actual GPIOs to userspace.
Improperly setting the GPIOs can cause damage to the board, and all of
the functionality that the GPIOs control are exposed through other
much better supported interfaces.  It's a nice debug feature for
driver developers who want to hack at the driver, but you really don't
want any situation where end users or applications are making direct
use of the GPIOs.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] em28xx: clean up end extend the GPIO port handling

2013-04-13 Thread Devin Heitmueller
On Sat, Apr 13, 2013 at 12:21 PM, Antti Palosaari cr...@iki.fi wrote:
 Existing userspace sysfs interface is clearly debug interface. You will need
 root privileges to mount it and IIRC it was not even compiled by default
 (needs Kconfig debug option?).

You would like to think that.  Tell Mauro then, since he wanted to
rely on sysfs to associate V4L2 video devices with ALSA devices
(rather than just adding a simple call to the V4L2 API).

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: uvcvideo: Dropping payload (out of sync)

2013-04-11 Thread Devin Heitmueller
On Thu, Apr 11, 2013 at 3:56 AM, André Weidemann andre.weidem...@web.de wrote:
 For anyone who may also run into this problem here is a solution...

 It seems the problem is hardware related to the Raspberry Pi. The solution
 can be found here:

 https://github.com/raspberrypi/linux/issues/238
 https://github.com/P33M/linux

Yup, it's been known for a while that the USB host controller on the
Raspberry Pi is absolute crap.  For all the great things about the Pi,
I would probably consider this it's biggest weakness (it's actually
prompted me to *not* use the Pi for several projects where I needed a
low-cost Linux platform)...

No easy answers here.  It just won't be a very good platform for
capturing uncompressed video over its USB port.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/5] mxl5007t: fix buggy register read

2013-04-09 Thread Devin Heitmueller
On Tue, Apr 9, 2013 at 7:53 PM, Antti Palosaari cr...@iki.fi wrote:
 Chip uses WRITE + STOP + READ + STOP sequence for I2C register read.
 Driver was using REPEATED START condition which makes it failing if
 I2C adapter was implemented correctly.

 Add use_broken_read_reg_intentionally option to keep old buggy
 implantation as there is buggy I2C adapter implementation relying
 that bug...

 Signed-off-by: Antti Palosaari cr...@iki.fi

Hi Antti,

The existing code actually looks fine.  This is actually how most
devices do register reads.

Further, it *should* be done in a single call to i2c_transfer() or
else you won't hold the lock and you will create a race condition.

This sounds more like it's a bug in the i2c master rather than the 5007 driver.

Do you have i2c bus traces that clearly show that this was the cause
of the issue?  If we need to define something as broken behavior, at
first glance it looks like the way *you're* proposing is the broken
behavior - presumably to work around a bug in the i2c master not
properly supporting repeated start.

Also, any reason you didn't put Mike into the cc: for this (since he
owns the driver)?

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/5] mxl5007t: fix buggy register read

2013-04-09 Thread Devin Heitmueller
On Tue, Apr 9, 2013 at 8:45 PM, Antti Palosaari cr...@iki.fi wrote:
 Yes, most devices do that, but not all!
 MxL5007t has a special register for setting register to read. Look the code
 and you could see it easily. It was over year ago I fixed it...

That sounds kind of insane, but I haven't looked at the datasheets and
if Mike Ack'd it, then so be it.

 Further, it *should* be done in a single call to i2c_transfer() or
 else you won't hold the lock and you will create a race condition.


 No. That's why I added new lock. Single i2c_transfer() means all messages
 are done using repeated START condition.

No need to add a new lock to your bridge driver.  You can just use
__i2c_transfer() and i2c_lock_adapter(state-i2c).  That's what
they're doing in the drx-k driver for just such cases where they need
the lock to span multiple calls to i2c_transfer().


 This sounds more like it's a bug in the i2c master rather than the 5007
 driver.


 No.


 Do you have i2c bus traces that clearly show that this was the cause
 of the issue?  If we need to define something as broken behavior, at
 first glance it looks like the way *you're* proposing is the broken
 behavior - presumably to work around a bug in the i2c master not
 properly supporting repeated start.


 Yes and no. I made own Cypress FX2 firmware and saw initially that issue
 then. Also, as you could see looking the following patches I ensured /
 confirmed issue using two different I2C adapters (AF9015 and AF9035). So I
 have totally 3 working adapters to prove it (which are broken without that
 patch)!

The whole think sounds screwed up, and without a real i2c trace of the
bus we'll never know.  That said, I'm not really in a position to
dispute it given I don't have any devices with the chip in question.

I would suggest renaming the configuration value to something less
controversial, such as use_repeated_start_for_reads and avoid using
terms like broken where it's not clear that's actually the case.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEW PATCH] tuner-core fix for au0828 g_tuner bug

2013-03-25 Thread Devin Heitmueller
On Mon, Mar 25, 2013 at 7:32 AM, Hans Verkuil hverk...@xs4all.nl wrote:
 This fixes the bug where the au8522 detected a signal and then tuner-core
 overwrote it with 0 since the xc5000 tuner does not support get_rf_strength.

 Signed-off-by: Hans Verkuil hans.verk...@cisco.com

Nice find.  That makes much more sense.

Cheers,

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GIT PULL FOR v3.10] au0828 driver overhaul

2013-03-24 Thread Devin Heitmueller
On Sun, Mar 24, 2013 at 1:51 PM, Mauro Carvalho Chehab
mche...@redhat.com wrote:
 drivers/media/dvb-frontends/au8522_decoder.c:static int au8522_g_tuner(struct 
 v4l2_subdev *sd, struct v4l2_tuner *vt)
 drivers/media/dvb-frontends/au8522_decoder.c-{
 drivers/media/dvb-frontends/au8522_decoder.c- int val = 0;
 drivers/media/dvb-frontends/au8522_decoder.c- struct au8522_state *state 
 = to_state(sd);
 drivers/media/dvb-frontends/au8522_decoder.c- u8 lock_status;
 drivers/media/dvb-frontends/au8522_decoder.c-
 drivers/media/dvb-frontends/au8522_decoder.c- /* Interrogate the decoder 
 to see if we are getting a real signal */
 drivers/media/dvb-frontends/au8522_decoder.c- lock_status = 
 au8522_readreg(state, 0x00);
 drivers/media/dvb-frontends/au8522_decoder.c- if (lock_status == 0xa2)
 drivers/media/dvb-frontends/au8522_decoder.c- vt-signal = 0x;
 drivers/media/dvb-frontends/au8522_decoder.c- else
 drivers/media/dvb-frontends/au8522_decoder.c- vt-signal = 0x00;
 drivers/media/dvb-frontends/au8522_decoder.c-
 drivers/media/dvb-frontends/au8522_decoder.c- vt-capability |=
 drivers/media/dvb-frontends/au8522_decoder.c- 
 V4L2_TUNER_CAP_STEREO | V4L2_TUNER_CAP_LANG1 |
 drivers/media/dvb-frontends/au8522_decoder.c- 
 V4L2_TUNER_CAP_LANG2 | V4L2_TUNER_CAP_SAP;
 drivers/media/dvb-frontends/au8522_decoder.c-
 drivers/media/dvb-frontends/au8522_decoder.c- val = V4L2_TUNER_SUB_MONO;
 drivers/media/dvb-frontends/au8522_decoder.c- vt-rxsubchans = val;
 drivers/media/dvb-frontends/au8522_decoder.c- vt-audmode = 
 V4L2_TUNER_MODE_STEREO;
 drivers/media/dvb-frontends/au8522_decoder.c- return 0;

 As if the i2c gate is on a wrong state, au8522_readreg() won't
 work anymore.

Note that au8522_g_tuner function never actually talks to the tuner.
It's handled entirely within the au8522 driver, which is not behind
the gate.  The I2C gate is only required if talking to the xc5000, not
the au8522.

There's something else broken here.  I suspect it's probably some
artifact of the conversion to the new control framework (if I had to
guess).

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GIT PULL FOR v3.10] au0828 driver overhaul

2013-03-22 Thread Devin Heitmueller
On Fri, Mar 22, 2013 at 12:38 PM, Hans Verkuil hverk...@xs4all.nl wrote:
 It works fine with qv4l2, but there is still a bug causing tvtime to fail.
 That's caused by commit e58071f024aa337b7ce41682578b33895b024f8b, applied
 August last year, that broke g_tuner: after that 'signal' would always be 0
 and tvtime expects signal to be non-zero for a valid frequency. The signal
 field is set by the au8522, but g_tuner is only called for the tuner (well,
 also for au8522 but since the i2c gate is set for the tuner that won't do
 anything).

During your testing, did you bisect the entire media tree or just the
au0828/au8522 driver.  This discovery is pretty damn surprising since
I actively test with tvtime whenever I do any work on that driver.
Are you sure something else in the framework didn't change which
caused breakage for this driver?

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GIT PULL FOR v3.10] au0828 driver overhaul

2013-03-22 Thread Devin Heitmueller
On Fri, Mar 22, 2013 at 12:38 PM, Hans Verkuil hverk...@xs4all.nl wrote:
 It works fine with qv4l2, but there is still a bug causing tvtime to fail.
 That's caused by commit e58071f024aa337b7ce41682578b33895b024f8b, applied
 August last year, that broke g_tuner: after that 'signal' would always be 0
 and tvtime expects signal to be non-zero for a valid frequency. The signal
 field is set by the au8522, but g_tuner is only called for the tuner (well,
 also for au8522 but since the i2c gate is set for the tuner that won't do
 anything).

Wait, are you saying that the G_TUNER call is no longer being routed
to the au8522 driver?  The signal level has always been set to a
nonzero value by au8522 if a signal is present, and thus the state of
the i2c gate isn't relevant.  This is because the xc5000 driver didn't
actually have implemented a call to return the signal level.

If what you're saying is true, then the behavior of the framework
itself changed, and who knows what else is broken.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: uvcvideo USERPTR mode busted?

2013-03-21 Thread Devin Heitmueller
On Thu, Mar 21, 2013 at 8:41 AM, Laurent Pinchart
laurent.pinch...@ideasonboard.com wrote:
 Please submit it at some point :-)

 Is it a uvcvideo issue or a videobuf2 issue ?

Yeah, it's definitely on my list.  Basically if you hand
videobuf2-vmalloc a piece of memory that is not page aligned, it gets
treated as if paged aligned, which causes the first N bytes of every
video frame to be garbage and the video is shifted right by N bytes.
I saw the issue with both uvcvideo as well as em28xx.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEW PATCH 11/15] au0828: fix disconnect sequence.

2013-03-20 Thread Devin Heitmueller
On Wed, Mar 20, 2013 at 3:20 PM, Hans Verkuil hverk...@xs4all.nl wrote:
 I want to make a pull request for this. Can I have your Acked-by or do you
 want to look at this some more?

I *looked* at all the patches, and they all look fine.  That said, I
haven't actually installed them at all and seen if anything got
broken.  The logic is so convoluted that it's entirely possible there
is breakage that wouldn't be obvious simply by reviewing the patches
without actual testing with real application (and no, v4l-2ctl and
v4l2-compliance do *not* count as real applications).

Did you try the resulting patches with anything other than
v4l2-compliance/v4l2-ctl?  tvtime?  xawtv?  mythtv?

Hence, for what it's worth:

Reviewed-by: Devin Heitmueller dheitmuel...@kernellabs.com

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: DVB memory leak?

2013-03-15 Thread Devin Heitmueller
On Fri, Mar 15, 2013 at 11:19 AM,  moa...@moasat.dyndns.org wrote:
 I've been fighting a situation where the kernel appears to be running out of 
 memory over a period of time.  I originally had my low address space reserve 
 set to 4096 and memory compaction on.  I would get this error within a few 
 days of reboot:

 Mar 06 19:25:03 [kernel] [168311.801139] DVBRead: page allocation failure: 
 order:4, mode:0xc0d0
 Mar 06 19:25:03 [kernel] [168311.801145] Pid: 15153, comm: DVBRead Tainted: G 
 C   3.7.10-gentoo #3
 Mar 06 19:25:03 [kernel] [168311.801146] Call Trace:
 Mar 06 19:25:03 [kernel] [168311.801160]  [810e7e3b] 
 warn_alloc_failed+0xeb/0x130
 Mar 06 19:25:03 [kernel] [168311.801163]  [810eaddd] ? 
 __alloc_pages_direct_compact+0x1ed/0x200
 Mar 06 19:25:03 [kernel] [168311.801166]  [810eb6ec] 
 __alloc_pages_nodemask+0x8fc/0x9c0
 Mar 06 19:25:03 [kernel] [168311.801175]  [81598943] ? 
 usb_start_wait_urb+0xa3/0x160
 Mar 06 19:25:03 [kernel] [168311.801179]  [81121b41] 
 alloc_pages_current+0xb1/0x120
 Mar 06 19:25:03 [kernel] [168311.801181]  [81597d49] ? 
 usb_alloc_urb+0x19/0x50
 Mar 06 19:25:03 [kernel] [168311.801184]  [810e6fe9] 
 __get_free_pages+0x9/0x40
 Mar 06 19:25:03 [kernel] [168311.801187]  [8112752a] 
 kmalloc_order_trace+0x3a/0xb0
 Mar 06 19:25:03 [kernel] [168311.801193]  [a00c9483] 
 start_urb_transfer+0x83/0x1c0 [au0828]
 Mar 06 19:25:03 [kernel] [168311.801197]  [a00c9698] 
 au0828_dvb_start_feed+0xd8/0x100 [au0828]
 Mar 06 19:25:03 [kernel] [168311.801201]  [8160a6ae] 
 dmx_ts_feed_start_filtering+0x5e/0xf0
 Mar 06 19:25:03 [kernel] [168311.801204]  [81607a7c] 
 dvb_dmxdev_start_feed.clone.0+0xcc/0x120
 Mar 06 19:25:03 [kernel] [168311.801206]  [816085ec] 
 dvb_dmxdev_filter_start+0x28c/0x3b0
 Mar 06 19:25:03 [kernel] [168311.801209]  [81608d8a] 
 dvb_demux_do_ioctl+0x51a/0x6a0
 Mar 06 19:25:03 [kernel] [168311.801211]  [81606e04] 
 dvb_usercopy+0xa4/0x170
 Mar 06 19:25:03 [kernel] [168311.801214]  [81608870] ? 
 dvb_demux_open+0x160/0x160
 Mar 06 19:25:03 [kernel] [168311.801217]  [8110ab5b] ? 
 handle_mm_fault+0x13b/0x210
 Mar 06 19:25:03 [kernel] [168311.801221]  [8113e344] ? 
 do_filp_open+0x44/0xa0
 Mar 06 19:25:03 [kernel] [168311.801224]  [81607480] 
 dvb_demux_ioctl+0x10/0x20
 Mar 06 19:25:03 [kernel] [168311.801226]  [81140026] 
 do_vfs_ioctl+0x96/0x4f0
 Mar 06 19:25:03 [kernel] [168311.801230]  [81332654] ? 
 inode_has_perm.clone.25.clone.35+0x24/0x30
 Mar 06 19:25:03 [kernel] [168311.801233]  [81334f40] ? 
 file_has_perm+0x90/0xa0
 Mar 06 19:25:03 [kernel] [168311.801236]  [81140511] 
 sys_ioctl+0x91/0xa0
 Mar 06 19:25:03 [kernel] [168311.801240]  [818a9b52] 
 system_call_fastpath+0x16/0x1b
 Mar 06 19:25:03 [kernel] [168311.801242] Mem-Info:
 Mar 06 19:25:03 [kernel] [168311.801243] Node 0 DMA per-cpu:
 Mar 06 19:25:03 [kernel] [168311.801246] CPU0: hi:0, btch:   1 usd:0
 Mar 06 19:25:03 [kernel] [168311.801247] CPU1: hi:0, btch:   1 usd:0
 Mar 06 19:25:03 [kernel] [168311.801249] CPU2: hi:0, btch:   1 usd:0
 Mar 06 19:25:03 [kernel] [168311.801250] CPU3: hi:0, btch:   1 usd:0
 Mar 06 19:25:03 [kernel] [168311.801251] Node 0 DMA32 per-cpu:
 Mar 06 19:25:03 [kernel] [168311.801253] CPU0: hi:  186, btch:  31 usd:0
 Mar 06 19:25:03 [kernel] [168311.801255] CPU1: hi:  186, btch:  31 usd:0
 Mar 06 19:25:03 [kernel] [168311.801256] CPU2: hi:  186, btch:  31 usd:0
 Mar 06 19:25:03 [kernel] [168311.801258] CPU3: hi:  186, btch:  31 usd:0
 Mar 06 19:25:03 [kernel] [168311.801259] Node 0 Normal per-cpu:
 Mar 06 19:25:03 [kernel] [168311.801260] CPU0: hi:  186, btch:  31 usd:0
 Mar 06 19:25:03 [kernel] [168311.801262] CPU1: hi:  186, btch:  31 usd:0
 Mar 06 19:25:03 [kernel] [168311.801264] CPU2: hi:  186, btch:  31 usd:0
 Mar 06 19:25:03 [kernel] [168311.801265] CPU3: hi:  186, btch:  31 usd:0
 Mar 06 19:25:03 [kernel] [168311.801269] active_anon:139468 
 inactive_anon:57451 isolated_anon:0
 Mar 06 19:25:03 [kernel] [168311.801269]  active_file:375632 
 inactive_file:366012 isolated_file:0
 Mar 06 19:25:03 [kernel] [168311.801269]  unevictable:0 dirty:556 writeback:0 
 unstable:0
 Mar 06 19:25:03 [kernel] [168311.801269]  free:10993 slab_reclaimable:32206 
 slab_unreclaimable:6181
 Mar 06 19:25:03 [kernel] [168311.801269]  mapped:11149 shmem:256 
 pagetables:2768 bounce:0
 Mar 06 19:25:03 [kernel] [168311.801269]  free_cma:0
 Mar 06 19:25:03 [kernel] [168311.801272] Node 0 DMA free:15904kB min:28kB 
 low:32kB high:40kB active_anon:0kB inactive_anon:0kB active_file:0kB 
 inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB 
 present:15648kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB 
 slab_reclaimable:0kB slab_unreclaimable:0kB 

Re: DVB memory leak?

2013-03-15 Thread Devin Heitmueller
On Fri, Mar 15, 2013 at 2:45 PM, Moasat moa...@moasat.dyndns.org wrote:
 Thanks for looking into it.  It wouldn't surprise me to find out that Myth is 
 not checking the error condition.  But even if it did, would that keep the 
 card functioning?

No, it would not keep the card functioning.  But you would at least
not get zero length recordings and instead you would get an error that
something went wrong and that action was required.

The underlying problem of course is the leak - the fact that MythTV
doesn't tell you something went wrong just exacerbates the problem.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEW PATCH 11/15] au0828: fix disconnect sequence.

2013-03-11 Thread Devin Heitmueller
On Mon, Mar 11, 2013 at 5:00 PM, Hans Verkuil hverk...@xs4all.nl wrote:
 From: Hans Verkuil hans.verk...@cisco.com

 The driver crashed when the device was disconnected while an application
 still had a device node open. Fixed by using the release() callback of struct
 v4l2_device.

This is all obviously good stuff.  I actually spent a couple of days
working through various disconnect scenarios, but hadn't had a chance
to do a PULL request.  I will review my tree and see if you missed any
other cases that I took care of.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] em28xx: add support for two buses on em2874 and upper

2013-03-05 Thread Devin Heitmueller
2013/3/5 Mauro Carvalho Chehab mche...@redhat.com:
 The em2874 chips and upper have 2 buses. On all known devices, bus 0 is
 currently used only by eeprom, and bus 1 for the rest. Add support to
 register both buses.

Did you add a mutex to ensure that both buses cannot be used at the
same time?  Because using the bus requires you to toggle a register
(thus you cannot be using both busses at the same time), you cannot
rely on the existing i2c adapter lock anymore.

You don't want a situation where something is actively talking on bus
0, and then something else tries to talk on bus 1, flips the register
bit and then the thread talking on bus 0 starts failing.

Devin


-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: uvcvideo USERPTR mode busted?

2013-03-03 Thread Devin Heitmueller
On Sun, Mar 3, 2013 at 4:37 AM, Rémi Denis-Courmont r...@remlab.net wrote:
 Hello,

 Trying to use USERPTR buffers with UVC, user space gets stuck either in
 poll(POLLIN) or in ioctl(VIDIOC_DQBUF). It seems the UVC driver never ever
 returns a frame in USERPTR mode. The symptoms are identical with kernel
 versions 3.6, 3.7 and 3.8. I also tested 3.2, but it did not support USERPTR.

 Tested hardware was Logitech HD Pro Webcam C920 with YUY2 pixel format. The
 same hardware and the same driver work fine with MMAP buffers.
 The same USERPTR userspace code works fine with the vivi test device...

 Did any have any better luck?

Hi Remi,

I've used userptr mode with the C920 on an ARM platform (with YUYV
mode and not MPEG).  It's worth noting that there is actually a bug I
hit where if the memory you pass is not aligned on a page boundary
then you will get garbage video.  I have a fix or this but haven't
submitted it upstream yet.

So it should work, aside from the bug I found.

Have you tried testing with v42l-ctl's streaming command?  That would
help identify whether it's something special about your code or
whether it's the driver.  Don't get me wrong, it's almost certainly a
driver issue in either case, but it would help narrow down the issue
if you're using v4l2-ctl as that app is really simple and readily
available to the driver developers.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFCv1 PATCH 00/20] cx231xx: v4l2-compliance fixes

2013-02-07 Thread Devin Heitmueller
Hi Hans,

On Thu, Feb 7, 2013 at 10:08 AM, Hans Verkuil hverk...@xs4all.nl wrote:
 On Tue January 29 2013 17:41:29 Devin Heitmueller wrote:
 On Tue, Jan 29, 2013 at 11:32 AM, Hans Verkuil hverk...@xs4all.nl wrote:
  I will take a closer look at the vbi support, though.. It would be nice to 
  get
  that working.

 FYI:  I had the VBI support working when I submitted the driver
 upstream (at least for NTSC CC).  If it doesn't work, then somebody
 broke it.

 OK, I did some more tests and it turned out to be related to the no_alt_vanc
 setting in the board definitions. If it is 1, then usb_set_interface() is
 never called and the endpoint is never created.

 It's unclear to me if this means that if no_alt_vanc is set, then the vbi node
 should be disabled. It seems that way.

 Unfortunately, of the three cx231xx devices I have no_alt_vanc is set on two
 and the third (Hauppauge EXETER) is the one where the tda18271 tuner has
 issues: it always gets errors when writing to it. It used to load correctly
 about 10% of the time in the past, but now I can't get it to work at all.

 Devin, I think you said once that you knew what is going on. Do you have
 any code that I can try to make it work again?

The following will cause the tuner to initialize properly.
Unfortunately it's only half a fix because it results in the digital
demod driving the AGC, which will conflict the AGC being driven by the
Polaris when in analog mode.

Still, it should be enough to allow you to play with the VBI support
assuming you test with the baseband inputs.

Devin

--- cx231xx-avcore.c.orig   2013-01-17 11:47:40.0 -0500
+++ cx231xx-avcore.c2013-01-24 09:02:25.833076332 -0500
@@ -2207,6 +2207,7 @@
u8 value[4] = { 0, 0, 0, 0 };
u32 tmp = 0;
int status = 0;
+   int demod_reset_high = 0;

if (dev-power_mode != mode)
dev-power_mode = mode;
@@ -2406,9 +2407,25 @@

msleep(PWR_SLEEP_INTERVAL);

+   /* For Hauppauge devices based on the ldgt3305, the 3305 will hold SDA
+  low from powerup until 10ms after the device is brought out of reset.
+  As a result, we need to *always* bring the device out of reset if
+  PWR_TUNER_EN is enabled (since we have a shared power plane for both
+  the tuner and demod).  If you fail to bring the chip out of reset
+  *and* wait 10ms, the i2c bus will get jammed.  This is a vendor
+  documented limitation of the lgdt3305 demodulator */
+   if ((tmp  PWR_TUNER_EN) 
+   (dev-model == CX231XX_BOARD_HAUPPAUGE_EXETER)) {
+   demod_reset_high = 1;
+   }
+
/* For power saving, only enable Pwr_resetout_n
   when digital TV is selected. */
if (mode == POLARIS_AVMODE_DIGITAL) {
+   demod_reset_high = 1;
+   }
+
+   if (demod_reset_high) {
tmp |= PWR_RESETOUT_EN;
value[0] = (u8) tmp;
value[1] = (u8) (tmp  8);




-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Replacement for vloopback?

2013-02-06 Thread Devin Heitmueller
On Wed, Feb 6, 2013 at 9:42 AM, Neuer User auslands...@gmx.de wrote:
 If it is not possible to have two applications access the same video
 stream, that is pretty detrimentical to quite a lot of use cases, e.g.:

 a.) Use motion to detect motion and record video. At the same time view
 the camera output on the screen.

 b.) Stream a webcam output over the net and at the same time view it on
 the screen.

FWIW:  usually when people ask for this sort of functionality
(performing multiple functions on the same stream), they will
typically use frameworks like gstreamer, which allow for creation of
pipelines to perform the sorts of use cases you have described.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: WinTV-HVR-1400: scandvb (and kaffeine) fails to find any channels

2013-02-01 Thread Devin Heitmueller
On Fri, Feb 1, 2013 at 9:16 AM, Chris Clayton chris2...@googlemail.com wrote:
 I've got some more diagnostics. I tuned on the 12c debugging in the cx23885
 driver and ran the scan again. Surprisingly, the scan found 22 channels on a
 single frequency (that carries the BBC channels). I've attached two files -
 the output from dvbscan and the kernel log covering the loading of the
 drivers and running the scan.

 I'm no kernel guru, but is it possible that the root cause of the scan
 failures is a timing problem which is being partially offset by the time
 taken to produce all the debug output?

w_scan does have some arguments that let you increase the timeout for
tuning.  You may wish to see if that has any effect.  Maybe the w_scan
timeout is just too short for that device.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: WinTV-HVR-1400: scandvb (and kaffeine) fails to find any channels

2013-02-01 Thread Devin Heitmueller
On Fri, Feb 1, 2013 at 4:03 PM, Chris Clayton chris2...@googlemail.com wrote:
 Yes, I noticed that but even with the tuning timeout set at medium or
 longest, I doesn't find any channels. However, I've been following the debug
 messages through the code and ended up at
 drivers/media/pci/cx23885/cx23885-i2c.c.

 I've found that by amending I2C_WAIT_DELAY from 32 to 64, I get improved
 results from scanning. With that delay doubled, scandvb now finds 49
 channels over 3 frequencies. That's with all debugging turned off, so no
 extra delays provided by the production of debug messages.

 I'll play around more tomorrow and update then.

It could be that the cx23885 driver doesn't properly implement I2C
clock stretching, which is something you don't encounter on most
tuners but is an issue when communicating with the Xceive parts.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: WinTV-HVR-1400: scandvb (and kaffeine) fails to find any channels

2013-01-31 Thread Devin Heitmueller
On Thu, Jan 31, 2013 at 11:21 AM, Chris Clayton
chris2...@googlemail.com wrote:
 Hi.

 On linuxtv.org, the Hauppauge WinTV-HVR-1400 is listed as being supported.
 I've bought one, but I find that when I run the scan for dvb-t channels,
 none are found. I have tried kernels 2.6.11, 2.7.5 and 3.8.0-rc5+ (pulled
 from Linus' tree today)

 I know the aerial and cable are OK because, using the same cable, scanning
 with an internal PCI dvb-t card in a desktop computer finds 117 TV and radio
 channels. I know the HVR-1400 expresscard is OK because, again using the
 same cable, on Windows 7 the Hauppauge TV viewing application also finds all
 those channels.

Try the patch described in this email sent last week:

http://www.mail-archive.com/linux-media@vger.kernel.org/msg57577.html

There's a very good chance you have the same problem.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


<    1   2   3   4   5   6   7   8   9   10   >