aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/pci/ddbridge/ddbridge-mci.c21
-rw-r--r--drivers/media/pci/ddbridge/ddbridge-mci.h4
2 files changed, 15 insertions, 10 deletions
diff --git a/drivers/media/pci/ddbridge/ddbridge-mci.c b/drivers/media/pci/ddbridge/ddbridge-mci.c
index a85ff3e6b919..8d9592e75ad5 100644
--- a/drivers/media/pci/ddbridge/ddbridge-mci.c
+++ b/drivers/media/pci/ddbridge/ddbridge-mci.c
@@ -38,10 +38,10 @@ struct mci_base {
38 struct mutex mci_lock; /* concurrent MCI access lock */ 38 struct mutex mci_lock; /* concurrent MCI access lock */
39 int count; 39 int count;
40 40
41 u8 tuner_use_count[4]; 41 u8 tuner_use_count[MCI_TUNER_MAX];
42 u8 assigned_demod[8]; 42 u8 assigned_demod[MCI_DEMOD_MAX];
43 u32 used_ldpc_bitrate[8]; 43 u32 used_ldpc_bitrate[MCI_DEMOD_MAX];
44 u8 demod_in_use[8]; 44 u8 demod_in_use[MCI_DEMOD_MAX];
45 u32 iq_mode; 45 u32 iq_mode;
46}; 46};
47 47
@@ -193,7 +193,7 @@ static int stop(struct dvb_frontend *fe)
193 u32 input = state->tuner; 193 u32 input = state->tuner;
194 194
195 memset(&cmd, 0, sizeof(cmd)); 195 memset(&cmd, 0, sizeof(cmd));
196 if (state->demod != 0xff) { 196 if (state->demod != DEMOD_UNUSED) {
197 cmd.command = MCI_CMD_STOP; 197 cmd.command = MCI_CMD_STOP;
198 cmd.demod = state->demod; 198 cmd.demod = state->demod;
199 mci_cmd(state, &cmd, NULL); 199 mci_cmd(state, &cmd, NULL);
@@ -209,10 +209,11 @@ static int stop(struct dvb_frontend *fe)
209 state->base->tuner_use_count[input]--; 209 state->base->tuner_use_count[input]--;
210 if (!state->base->tuner_use_count[input]) 210 if (!state->base->tuner_use_count[input])
211 mci_set_tuner(fe, input, 0); 211 mci_set_tuner(fe, input, 0);
212 state->base->demod_in_use[state->demod] = 0; 212 if (state->demod < MCI_DEMOD_MAX)
213 state->base->demod_in_use[state->demod] = 0;
213 state->base->used_ldpc_bitrate[state->nr] = 0; 214 state->base->used_ldpc_bitrate[state->nr] = 0;
214 state->demod = 0xff; 215 state->demod = DEMOD_UNUSED;
215 state->base->assigned_demod[state->nr] = 0xff; 216 state->base->assigned_demod[state->nr] = DEMOD_UNUSED;
216 state->base->iq_mode = 0; 217 state->base->iq_mode = 0;
217 mutex_unlock(&state->base->tuner_lock); 218 mutex_unlock(&state->base->tuner_lock);
218 state->started = 0; 219 state->started = 0;
@@ -250,7 +251,7 @@ static int start(struct dvb_frontend *fe, u32 flags, u32 modmask, u32 ts_config)
250 stat = -EBUSY; 251 stat = -EBUSY;
251 goto unlock; 252 goto unlock;
252 } 253 }
253 for (i = 0; i < 8; i++) { 254 for (i = 0; i < MCI_DEMOD_MAX; i++) {
254 used_ldpc_bitrate += state->base->used_ldpc_bitrate[i]; 255 used_ldpc_bitrate += state->base->used_ldpc_bitrate[i];
255 if (state->base->demod_in_use[i]) 256 if (state->base->demod_in_use[i])
256 used_demods++; 257 used_demods++;
@@ -342,7 +343,7 @@ static int start_iq(struct dvb_frontend *fe, u32 ts_config)
342 stat = -EBUSY; 343 stat = -EBUSY;
343 goto unlock; 344 goto unlock;
344 } 345 }
345 for (i = 0; i < 8; i++) 346 for (i = 0; i < MCI_DEMOD_MAX; i++)
346 if (state->base->demod_in_use[i]) 347 if (state->base->demod_in_use[i])
347 used_demods++; 348 used_demods++;
348 if (used_demods > 0) { 349 if (used_demods > 0) {
diff --git a/drivers/media/pci/ddbridge/ddbridge-mci.h b/drivers/media/pci/ddbridge/ddbridge-mci.h
index c4193c5ee095..453dcb9f8208 100644
--- a/drivers/media/pci/ddbridge/ddbridge-mci.h
+++ b/drivers/media/pci/ddbridge/ddbridge-mci.h
@@ -19,6 +19,10 @@
19#ifndef _DDBRIDGE_MCI_H_ 19#ifndef _DDBRIDGE_MCI_H_
20#define _DDBRIDGE_MCI_H_ 20#define _DDBRIDGE_MCI_H_
21 21
22#define MCI_DEMOD_MAX 8
23#define MCI_TUNER_MAX 4
24#define DEMOD_UNUSED (0xFF)
25
22#define MCI_CONTROL (0x500) 26#define MCI_CONTROL (0x500)
23#define MCI_COMMAND (0x600) 27#define MCI_COMMAND (0x600)
24#define MCI_RESULT (0x680) 28#define MCI_RESULT (0x680)