Re: [PATCH 07/16] ngene: CXD2099AR Common Interface driver

2011-01-18 Thread Oliver Endriss
On Monday 17 January 2011 17:31:15 Mauro Carvalho Chehab wrote:
> Em 10-01-2011 15:20, Oliver Endriss escreveu:
> > On Monday 10 January 2011 15:05:34 Andreas Oberritter wrote:
> >> On 01/10/2011 10:36 AM, Oliver Endriss wrote:
> >>> From: Ralph Metzler 
> >>>
> >>> Driver for the Common Interface Controller CXD2099AR.
> >>> Supports the CI of the cineS2 DVB-S2.
> >>>
> >>> For now, data is passed through '/dev/dvb/adapterX/sec0':
> >>> - Encrypted data must be written to 'sec0'.
> >>> - Decrypted data can be read from 'sec0'.
> >>> - Setup the CAM using device 'ca0'.
> >>
> >> Nack. In DVB API terms, "sec" stands for satellite equipment control,
> >> and if I remember correctly, sec0 already existed in the first versions
> >> of the API and that's why its leftovers can be abused by this driver.
> >>
> >> The interfaces for writing data are dvr0 and demux0. If they don't fit
> >> for decryption of recorded data, then they should be extended.
> >>
> >> For decryption of live data, no new user interface needs to be created.
> > 
> > There was an attempt to find a solution for the problem in thread
> > http://www.mail-archive.com/linux-media@vger.kernel.org/msg22196.html
> > 
> > As that discussion did not come to a final solution, and the driver is
> > still experimental, I left the original patch 'as is'.
> 
> Drivers that don't use the proper API should be moved to staging. Just making
> them as experimental is not good enough. As this is the only issue with
> this patch series, I'll be applying them and moving cxd2099 driver to staging
> while we don't have a proper fix for it.

Ok.

> +struct dvb_ca_en50221 *cxd2099_attach(u8 adr, void *priv, struct i2c_adapter 
> *i2c)
> +{
> + printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
> + return NULL;
> +}
> +#endif

If staging drivers are disabled, compilation will fail with
"multiple definition of `cxd2099_attach'".

The helper function must be declared as 'static inline'.

Please apply this fix:

diff --git a/drivers/staging/cxd2099/cxd2099.h 
b/drivers/staging/cxd2099/cxd2099.h
index a313dc2..bed54ff 100644
--- a/drivers/staging/cxd2099/cxd2099.h
+++ b/drivers/staging/cxd2099/cxd2099.h
@@ -31,7 +31,7 @@
 (defined(CONFIG_DVB_CXD2099_MODULE) && defined(MODULE))
 struct dvb_ca_en50221 *cxd2099_attach(u8 adr, void *priv, struct i2c_adapter 
*i2c);
 #else
-struct dvb_ca_en50221 *cxd2099_attach(u8 adr, void *priv, struct i2c_adapter 
*i2c)
+static inline struct dvb_ca_en50221 *cxd2099_attach(u8 adr, void *priv, struct 
i2c_adapter *i2c)
 {
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
return NULL;


-- 

VDR Remote Plugin 0.4.0: http://www.escape-edv.de/endriss/vdr/
4 MByte Mod: http://www.escape-edv.de/endriss/dvb-mem-mod/
Full-TS Mod: http://www.escape-edv.de/endriss/dvb-full-ts-mod/

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 07/16] ngene: CXD2099AR Common Interface driver

2011-01-17 Thread Mauro Carvalho Chehab
Em 10-01-2011 15:20, Oliver Endriss escreveu:
> On Monday 10 January 2011 15:05:34 Andreas Oberritter wrote:
>> On 01/10/2011 10:36 AM, Oliver Endriss wrote:
>>> From: Ralph Metzler 
>>>
>>> Driver for the Common Interface Controller CXD2099AR.
>>> Supports the CI of the cineS2 DVB-S2.
>>>
>>> For now, data is passed through '/dev/dvb/adapterX/sec0':
>>> - Encrypted data must be written to 'sec0'.
>>> - Decrypted data can be read from 'sec0'.
>>> - Setup the CAM using device 'ca0'.
>>
>> Nack. In DVB API terms, "sec" stands for satellite equipment control,
>> and if I remember correctly, sec0 already existed in the first versions
>> of the API and that's why its leftovers can be abused by this driver.
>>
>> The interfaces for writing data are dvr0 and demux0. If they don't fit
>> for decryption of recorded data, then they should be extended.
>>
>> For decryption of live data, no new user interface needs to be created.
> 
> There was an attempt to find a solution for the problem in thread
> http://www.mail-archive.com/linux-media@vger.kernel.org/msg22196.html
> 
> As that discussion did not come to a final solution, and the driver is
> still experimental, I left the original patch 'as is'.

