Re: PULL http://jusst.de/hg/stv090x

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 22, 2010 at 11:40 PM, Devin Heitmueller
<dheitmueller@xxxxxxxxxxxxxx> wrote:
> On Fri, Jan 22, 2010 at 2:11 PM, Manu Abraham <abraham.manu@xxxxxxxxx> wrote:
>> I think you understood incorrectly. Generally most demodulators have
>> an option to detect the I2C stop bit, thereby automatically disabling
>> the gate, while some don't. In those cases, you don't even need a
>> i2c_gate_control(disable)
>> It is that safe. Now, even if the gate happens to be open for some
>> reason, it won't have a large downside, just that the i2c transactions
>> might seep into the tuner silicon as RF noise.
>
> Yes, I was aware of this (although I might dispute whether *most*
> demodulators really operate this way).
>
>> Can you explain your logic a bit more in detail, please ?
>>
>> If you meant to imply the action on a failure case, it does unlock in
>> all possible cases as you can see...
>> http://jusst.de/hg/stv090x/rev/3a8f35abc0f2
>
> I am not talking about the case where the tuning fails.  I mean that
> not only is the i2c_gate_ctrl function used internally by stv090x.c,
> but it is also exposed via the dvb_frontend_ops struct.  Depending on
> what tuner chip your frontend is being used with, I have seen cases
> where the tuner driver itself takes responsibility for opening/closing
> the gate.  So you effectively end up with:
>
> frontend driver calls i2c_gate_ctrl(enable)
> frontend driver tells tuner driver to tune
> tuner driver calls i2c_gate_ctrl(enable)     <--- Would cause deadlock
> in your driver
> tuner driver calls i2c_gate_ctrl(disable)
> tuner driver returns to caller
> frontend driver calls i2c_gate_ctrl(disable)
>
> With other devices, this call is typically silently succeeds (and
> doesn't cause any harm).  In your case though, it would end up with a
> deadlock because your particular i2c_gate_ctrl() function leaves the
> "state->internal->tuner_lock" in a locked state.
>
> Now you may not run into this issue because today your frontend is
> only used with a tuner that doesn't do this.  However it is something
> to watch out for in the future.
>
> Also, the dvb_frontend.c makes calls to i2c_gate_ctrl() at various
> points, so you would need to ensure that none of those occur before
> calling into your driver as there could potentially be a deadlock
> there too.

These demodulators generally don't need to do separate tuner
programming even, it happens transparently. ie, in those cases, you
don't need a tuner driver even. For the stv090x, the tuner control is
within the acquisition loop of the demodulator itself. Even this
wouldn't have been necessary, but it is kept for some very legacy use
cases.

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

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux