All of lore.kernel.org
 help / color / mirror / Atom feed
From: The Bit Pit <thebitpit@earthlink.net>
To: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: [PATCH]  KWorld UB435Q V3 (ATSC) tuner
Date: Tue, 11 Nov 2014 16:41:29 -0600	[thread overview]
Message-ID: <54629099.5060607@earthlink.net> (raw)
In-Reply-To: <20141111155627.63713572@recife.lan>

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
>


      reply	other threads:[~2014-11-11 22:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54629099.5060607@earthlink.net \
    --to=thebitpit@earthlink.net \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@osg.samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.