Add support for Prof Revolution DVB-S2 8000 PCI-E card

Message ID 1343326123-11882-1-git-send-email-manio@skyboo.net (mailing list archive)
State Superseded, archived
Headers

Commit Message

Mariusz Bialonczyk July 26, 2012, 6:08 p.m. UTC
  The device is based on STV0903 demodulator, STB6100 tuner
and CX23885 chipset; subsystem id: 8000:3034

Signed-off-by: Mariusz Bialonczyk <manio@skyboo.net>
---
 drivers/media/video/cx23885/Kconfig         |    1 +
 drivers/media/video/cx23885/cx23885-cards.c |   10 +++++
 drivers/media/video/cx23885/cx23885-dvb.c   |   56 +++++++++++++++++++++++++++
 drivers/media/video/cx23885/cx23885.h       |    1 +
 4 files changed, 68 insertions(+)
  

Comments

Mauro Carvalho Chehab July 31, 2012, 3:08 a.m. UTC | #1
Em 26-07-2012 15:08, Mariusz Bialonczyk escreveu:
> The device is based on STV0903 demodulator, STB6100 tuner
> and CX23885 chipset; subsystem id: 8000:3034
> 
> Signed-off-by: Mariusz Bialonczyk <manio@skyboo.net>

This is the second time I see this patch. It seems very similar to the
one sent by Wojciech. So, who is the author of this patch?


> ---
>   drivers/media/video/cx23885/Kconfig         |    1 +
>   drivers/media/video/cx23885/cx23885-cards.c |   10 +++++
>   drivers/media/video/cx23885/cx23885-dvb.c   |   56 +++++++++++++++++++++++++++
>   drivers/media/video/cx23885/cx23885.h       |    1 +
>   4 files changed, 68 insertions(+)
> 
> diff --git a/drivers/media/video/cx23885/Kconfig b/drivers/media/video/cx23885/Kconfig
> index b391e9b..510adfe 100644
> --- a/drivers/media/video/cx23885/Kconfig
> +++ b/drivers/media/video/cx23885/Kconfig
> @@ -21,6 +21,7 @@ config VIDEO_CX23885
>   	select DVB_STV6110 if !DVB_FE_CUSTOMISE
>   	select DVB_CX24116 if !DVB_FE_CUSTOMISE
>   	select DVB_STV0900 if !DVB_FE_CUSTOMISE
> +	select DVB_STV090x if !DVB_FE_CUSTOMISE
>   	select DVB_DS3000 if !DVB_FE_CUSTOMISE
>   	select DVB_STV0367 if !DVB_FE_CUSTOMISE
>   	select MEDIA_TUNER_MT2131 if !MEDIA_TUNER_CUSTOMISE

You've included 3 files at -dvb:

	+#include "stv090x.h"
	+#include "stb6100.h"
	+#include "stb6100_cfg.h"

but you're selecting only STV090x. It seems you missed stb6100 here.


> diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
> index 080e111..50fedff 100644
> --- a/drivers/media/video/cx23885/cx23885-cards.c
> +++ b/drivers/media/video/cx23885/cx23885-cards.c
> @@ -564,6 +564,10 @@ struct cx23885_board cx23885_boards[] = {
>   	[CX23885_BOARD_TEVII_S471] = {
>   		.name		= "TeVii S471",
>   		.portb		= CX23885_MPEG_DVB,
> +	},
> +	[CX23885_BOARD_PROF_8000] = {
> +		.name		= "Prof Revolution DVB-S2 8000",
> +		.portb		= CX23885_MPEG_DVB,
>   	}
>   };
>   const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
> @@ -776,6 +780,10 @@ struct cx23885_subid cx23885_subids[] = {
>   		.subvendor = 0xd471,
>   		.subdevice = 0x9022,
>   		.card      = CX23885_BOARD_TEVII_S471,
> +	}, {
> +		.subvendor = 0x8000,
> +		.subdevice = 0x3034,
> +		.card      = CX23885_BOARD_PROF_8000,
>   	},
>   };
>   const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
> @@ -1155,6 +1163,7 @@ void cx23885_gpio_setup(struct cx23885_dev *dev)
>   		cx_set(GP0_IO, 0x00040004);
>   		break;
>   	case CX23885_BOARD_TBS_6920:
> +	case CX23885_BOARD_PROF_8000:
>   		cx_write(MC417_CTL, 0x00000036);
>   		cx_write(MC417_OEN, 0x00001000);
>   		cx_set(MC417_RWD, 0x00000002);
> @@ -1536,6 +1545,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
>   	case CX23885_BOARD_TEVII_S470:
>   	case CX23885_BOARD_TEVII_S471:
>   	case CX23885_BOARD_DVBWORLD_2005:
> +	case CX23885_BOARD_PROF_8000:
>   		ts1->gen_ctrl_val  = 0x5; /* Parallel */
>   		ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
>   		ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
> diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
> index cd54268..ba046ea 100644
> --- a/drivers/media/video/cx23885/cx23885-dvb.c
> +++ b/drivers/media/video/cx23885/cx23885-dvb.c
> @@ -63,6 +63,9 @@
>   #include "stv0367.h"
>   #include "drxk.h"
>   #include "mt2063.h"
> +#include "stv090x.h"
> +#include "stb6100.h"
> +#include "stb6100_cfg.h"
>   
>   static unsigned int debug;
>   
> @@ -489,6 +492,42 @@ static struct xc5000_config mygica_x8506_xc5000_config = {
>   	.if_khz = 5380,
>   };
>   
> +static struct stv090x_config prof_8000_stv090x_config = {
> +        .device                 = STV0903,
> +        .demod_mode             = STV090x_SINGLE,
> +        .clk_mode               = STV090x_CLK_EXT,
> +        .xtal                   = 27000000,
> +        .address                = 0x6A,
> +        .ts1_mode               = STV090x_TSMODE_PARALLEL_PUNCTURED,
> +        .repeater_level         = STV090x_RPTLEVEL_64,
> +        .adc1_range             = STV090x_ADC_2Vpp,
> +        .diseqc_envelope_mode   = false,
> +
> +        .tuner_get_frequency    = stb6100_get_frequency,
> +        .tuner_set_frequency    = stb6100_set_frequency,
> +        .tuner_set_bandwidth    = stb6100_set_bandwidth,
> +        .tuner_get_bandwidth    = stb6100_get_bandwidth,
> +};
> +
> +static struct stb6100_config prof_8000_stb6100_config = {
> +	.tuner_address = 0x60,
> +	.refclock = 27000000,
> +};
> +
> +static int p8000_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
> +{
> +	struct cx23885_tsport *port = fe->dvb->priv;
> +	struct cx23885_dev *dev = port->dev;
> +
> +	if (voltage == SEC_VOLTAGE_18)
> +		cx_write(MC417_RWD, 0x00001e00);
> +	else if (voltage == SEC_VOLTAGE_13)
> +		cx_write(MC417_RWD, 0x00001a00);
> +	else
> +		cx_write(MC417_RWD, 0x00001800);
> +	return 0;
> +}
> +
>   static int cx23885_dvb_set_frontend(struct dvb_frontend *fe)
>   {
>   	struct dtv_frontend_properties *p = &fe->dtv_property_cache;
> @@ -1186,6 +1225,23 @@ static int dvb_register(struct cx23885_tsport *port)
>   					&tevii_ds3000_config,
>   					&i2c_bus->i2c_adap);
>   		break;
> +	case CX23885_BOARD_PROF_8000:
> +		i2c_bus = &dev->i2c_bus[0];
> +
> +		fe0->dvb.frontend = dvb_attach(stv090x_attach,
> +						&prof_8000_stv090x_config,
> +						&i2c_bus->i2c_adap,
> +						STV090x_DEMODULATOR_0);
> +		if (fe0->dvb.frontend != NULL) {
> +			if (!dvb_attach(stb6100_attach,
> +					fe0->dvb.frontend,
> +					&prof_8000_stb6100_config,
> +					&i2c_bus->i2c_adap))
> +				goto frontend_detach;
> +
> +			fe0->dvb.frontend->ops.set_voltage = p8000_set_voltage;
> +		}
> +		break;
>   	default:
>   		printk(KERN_INFO "%s: The frontend of your DVB/ATSC card "
>   			" isn't supported yet\n",
> diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
> index 13c37ec..452ccec 100644
> --- a/drivers/media/video/cx23885/cx23885.h
> +++ b/drivers/media/video/cx23885/cx23885.h
> @@ -91,6 +91,7 @@
>   #define CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL 34
>   #define CX23885_BOARD_TEVII_S471               35
>   #define CX23885_BOARD_HAUPPAUGE_HVR1255_22111  36
> +#define CX23885_BOARD_PROF_8000                37
>   
>   #define GPIO_0 0x00000001
>   #define GPIO_1 0x00000002
> 

--
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
  
Mariusz Bialonczyk July 31, 2012, 8:32 a.m. UTC | #2
On 07/31/2012 05:08 AM, Mauro Carvalho Chehab wrote:
> Em 26-07-2012 15:08, Mariusz Bialonczyk escreveu:
>> The device is based on STV0903 demodulator, STB6100 tuner
>> and CX23885 chipset; subsystem id: 8000:3034
>>
>> Signed-off-by: Mariusz Bialonczyk <manio@skyboo.net>
> 
> This is the second time I see this patch. It seems very similar to the
> one sent by Wojciech. So, who is the author of this patch?
Hi!
Wojciech Myrda's patch was based on original producer patch from here:
http://www.proftuners.com/sites/default/files/prof8000_0.patch

From my diagnose (diff original and his patch) he rebased it to take
into account later kernel sources.

You ask him to post it again with Signed-off-by line, but he doesn't
respond for over a year (at least to linux media mailing list).

My patch uses stv090x frontend instead and I assumed that I can
ommit additional signed-off-by lines in this case.

If it is not ok, please tell me and I will prepare second patch
with additional Signed-off-by lines.

regards!
  
Mauro Carvalho Chehab July 31, 2012, 10:09 a.m. UTC | #3
Em 31-07-2012 05:32, Mariusz Bialonczyk escreveu:
> On 07/31/2012 05:08 AM, Mauro Carvalho Chehab wrote:
>> Em 26-07-2012 15:08, Mariusz Bialonczyk escreveu:
>>> The device is based on STV0903 demodulator, STB6100 tuner
>>> and CX23885 chipset; subsystem id: 8000:3034
>>>
>>> Signed-off-by: Mariusz Bialonczyk <manio@skyboo.net>
>>
>> This is the second time I see this patch. It seems very similar to the
>> one sent by Wojciech. So, who is the author of this patch?
> Hi!
> Wojciech Myrda's patch was based on original producer patch from here:
> http://www.proftuners.com/sites/default/files/prof8000_0.patch

Hmm... it seems that the original producer worked for the manufacturers
of this board, as the patch is posted there...

An ack from them to allow adding it at Kernel seems to be required.
> 
>  From my diagnose (diff original and his patch) he rebased it to take
> into account later kernel sources.
> 
> You ask him to post it again with Signed-off-by line, but he doesn't
> respond for over a year (at least to linux media mailing list).
> 
> My patch uses stv090x frontend instead and I assumed that I can
> ommit additional signed-off-by lines in this case.

Rebased patches should be mentioning their origin. In a matter of
fact, you need to add a "From:" field at the beginning of the body of
the email, with the original author there, even without his SOB (Signed-off-by).

It should be noticed that SOB means:

        Developer's Certificate of Origin 1.1

        By making a contribution to this project, I certify that:

        (a) The contribution was created in whole or in part by me and I
            have the right to submit it under the open source license
            indicated in the file; or

        (b) The contribution is based upon previous work that, to the best
            of my knowledge, is covered under an appropriate open source
            license and I have the right under that license to submit that
            work with modifications, whether created in whole or in part
            by me, under the same open source license (unless I am
            permitted to submit under a different license), as indicated
            in the file; or

        (c) The contribution was provided directly to me by some other
            person who certified (a), (b) or (c) and I have not modified
            it.

	(d) I understand and agree that this project and the contribution
	    are public and that a record of the contribution (including all
	    personal information I submit with it, including my sign-off) is
	    maintained indefinitely and may be redistributed consistent with
	    this project or the open source license(s) involved.

So, in the case of a patch made by someone else who didn't sign, the SOB means:

        (b) The contribution is based upon previous work that, to the best
            of my knowledge, is covered under an appropriate open source
            license and I have the right under that license to submit that
            work with modifications, whether created in whole or in part
            by me, under the same open source license (unless I am
            permitted to submit under a different license), as indicated
            in the file;

	(d) I understand and agree that this project and the contribution
	    are public and that a record of the contribution (including all
	    personal information I submit with it, including my sign-off) is
	    maintained indefinitely and may be redistributed consistent with
	    this project or the open source license(s) involved.


> 
> If it is not ok, please tell me and I will prepare second patch
> with additional Signed-off-by lines.
> 
> regards!
> 

Regards,
Mauro
--
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
  
Mariusz Bialonczyk Aug. 1, 2012, 7:57 p.m. UTC | #4
On 07/26/2012 08:08 PM, Mariusz Bialonczyk wrote:
> The device is based on STV0903 demodulator, STB6100 tuner
> and CX23885 chipset; subsystem id: 8000:3034
> 
> Signed-off-by: Mariusz Bialonczyk <manio@skyboo.net>
Igor, can I please get your ACK on this patch?
I was contacting proftuners for information who is the author of the prof8000 patch (on their website), but i haven't got a clear answer, they only point me your hg repo.

regards,
  

Patch

diff --git a/drivers/media/video/cx23885/Kconfig b/drivers/media/video/cx23885/Kconfig
index b391e9b..510adfe 100644
--- a/drivers/media/video/cx23885/Kconfig
+++ b/drivers/media/video/cx23885/Kconfig
@@ -21,6 +21,7 @@  config VIDEO_CX23885
 	select DVB_STV6110 if !DVB_FE_CUSTOMISE
 	select DVB_CX24116 if !DVB_FE_CUSTOMISE
 	select DVB_STV0900 if !DVB_FE_CUSTOMISE
+	select DVB_STV090x if !DVB_FE_CUSTOMISE
 	select DVB_DS3000 if !DVB_FE_CUSTOMISE
 	select DVB_STV0367 if !DVB_FE_CUSTOMISE
 	select MEDIA_TUNER_MT2131 if !MEDIA_TUNER_CUSTOMISE
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
index 080e111..50fedff 100644
--- a/drivers/media/video/cx23885/cx23885-cards.c
+++ b/drivers/media/video/cx23885/cx23885-cards.c
@@ -564,6 +564,10 @@  struct cx23885_board cx23885_boards[] = {
 	[CX23885_BOARD_TEVII_S471] = {
 		.name		= "TeVii S471",
 		.portb		= CX23885_MPEG_DVB,
+	},
+	[CX23885_BOARD_PROF_8000] = {
+		.name		= "Prof Revolution DVB-S2 8000",
+		.portb		= CX23885_MPEG_DVB,
 	}
 };
 const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
@@ -776,6 +780,10 @@  struct cx23885_subid cx23885_subids[] = {
 		.subvendor = 0xd471,
 		.subdevice = 0x9022,
 		.card      = CX23885_BOARD_TEVII_S471,
+	}, {
+		.subvendor = 0x8000,
+		.subdevice = 0x3034,
+		.card      = CX23885_BOARD_PROF_8000,
 	},
 };
 const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -1155,6 +1163,7 @@  void cx23885_gpio_setup(struct cx23885_dev *dev)
 		cx_set(GP0_IO, 0x00040004);
 		break;
 	case CX23885_BOARD_TBS_6920:
