diff options
Diffstat (limited to 'drivers/media/dvb-core')
-rw-r--r-- | drivers/media/dvb-core/dvb_frontend.c | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c index 479a5e52cb0d..1f3b16db2036 100644 --- a/drivers/media/dvb-core/dvb_frontend.c +++ b/drivers/media/dvb-core/dvb_frontend.c | |||
@@ -2131,27 +2131,43 @@ static int dvb_frontend_ioctl_legacy(struct file *file, | |||
2131 | err = fe->ops.read_status(fe, status); | 2131 | err = fe->ops.read_status(fe, status); |
2132 | break; | 2132 | break; |
2133 | } | 2133 | } |
2134 | |||
2134 | case FE_READ_BER: | 2135 | case FE_READ_BER: |
2135 | if (fe->ops.read_ber) | 2136 | if (fe->ops.read_ber) { |
2136 | err = fe->ops.read_ber(fe, (__u32*) parg); | 2137 | if (fepriv->thread) |
2138 | err = fe->ops.read_ber(fe, (__u32 *) parg); | ||
2139 | else | ||
2140 | err = -EAGAIN; | ||
2141 | } | ||
2137 | break; | 2142 | break; |
2138 | 2143 | ||
2139 | case FE_READ_SIGNAL_STRENGTH: | 2144 | case FE_READ_SIGNAL_STRENGTH: |
2140 | if (fe->ops.read_signal_strength) | 2145 | if (fe->ops.read_signal_strength) { |
2141 | err = fe->ops.read_signal_strength(fe, (__u16*) parg); | 2146 | if (fepriv->thread) |
2147 | err = fe->ops.read_signal_strength(fe, (__u16 *) parg); | ||
2148 | else | ||
2149 | err = -EAGAIN; | ||
2150 | } | ||
2142 | break; | 2151 | break; |
2143 | 2152 | ||
2144 | case FE_READ_SNR: | 2153 | case FE_READ_SNR: |
2145 | if (fe->ops.read_snr) | 2154 | if (fe->ops.read_snr) { |
2146 | err = fe->ops.read_snr(fe, (__u16*) parg); | 2155 | if (fepriv->thread) |
2156 | err = fe->ops.read_snr(fe, (__u16 *) parg); | ||
2157 | else | ||
2158 | err = -EAGAIN; | ||
2159 | } | ||
2147 | break; | 2160 | break; |
2148 | 2161 | ||
2149 | case FE_READ_UNCORRECTED_BLOCKS: | 2162 | case FE_READ_UNCORRECTED_BLOCKS: |
2150 | if (fe->ops.read_ucblocks) | 2163 | if (fe->ops.read_ucblocks) { |
2151 | err = fe->ops.read_ucblocks(fe, (__u32*) parg); | 2164 | if (fepriv->thread) |
2165 | err = fe->ops.read_ucblocks(fe, (__u32 *) parg); | ||
2166 | else | ||
2167 | err = -EAGAIN; | ||
2168 | } | ||
2152 | break; | 2169 | break; |
2153 | 2170 | ||
2154 | |||
2155 | case FE_DISEQC_RESET_OVERLOAD: | 2171 | case FE_DISEQC_RESET_OVERLOAD: |
2156 | if (fe->ops.diseqc_reset_overload) { | 2172 | if (fe->ops.diseqc_reset_overload) { |
2157 | err = fe->ops.diseqc_reset_overload(fe); | 2173 | err = fe->ops.diseqc_reset_overload(fe); |