From: Gianluca Gennari <gennarone@gmail.com>
To: Hans-Frieder Vogt <hfvogt@gmx.net>, linux-media@vger.kernel.org
Subject: Re: [PATCH 0/3] Support for AF9035/AF9033
Date: Thu, 23 Feb 2012 17:40:15 +0100 [thread overview]
Message-ID: <4F466BEF.9050204@gmail.com> (raw)
In-Reply-To: <201202222320.56583.hfvogt@gmx.net>
[-- Attachment #1: Type: text/plain, Size: 3764 bytes --]
Il 22/02/2012 23:20, Hans-Frieder Vogt ha scritto:
> I have written a driver for the AF9035 & AF9033 (called af903x), based on the
> various drivers and information floating around for these chips.
> Currently, my driver only supports the devices that I am able to test. These
> are
> - Terratec T5 Ver.2 (also known as T6)
> - Avermedia Volar HD Nano (A867)
>
> The driver supports:
> - diversity and dual tuner (when the first frontend is used, it is in diversity
> mode, when two frontends are used in dual tuner mode)
> - multiple devices
> - pid filtering
> - remote control in NEC and RC-6 mode (currently not switchable, but depending
> on device)
> - support for kernel 3.1, 3.2 and 3.3 series
>
> I have not tried to split the driver in a DVB-T receiver (af9035) and a
> frontend (af9033), because I do not see the sense in doing that for a
> demodulator, that seems to be always used in combination with the very same
> receiver.
>
> The patch is split in three parts:
> Patch 1: support for tuner fitipower FC0012
> Patch 2: basic driver
> Patch 3: firmware
>
> Hans-Frieder Vogt e-mail: hfvogt <at> gmx .dot. net
Hi Hans,
thank you for the new af903x driver.
A few comments:
1) I think you should set up a git repository with your driver and then
send a PULL request to the list; as it is, the first patch is affected
by line-wrapping problems so it must be manually edited to be
applicable, and the second patch is compressed so it will be ignored by
patchwork.
2) There are a couple of small errors in the patches (see my attached
patches): in the dvb-usb Makefile, DVB_USB_AF903X must be replaced by
CONFIG_DVB_USB_AF903X otherwise the driver will not compile; also, in
the dvb_frontend_ops struct, the field info.type should be removed for
kernels >= 3.3.0.
3) The USB VID/PID IDs should be moved into dvb-usb-ids.h (see patch 3);
I also added a few IDs from the Avermedia A867 driver*. As your driver
supports both AF9007 and mxl5007t tuners I think this is safe.
*http://www.avermedia.com/Support/DownloadCount.aspx?FDFId=4591
4) the driver also looks for a firmware file called "af35irtbl.bin" that
comes from the "official" ITEtech driver (if it's not present the driver
works anyway, but it prints an error message);
I tested the driver with an Avermedia A867 stick (it's an OEM stick also
known as the Sky Italia Digital Key with blue led: 07ca:a867) on a
Ubuntu 10.04 system with kernel 2.6.32-38-generic-pae and the latest
media_build tree installed.
The good news:
the driver loads properly, and, using Kaffeine, I could watch several
channels with a small portable antenna; I could also perform a full
frequency scan, finding several UHF and VHF stations. Signal strength
and SNR reports works really well, and they seems to give a "realistic"
figure of the signal quality (with both the portable and the rooftop
antenna).
When the stick is unplugged from the USB port, the driver unloads properly.
The bad news:
the driver seems to "lock" the application when it tries to tune a weak
channel: in this cases, Kaffeine becomes unresponsive and sometimes it
gives a stream error; for the same reason, the full scan fails to find
all stations and takes a long time to complete.
Also, when I tried to extract the stick from the USB port during one of
this "freezing" periods, the system crashed :-(
I reproduced this bug 3 times, and the last time I was able to see a
kernel dump for a moment: the function that crashed the kernel was
"af903x_streaming_ctrl".
Neither of those issues are present with the Avermedia A867 original
driver or Antti Palosaari's af9035 driver modified to support the A867
stick.
I hope this feedback will be useful to improve the driver.
Best regards,
Gianluca Gennari
[-- Attachment #2: 0001-af903x-fixed-Makefile.patch --]
[-- Type: text/x-patch, Size: 794 bytes --]
[PATCH 1/3] af903x: fixed Makefile
Signed-off-by: Gianluca Gennari <gennarone@gmail.com>
---
drivers/media/dvb/dvb-usb/Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/media/dvb/dvb-usb/Makefile b/drivers/media/dvb/dvb-usb/Makefile
index 75780e2..49c5425 100644
--- a/drivers/media/dvb/dvb-usb/Makefile
+++ b/drivers/media/dvb/dvb-usb/Makefile
@@ -76,7 +76,7 @@ dvb-usb-af9015-objs = af9015.o
obj-$(CONFIG_DVB_USB_AF9015) += dvb-usb-af9015.o
dvb-usb-af903x-objs = af903x-core.o af903x-devices.o af903x-fe.o af903x-tuners.o
-obj-$(DVB_USB_AF903X) += dvb-usb-af903x.o
+obj-$(CONFIG_DVB_USB_AF903X) += dvb-usb-af903x.o
dvb-usb-cinergyT2-objs = cinergyT2-core.o cinergyT2-fe.o
obj-$(CONFIG_DVB_USB_CINERGY_T2) += dvb-usb-cinergyT2.o
--
1.7.0.4
[-- Attachment #3: 0002-af903x-removed-frontend-info.type-for-kernel-3.3.0.patch --]
[-- Type: text/x-patch, Size: 766 bytes --]
[PATCH 2/3] af903x: removed frontend info.type for kernels >= 3.3.0
Signed-off-by: Gianluca Gennari <gennarone@gmail.com>
---
drivers/media/dvb/dvb-usb/af903x-fe.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/media/dvb/dvb-usb/af903x-fe.c b/drivers/media/dvb/dvb-usb/af903x-fe.c
index a782c96..8d58efb 100644
--- a/drivers/media/dvb/dvb-usb/af903x-fe.c
+++ b/drivers/media/dvb/dvb-usb/af903x-fe.c
@@ -2110,7 +2110,9 @@ static struct dvb_frontend_ops af903x_ops = {
#endif
.info = {
.name = "AF903X USB DVB-T",
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
.type = FE_OFDM,
+#endif
.frequency_min = AF903X_FE_FREQ_MIN,
.frequency_max = AF903X_FE_FREQ_MAX,
.frequency_stepsize = 62500,
--
1.7.0.4
[-- Attachment #4: 0003-af903x-add-new-USB-VID-PID-IDs.patch --]
[-- Type: text/x-patch, Size: 5912 bytes --]
[PATCH 3/3] af903x: add new USB VID/PID IDs and move definitions to dvb-usb-ids.h
Signed-off-by: Gianluca Gennari <gennarone@gmail.com>
---
drivers/media/dvb/dvb-usb/af903x-devices.c | 72 +++++++++++++++++++++++-----
drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 16 ++++++
2 files changed, 76 insertions(+), 12 deletions(-)
diff --git a/drivers/media/dvb/dvb-usb/af903x-devices.c b/drivers/media/dvb/dvb-usb/af903x-devices.c
index 21ece97..06e96f4 100644
--- a/drivers/media/dvb/dvb-usb/af903x-devices.c
+++ b/drivers/media/dvb/dvb-usb/af903x-devices.c
@@ -1216,18 +1216,50 @@ enum af903x_table_entry {
AFATECH_AF9035,
TERRATEC_T6, /* Terratec T6 */
TERRATEC_T5_REV2, /* Terratec T5 Rev.2 */
+ AVERMEDIA_TWINSTAR, /* Avermedia TwinStar */
AVERMEDIA_A867, /* Avermedia HD Volar / A867 */
+ AVERMEDIA_A333, /* Avermedia A333 */
+ AVERMEDIA_B867,
+ AVERMEDIA_1867,
+ AVERMEDIA_0337,
+ AVERMEDIA_0867,
+ AVERMEDIA_F337,
+ AVERMEDIA_3867,
};
struct usb_device_id af903x_usb_table[] = {
- [AFATECH_1000] = { USB_DEVICE(0x15A4,0x1000) },
- [AFATECH_1001] = { USB_DEVICE(0x15A4,0x1001) },
- [AFATECH_1002] = { USB_DEVICE(0x15A4,0x1002) },
- [AFATECH_1003] = { USB_DEVICE(0x15A4,0x1003) },
- [AFATECH_AF9035] = { USB_DEVICE(0x15A4,0x9035) },
- [TERRATEC_T6] = { USB_DEVICE(0x0ccd,0x10b3) },
- [TERRATEC_T5_REV2] = { USB_DEVICE(0x0ccd,0x10b7) },
- [AVERMEDIA_A867] = { USB_DEVICE(0x07ca,0x1867) },
+ [AFATECH_1000] = {USB_DEVICE(USB_VID_AFATECH,
+ USB_PID_AFATECH_AF9035_1000)},
+ [AFATECH_1001] = {USB_DEVICE(USB_VID_AFATECH,
+ USB_PID_AFATECH_AF9035_1001)},
+ [AFATECH_1002] = {USB_DEVICE(USB_VID_AFATECH,
+ USB_PID_AFATECH_AF9035_1002)},
+ [AFATECH_1003] = {USB_DEVICE(USB_VID_AFATECH,
+ USB_PID_AFATECH_AF9035_1003)},
+ [AFATECH_AF9035] = {USB_DEVICE(USB_VID_AFATECH,
+ USB_PID_AFATECH_AF9035_9035)},
+ [TERRATEC_T6] = {USB_DEVICE(USB_VID_TERRATEC,
+ USB_PID_TERRATEC_T6)},
+ [TERRATEC_T5_REV2] = {USB_DEVICE(USB_VID_TERRATEC,
+ USB_PID_TERRATEC_T5_REV2)},
+ [AVERMEDIA_TWINSTAR] = {USB_DEVICE(USB_VID_AVERMEDIA,
+ USB_PID_AVERMEDIA_A825)},
+ [AVERMEDIA_A333] = {USB_DEVICE(USB_VID_AVERMEDIA,
+ USB_PID_AVERMEDIA_A333)},
+ [AVERMEDIA_B867] = {USB_DEVICE(USB_VID_AVERMEDIA,
+ USB_PID_AVERMEDIA_B867)},
+ [AVERMEDIA_1867] = {USB_DEVICE(USB_VID_AVERMEDIA,
+ USB_PID_AVERMEDIA_1867)},
+ [AVERMEDIA_0337] = {USB_DEVICE(USB_VID_AVERMEDIA,
+ USB_PID_AVERMEDIA_0337)},
+ [AVERMEDIA_A867] = {USB_DEVICE(USB_VID_AVERMEDIA,
+ USB_PID_AVERMEDIA_A867)},
+ [AVERMEDIA_0867] = {USB_DEVICE(USB_VID_AVERMEDIA,
+ USB_PID_AVERMEDIA_0867)},
+ [AVERMEDIA_F337] = {USB_DEVICE(USB_VID_AVERMEDIA,
+ USB_PID_AVERMEDIA_F337)},
+ [AVERMEDIA_3867] = {USB_DEVICE(USB_VID_AVERMEDIA,
+ USB_PID_AVERMEDIA_3867)},
{ 0}, /* Terminating entry */
};
MODULE_DEVICE_TABLE(usb, af903x_usb_table);
@@ -1310,9 +1342,9 @@ struct dvb_usb_device_properties af903x_properties[] = {
.rc_codes = NULL, /* will be set in
af903x_identify_state */
},
- .num_device_descs =4,
+ .num_device_descs = 6,
.devices = {
- { "ITEtech USB2.0 DVB-T Recevier",
+ { "ITEtech AF903x USB2.0 DVB-T Receiver",
{ &af903x_usb_table[AFATECH_1000],
&af903x_usb_table[AFATECH_1001],
&af903x_usb_table[AFATECH_1002],
@@ -1329,8 +1361,24 @@ struct dvb_usb_device_properties af903x_properties[] = {
{ NULL },
},
{
- "AVerMedia A867 DVB-T Recevier",
- { &af903x_usb_table[AVERMEDIA_A867], NULL},
+ "Avermedia TwinStar",
+ { &af903x_usb_table[AVERMEDIA_TWINSTAR], NULL},
+ { NULL },
+ },
+ {
+ "AVerMedia A333 DVB-T Receiver",
+ { &af903x_usb_table[AVERMEDIA_A333],
+ &af903x_usb_table[AVERMEDIA_B867], NULL},
+ { NULL },
+ },
+ {
+ "AVerMedia A867 DVB-T Receiver",
+ { &af903x_usb_table[AVERMEDIA_1867],
+ &af903x_usb_table[AVERMEDIA_0337],
+ &af903x_usb_table[AVERMEDIA_A867],
+ &af903x_usb_table[AVERMEDIA_0867],
+ &af903x_usb_table[AVERMEDIA_F337],
+ &af903x_usb_table[AVERMEDIA_3867], NULL},
{ NULL },
},
{NULL},
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
index 9c3dae1..6ed83fd 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
@@ -75,6 +75,11 @@
#define USB_PID_AFATECH_AF9005 0x9020
#define USB_PID_AFATECH_AF9015_9015 0x9015
#define USB_PID_AFATECH_AF9015_9016 0x9016
+#define USB_PID_AFATECH_AF9035_1000 0x1000
+#define USB_PID_AFATECH_AF9035_1001 0x1001
+#define USB_PID_AFATECH_AF9035_1002 0x1002
+#define USB_PID_AFATECH_AF9035_1003 0x1003
+#define USB_PID_AFATECH_AF9035_9035 0x9035
#define USB_PID_TREKSTOR_DVBT 0x901b
#define USB_VID_ALINK_DTU 0xf170
#define USB_PID_ANSONIC_DVBT_USB 0x6000
@@ -218,6 +223,15 @@
#define USB_PID_AVERMEDIA_A850T 0x850b
#define USB_PID_AVERMEDIA_A805 0xa805
#define USB_PID_AVERMEDIA_A815M 0x815a
+#define USB_PID_AVERMEDIA_A825 0x0825
+#define USB_PID_AVERMEDIA_A333 0xa333
+#define USB_PID_AVERMEDIA_B867 0xb867
+#define USB_PID_AVERMEDIA_1867 0x1867
+#define USB_PID_AVERMEDIA_0337 0x0337
+#define USB_PID_AVERMEDIA_A867 0xa867
+#define USB_PID_AVERMEDIA_0867 0x0867
+#define USB_PID_AVERMEDIA_F337 0xf337
+#define USB_PID_AVERMEDIA_3867 0x3867
#define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006
#define USB_PID_TECHNOTREND_CONNECT_CT3650 0x300d
#define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY 0x005a
@@ -231,6 +245,8 @@
#define USB_PID_TERRATEC_H7_2 0x10a3
#define USB_PID_TERRATEC_T3 0x10a0
#define USB_PID_TERRATEC_T5 0x10a1
+#define USB_PID_TERRATEC_T5_REV2 0x10b7
+#define USB_PID_TERRATEC_T6 0x10b3
#define USB_PID_PINNACLE_EXPRESSCARD_320CX 0x022e
#define USB_PID_PINNACLE_PCTV2000E 0x022c
#define USB_PID_PINNACLE_PCTV_DVB_T_FLASH 0x0228
--
1.7.0.4
next prev parent reply other threads:[~2012-02-23 16:40 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-22 22:20 [PATCH 0/3] Support for AF9035/AF9033 Hans-Frieder Vogt
2012-02-23 9:19 ` Oliver Schinagl
2012-02-23 22:02 ` Hans-Frieder Vogt
2012-02-24 10:04 ` Oliver Schinagl
2012-02-24 10:22 ` Oliver Schinagl
2012-02-25 23:42 ` Hans-Frieder Vogt
2012-02-23 16:40 ` Gianluca Gennari [this message]
2012-02-23 22:12 ` Hans-Frieder Vogt
2012-02-24 15:44 ` Gianluca Gennari
2012-02-23 17:59 ` Antti Palosaari
2012-02-23 22:28 ` Hans-Frieder Vogt
2012-02-24 3:46 ` Antti Palosaari
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=4F466BEF.9050204@gmail.com \
--to=gennarone@gmail.com \
--cc=hfvogt@gmx.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 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.