Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 494888 - =sys-kernel/gentoo-sources-3.12.5 nxt200x doesn't load firmware
Summary: =sys-kernel/gentoo-sources-3.12.5 nxt200x doesn't load firmware
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Core system (show other bugs)
Hardware: AMD64 Linux
: Normal normal
Assignee: Gentoo Kernel Bug Wranglers and Kernel Maintainers
URL: http://article.gmane.org/gmane.linux....
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-20 19:27 UTC by Richard Freeman
Modified: 2014-02-25 16:44 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
gentoo config file (used same for vanilla) (config.txt,96.85 KB, text/plain)
2013-12-20 19:28 UTC, Richard Freeman
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Richard Freeman gentoo-dev 2013-12-20 19:27:36 UTC
gentoo-sources 3.12.5 boots but does not load firmware for my ATI HD video capture card (CX23880/1/2/3-based).  dmesg gets flooded with these errors (issued repeatedly in a loop - judging by the timestamps the loop might actually start with the last line):
Dec 19 17:35:21 rich kernel: [  128.768232] nxt200x: Error writing multireg register 0x08
Dec 19 17:35:21 rich kernel: [  128.771271] nxt200x: Error writing multireg register 0x08
Dec 19 17:35:21 rich kernel: [  128.783125] nxt200x: Error writing multireg register 0x80
Dec 19 17:35:21 rich kernel: [  128.788617] nxt200x: Error writing multireg register 0x08
Dec 19 17:35:21 rich kernel: [  128.794113] nxt200x: Error writing multireg register 0x08
Dec 19 17:35:21 rich kernel: [  128.799608] nxt200x: Error writing multireg register 0x80
Dec 19 17:35:21 rich kernel: [  128.802640] nxt200x: Error writing multireg register 0x81
Dec 19 17:35:21 rich kernel: [  128.806025] nxt200x: Error writing multireg register 0x82
Dec 19 17:35:21 rich kernel: [  128.811516] nxt200x: Error writing multireg register 0x88
Dec 19 17:35:21 rich kernel: [  128.817014] nxt200x: Error writing multireg register 0x80
Dec 19 17:35:21 rich kernel: [  129.048443] nxt200x: Timeout waiting for nxt2004 to init.
Dec 19 17:35:22 rich kernel: [  129.770854] nxt200x: Timeout waiting for nxt200x to stop. This is ok after firmware upload.

The device nodes are created for the card, but it does not record video.

I built the v3.12.5 from kernel.org's git repo and with that the card appears to work fine, but dmesg contains some warnings:
Dec 20 10:52:04 rich kernel: [   31.747903] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747908] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747910] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747912] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747914] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747916] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747918] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747919] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747921] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747923] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747925] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747926] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747928] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747930] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747931] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747933] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747935] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747937] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747938] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747940] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747942] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747943] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747945] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747947] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747949] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747950] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747952] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747954] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747955] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747957] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747959] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747961] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747962] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747964] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747966] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747967] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747969] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=255 is too big!
Dec 20 10:52:04 rich kernel: [   31.747971] nxt200x: nxt200x_writebytes: i2c wr reg=002c: len=149 is too big!
Dec 20 10:52:04 rich kernel: [   31.750080] nxt200x: nxt2004_init: Firmware upload complete

My guess is that this is related to upstream commit:
19496d61f3962fd6470b106b779eddcdbe823c9b

I did not test reverting just this change.  I suspect that some gentoo patch is causing the problem to become fatal (though no OOPS/BUG/PANIC) - perhaps a race condition or something.  

Let me know if you need me to do anything further.  I figured I'd start here since something gentoo-specific is going on but happy to log upstream if you'd prefer not to do that.

3.10.17 works fine.

Reproducible: Always
Comment 1 Richard Freeman gentoo-dev 2013-12-20 19:28:49 UTC
Created attachment 365770 [details]
gentoo config file (used same for vanilla)
Comment 2 Richard Freeman gentoo-dev 2013-12-25 13:56:41 UTC
This behavior persists in 3.12.6 on the gentoo kernel.  I haven't yet gotten a chance to test the vanilla kernel.
Comment 3 Richard Freeman gentoo-dev 2014-01-12 20:57:16 UTC
Another data point.  Vanilla (from git) kernel 3.12.7 behaves just like 3.12.5 did on Gentoo - the device does not initialize at all and repeatedly generates the same series of errors as 3.12.5-gentoo did.

I didn't test 3.12.6 vanilla yet.
Comment 4 Mike Pagano gentoo-dev 2014-01-24 14:58:45 UTC
Looks like upstream solved this for you, Rich. I'll grab it when it hits Mauro's tree or linux-next.


diff --git a/drivers/media/dvb-frontends/nxt200x.c b/drivers/media/dvb-frontends/nxt200x.c
index fbca9856313a..4bf057544607 100644
--- a/drivers/media/dvb-frontends/nxt200x.c
+++ b/drivers/media/dvb-frontends/nxt200x.c
 <at>  <at>  -40,7 +40,7  <at>  <at> 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

 /* Max transfer size done by I2C transfer functions */
-#define MAX_XFER_SIZE  64
+#define MAX_XFER_SIZE  256

 #define NXT2002_DEFAULT_FIRMWARE "dvb-fe-nxt2002.fw"
 #define NXT2004_DEFAULT_FIRMWARE "dvb-fe-nxt2004.fw"

--
Comment 5 Richard Freeman gentoo-dev 2014-01-24 15:17:19 UTC
(In reply to Mike Pagano from comment #4)
> Looks like upstream solved this for you, Rich. I'll grab it when it hits
> Mauro's tree or linux-next.

Sounds great.  I did reply to Mauro that the patch worked.  Obviously I'm already applying it myself in any case...
Comment 6 Mike Pagano gentoo-dev 2014-02-25 16:44:05 UTC
This is in >= 3.10.30, 3.12.11 and 3.13.3