V4L/DVB (6726): tda18271: set image rejection validity

Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/dvb/frontends/tda18271-fe.c b/drivers/media/dvb/frontends/tda18271-fe.c
index 01de75e..fee38c1 100644
--- a/drivers/media/dvb/frontends/tda18271-fe.c
+++ b/drivers/media/dvb/frontends/tda18271-fe.c
@@ -578,7 +578,16 @@
 
 	regs[R_EP4]  &= ~0x80; /* turn this bit on only for fm */
 
-	/* FIXME: image rejection validity EP5[2:0] */
+	/* image rejection validity EP5[2:0] */
+	i = 0;
+	while ((tda18271_ir_measure[i].rfmax * 1000) < freq) {
+		if (tda18271_ir_measure[i].rfmax == 0)
+			break;
+		i++;
+	}
+	dbg_map("ir measure, i = %d\n", i);
+	regs[R_EP5] &= ~0x07;
+	regs[R_EP5] |= tda18271_ir_measure[i].val;
 
 	/* calculate MAIN PLL */
 	N = freq + ifc;
diff --git a/drivers/media/dvb/frontends/tda18271-priv.h b/drivers/media/dvb/frontends/tda18271-priv.h
index 71b4d79..a3158eb 100644
--- a/drivers/media/dvb/frontends/tda18271-priv.h
+++ b/drivers/media/dvb/frontends/tda18271-priv.h
@@ -84,6 +84,7 @@
 extern struct tda18271_map tda18271_rf_band[];
 extern struct tda18271_map tda18271_gain_taper[];
 extern struct tda18271_map tda18271_rf_cal[];
+extern struct tda18271_map tda18271_ir_measure[];
 
 #endif /* __TDA18271_PRIV_H__ */
 
diff --git a/drivers/media/dvb/frontends/tda18271-tables.c b/drivers/media/dvb/frontends/tda18271-tables.c
index a018b51..d65d341 100644
--- a/drivers/media/dvb/frontends/tda18271-tables.c
+++ b/drivers/media/dvb/frontends/tda18271-tables.c
@@ -244,6 +244,14 @@
 	{ .rfmax =     0, .val = 0x00 }, /* end */
 };
 
+struct tda18271_map tda18271_ir_measure[] = {
+	{ .rfmax =  30000, .val = 4},
+	{ .rfmax = 200000, .val = 5},
+	{ .rfmax = 600000, .val = 6},
+	{ .rfmax = 865000, .val = 7},
+	{ .rfmax =      0, .val = 0}, /* end */
+};
+
 /*
  * Overrides for Emacs so that we follow Linus's tabbing style.
  * ---------------------------------------------------------------------------