+	case CX23885_BOARD_PROF_8000:
 		cx_write(MC417_CTL, 0x00000036);
 		cx_write(MC417_OEN, 0x00001000);
 		cx_set(MC417_RWD, 0x00000002);
@@ -1536,6 +1545,7 @@  void cx23885_card_setup(struct cx23885_dev *dev)
 	case CX23885_BOARD_TEVII_S470:
 	case CX23885_BOARD_TEVII_S471:
 	case CX23885_BOARD_DVBWORLD_2005:
+	case CX23885_BOARD_PROF_8000:
 		ts1->gen_ctrl_val  = 0x5; /* Parallel */
 		ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
 		ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
index cd54268..ba046ea 100644
--- a/drivers/media/video/cx23885/cx23885-dvb.c
+++ b/drivers/media/video/cx23885/cx23885-dvb.c
@@ -63,6 +63,9 @@ 
 #include "stv0367.h"
 #include "drxk.h"
 #include "mt2063.h"
+#include "stv090x.h"
+#include "stb6100.h"
+#include "stb6100_cfg.h"
 
 static unsigned int debug;
 
@@ -489,6 +492,42 @@  static struct xc5000_config mygica_x8506_xc5000_config = {
 	.if_khz = 5380,
 };
 
+static struct stv090x_config prof_8000_stv090x_config = {
+        .device                 = STV0903,
+        .demod_mode             = STV090x_SINGLE,
+        .clk_mode               = STV090x_CLK_EXT,
+        .xtal                   = 27000000,
+        .address                = 0x6A,
+        .ts1_mode               = STV090x_TSMODE_PARALLEL_PUNCTURED,
+        .repeater_level         = STV090x_RPTLEVEL_64,
+        .adc1_range             = STV090x_ADC_2Vpp,
+        .diseqc_envelope_mode   = false,
+
+        .tuner_get_frequency    = stb6100_get_frequency,
+        .tuner_set_frequency    = stb6100_set_frequency,
+        .tuner_set_bandwidth    = stb6100_set_bandwidth,
+        .tuner_get_bandwidth    = stb6100_get_bandwidth,
+};
+
+static struct stb6100_config prof_8000_stb6100_config = {
+	.tuner_address = 0x60,
+	.refclock = 27000000,
+};
+
+static int p8000_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
+{
+	struct cx23885_tsport *port = fe->dvb->priv;
+	struct cx23885_dev *dev = port->dev;
+
+	if (voltage == SEC_VOLTAGE_18)
+		cx_write(MC417_RWD, 0x00001e00);
+	else if (voltage == SEC_VOLTAGE_13)
+		cx_write(MC417_RWD, 0x00001a00);
+	else
+		cx_write(MC417_RWD, 0x00001800);
+	return 0;
+}
+
 static int cx23885_dvb_set_frontend(struct dvb_frontend *fe)
 {
 	struct dtv_frontend_properties *p = &fe->dtv_property_cache;
@@ -1186,6 +1225,23 @@  static int dvb_register(struct cx23885_tsport *port)
 					&tevii_ds3000_config,
 					&i2c_bus->i2c_adap);
 		break;
