V4L/DVB (9174): Allow custom inittab for ST STV0288 demodulator.

Allow custom inittab for ST STV0288 demodulator,
as it is needed for DvbWorld USB card.

Signed-off-by: Igor M. Liplianin <liplianin@me.by>
Signed-off-by: Steven Toth <stoth@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/dvb/frontends/stv0288.c b/drivers/media/dvb/frontends/stv0288.c
index 90e72e7..ff1194d 100644
--- a/drivers/media/dvb/frontends/stv0288.c
+++ b/drivers/media/dvb/frontends/stv0288.c
@@ -328,16 +328,28 @@
 {
 	struct stv0288_state *state = fe->demodulator_priv;
 	int i;
+	u8 reg;
+	u8 val;
 
 	dprintk("stv0288: init chip\n");
 	stv0288_writeregI(state, 0x41, 0x04);
 	msleep(50);
 
-	for (i = 0; !(stv0288_inittab[i] == 0xff &&
+	/* we have default inittab */
+	if (state->config->inittab == NULL) {
+		for (i = 0; !(stv0288_inittab[i] == 0xff &&
 				stv0288_inittab[i + 1] == 0xff); i += 2)
-		stv0288_writeregI(state, stv0288_inittab[i],
-						stv0288_inittab[i + 1]);
-
+			stv0288_writeregI(state, stv0288_inittab[i],
+					stv0288_inittab[i + 1]);
+	} else {
+		for (i = 0; ; i += 2)  {
+			reg = state->config->inittab[i];
+			val = state->config->inittab[i+1];
+			if (reg == 0xff && val == 0xff)
+				break;
+			stv0288_writeregI(state, reg, val);
+		}
+	}
 	return 0;
 }