Drivers that don't use the proper API should be moved to staging. Just making
them as experimental is not good enough. As this is the only issue with
this patch series, I'll be applying them and moving cxd2099 driver to staging
while we don't have a proper fix for it.

Cheers,
Mauro.

PS.: The patch I'm appling to move it to staging is enclosed.

-

commit 96d7f7656af8a348134302d8c36760156ea6428e
Author: Mauro Carvalho Chehab 
Date:   Mon Jan 17 14:20:49 2011 -0200

[media] Move CI cxd2099 driver to staging

This driver is abusing the kernel<=>userspace API, due to the lack of a
proper solution for it. A discussion were done at:
http://www.mail-archive.com/linux-media@vger.kernel.org/msg22196.html
But there's not a solution for it yet. So, move the driver to staging, while
we don't have a final solution.

Signed-off-by: Mauro Carvalho Chehab 

diff --git a/drivers/media/dvb/ngene/Makefile b/drivers/media/dvb/ngene/Makefile
index 00d12d6..2bc9687 100644
--- a/drivers/media/dvb/ngene/Makefile
+++ b/drivers/media/dvb/ngene/Makefile
@@ -2,10 +2,13 @@
 # Makefile for the nGene device driver
 #
 
-ngene-objs := ngene-core.o ngene-i2c.o ngene-cards.o ngene-dvb.o cxd2099.o
+ngene-objs := ngene-core.o ngene-i2c.o ngene-cards.o ngene-dvb.o
 
 obj-$(CONFIG_DVB_NGENE) += ngene.o
 
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends/
 EXTRA_CFLAGS += -Idrivers/media/common/tuners/
+
+# For the staging CI driver cxd2099
+EXTRA_CFLAGS += -Idrivers/staging/cxd2099/
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index bdc632b..1fc1087 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -51,6 +51,8 @@ source "drivers/staging/cx25821/Kconfig"
 
 source "drivers/staging/tm6000/Kconfig"
 
+source "drivers/staging/cxd2099/Kconfig"
+
 source "drivers/staging/dabusb/Kconfig"
 
 source "drivers/staging/se401/Kconfig"
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 3eda5c7..2f638e5 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -8,6 +8,7 @@ obj-$(CONFIG_SLICOSS)   += slicoss/
 obj-$(CONFIG_VIDEO_GO7007) += go7007/
 obj-$(CONFIG_VIDEO_CX25821)+= cx25821/
 obj-$(CONFIG_VIDEO_TM6000) += tm6000/
+obj-$(CONFIG_DVB_CXD2099)  += cxd2099/
 obj-$(CONFIG_USB_DABUSB)+= dabusb/
 obj-$(CONFIG_USB_VICAM) += usbvideo/
 obj-$(CONFIG_USB_SE401) += se401/
diff --git a/drivers/staging/cxd2099/Kconfig b/drivers/staging/cxd2099/Kconfig
new file mode 100644
index 000..9d638c3
--- /dev/null
+++ b/drivers/staging/cxd2099/Kconfig
@@ -0,0 +1,11 @@
+config DVB_CXD2099
+tristate "CXD2099AR Common Interface driver"
+depends on DVB_CORE && PCI && I2C && DVB_NGENE
+---help---
+  Support for the CI module found on cineS2 DVB-S2, supported by
+ the Micronas PCIe device driver (ngene).
+
+ For now, data is passed through '/dev/dvb/adapterX/sec0':
+   - Encrypted data must be written to 'sec0'.
+   - Decrypted data can be read from 'sec0'.
+   - Setup the CAM using device 'ca0'.
diff --git a/drivers/staging/cxd2099/Makefile b/drivers/staging/cxd2099/Makefile
new file mode 100644
index 000..72b1455
--- /dev/null
+++ b/drivers/staging/cxd2099/Makefile
@@ -0,0 +1,5 @@
+obj-$(CONFIG_DVB_CXD2099) += cxd2099.o
+
+EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/
+EXTRA_CFLAGS += -Idrivers/media/dvb/frontends/
+EXTRA_CFLAGS += -Idrivers/media/common/tuners/
diff --git a/drivers/staging/cxd2099/TODO b/drivers/staging/cxd2099/TODO
new file mode 100644
index 000..375bb6f
--- /dev/null
+++ b/drivers/staging/cxd2099/TODO
@@ -0,0 +1,12 @@
+For now, data is passed through '/dev/dvb/adapterX/sec0':
+ - Encryp