+	case CX23885_BOARD_PROF_8000:
+		i2c_bus = &dev->i2c_bus[0];
+
+		fe0->dvb.frontend = dvb_attach(stv090x_attach,
+						&prof_8000_stv090x_config,
+						&i2c_bus->i2c_adap,
+						STV090x_DEMODULATOR_0);
+		if (fe0->dvb.frontend != NULL) {
+			if (!dvb_attach(stb6100_attach,
+					fe0->dvb.frontend,
+					&prof_8000_stb6100_config,
+					&i2c_bus->i2c_adap))
+				goto frontend_detach;
+
+			fe0->dvb.frontend->ops.set_voltage = p8000_set_voltage;
+		}
+		break;
 	default:
 		printk(KERN_INFO "%s: The frontend of your DVB/ATSC card "
 			" isn't supported yet\n",
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
index 13c37ec..452ccec 100644
--- a/drivers/media/video/cx23885/cx23885.h
+++ b/drivers/media/video/cx23885/cx23885.h
@@ -91,6 +91,7 @@ 
 #define CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL 34
 #define CX23885_BOARD_TEVII_S471               35
 #define CX23885_BOARD_HAUPPAUGE_HVR1255_22111  36
+#define CX23885_BOARD_PROF_8000                37
 
 #define GPIO_0 0x00000001
 #define GPIO_1 0x00000002