diff options
Diffstat (limited to 'drivers/media/dvb-frontends')
-rw-r--r-- | drivers/media/dvb-frontends/cx24113.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/dib8000.c | 4 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/dib9000.c | 4 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/drxd_hard.c | 8 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/drxk_hard.c | 23 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/m88ds3103.c | 6 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/s5h1411.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/si2168.c | 43 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/si2168_priv.h | 2 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/si21xx.c | 7 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/sp887x.c | 4 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/stb6100.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/stv0367.c | 6 |
13 files changed, 47 insertions, 66 deletions
diff --git a/drivers/media/dvb-frontends/cx24113.c b/drivers/media/dvb-frontends/cx24113.c index 60a9f70275f7..dd55d314bf9a 100644 --- a/drivers/media/dvb-frontends/cx24113.c +++ b/drivers/media/dvb-frontends/cx24113.c @@ -378,7 +378,7 @@ static void cx24113_set_nfr(struct cx24113_state *state, u16 n, s32 f, u8 r) static int cx24113_set_frequency(struct cx24113_state *state, u32 frequency) { - u8 r = 1; /* or 2 */ + u8 r; u16 n = 6; s32 f = 0; diff --git a/drivers/media/dvb-frontends/dib8000.c b/drivers/media/dvb-frontends/dib8000.c index bb02354a48b8..d67f2dd997d0 100644 --- a/drivers/media/dvb-frontends/dib8000.c +++ b/drivers/media/dvb-frontends/dib8000.c @@ -4473,8 +4473,10 @@ static struct dvb_frontend *dib8000_init(struct i2c_adapter *i2c_adap, u8 i2c_ad state->timf_default = cfg->pll->timf; - if (dib8000_identify(&state->i2c) == 0) + if (dib8000_identify(&state->i2c) == 0) { + kfree(fe); goto error; + } dibx000_init_i2c_master(&state->i2c_master, DIB8000, state->i2c.adap, state->i2c.addr); diff --git a/drivers/media/dvb-frontends/dib9000.c b/drivers/media/dvb-frontends/dib9000.c index 04d92d614279..914ca820c174 100644 --- a/drivers/media/dvb-frontends/dib9000.c +++ b/drivers/media/dvb-frontends/dib9000.c @@ -258,7 +258,7 @@ static int dib9000_read16_attr(struct dib9000_state *state, u16 reg, u8 *b, u32 state->i2c_write_buffer[0] |= (1 << 4); do { - l = len < chunk_size ? len : chunk_size; + l = min(len, chunk_size); state->msg[1].len = l; state->msg[1].buf = b; ret = i2c_transfer(state->i2c.i2c_adap, state->msg, 2) != 2 ? -EREMOTEIO : 0; @@ -342,7 +342,7 @@ static int dib9000_write16_attr(struct dib9000_state *state, u16 reg, const u8 * state->i2c_write_buffer[0] |= (1 << 4); do { - l = len < chunk_size ? len : chunk_size; + l = min(len, chunk_size); state->msg[0].len = l + 2; memcpy(&state->i2c_write_buffer[2], buf, l); diff --git a/drivers/media/dvb-frontends/drxd_hard.c b/drivers/media/dvb-frontends/drxd_hard.c index a7eb81df88c2..9860cae65f1c 100644 --- a/drivers/media/dvb-frontends/drxd_hard.c +++ b/drivers/media/dvb-frontends/drxd_hard.c @@ -914,44 +914,36 @@ static int DownloadMicrocode(struct drxd_state *state, u32 Address; u16 nBlocks; u16 BlockSize; - u32 offset = 0; int i, status = 0; pSrc = (u8 *) pMCImage; /* We're not using Flags */ /* Flags = (pSrc[0] << 8) | pSrc[1]; */ pSrc += sizeof(u16); - offset += sizeof(u16); nBlocks = (pSrc[0] << 8) | pSrc[1]; pSrc += sizeof(u16); - offset += sizeof(u16); for (i = 0; i < nBlocks; i++) { Address = (pSrc[0] << 24) | (pSrc[1] << 16) | (pSrc[2] << 8) | pSrc[3]; pSrc += sizeof(u32); - offset += sizeof(u32); BlockSize = ((pSrc[0] << 8) | pSrc[1]) * sizeof(u16); pSrc += sizeof(u16); - offset += sizeof(u16); /* We're not using Flags */ /* u16 Flags = (pSrc[0] << 8) | pSrc[1]; */ pSrc += sizeof(u16); - offset += sizeof(u16); /* We're not using BlockCRC */ /* u16 BlockCRC = (pSrc[0] << 8) | pSrc[1]; */ pSrc += sizeof(u16); - offset += sizeof(u16); status = WriteBlock(state, Address, BlockSize, pSrc, DRX_I2C_CLEARCRC); if (status < 0) break; pSrc += BlockSize; - offset += BlockSize; } return status; diff --git a/drivers/media/dvb-frontends/drxk_hard.c b/drivers/media/dvb-frontends/drxk_hard.c index d7fc2595f15b..9430295a8175 100644 --- a/drivers/media/dvb-frontends/drxk_hard.c +++ b/drivers/media/dvb-frontends/drxk_hard.c @@ -3720,7 +3720,6 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, { u16 cmd_result = 0; u16 transmission_params = 0; - u16 operation_mode = 0; u32 iqm_rc_rate_ofs = 0; u32 bandwidth = 0; u16 param1; @@ -3759,10 +3758,8 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, /* mode */ switch (state->props.transmission_mode) { case TRANSMISSION_MODE_AUTO: - default: - operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_MODE__M; - fallthrough; /* try first guess DRX_FFTMODE_8K */ case TRANSMISSION_MODE_8K: + default: transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_MODE_8K; break; case TRANSMISSION_MODE_2K: @@ -3773,9 +3770,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, /* guard */ switch (state->props.guard_interval) { default: - case GUARD_INTERVAL_AUTO: - operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_GUARD__M; - fallthrough; /* try first guess DRX_GUARD_1DIV4 */ + case GUARD_INTERVAL_AUTO: /* try first guess DRX_GUARD_1DIV4 */ case GUARD_INTERVAL_1_4: transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_4; break; @@ -3794,11 +3789,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, switch (state->props.hierarchy) { case HIERARCHY_AUTO: case HIERARCHY_NONE: - default: - operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_HIER__M; - /* try first guess SC_RA_RAM_OP_PARAM_HIER_NO */ - /* transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_HIER_NO; */ - fallthrough; + default: /* try first guess SC_RA_RAM_OP_PARAM_HIER_NO */ case HIERARCHY_1: transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_HIER_A1; break; @@ -3814,9 +3805,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, /* modulation */ switch (state->props.modulation) { case QAM_AUTO: - default: - operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_CONST__M; - fallthrough; /* try first guess DRX_CONSTELLATION_QAM64 */ + default: /* try first guess DRX_CONSTELLATION_QAM64 */ case QAM_64: transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_CONST_QAM64; break; @@ -3857,9 +3846,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, /* coderate */ switch (state->props.code_rate_HP) { case FEC_AUTO: - default: - operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_RATE__M; - fallthrough; /* try first guess DRX_CODERATE_2DIV3 */ + default: /* try first guess DRX_CODERATE_2DIV3 */ case FEC_2_3: transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_RATE_2_3; break; diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c index 02e8aa11e36e..bce0f42f3d19 100644 --- a/drivers/media/dvb-frontends/m88ds3103.c +++ b/drivers/media/dvb-frontends/m88ds3103.c @@ -451,7 +451,7 @@ static int m88ds3103b_select_mclk(struct m88ds3103_dev *dev) static int m88ds3103b_set_mclk(struct m88ds3103_dev *dev, u32 mclk_khz) { - u8 reg11 = 0x0A, reg15, reg16, reg1D, reg1E, reg1F, tmp; + u8 reg15, reg16, reg1D, reg1E, reg1F, tmp; u8 sm, f0 = 0, f1 = 0, f2 = 0, f3 = 0; u16 pll_div_fb, N; u32 div; @@ -480,8 +480,6 @@ static int m88ds3103b_set_mclk(struct m88ds3103_dev *dev, u32 mclk_khz) div /= mclk_khz; if (dev->cfg->ts_mode == M88DS3103_TS_SERIAL) { - reg11 |= 0x02; - if (div <= 32) { N = 2; @@ -532,8 +530,6 @@ static int m88ds3103b_set_mclk(struct m88ds3103_dev *dev, u32 mclk_khz) else if ((f3 < 8) && (f3 != 0)) f3 = 8; } else { - reg11 &= ~0x02; - if (div <= 32) { N = 2; diff --git a/drivers/media/dvb-frontends/s5h1411.c b/drivers/media/dvb-frontends/s5h1411.c index c1334d7eb442..2563a72e98b7 100644 --- a/drivers/media/dvb-frontends/s5h1411.c +++ b/drivers/media/dvb-frontends/s5h1411.c @@ -150,7 +150,7 @@ static struct vsb_snr_tab { { 0x35b, 235, }, { 0x353, 230, }, { 0x349, 225, }, - { 0x340, 320, }, + { 0x340, 220, }, { 0x337, 215, }, { 0x327, 210, }, { 0x31b, 205, }, diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c index 14b93a7d3358..196e028a6617 100644 --- a/drivers/media/dvb-frontends/si2168.c +++ b/drivers/media/dvb-frontends/si2168.c @@ -448,23 +448,10 @@ static int si2168_init(struct dvb_frontend *fe) /* request the firmware, this will block and timeout */ ret = request_firmware(&fw, dev->firmware_name, &client->dev); if (ret) { - /* fallback mechanism to handle old name for Si2168 B40 fw */ - if (dev->chip_id == SI2168_CHIP_ID_B40) { - dev->firmware_name = SI2168_B40_FIRMWARE_FALLBACK; - ret = request_firmware(&fw, dev->firmware_name, - &client->dev); - } - - if (ret == 0) { - dev_notice(&client->dev, - "please install firmware file '%s'\n", - SI2168_B40_FIRMWARE); - } else { - dev_err(&client->dev, - "firmware file '%s' not found\n", - dev->firmware_name); - goto err_release_firmware; - } + dev_err(&client->dev, + "firmware file '%s' not found\n", + dev->firmware_name); + goto err_release_firmware; } dev_info(&client->dev, "downloading firmware from file '%s'\n", @@ -527,6 +514,7 @@ static int si2168_init(struct dvb_frontend *fe) goto err; dev->warm = true; + dev->initialized = true; warm: /* Init stats here to indicate which stats are supported */ c->cnr.len = 1; @@ -548,6 +536,26 @@ err: return ret; } +static int si2168_resume(struct dvb_frontend *fe) +{ + struct i2c_client *client = fe->demodulator_priv; + struct si2168_dev *dev = i2c_get_clientdata(client); + + /* + * check whether si2168_init() has been called successfully + * outside of a resume cycle. Only call it (and load firmware) + * in this case. si2168_init() is only called during resume + * once the device has actually been used. Otherwise, leave the + * device untouched. + */ + if (dev->initialized) { + dev_dbg(&client->dev, "previously initialized, call si2168_init()\n"); + return si2168_init(fe); + } + dev_dbg(&client->dev, "not initialized yet, skipping init on resume\n"); + return 0; +} + static int si2168_sleep(struct dvb_frontend *fe) { struct i2c_client *client = fe->demodulator_priv; @@ -657,6 +665,7 @@ static const struct dvb_frontend_ops si2168_ops = { .init = si2168_init, .sleep = si2168_sleep, + .resume = si2168_resume, .set_frontend = si2168_set_frontend, diff --git a/drivers/media/dvb-frontends/si2168_priv.h b/drivers/media/dvb-frontends/si2168_priv.h index 18bea5222082..3a8976229a4a 100644 --- a/drivers/media/dvb-frontends/si2168_priv.h +++ b/drivers/media/dvb-frontends/si2168_priv.h @@ -18,7 +18,6 @@ #define SI2168_A30_FIRMWARE "dvb-demod-si2168-a30-01.fw" #define SI2168_B40_FIRMWARE "dvb-demod-si2168-b40-01.fw" #define SI2168_D60_FIRMWARE "dvb-demod-si2168-d60-01.fw" -#define SI2168_B40_FIRMWARE_FALLBACK "dvb-demod-si2168-02.fw" /* state struct */ struct si2168_dev { @@ -37,6 +36,7 @@ struct si2168_dev { u8 ts_mode; unsigned int active:1; unsigned int warm:1; + unsigned int initialized:1; unsigned int ts_clock_inv:1; unsigned int ts_clock_gapped:1; unsigned int spectral_inversion:1; diff --git a/drivers/media/dvb-frontends/si21xx.c b/drivers/media/dvb-frontends/si21xx.c index e31eb2c5cc4c..001b23588389 100644 --- a/drivers/media/dvb-frontends/si21xx.c +++ b/drivers/media/dvb-frontends/si21xx.c @@ -711,7 +711,7 @@ static int si21xx_set_frontend(struct dvb_frontend *fe) int i; bool inband_interferer_div2[ALLOWABLE_FS_COUNT]; bool inband_interferer_div4[ALLOWABLE_FS_COUNT]; - int status; + int status = 0; /* allowable sample rates for ADC in MHz */ int afs[ALLOWABLE_FS_COUNT] = { 200, 192, 193, 194, 195, @@ -747,8 +747,6 @@ static int si21xx_set_frontend(struct dvb_frontend *fe) rf_freq = 10 * c->frequency ; data_rate = c->symbol_rate / 100; - status = PASS; - band_low = (rf_freq - lnb_lo) - ((lnb_uncertanity * 200) + (data_rate * 135)) / 200; @@ -832,6 +830,9 @@ static int si21xx_set_frontend(struct dvb_frontend *fe) state->fs = sample_rate;/*ADC MHz*/ si21xx_setacquire(fe, c->symbol_rate, c->fec_inner); + if (status) + return -EREMOTEIO; + return 0; } diff --git a/drivers/media/dvb-frontends/sp887x.c b/drivers/media/dvb-frontends/sp887x.c index c89a91a3daf4..146e7f2dd3c5 100644 --- a/drivers/media/dvb-frontends/sp887x.c +++ b/drivers/media/dvb-frontends/sp887x.c @@ -140,7 +140,7 @@ static int sp887x_initial_setup (struct dvb_frontend* fe, const struct firmware u8 buf [BLOCKSIZE + 2]; int i; int fw_size = fw->size; - const unsigned char *mem = fw->data; + const unsigned char *mem = fw->data + 10; dprintk("%s\n", __func__); @@ -148,8 +148,6 @@ static int sp887x_initial_setup (struct dvb_frontend* fe, const struct firmware if (fw_size < FW_SIZE + 10) return -ENODEV; - mem = fw->data + 10; - /* soft reset */ sp887x_writereg(state, 0xf1a, 0x000); diff --git a/drivers/media/dvb-frontends/stb6100.c b/drivers/media/dvb-frontends/stb6100.c index d541d6613610..698866c4f15a 100644 --- a/drivers/media/dvb-frontends/stb6100.c +++ b/drivers/media/dvb-frontends/stb6100.c @@ -110,7 +110,7 @@ static const struct stb6100_regmask stb6100_template[] = { /* * Currently unused. Some boards might need it in the future */ -static inline void stb6100_normalise_regs(u8 regs[]) +static __always_unused inline void stb6100_normalise_regs(u8 regs[]) { int i; diff --git a/drivers/media/dvb-frontends/stv0367.c b/drivers/media/dvb-frontends/stv0367.c index 6c2b05fae1c5..95e376f23506 100644 --- a/drivers/media/dvb-frontends/stv0367.c +++ b/drivers/media/dvb-frontends/stv0367.c @@ -1797,11 +1797,7 @@ static u32 stv0367cab_get_mclk(struct dvb_frontend *fe, u32 ExtClk_Hz) static u32 stv0367cab_get_adc_freq(struct dvb_frontend *fe, u32 ExtClk_Hz) { - u32 ADCClk_Hz = ExtClk_Hz; - - ADCClk_Hz = stv0367cab_get_mclk(fe, ExtClk_Hz); - - return ADCClk_Hz; + return stv0367cab_get_mclk(fe, ExtClk_Hz); } static enum stv0367cab_mod stv0367cab_SetQamSize(struct stv0367_state *state, |