Re: Interconnection of different DVB adapters (was: Re: [PATCH 07/16] ngene: CXD2099AR Common Interface driver)

2011-01-10 Thread Oliver Endriss
On Tuesday 11 January 2011 02:32:14 Andreas Oberritter wrote:
> On 01/10/2011 06:20 PM, Oliver Endriss wrote:
> > On Monday 10 January 2011 15:05:34 Andreas Oberritter wrote:
> >> On 01/10/2011 10:36 AM, Oliver Endriss wrote:
> >>> From: Ralph Metzler 
> >>>
> >>> Driver for the Common Interface Controller CXD2099AR.
> >>> Supports the CI of the cineS2 DVB-S2.
> >>>
> >>> For now, data is passed through '/dev/dvb/adapterX/sec0':
> >>> - Encrypted data must be written to 'sec0'.
> >>> - Decrypted data can be read from 'sec0'.
> >>> - Setup the CAM using device 'ca0'.
> >>
> >> Nack. In DVB API terms, "sec" stands for satellite equipment control,
> >> and if I remember correctly, sec0 already existed in the first versions
> >> of the API and that's why its leftovers can be abused by this driver.
> >>
> >> The interfaces for writing data are dvr0 and demux0. If they don't fit
> >> for decryption of recorded data, then they should be extended.
> >>
> >> For decryption of live data, no new user interface needs to be created.
> > 
> > There was an attempt to find a solution for the problem in thread
> > http://www.mail-archive.com/linux-media@vger.kernel.org/msg22196.html
> > 
> > As that discussion did not come to a final solution, and the driver is
> > still experimental, I left the original patch 'as is'.
> 
> Thanks for the pointer. My impression from the quoted thread is that the
> most desired and viable solution was to create a ca device node which
> can be virtually connected on demand to a demux or dvr device of another
> adapter, but there was no intent to put the required amount of work into
> it.

Attaching a CI to a single frontend is easy. In this case we could
simply attach the CI to the first frontend of the card, and we are done.

The intention was to allow decryption of streams from more than one
frontend _at_the_same_time_. That might require multiplexing partial
TS streams into a new one, passing it to the CAM and demultiplexing the
decrypted stream again.

The idea was to perform these operations in userspace, while the kernel
provides a simple interface which
- accepts an encrypted stream and
- delivers the decrypted stream.

sec0 was chosen because it exists and it is currently unused.
It can be renamed anytime, if we reach an agreement.

> That's fair, but IMHO not suitable for submission to the mainline 
> kernel.
>
> This definitely needs more thought.

If this is the common opinion, I will simply strip the CI support from
the driver again. The stv0900x and ngene patches are too important to be
delayed.

> Maybe the adapter-based scheme currently in use needs to be revised
> thoroughly. The "budget" type of adapters are basically just frontends
> and we should be able to interconnect those (and also other) frontends
> with CIs, demuxes and decoders of different adapters, if the underlying
> buses allow it. Is this something the media controller and mem2mem APIs
> are trying to solve for V4L? If yes, this could become interesting for
> DVB, too.

Honestly, I have little motivation to work on things,  which I do not
use. I do not care about CAM stuff. I am just submitting the code
I received...

CU
Oliver

-- 

VDR Remote Plugin 0.4.0: http://www.escape-edv.de/endriss/vdr/
4 MByte Mod: http://www.escape-edv.de/endriss/dvb-mem-mod/
Full-TS Mod: http://www.escape-edv.de/endriss/dvb-full-ts-mod/

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Interconnection of different DVB adapters (was: Re: [PATCH 07/16] ngene: CXD2099AR Common Interface driver)

