* [PATCH] KWorld UB435Q V3 (ATSC) tuner @ 2014-11-07 20:04 The Bit Pit 2014-11-11 17:56 ` Mauro Carvalho Chehab 0 siblings, 1 reply; 3+ messages in thread From: The Bit Pit @ 2014-11-07 20:04 UTC (permalink / raw) To: Linux Media Mailing List >From Wilson Michaels <thebitpit@earthlink.net> This patch fixes the KWorld UB435-Q V3 (ATSC) tuner functions: 1) The LED indicator now works. 2) Start up initialization is faster. 3) Add "lgdt330x" device name i2c_devs array used for debugging 4) Correct comments about the UB435-Q V3 Signed-off-by: Wilson Michaels <thebitpit@earthlink.net> # # On branch media_tree/master # Your branch is up-to-date with 'r_media_tree/master'. # # Changes to be committed: # modified: drivers/media/usb/em28xx/em28xx-cards.c # modified: drivers/media/usb/em28xx/em28xx-i2c.c # diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c index 3c97bf1..96835de 100644 --- a/drivers/media/usb/em28xx/em28xx-cards.c +++ b/drivers/media/usb/em28xx/em28xx-cards.c @@ -189,11 +189,19 @@ static struct em28xx_reg_seq kworld_a340_digital[] = { { -1, -1, -1, -1}, }; +/* + * KWorld UB435-Q V3 (ATSC) GPIOs map: + * EM_GPIO_0 - i2c disable/enable (1 = off, 0 = on) + * EM_GPIO_1 - LED disable/enable (1 = off, 0 = on) + * EM_GPIO_2 - currently unknown + * EM_GPIO_3 - currently unknown + * EM_GPIO_4 - currently unknown + * EM_GPIO_5 - TDA18272/M tuner (1 = active, 0 = in reset) + * EM_GPIO_6 - LGDT3304 ATSC/QAM demod (1 = active, 0 = in reset) + * EM_GPIO_7 - currently unknown + */ static struct em28xx_reg_seq kworld_ub435q_v3_digital[] = { - {EM2874_R80_GPIO_P0_CTRL, 0xff, 0xff, 100}, - {EM2874_R80_GPIO_P0_CTRL, 0xfe, 0xff, 100}, - {EM2874_R80_GPIO_P0_CTRL, 0xbe, 0xff, 100}, - {EM2874_R80_GPIO_P0_CTRL, 0xfe, 0xff, 100}, + {EM2874_R80_GPIO_P0_CTRL, 0x6e, ~EM_GPIO_4, 10}, { -1, -1, -1, -1}, }; @@ -532,7 +540,7 @@ static struct em28xx_led kworld_ub435q_v3_leds[] = { { .role = EM28XX_LED_DIGITAL_CAPTURING, .gpio_reg = EM2874_R80_GPIO_P0_CTRL, - .gpio_mask = 0x80, + .gpio_mask = 0x02, .inverted = 1, }, {-1, 0, 0, 0}, @@ -2182,7 +2190,7 @@ struct em28xx_board em28xx_boards[] = { }, /* * 1b80:e34c KWorld USB ATSC TV Stick UB435-Q V3 - * Empia EM2874B + LG DT3305 + NXP TDA18271HDC2 + * Empia EM2874B + LG DT3305 + NXP TDA18272/M */ [EM2874_BOARD_KWORLD_UB435Q_V3] = { .name = "KWorld USB ATSC TV Stick UB435-Q V3", diff --git a/drivers/media/usb/em28xx/em28xx-i2c.c b/drivers/media/usb/em28xx/em28xx-i2c.c index 1048c1a..5bc6ef1 100644 --- a/drivers/media/usb/em28xx/em28xx-i2c.c +++ b/drivers/media/usb/em28xx/em28xx-i2c.c @@ -877,6 +877,7 @@ static struct i2c_client em28xx_client_template = { * incomplete list of known devices */ static char *i2c_devs[128] = { + [0x1c >> 1] = "lgdt330x", [0x3e >> 1] = "remote IR sensor", [0x4a >> 1] = "saa7113h", [0x52 >> 1] = "drxk", ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] KWorld UB435Q V3 (ATSC) tuner 2014-11-07 20:04 [PATCH] KWorld UB435Q V3 (ATSC) tuner The Bit Pit @ 2014-11-11 17:56 ` Mauro Carvalho Chehab 2014-11-11 22:41 ` The Bit Pit 0 siblings, 1 reply; 3+ messages in thread From: Mauro Carvalho Chehab @ 2014-11-11 17:56 UTC (permalink / raw) To: The Bit Pit; +Cc: Linux Media Mailing List Hi, Em Fri, 07 Nov 2014 14:04:56 -0600 The Bit Pit <thebitpit@earthlink.net> escreveu: > From Wilson Michaels <thebitpit@earthlink.net> > > This patch fixes the KWorld UB435-Q V3 (ATSC) tuner functions: > 1) The LED indicator now works. > 2) Start up initialization is faster. > 3) Add "lgdt330x" device name i2c_devs array used for debugging > 4) Correct comments about the UB435-Q V3 > > Signed-off-by: Wilson Michaels <thebitpit@earthlink.net> > > # > # On branch media_tree/master > # Your branch is up-to-date with 'r_media_tree/master'. > # > # Changes to be committed: > # modified: drivers/media/usb/em28xx/em28xx-cards.c > # modified: drivers/media/usb/em28xx/em28xx-i2c.c > # > diff --git a/drivers/media/usb/em28xx/em28xx-cards.c > b/drivers/media/usb/em28xx/em28xx-cards.c > index 3c97bf1..96835de 100644 > --- a/drivers/media/usb/em28xx/em28xx-cards.c > +++ b/drivers/media/usb/em28xx/em28xx-cards.c > @@ -189,11 +189,19 @@ static struct em28xx_reg_seq kworld_a340_digital[] = { > { -1, -1, -1, -1}, > }; > > +/* > + * KWorld UB435-Q V3 (ATSC) GPIOs map: > + * EM_GPIO_0 - i2c disable/enable (1 = off, 0 = on) > + * EM_GPIO_1 - LED disable/enable (1 = off, 0 = on) > + * EM_GPIO_2 - currently unknown > + * EM_GPIO_3 - currently unknown > + * EM_GPIO_4 - currently unknown > + * EM_GPIO_5 - TDA18272/M tuner (1 = active, 0 = in reset) > + * EM_GPIO_6 - LGDT3304 ATSC/QAM demod (1 = active, 0 = in reset) > + * EM_GPIO_7 - currently unknown > + */ This is wrong. At least here on my Kworld UB435-Q v3, I'm pretty sure that the LED is controlled by EM_GPIO_7. This is something easy to test with: # v4l2-dbg -s 0x80 0x80 Register 0x00000080 set to 0x80 # v4l2-dbg -s 0x80 0x00 Register 0x00000080 set to 0x0 And the patch below to force the creation of a video device, allowing the usage of the VIDIOC_DBG_S_REGISTER ioctl at the /dev/video0 interface: diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c index 0db880c..120c689 100644 --- a/drivers/media/usb/em28xx/em28xx-cards.c +++ b/drivers/media/usb/em28xx/em28xx-cards.c @@ -3342,6 +3342,8 @@ static int em28xx_usb_probe(struct usb_interface *interface, } } +/* HACK! */ +has_video=1; if (!(has_vendor_audio || has_video || has_dvb)) { retval = -ENODEV; goto err_free; > static struct em28xx_reg_seq kworld_ub435q_v3_digital[] = { > - {EM2874_R80_GPIO_P0_CTRL, 0xff, 0xff, 100}, > - {EM2874_R80_GPIO_P0_CTRL, 0xfe, 0xff, 100}, > - {EM2874_R80_GPIO_P0_CTRL, 0xbe, 0xff, 100}, > - {EM2874_R80_GPIO_P0_CTRL, 0xfe, 0xff, 100}, > + {EM2874_R80_GPIO_P0_CTRL, 0x6e, ~EM_GPIO_4, 10}, > { -1, -1, -1, -1}, > }; Also, the above sequence were obtained from the original driver, by sniffing its traffic. Perhaps you have a different model? > @@ -532,7 +540,7 @@ static struct em28xx_led kworld_ub435q_v3_leds[] = { > { > .role = EM28XX_LED_DIGITAL_CAPTURING, > .gpio_reg = EM2874_R80_GPIO_P0_CTRL, > - .gpio_mask = 0x80, > + .gpio_mask = 0x02, > .inverted = 1, > }, > {-1, 0, 0, 0}, The above is wrong, as 0x80 is where the led is, as shown above. > @@ -2182,7 +2190,7 @@ struct em28xx_board em28xx_boards[] = { > }, > /* > * 1b80:e34c KWorld USB ATSC TV Stick UB435-Q V3 > - * Empia EM2874B + LG DT3305 + NXP TDA18271HDC2 > + * Empia EM2874B + LG DT3305 + NXP TDA18272/M I think I didn't actually open the hardware, to check what's inside, but you're probably right: for sure it has a 18272 tuner. > */ > [EM2874_BOARD_KWORLD_UB435Q_V3] = { > .name = "KWorld USB ATSC TV Stick UB435-Q V3", > diff --git a/drivers/media/usb/em28xx/em28xx-i2c.c > b/drivers/media/usb/em28xx/em28xx-i2c.c > index 1048c1a..5bc6ef1 100644 > --- a/drivers/media/usb/em28xx/em28xx-i2c.c > +++ b/drivers/media/usb/em28xx/em28xx-i2c.c > @@ -877,6 +877,7 @@ static struct i2c_client em28xx_client_template = { > * incomplete list of known devices > */ > static char *i2c_devs[128] = { > + [0x1c >> 1] = "lgdt330x", > [0x3e >> 1] = "remote IR sensor", > [0x4a >> 1] = "saa7113h", > [0x52 >> 1] = "drxk", You can send this on a separate patch. Regards, Mauro ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] KWorld UB435Q V3 (ATSC) tuner 2014-11-11 17:56 ` Mauro Carvalho Chehab @ 2014-11-11 22:41 ` The Bit Pit 0 siblings, 0 replies; 3+ messages in thread From: The Bit Pit @ 2014-11-11 22:41 UTC (permalink / raw) To: Mauro Carvalho Chehab; +Cc: Linux Media Mailing List I initially was unable to make my tuner work with the released driver because I was using a USB-2 slot on my ASUS Z87-EXPERT motherboard. It sometimes initialized on USB-2 according to information in dmesg. When I tried w_scan, it always immediately disconnected. Frustrated, I tried USB-3 -- and my patches worked perfectly including a functioning LED, Today, I retested the linux 3.16.7 release driver on USB-3 and it works. More comments below. On 11/11/2014 11:56 AM, Mauro Carvalho Chehab wrote: > Hi, > > Em Fri, 07 Nov 2014 14:04:56 -0600 > The Bit Pit <thebitpit@earthlink.net> escreveu: > >> From Wilson Michaels <thebitpit@earthlink.net> >> >> This patch fixes the KWorld UB435-Q V3 (ATSC) tuner functions: >> 1) The LED indicator now works. >> 2) Start up initialization is faster. >> 3) Add "lgdt330x" device name i2c_devs array used for debugging >> 4) Correct comments about the UB435-Q V3 >> >> Signed-off-by: Wilson Michaels <thebitpit@earthlink.net> >> >> # >> # On branch media_tree/master >> # Your branch is up-to-date with 'r_media_tree/master'. >> # >> # Changes to be committed: >> # modified: drivers/media/usb/em28xx/em28xx-cards.c >> # modified: drivers/media/usb/em28xx/em28xx-i2c.c >> # >> diff --git a/drivers/media/usb/em28xx/em28xx-cards.c >> b/drivers/media/usb/em28xx/em28xx-cards.c >> index 3c97bf1..96835de 100644 >> --- a/drivers/media/usb/em28xx/em28xx-cards.c >> +++ b/drivers/media/usb/em28xx/em28xx-cards.c >> @@ -189,11 +189,19 @@ static struct em28xx_reg_seq kworld_a340_digital[] = { >> { -1, -1, -1, -1}, >> }; >> >> +/* >> + * KWorld UB435-Q V3 (ATSC) GPIOs map: >> + * EM_GPIO_0 - i2c disable/enable (1 = off, 0 = on) >> + * EM_GPIO_1 - LED disable/enable (1 = off, 0 = on) >> + * EM_GPIO_2 - currently unknown >> + * EM_GPIO_3 - currently unknown >> + * EM_GPIO_4 - currently unknown >> + * EM_GPIO_5 - TDA18272/M tuner (1 = active, 0 = in reset) >> + * EM_GPIO_6 - LGDT3304 ATSC/QAM demod (1 = active, 0 = in reset) >> + * EM_GPIO_7 - currently unknown >> + */ > This is wrong. > > At least here on my Kworld UB435-Q v3, I'm pretty sure that > the LED is controlled by EM_GPIO_7. > > This is something easy to test with: > > # v4l2-dbg -s 0x80 0x80 > Register 0x00000080 set to 0x80 > # v4l2-dbg -s 0x80 0x00 > Register 0x00000080 set to 0x0 I was concerned that the test was also setting bits other than EM_GPIO_7 so I read the register first then set only the EM_GPIO_7 bit: # v4l2-dbg -g 0x80 ioctl: VIDIOC_DBG_G_REGISTER Register 0x00000080 = feh (254d 11111110b) # v4l2-dbg -s 0x80 0x7e Register 0x00000080 set to 0x7e # v4l2-dbg -s 0x80 0xfe Register 0x00000080 set to 0xfe This actually controls the LED. You are correct and I am wrong, My incorrect initialization was leaving the LED turned on. > > And the patch below to force the creation of a video device, allowing > the usage of the VIDIOC_DBG_S_REGISTER ioctl at the /dev/video0 interface: > > diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c > index 0db880c..120c689 100644 > --- a/drivers/media/usb/em28xx/em28xx-cards.c > +++ b/drivers/media/usb/em28xx/em28xx-cards.c > @@ -3342,6 +3342,8 @@ static int em28xx_usb_probe(struct usb_interface *interface, > } > } > > +/* HACK! */ > +has_video=1; > if (!(has_vendor_audio || has_video || has_dvb)) { > retval = -ENODEV; > goto err_free; Helpful hack ;-) > >> static struct em28xx_reg_seq kworld_ub435q_v3_digital[] = { >> - {EM2874_R80_GPIO_P0_CTRL, 0xff, 0xff, 100}, >> - {EM2874_R80_GPIO_P0_CTRL, 0xfe, 0xff, 100}, >> - {EM2874_R80_GPIO_P0_CTRL, 0xbe, 0xff, 100}, >> - {EM2874_R80_GPIO_P0_CTRL, 0xfe, 0xff, 100}, >> + {EM2874_R80_GPIO_P0_CTRL, 0x6e, ~EM_GPIO_4, 10}, >> { -1, -1, -1, -1}, >> }; > Also, the above sequence were obtained from the original driver, > by sniffing its traffic. > > Perhaps you have a different model? Same model, my error made it seem to work properly. > >> @@ -532,7 +540,7 @@ static struct em28xx_led kworld_ub435q_v3_leds[] = { >> { >> .role = EM28XX_LED_DIGITAL_CAPTURING, >> .gpio_reg = EM2874_R80_GPIO_P0_CTRL, >> - .gpio_mask = 0x80, >> + .gpio_mask = 0x02, >> .inverted = 1, >> }, >> {-1, 0, 0, 0}, > The above is wrong, as 0x80 is where the led is, as shown above. I agree. > >> @@ -2182,7 +2190,7 @@ struct em28xx_board em28xx_boards[] = { >> }, >> /* >> * 1b80:e34c KWorld USB ATSC TV Stick UB435-Q V3 >> - * Empia EM2874B + LG DT3305 + NXP TDA18271HDC2 >> + * Empia EM2874B + LG DT3305 + NXP TDA18272/M > I think I didn't actually open the hardware, to check what's > inside, but you're probably right: for sure it has a 18272 tuner. I did open up my hardware, the part is marked TDA18272/M. >> */ >> [EM2874_BOARD_KWORLD_UB435Q_V3] = { >> .name = "KWorld USB ATSC TV Stick UB435-Q V3", >> diff --git a/drivers/media/usb/em28xx/em28xx-i2c.c >> b/drivers/media/usb/em28xx/em28xx-i2c.c >> index 1048c1a..5bc6ef1 100644 >> --- a/drivers/media/usb/em28xx/em28xx-i2c.c >> +++ b/drivers/media/usb/em28xx/em28xx-i2c.c >> @@ -877,6 +877,7 @@ static struct i2c_client em28xx_client_template = { >> * incomplete list of known devices >> */ >> static char *i2c_devs[128] = { >> + [0x1c >> 1] = "lgdt330x", >> [0x3e >> 1] = "remote IR sensor", >> [0x4a >> 1] = "saa7113h", >> [0x52 >> 1] = "drxk", > You can send this on a separate patch. Yes, I will send it. > Regards, > Mauro > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-11-11 22:41 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-11-07 20:04 [PATCH] KWorld UB435Q V3 (ATSC) tuner The Bit Pit 2014-11-11 17:56 ` Mauro Carvalho Chehab 2014-11-11 22:41 ` The Bit Pit
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.