[linux-dvb] dvb_ca_en50221.c,h - a hook needed
akivas at scopus.net
Thu Aug 2 10:39:52 CEST 2007
1) thanks for prompt reply,
2) see inline:
> -----Original Message-----
> From: Manu Abraham [mailto:abraham.manu at gmail.com]
> Sent: Wednesday, August 01, 2007 9:18 PM
> To: Akiva Sadovski
> Cc: linux-dvb at linuxtv.org
> Subject: Re: [linux-dvb] dvb_ca_en50221.c,h - a hook needed
> On 8/1/07, Akiva Sadovski <akivas at scopus.net> wrote:
> > Dear all,
> > I'm working on a driver for a SCM's CIMaX chip
> > (http://www.scmmicro.com/ir/pdf/10K-Q4-04.pdf - DVB-CI
> > interface). The driver is supposed to be used at our proprietary HW
> > platform. I'd like to use the dvb-core as a (great)
> platform for the driver.
> > However, IMHO it lacks the following functionality:
> > before using the CIMaX chip I have to set up some registers that
> > configure the voltages it uses, pin assignment etc,
> use that part in the cimax driver, assigning voltages, pin
> assignments etc.
> > the most natural place to do it is while open()-ing the
> device, but the
> > dvb_ca_en50221_io_open() has no hook
> > (smth like int (*slot_reset)() ) available,
> To reset, use CA_RESET. Since the CiMax just follows EN50221, the
> device specifies that the modules are daisy chained according to
> EN50221, see page 16 of the CiMax datasheet. (Don't know whether you
> have the same datasheet, what i have is Rev A, 7-Sep-01)
> See also 5.4.4 en50221. Also A.2.2.1.
> But i didn't really follow this part, if you mean the Hot Insertion
> feature on the CIMAx, just add in flag to say ca->flags (you need to
> define the flag though) and just do the code run conditionally based
> on the flag, say something like DVB_CA_EN50221_HOT_INSERT to
> conditionally enable the Reset code in dvb_ca_en50221.
> That would help ? Is that what you were asking ?
Not exactly. Let's put it this way:
1. before starting to work with cimax I have to:
1.1 reset the chip (it controls 2 CAM slots)
1.2 configure some cimax registers - these registers will remain unchanged until next power down / power up
2. I prefer not to do these tasks in
int (*slot_reset)(struct dvb_ca_en50221* ca, int slot);
hook, since it's activated per CAM slot and I'd prefer something device-wide [my 'device' is the cimax controlling two CAM slots]
3. IMHO the ideal place for such a hook will be somewhere in dvb_ca_en50221_io_open() function...
Have I explained myself,
> > and I don't want to put any chip-wide initialization
> code to driver's
> > init function (the driver is supposed to deal with
> > with few CIMaXes)
> device specific code has to go into the device specific driver alone.
More information about the linux-dvb