2011-01-10 Thread Andreas Oberritter
On 01/10/2011 06:20 PM, Oliver Endriss wrote:
> On Monday 10 January 2011 15:05:34 Andreas Oberritter wrote:
>> On 01/10/2011 10:36 AM, Oliver Endriss wrote:
>>> From: Ralph Metzler 
>>>
>>> Driver for the Common Interface Controller CXD2099AR.
>>> Supports the CI of the cineS2 DVB-S2.
>>>
>>> For now, data is passed through '/dev/dvb/adapterX/sec0':
>>> - Encrypted data must be written to 'sec0'.
>>> - Decrypted data can be read from 'sec0'.
>>> - Setup the CAM using device 'ca0'.
>>
>> Nack. In DVB API terms, "sec" stands for satellite equipment control,
>> and if I remember correctly, sec0 already existed in the first versions
>> of the API and that's why its leftovers can be abused by this driver.
>>
>> The interfaces for writing data are dvr0 and demux0. If they don't fit
>> for decryption of recorded data, then they should be extended.
>>
>> For decryption of live data, no new user interface needs to be created.
> 
> There was an attempt to find a solution for the problem in thread
> http://www.mail-archive.com/linux-media@vger.kernel.org/msg22196.html
> 
> As that discussion did not come to a final solution, and the driver is
> still experimental, I left the original patch 'as is'.

Thanks for the pointer. My impression from the quoted thread is that the
most desired and viable solution was to create a ca device node which
can be virtually connected on demand to a demux or dvr device of another
adapter, but there was no intent to put the required amount of work into
it. That's fair, but IMHO not suitable for submission to the mainline
kernel.

This definitely needs more thought.

Maybe the adapter-based scheme currently in use needs to be revised
thoroughly. The "budget" type of adapters are basically just frontends
and we should be able to interconnect those (and also other) frontends
with CIs, demuxes and decoders of different adapters, if the underlying
buses allow it. Is this something the media controller and mem2mem APIs
are trying to solve for V4L? If yes, this could become interesting for
DVB, too.

Regards,
Andreas
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 07/16] ngene: CXD2099AR Common Interface driver

2011-01-10 Thread Oliver Endriss
On Monday 10 January 2011 15:05:34 Andreas Oberritter wrote:
> On 01/10/2011 10:36 AM, Oliver Endriss wrote:
> > From: Ralph Metzler 
> > 
> > Driver for the Common Interface Controller CXD2099AR.
> > Supports the CI of the cineS2 DVB-S2.
> > 
> > For now, data is passed through '/dev/dvb/adapterX/sec0':
> > - Encrypted data must be written to 'sec0'.
> > - Decrypted data can be read from 'sec0'.
> > - Setup the CAM using device 'ca0'.
> 
> Nack. In DVB API terms, "sec" stands for satellite equipment control,
> and if I remember correctly, sec0 already existed in the first versions
> of the API and that's why its leftovers can be abused by this driver.
> 
> The interfaces for writing data are dvr0 and demux0. If they don't fit
> for decryption of recorded data, then they should be extended.
> 
> For decryption of live data, no new user interface needs to be created.

There was an attempt to find a solution for the problem in thread
http://www.mail-archive.com/linux-media@vger.kernel.org/msg22196.html

As that discussion did not come to a final solution, and the driver is
still experimental, I left the original patch 'as is'.

CU
Oliver

-- 

VDR Remote Plugin 0.4.0: http://www.escape-edv.de/endriss/vdr/
4 MByte Mod: http://www.escape-edv.de/endriss/dvb-mem-mod/
Full-TS Mod: http://www.escape-edv.de/endriss/dvb-full-ts-mod/

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 07/16] ngene: CXD2099AR Common Interface driver

2011-01-10 Thread Andreas Oberritter
On 01/10/2011 10:36 AM, Oliver Endriss wrote:
> From: Ralph Metzler 
> 
> Driver for the Common Interface Controller CXD2099AR.
> Supports the CI of the cineS2 DVB-S2.
> 
> For now, data is passed through '/dev/dvb/adapterX/sec0':
> - Encrypted data must be written to 'sec0'.
> - Decrypted data can be read from 'sec0'.
> - Setup the CAM using device 'ca0'.

Nack. In DVB API terms, "sec" stands for satellite equipment control,
and if I remember correctly, sec0 already existed in the first versions
of the API and that's why its leftovers can be abused by this driver.

The interfaces for writing data are dvr0 and demux0. If they don't fit
for decryption of recorded data, then they should be extended.

For decryption of live data, no new user interface needs to be created.

Regards,
Andreas
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html