[linux-dvb] bus control

Oliver Endriss o.endriss at gmx.de
Thu Jul 26 03:36:55 CEST 2007


Manu Abraham wrote:
> On 7/25/07, Patrick Boettcher <patrick.boettcher at desy.de> wrote:
> > On Mon, 23 Jul 2007, Oliver Endriss wrote:
> >
> > > Manu Abraham wrote:
> > > > Hi all,
> > > >
> > > > On one of the devices that i am working upon, it has a bus control entity. ie
> > > >
> > > > The device looks like this
> > > >
> > > > The device consists of
> > > >
> > > > 1) a BUS Interface Unit
> > > > 2) on this bus Interface unit (BIU) there is one single physical I2C bus
> > > > 3) a built in MASTER demodulator
> > > >
> > > >
> > > > The I2C bus on the device is _not_ directly connected to any
> > > > peripherals such as demods and or tuners.
> > > >
> > > > The bus goes to a control unit where the bus is split into 2 based on
> > > > a control word sent to the  Bus Control Unit (BCU)
> > > >
> > > > The split out bus goes out like this
> > > >
> > > > 1) goes to the MASTER tuner for the built in demodulator
> > > > 2) goes to a SLAVE demodulator, which has just one switchable I2C
> > > > output for the tuner
> > > >
> > > > ie , the configuration looks like 2, 2 way switches cascaded together,
> > > > when the MASTER and SLAVE demodulators are cascaded.
> > > >
> > > > Looking at the device and thinking a lot, i don't see how the control
> > > > can fit in as a part of the frontend at all, as the it has nothing to
> > > > do with the frontend, but just the BIU.
> > > >
> > > > Some thought that i have, at present go like this
> > > >
> > > > * register independant virtual buses for each device, on device
> > > > access, the relevant control word is appended to the BIU device
> > > > register.
> > >
> > > Imho this is the preferred way. The master_xfer function of the virtual
> > > i2c bus could setup the BCU switch, then call master_xfer of the
> > > physical i2c bus.
> >
> > I second this idea. Exactly like this is how I did with the dib7000/3000
> > and the mt2060. It is the best and cleanest approach IMHO.
> >
> 
> Cool. Will proceed this way then without waiting much.

As a nice side effect of this concept, you may use standard i2ctools
(i2cdump, i2cset, i2cget) to access the devices connected to a virtual
bus.

> My plan goes this way.
> 
> * dvb-usb provides the real I2C bus.
> * the Host BIU is registered, which registers Virtual Bus #0 and #1
> * the MASTER demod get's attached to VBus #0 - 0
> * the MASTER tuner get's attached as a SLAVE on to the MASTER demod on
> VBus #0 - 1
> * the SLAVE demod get's attached to VBus #1
> * the SLAVE tuner get's attached as a SLAVE on to the SLAVE demod on VBus #1 - 0
> * firmware is downloaded via VBus #0 to the Host
> * firmware is copied from MASTER to SLAVE via VBus #0 to VBus #1 - 1
> 
> though the firmware download is a property of the demodulator, it
> would not be elegant from the demodulator hardware POV to download the
> firmware twice (the BIU host will be doing 2 transfers, one from the
> PC to the BIU Host and the BIU to the SLAVE)

Does it take a long time to download the firmware?
If not, I would go for the easiest way. (I guess the firmware has to be
loaded after a coldstart only.)

> In this case the firmware has to be copied from demod #0 to demod #1
> for effeciency reasons, though a dual download can be used. But AFAICS
> the firmware getting downloaded to the demod would be necessary in the
> SLAVE - SLAVE configuration as found on PCI/PCIe devices, since there
> is no BIU in that configuration.
> 
> I think it might be better then, that the firmware download in the
> demodulators is conditionally done through a BIU config data structure
> in such a case
> 
> (Thoughts ?)

You might add a firmware_request callback to the configuration struct
passed to the demod_attach routine (see tda1004x driver, for example).

The card driver will set this entry before calling demod_attach.
For a dual download, it might point to the same routine for each demod.
For the download+copy approach, you might set the callback of the second
demod to a special firmware copy routine.

CU
Oliver

-- 
----------------------------------------------------------------
VDR Remote Plugin 0.3.9: http://www.escape-edv.de/endriss/vdr/
----------------------------------------------------------------




More information about the linux-dvb mailing list