Re: [PATCH] [media] drxk: Switch the delivery system on FE_SET_PROPERTY

Mauro Carvalho Chehab
2011-12-09T23:43:35Z

On 09-12-2011 21:37, Mauro Carvalho Chehab wrote:
> On 09-12-2011 20:33, Devin Heitmueller wrote:
>> On Fri, Dec 9, 2011 at 5:11 PM, Mauro Carvalho Chehab
>> <mchehab@redhat.com> wrote:
>>>> Could someone explain reason for that?
>>>
>>>
>>> I dunno, but I think this needs to be fixed, at least when the frontend
>>> is opened with O_NONBLOCK.
>>
>> Are you doing the drx-k firmware load on dvb_init()? That could
>> easily take 4 seconds.
>
> No. The firmware were opened previously.

Maybe the delay is due to this part of dvb_frontend.c:

static int dvb_mfe_wait_time = 5;
...
int mferetry = (dvb_mfe_wait_time << 1);

mutex_unlock (&adapter->mfe_lock);
while (mferetry-- && (mfedev->users != -1 ||
mfepriv->thread != NULL)) {
if(msleep_interruptible(500)) {
if(signal_pending(current))
return -EINTR;
}
}

If I set this modprobe parameter to 1, the delay reduces drastically:

[ 5975.865162] drxk: ConfigureI2CBridge
[ 5975.865164] xc5000: xc5000_init()
[ 5975.869257] xc5000: xc5000_is_firmware_loaded() returns True id = 0x1388
[ 5975.876009] xc5000: xc_initialize()
[ 5976.120891] xc5000: *** ADC envelope (0-1023) = 4
[ 5976.126260] xc5000: *** Frequency error = 0 Hz
[ 5976.131260] xc5000: *** Lock status (0-Wait, 1-Locked, 2-No-signal) = 1
[ 5976.139111] xc5000: *** HW: V03.02, FW: V01.06.0072
[ 5976.144733] xc5000: *** Horizontal sync frequency = 11292 Hz
[ 5976.150976] xc5000: *** Frame lines = 1442
[ 5976.155850] xc5000: *** Quality (0:<8dB, 7:>56dB) = 9
[ 5976.160937] drxk: drxk_gate_ctrldisable
[ 5976.160939] drxk: ConfigureI2CBridge
[ 5977.161897] drxk: drxk_c_get_tune_settings
[ 5977.162085] drxk: drxk_c_init
[ 5977.162089] drxk: drxk_gate_ctrlenable
[ 5977.162091] drxk: ConfigureI2CBridge
[ 5977.162094] xc5000: xc5000_init()
[ 5977.166095] xc5000: xc5000_is_firmware_loaded() returns True id = 0x1388
[ 5977.172836] xc5000: xc_initialize()
[ 5977.422213] xc5000: *** ADC envelope (0-1023) = 4
[ 5977.427706] xc5000: *** Frequency error = 0 Hz
[ 5977.432832] xc5000: *** Lock status (0-Wait, 1-Locked, 2-No-signal) = 1
[ 5977.440682] xc5000: *** HW: V03.02, FW: V01.06.0072
[ 5977.446177] xc5000: *** Horizontal sync frequency = 10460 Hz
[ 5977.452482] xc5000: *** Frame lines = 1442
[ 5977.457296] xc5000: *** Quality (0:<8dB, 7:>56dB) = 9
[ 5977.462385] drxk: drxk_gate_ctrldisable
[ 5977.462388] drxk: ConfigureI2CBridge
[ 5977.462390] drxk: drxk_set_parameters
[ 5977.462392] drxk: drxk_gate_ctrlenable
[ 5977.462394] drxk: ConfigureI2CBridge
[ 5977.463043] xc5000: xc5000_is_firmware_loaded() returns True id = 0x1388
[ 5977.469781] xc5000: xc5000_set_params() frequency=57000000 (Hz)
[ 5977.475740] xc5000: xc5000_set_params() QAM modulation
[ 5977.480912] xc5000: xc5000_set_params() Bandwidth 6MHz (5999550)
[ 5977.486948] xc5000: xc5000_set_params() frequency=55250000 (compensated)
[ 5977.493677] xc5000: xc_SetSignalSource(1) Source = CABLE
[ 5977.500024] xc5000: xc_SetTVStandard(0x8002,0x00c0)
[ 5977.504930] xc5000: xc_SetTVStandard() Standard = DTV6
[ 5977.518267] xc5000: xc_set_IF_frequency(freq_khz = 4000) freq_code = 0x1000
[ 5977.527135] xc5000: xc_tune_channel(55250000)
[ 5977.531530] xc5000: xc_set_RF_frequency(55250000)
[ 5977.728050] xc5000: *** ADC envelope (0-1023) = 768
[ 5977.733671] xc5000: *** Frequency error = 0 Hz
[ 5977.738649] xc5000: *** Lock status (0-Wait, 1-Locked, 2-No-signal) = 1
[ 5977.746523] xc5000: *** HW: V03.02, FW: V01.06.0072
[ 5977.752017] xc5000: *** Horizontal sync frequency = 14970 Hz
[ 5977.758288] xc5000: *** Frame lines = 65535
[ 5977.763137] xc5000: *** Quality (0:<8dB, 7:>56dB) = 5
[ 5977.768224] drxk: drxk_gate_ctrldisable
[ 5977.768226] drxk: ConfigureI2CBridge
[ 5977.768228] xc5000: xc5000_get_if_frequency()
[ 5977.772624] drxk: Start
[ 5977.772626] drxk: SetQAM
[ 5977.773530] drxk: QAMResetQAM
[ 5977.773880] drxk: scu_command
[ 5977.777653] drxk: QAMSetSymbolrate
[ 5977.778880] drxk: scu_command
[ 5977.782647] drxk: SCU_RESULT_INVPAR while sending cmd 0x0203 with params:
[ 5977.789298] drxk: 02 00 00 00 10 00 05 00 03 02 ..........
[ 5977.789490] drxk: scu_command
[ 5977.792644] drxk: scu_command
[ 5977.795641] drxk: SetFrequencyShifter
[ 5977.796119] drxk: SetQAMMeasurement
[ 5977.806489] drxk: SetQAM64
[ 5977.827502] drxk: MPEGTSDtoSetup
[ 5977.834621] drxk: scu_command
[ 5978.161550] drxk: drxk_read_status
[ 5978.161554] drxk: GetLockStatus
[ 5978.161556] drxk: GetQAMLockStatus
[ 5978.161558] drxk: scu_command
[ 5978.315220] drxk: drxk_read_status
[ 5978.315223] drxk: GetLockStatus
[ 5978.315225] drxk: GetQAMLockStatus
[ 5978.315227] drxk: scu_command
[ 5978.469137] drxk: drxk_read_status
[ 5978.469141] drxk: GetLockStatus
[ 5978.469143] drxk: GetQAMLockStatus
[ 5978.469144] drxk: scu_command
[ 5978.623043] drxk: drxk_read_status
[ 5978.623046] drxk: GetLockStatus
[ 5978.623048] drxk: GetQAMLockStatus
[ 5978.623050] drxk: scu_command
[ 5978.776974] drxk: drxk_read_status
[ 5978.776977] drxk: GetLockStatus
[ 5978.776979] drxk: GetQAMLockStatus
[ 5978.776981] drxk: scu_command
[ 5978.930891] drxk: drxk_read_status
[ 5978.930894] drxk: GetLockStatus
[ 5978.930896] drxk: GetQAMLockStatus
[ 5978.930898] drxk: scu_command
[ 5979.084814] drxk: drxk_read_status
[ 5979.084817] drxk: GetLockStatus
[ 5979.084819] drxk: GetQAMLockStatus
[ 5979.084821] drxk: scu_command
[ 5979.238727] drxk: drxk_read_status
[ 5979.238730] drxk: GetLockStatus
[ 5979.238732] drxk: GetQAMLockStatus
[ 5979.238734] drxk: scu_command
[ 5979.392643] drxk: drxk_read_status
[ 5979.392646] drxk: GetLockStatus
[ 5979.392648] drxk: GetQAMLockStatus
[ 5979.392650] drxk: scu_command
[ 5979.546595] drxk: drxk_read_status
[ 5979.546598] drxk: GetLockStatus
[ 5979.546601] drxk: GetQAMLockStatus
[ 5979.546602] drxk: scu_command
[ 5979.700506] drxk: drxk_c_get_tune_settings
[ 5979.700683] drxk: drxk_set_parameters
[ 5979.700687] drxk: drxk_gate_ctrlenable
[ 5979.700689] drxk: ConfigureI2CBridge
[ 5979.701382] xc5000: xc5000_is_firmware_loaded() returns True id = 0x1388
[ 5979.708099] xc5000: xc5000_set_params() frequency=57000000 (Hz)
[ 5979.714055] xc5000: xc5000_set_params() QAM modulation
[ 5979.719230] xc5000: xc5000_set_params() Bandwidth 6MHz (5929400)
[ 5979.725267] xc5000: xc5000_set_params() frequency=55250000 (compensated)
[ 5979.731996] xc5000: xc_SetSignalSource(1) Source = CABLE
[ 5979.738262] xc5000: xc_SetTVStandard(0x8002,0x00c0)
[ 5979.743170] xc5000: xc_SetTVStandard() Standard = DTV6
[ 5979.757100] xc5000: xc_set_IF_frequency(freq_khz = 4000) freq_code = 0x1000
[ 5979.765968] xc5000: xc_tune_channel(55250000)
[ 5979.770364] xc5000: xc_set_RF_frequency(55250000)
[ 5979.966886] xc5000: *** ADC envelope (0-1023) = 816
[ 5979.972506] xc5000: *** Frequency error = 0 Hz
[ 5979.977483] xc5000: *** Lock status (0-Wait, 1-Locked, 2-No-signal) = 1
[ 5979.985482] xc5000: *** HW: V03.02, FW: V01.06.0072
[ 5979.990975] xc5000: *** Horizontal sync frequency = 15023 Hz
[ 5979.997496] xc5000: *** Frame lines = 65535
[ 5980.002347] xc5000: *** Quality (0:<8dB, 7:>56dB) = 0
[ 5980.007428] drxk: drxk_gate_ctrldisable
[ 5980.007430] drxk: ConfigureI2CBridge
[ 5980.007432] xc5000: xc5000_get_if_frequency()
[ 5980.011820] drxk: Start
[ 5980.011821] drxk: SetQAM
[ 5980.012714] drxk: QAMResetQAM
[ 5980.013111] drxk: scu_command
[ 5980.016483] drxk: QAMSetSymbolrate
[ 5980.017713] drxk: scu_command
[ 5980.021482] drxk: SCU_RESULT_INVPAR while sending cmd 0x0203 with params:
[ 5980.028126] drxk: 02 00 00 00 10 00 05 00 03 02 ..........
[ 5980.028316] drxk: scu_command
[ 5980.031475] drxk: scu_command
[ 5980.034475] drxk: SetFrequencyShifter
[ 5980.034953] drxk: SetQAMMeasurement
[ 5980.045136] drxk: SetQAM64
[ 5980.066075] drxk: MPEGTSDtoSetup
[ 5980.073329] drxk: scu_command
[ 5980.700153] drxk: drxk_read_status
[ 5980.700157] drxk: GetLockStatus
[ 5980.700159] drxk: GetQAMLockStatus
[ 5980.700161] drxk: scu_command
[ 5980.853772] drxk: drxk_read_status
[ 5980.853775] drxk: GetLockStatus
[ 5980.853777] drxk: GetQAMLockStatus
[ 5980.853779] drxk: scu_command
[ 5981.007797] drxk: drxk_read_status
[ 5981.007801] drxk: GetLockStatus
[ 5981.007803] drxk: GetQAMLockStatus
[ 5981.007805] drxk: scu_command
[ 5981.161681] drxk: drxk_read_status
[ 5981.161684] drxk: GetLockStatus
[ 5981.161686] drxk: GetQAMLockStatus
[ 5981.161688] drxk: scu_command
[ 5981.315635] drxk: drxk_read_status
[ 5981.315638] drxk: GetLockStatus
[ 5981.315640] drxk: GetQAMLockStatus
[ 5981.315642] drxk: scu_command
[ 5981.469555] drxk: drxk_read_status
[ 5981.469558] drxk: GetLockStatus
[ 5981.469561] drxk: GetQAMLockStatus
[ 5981.469562] drxk: scu_command
[ 5981.623468] drxk: drxk_read_status
[ 5981.623472] drxk: GetLockStatus
[ 5981.623474] drxk: GetQAMLockStatus
[ 5981.623476] drxk: scu_command
[ 5981.777388] drxk: drxk_read_status
[ 5981.777391] drxk: GetLockStatus
[ 5981.777393] drxk: GetQAMLockStatus
[ 5981.777395] drxk: scu_command
[ 5981.931307] drxk: drxk_read_status
[ 5981.931311] drxk: GetLockStatus
[ 5981.931313] drxk: GetQAMLockStatus
[ 5981.931314] drxk: scu_command
[ 5982.085228] drxk: drxk_read_status
[ 5982.085232] drxk: GetLockStatus
[ 5982.085234] drxk: GetQAMLockStatus
[ 5982.085236] drxk: scu_command
[ 5982.239174] drxk: drxk_c_get_tune_settings
[ 5982.239356] drxk: drxk_set_parameters
[ 5982.239360] drxk: drxk_gate_ctrlenable
[ 5982.239362] drxk: ConfigureI2CBridge
[ 5982.240066] xc5000: xc5000_is_firmware_loaded() returns True id = 0x1388
[ 5982.246785] xc5000: xc5000_set_params() frequency=57000000 (Hz)
[ 5982.252740] xc5000: xc5000_set_params() QAM modulation
[ 5982.257912] xc5000: xc5000_set_params() Bandwidth 6MHz (5750000)
[ 5982.263949] xc5000: xc5000_set_params() frequency=55250000 (compensated)
[ 5982.270679] xc5000: xc_SetSignalSource(1) Source = CABLE
[ 5982.276941] xc5000: xc_SetTVStandard(0x8002,0x00c0)
[ 5982.281849] xc5000: xc_SetTVStandard() Standard = DTV6
[ 5982.295776] xc5000: xc_set_IF_frequency(freq_khz = 4000) freq_code = 0x1000
[ 5982.304771] xc5000: xc_tune_channel(55250000)
[ 5982.309169] xc5000: xc_set_RF_frequency(55250000)
[ 5982.506561] xc5000: *** ADC envelope (0-1023) = 724
[ 5982.512186] xc5000: *** Frequency error = 0 Hz
[ 5982.517408] xc5000: *** Lock status (0-Wait, 1-Locked, 2-No-signal) = 1
[ 5982.525178] xc5000: *** HW: V03.02, FW: V01.06.0072
[ 5982.530799] xc5000: *** Horizontal sync frequency = 14954 Hz
[ 5982.537149] xc5000: *** Frame lines = 65535
[ 5982.542022] xc5000: *** Quality (0:<8dB, 7:>56dB) = 5
[ 5982.547109] drxk: drxk_gate_ctrldisable
[ 5982.547111] drxk: ConfigureI2CBridge
[ 5982.547113] xc5000: xc5000_get_if_frequency()
[ 5982.551512] drxk: Start
[ 5982.551514] drxk: SetQAM
[ 5982.552390] drxk: QAMResetQAM
[ 5982.552769] drxk: scu_command
[ 5982.556160] drxk: QAMSetSymbolrate
[ 5982.557390] drxk: scu_command
[ 5982.561160] drxk: SCU_RESULT_INVPAR while sending cmd 0x0203 with params:
[ 5982.567809] drxk: 02 00 00 00 10 00 05 00 03 02 ..........
[ 5982.568001] drxk: scu_command
[ 5982.571154] drxk: scu_command
[ 5982.574150] drxk: SetFrequencyShifter
[ 5982.574630] drxk: SetQAMMeasurement
[ 5982.584376] drxk: SetQAM64
[ 5982.604258] drxk: MPEGTSDtoSetup
[ 5982.611361] drxk: scu_command
[ 5982.615007] drxk: drxk_gate_ctrlenable
[ 5982.615010] drxk: ConfigureI2CBridge
[ 5982.615012] xc5000: xc5000_sleep()
[ 5982.618436] xc5000: xc5000_TunerReset()
[ 5982.622313] drxk: drxk_gate_ctrldisable
[ 5982.622315] drxk: ConfigureI2CBridge
[ 5982.622317] drxk: drxk_c_sleep
[ 5982.622319] drxk: ShutDown
[ 5982.622321] drxk: MPEGTSStop

Regards,
Mauro.