From: Antti Palosaari <crope@iki.fi>
To: Alessandro Radicati <alessandro@radicati.net>,
Jose Alberto Reguero <jareguero@telefonica.net>
Cc: linux-media@vger.kernel.org
Subject: Re: AVerMedia HD Volar (A867) AF9035 + MXL5007T driver issues
Date: Sat, 9 Apr 2016 03:50:44 +0300 [thread overview]
Message-ID: <570851E4.30801@iki.fi> (raw)
In-Reply-To: <CAO8Cc0qC79u_BBV3xaat3Cy6E2XB+GtJfJSf3aCJX==Q++BaXg@mail.gmail.com>
uh, how it could be so hard?
I just made few tests and found 3 ways to read it. OK, one is that
Alessandro already pointed out and I don't feel it correct. But those 2
are one for look. CMD_I2C_WR / CMD_I2C_RD with 1st priority, then
CMD_GENERIC_I2C_WR / CMD_GENERIC_I2C_RD....
{
u8 buf[MAX_XFER_SIZE];
struct usb_req req = {0, 0, 0, buf, 0, buf};
#if 0
req.cmd = CMD_GENERIC_I2C_WR;
req.wlen = 3 + 2;
req.rlen = 0;
buf[0] = 2; // write len
buf[1] = 0x02; /* I2C bus */ // NOK 3, 1, 0
buf[2] = 0x60 << 1; // I2C addr
buf[3] = 0xfb; /* reg addr MSB */
buf[4] = 0xd9; /* reg addr LSB */
ret = af9035_ctrl_msg(d, &req);
dev_dbg(&d->udev->dev, "1mxl5007t %02x\n", 0);
req.cmd = CMD_GENERIC_I2C_RD;
req.wlen = 3;
req.rlen = 1;
buf[0] = 1; // read len
buf[1] = 0x02; /* I2C bus */ // NOK 3, 1, 0
buf[2] = 0x60 << 1; // I2C addr
ret = af9035_ctrl_msg(d, &req);
dev_dbg(&d->udev->dev, "1mxl5007t %02x\n", buf[0]);
#endif
#if 0
req.cmd = CMD_I2C_RD;
req.wlen = 5;
req.rlen = 1;
buf[0] = 1; // read len
buf[1] = 0x60 << 1; // I2C addr
buf[2] = 2; /* reg addr len */
buf[3] = 0xfb; /* reg addr MSB */
buf[4] = 0xd9; /* reg addr LSB */
ret = af9035_ctrl_msg(d, &req);
dev_dbg(&d->udev->dev, "4mxl5007t %02x\n", buf[0]);
#endif
#if 1
req.cmd = CMD_I2C_WR;
req.wlen = 7;
req.rlen = 0;
buf[0] = 2; // write len msg[0].len;
buf[1] = 0x60 << 1; // I2C addr
buf[2] = 0x00; /* reg addr len */
buf[3] = 0x00; /* reg addr MSB */
buf[4] = 0x00; /* reg addr LSB */
buf[5] = 0xfb;
buf[6] = 0xd9;
ret = af9035_ctrl_msg(d, &req);
dev_dbg(&d->udev->dev, "9mxl5007t %02x\n", buf[0]);
req.cmd = CMD_I2C_RD;
req.wlen = 5;
req.rlen = 1;
buf[0] = 1; // read len
buf[1] = 0x60 << 1; // I2C addr
buf[2] = 0x00; /* reg addr len */
buf[3] = 0x00; /* reg addr MSB */
buf[4] = 0x00; /* reg addr LSB */
ret = af9035_ctrl_msg(d, &req);
dev_dbg(&d->udev->dev, "9mxl5007t %02x\n", buf[0]);
#endif
}
On 04/09/2016 02:59 AM, Alessandro Radicati wrote:
> Jose, Antti,
> The no_probe option or similar is the only fix I could find (in fact i
> was going to propose a similar patch to what you have). I've tried
> all combinations of firmware and also tried issuing the read command
> to the tuner in different states (e.g. sleep, just after soft/hard
> reset) to no avail. I've modified AverMedia's linux driver to probe
> as well, and the same thing happens. I found the following behavior
> in further testing:
>
> - I can arbitrarily read as many bytes as I want from any valid
> register and the tuner will continue responding until the af9035
> issues the expected NAK to signal the end of the read so that the
> mxl5007t can release the bus. The bus doesn't get released and it
> stays stuck either high or low indefinitely so subsequent I2C commands
> fail.
> - Hard reset of the tuner by cycling af9035 GPIOH12 seems like the
> only way to recover. So mxl5007t is probably at fault. Perhaps I2C
> speed is too fast (SCL cycles at ~100KHz)? Faulty hardware design of
> the usb stick?
> - Doesn't seem like the OEM drivers ever issue I2C read commands.
> Maybe it's a known issue to them.
>
> I'm pretty much out of ideas to test. Suggestions are welcome.
> Otherwise I'll try to push through a patch for just "no_probe".
>
> Thanks,
> Alessandro
>
> On Sat, Apr 9, 2016 at 1:13 AM, Jose Alberto Reguero
> <jareguero@telefonica.net> wrote:
>> I made a patch long time ago, but it was not accepted.
>>
>> https://patchwork.linuxtv.org/patch/16242/
>>
>> Jose Alberto
>>
>> El 06/04/2016 01:00, Alessandro Radicati <alessandro@radicati.net> escribió:
>>>
>>> On Wed, Apr 6, 2016 at 12:33 AM, Antti Palosaari <crope@iki.fi> wrote:
>>>> I found one stick having AF9035 + MXL5007T. It is HP branded A867, so it
>>>> should be similar. It seems to work all three 12.13.15.0 6.20.15.0
>>>> firmwares:
>>>> http://palosaari.fi/linux/v4l-dvb/firmware/af9035/
>>>>
>>>> mxl5007t 5-0060: creating new instance
>>>> mxl5007t_get_chip_id: unknown rev (3f)
>>>> mxl5007t_get_chip_id: MxL5007T detected @ 5-0060
>>>>
>>>> That is what AF9035 reports (with debug) as a chip version:
>>>> dvb_usb_af9035: prechip_version=00 chip_version=03 chip_type=3802
>>>>
>>>>
>>>> Do you have different chip version?
>>>>
>>>
>>> I have a Sky Italy DVB stick with the same chip version. I see that
>>> you get the 0x3f response as well... that should be fixed by the I2C
>>> patch I proposed. However, your stick seems to handle the read
>>> properly and process subsequent I2C commands - something that doesn't
>>> happen with mine. The vendor drivers in linux and windows never seem
>>> issue the USB I2C commands to read from the tuner. I'll test with
>>> other firmware versions to see if something changes.
>>>
>>> Regards,
>>> Alessandro
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
http://palosaari.fi/
next prev parent reply other threads:[~2016-04-09 0:50 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <57083b12.ec3ec20a.eed91.1ea1SMTPIN_ADDED_BROKEN@mx.google.com>
2016-04-08 23:59 ` AVerMedia HD Volar (A867) AF9035 + MXL5007T driver issues Alessandro Radicati
2016-04-09 0:50 ` Antti Palosaari [this message]
2016-04-09 1:22 ` Antti Palosaari
2016-04-09 1:52 ` Alessandro Radicati
2016-04-09 2:17 ` Antti Palosaari
2016-04-09 8:13 ` Alessandro Radicati
2016-04-09 14:25 ` Antti Palosaari
2016-04-09 16:11 ` Alessandro Radicati
2016-04-09 17:07 ` Antti Palosaari
2016-04-09 17:38 ` Alessandro Radicati
2016-04-09 1:29 ` Alessandro Radicati
2016-04-10 21:30 Jose Alberto Reguero
-- strict thread matches above, loose matches on Subject: below --
2016-04-08 23:13 Jose Alberto Reguero
2016-04-02 10:44 Alessandro Radicati
2016-04-05 18:15 ` Antti Palosaari
2016-04-05 19:34 ` Alessandro Radicati
2016-04-05 22:33 ` Antti Palosaari
2016-04-05 23:00 ` Alessandro Radicati
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=570851E4.30801@iki.fi \
--to=crope@iki.fi \
--cc=alessandro@radicati.net \
--cc=jareguero@telefonica.net \
--cc=linux-media@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox