public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
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


  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox