Revert "[media] dvb_frontend: merge duplicate dvb_tuner_ops.release implementations"

While this patch sounded a good idea, unfortunately, it causes
bad dependencies, as drivers that would otherwise work without
the DVB core will now break:

ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/tea5767.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/tea5761.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/tda827x.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/tda18218.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/qt1010.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/mt2266.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/mt20xx.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/mt2060.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/mc44s803.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/fc0013.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/fc0012.ko] undefined!
ERROR: "dvb_tuner_simple_release" [drivers/media/tuners/fc0011.ko] undefined!

So, we have to revert it.

Note: as the argument for the release ops changed from "int"
to "void", we needed to change it at the revert patch, to
avoid compilation issues like:
	drivers/media/tuners/tea5767.c:437:23: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
	  .release           = tea5767_release,
	                       ^~~~~~~~~~~~~~~

This reverts commit 22a613e89825ea7a3984a968463cc6d425bd8856.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
diff --git a/drivers/media/dvb-frontends/dib0070.c b/drivers/media/dvb-frontends/dib0070.c
index d9f1bc2..befc817 100644
--- a/drivers/media/dvb-frontends/dib0070.c
+++ b/drivers/media/dvb-frontends/dib0070.c
@@ -722,6 +722,12 @@
 	return 0;
 }
 
+static void dib0070_release(struct dvb_frontend *fe)
+{
+	kfree(fe->tuner_priv);
+	fe->tuner_priv = NULL;
+}
+
 static const struct dvb_tuner_ops dib0070_ops = {
 	.info = {
 		.name           = "DiBcom DiB0070",
@@ -729,7 +735,7 @@
 		.frequency_max  = 860000000,
 		.frequency_step =      1000,
 	},
-	.release       = dvb_tuner_simple_release,
+	.release       = dib0070_release,
 
 	.init          = dib0070_wakeup,
 	.sleep         = dib0070_sleep,
diff --git a/drivers/media/dvb-frontends/dib0090.c b/drivers/media/dvb-frontends/dib0090.c
index 7b4bee5..fd3b332 100644
--- a/drivers/media/dvb-frontends/dib0090.c
+++ b/drivers/media/dvb-frontends/dib0090.c
@@ -2526,6 +2526,12 @@
 	return ret;
 }
 
+static void dib0090_release(struct dvb_frontend *fe)
+{
+	kfree(fe->tuner_priv);
+	fe->tuner_priv = NULL;
+}
+
 enum frontend_tune_state dib0090_get_tune_state(struct dvb_frontend *fe)
 {
 	struct dib0090_state *state = fe->tuner_priv;
@@ -2587,7 +2593,7 @@
 		 .frequency_max = 860000000,
 		 .frequency_step = 1000,
 		 },
-	.release = dvb_tuner_simple_release,
+	.release = dib0090_release,
 
 	.init = dib0090_wakeup,
 	.sleep = dib0090_sleep,
@@ -2602,7 +2608,7 @@
 		 .frequency_max = 860000000,
 		 .frequency_step = 1000,
 		 },
-	.release = dvb_tuner_simple_release,
+	.release = dib0090_release,
 
 	.init = NULL,
 	.sleep = NULL,
diff --git a/drivers/media/dvb-frontends/dvb-pll.c b/drivers/media/dvb-frontends/dvb-pll.c
index 56832d6..ef976eb 100644
--- a/drivers/media/dvb-frontends/dvb-pll.c
+++ b/drivers/media/dvb-frontends/dvb-pll.c
@@ -606,6 +606,12 @@
 	return (div * desc->entries[i].stepsize) - desc->iffreq;
 }
 
+static void dvb_pll_release(struct dvb_frontend *fe)
+{
+	kfree(fe->tuner_priv);
+	fe->tuner_priv = NULL;
+}
+
 static int dvb_pll_sleep(struct dvb_frontend *fe)
 {
 	struct dvb_pll_priv *priv = fe->tuner_priv;
@@ -738,7 +744,7 @@
 }
 
 static const struct dvb_tuner_ops dvb_pll_tuner_ops = {
-	.release = dvb_tuner_simple_release,
+	.release = dvb_pll_release,
 	.sleep = dvb_pll_sleep,
 	.init = dvb_pll_init,
 	.set_params = dvb_pll_set_params,
diff --git a/drivers/media/dvb-frontends/itd1000.c b/drivers/media/dvb-frontends/itd1000.c
index d09f718..4755251 100644
--- a/drivers/media/dvb-frontends/itd1000.c
+++ b/drivers/media/dvb-frontends/itd1000.c
@@ -348,6 +348,12 @@
 	return 0;
 }
 
+static void itd1000_release(struct dvb_frontend *fe)
+{
+	kfree(fe->tuner_priv);
+	fe->tuner_priv = NULL;
+}
+
 static const struct dvb_tuner_ops itd1000_tuner_ops = {
 	.info = {
 		.name           = "Integrant ITD1000",
@@ -356,7 +362,7 @@
 		.frequency_step = 125,     /* kHz for QPSK frontends */
 	},
 
-	.release       = dvb_tuner_simple_release,
+	.release       = itd1000_release,
 
 	.init          = itd1000_init,
 	.sleep         = itd1000_sleep,
diff --git a/drivers/media/dvb-frontends/ix2505v.c b/drivers/media/dvb-frontends/ix2505v.c
index 7742a7a..ca37168 100644
--- a/drivers/media/dvb-frontends/ix2505v.c
+++ b/drivers/media/dvb-frontends/ix2505v.c
@@ -94,6 +94,15 @@
 	return 0;
 }
 
+static void ix2505v_release(struct dvb_frontend *fe)
+{
+	struct ix2505v_state *state = fe->tuner_priv;
+
+	fe->tuner_priv = NULL;
+	kfree(state);
+
+}
+
 /**
  *  Data write format of the Sharp IX2505V B0017
  *
@@ -254,7 +263,7 @@
 		.frequency_min = 950000,
 		.frequency_max = 2175000
 	},
-	.release = dvb_tuner_simple_release,
+	.release = ix2505v_release,
 	.set_params = ix2505v_set_params,
 	.get_frequency = ix2505v_get_frequency,
 };
diff --git a/drivers/media/dvb-frontends/stb6000.c b/drivers/media/dvb-frontends/stb6000.c
index 5252d48..69c0389 100644
--- a/drivers/media/dvb-frontends/stb6000.c
+++ b/drivers/media/dvb-frontends/stb6000.c
@@ -41,6 +41,12 @@
 	u32 frequency;
 };
 
+static void stb6000_release(struct dvb_frontend *fe)
+{
+	kfree(fe->tuner_priv);
+	fe->tuner_priv = NULL;
+}
+
 static int stb6000_sleep(struct dvb_frontend *fe)
 {
 	struct stb6000_priv *priv = fe->tuner_priv;
@@ -185,7 +191,7 @@
 		.frequency_min = 950000,
 		.frequency_max = 2150000
 	},
-	.release = dvb_tuner_simple_release,
+	.release = stb6000_release,
 	.sleep = stb6000_sleep,
 	.set_params = stb6000_set_params,
 	.get_frequency = stb6000_get_frequency,
diff --git a/drivers/media/dvb-frontends/stb6100.c b/drivers/media/dvb-frontends/stb6100.c
index befd26b..17a955d 100644
--- a/drivers/media/dvb-frontends/stb6100.c
+++ b/drivers/media/dvb-frontends/stb6100.c
@@ -61,6 +61,8 @@
 	u8   reg;
 };
 
+static void stb6100_release(struct dvb_frontend *fe);
+
 static const struct stb6100_lkup lkup[] = {
 	{       0,  950000, 0x0a },
 	{  950000, 1000000, 0x0a },
@@ -534,7 +536,7 @@
 	.set_params	= stb6100_set_params,
 	.get_frequency  = stb6100_get_frequency,
 	.get_bandwidth  = stb6100_get_bandwidth,
-	.release	= dvb_tuner_simple_release
+	.release	= stb6100_release
 };
 
 struct dvb_frontend *stb6100_attach(struct dvb_frontend *fe,
@@ -558,6 +560,14 @@
 	return fe;
 }
 
+static void stb6100_release(struct dvb_frontend *fe)
+{
+	struct stb6100_state *state = fe->tuner_priv;
+
+	fe->tuner_priv = NULL;
+	kfree(state);
+}
+
 EXPORT_SYMBOL(stb6100_attach);
 MODULE_PARM_DESC(verbose, "Set Verbosity level");
 
diff --git a/drivers/media/dvb-frontends/stv6110.c b/drivers/media/dvb-frontends/stv6110.c
index d9a88ad..6a72d0b 100644
--- a/drivers/media/dvb-frontends/stv6110.c
+++ b/drivers/media/dvb-frontends/stv6110.c
@@ -59,6 +59,12 @@
 		return b - a;
 };
 
+static void stv6110_release(struct dvb_frontend *fe)
+{
+	kfree(fe->tuner_priv);
+	fe->tuner_priv = NULL;
+}
+
 static int stv6110_write_regs(struct dvb_frontend *fe, u8 buf[],
 							int start, int len)
 {
@@ -383,7 +389,7 @@
 		.frequency_step = 1000,
 	},
 	.init = stv6110_init,
-	.release = dvb_tuner_simple_release,
+	.release = stv6110_release,
 	.sleep = stv6110_sleep,
 	.set_params = stv6110_set_params,
 	.get_frequency = stv6110_get_frequency,
diff --git a/drivers/media/dvb-frontends/stv6110x.c b/drivers/media/dvb-frontends/stv6110x.c
index 70d5641..66eba38 100644
--- a/drivers/media/dvb-frontends/stv6110x.c
+++ b/drivers/media/dvb-frontends/stv6110x.c
@@ -335,6 +335,14 @@
 }
 
 
+static void stv6110x_release(struct dvb_frontend *fe)
+{
+	struct stv6110x_state *stv6110x = fe->tuner_priv;
+
+	fe->tuner_priv = NULL;
+	kfree(stv6110x);
+}
+
 static const struct dvb_tuner_ops stv6110x_ops = {
 	.info = {
 		.name		= "STV6110(A) Silicon Tuner",
@@ -342,7 +350,7 @@
 		.frequency_max	= 2150000,
 		.frequency_step	= 0,
 	},
-	.release		= dvb_tuner_simple_release,
+	.release		= stv6110x_release
 };
 
 static const struct stv6110x_devctl stv6110x_ctl = {
diff --git a/drivers/media/dvb-frontends/tda18271c2dd.c b/drivers/media/dvb-frontends/tda18271c2dd.c
index a324f30..6859fa5 100644
--- a/drivers/media/dvb-frontends/tda18271c2dd.c
+++ b/drivers/media/dvb-frontends/tda18271c2dd.c
@@ -1126,6 +1126,13 @@
 	return 0;
 }
 
+static void release(struct dvb_frontend *fe)
+{
+	kfree(fe->tuner_priv);
+	fe->tuner_priv = NULL;
+}
+
+
 static int set_params(struct dvb_frontend *fe)
 {
 	struct tda_state *state = fe->tuner_priv;
@@ -1219,7 +1226,7 @@
 	.init              = init,
 	.sleep             = sleep,
 	.set_params        = set_params,
-	.release           = dvb_tuner_simple_release,
+	.release           = release,
 	.get_if_frequency  = get_if_frequency,
 	.get_bandwidth     = get_bandwidth,
 };
diff --git a/drivers/media/dvb-frontends/tda665x.c b/drivers/media/dvb-frontends/tda665x.c
index 39a1eb2..a63dec4 100644
--- a/drivers/media/dvb-frontends/tda665x.c
+++ b/drivers/media/dvb-frontends/tda665x.c
@@ -197,11 +197,19 @@
 	return 0;
 }
 
+static void tda665x_release(struct dvb_frontend *fe)
+{
+	struct tda665x_state *state = fe->tuner_priv;
+
+	fe->tuner_priv = NULL;
+	kfree(state);
+}
+
 static const struct dvb_tuner_ops tda665x_ops = {
 	.get_status	= tda665x_get_status,
 	.set_params	= tda665x_set_params,
 	.get_frequency	= tda665x_get_frequency,
-	.release	= dvb_tuner_simple_release,
+	.release	= tda665x_release
 };
 
 struct dvb_frontend *tda665x_attach(struct dvb_frontend *fe,
diff --git a/drivers/media/dvb-frontends/tda8261.c b/drivers/media/dvb-frontends/tda8261.c
index 65f729f..4eb294f 100644
--- a/drivers/media/dvb-frontends/tda8261.c
+++ b/drivers/media/dvb-frontends/tda8261.c
@@ -152,6 +152,14 @@
 	return 0;
 }
 
+static void tda8261_release(struct dvb_frontend *fe)
+{
+	struct tda8261_state *state = fe->tuner_priv;
+
+	fe->tuner_priv = NULL;
+	kfree(state);
+}
+
 static const struct dvb_tuner_ops tda8261_ops = {
 
 	.info = {
@@ -164,7 +172,7 @@
 	.set_params	= tda8261_set_params,
 	.get_frequency	= tda8261_get_frequency,
 	.get_status	= tda8261_get_status,
-	.release	= dvb_tuner_simple_release,
+	.release	= tda8261_release
 };
 
 struct dvb_frontend *tda8261_attach(struct dvb_frontend *fe,
diff --git a/drivers/media/dvb-frontends/tda826x.c b/drivers/media/dvb-frontends/tda826x.c
index bf8946c..da427b4 100644
--- a/drivers/media/dvb-frontends/tda826x.c
+++ b/drivers/media/dvb-frontends/tda826x.c
@@ -41,6 +41,12 @@
 	u32 frequency;
 };
 
+static void tda826x_release(struct dvb_frontend *fe)
+{
+	kfree(fe->tuner_priv);
+	fe->tuner_priv = NULL;
+}
+
 static int tda826x_sleep(struct dvb_frontend *fe)
 {
 	struct tda826x_priv *priv = fe->tuner_priv;
@@ -128,7 +134,7 @@
 		.frequency_min = 950000,
 		.frequency_max = 2175000
 	},
-	.release = dvb_tuner_simple_release,
+	.release = tda826x_release,
 	.sleep = tda826x_sleep,
 	.set_params = tda826x_set_params,
 	.get_frequency = tda826x_get_frequency,
diff --git a/drivers/media/dvb-frontends/tua6100.c b/drivers/media/dvb-frontends/tua6100.c
index 9e9a8ad..05ee16d 100644
--- a/drivers/media/dvb-frontends/tua6100.c
+++ b/drivers/media/dvb-frontends/tua6100.c
@@ -42,6 +42,12 @@
 	u32 frequency;
 };
 
+static void tua6100_release(struct dvb_frontend *fe)
+{
+	kfree(fe->tuner_priv);
+	fe->tuner_priv = NULL;
+}
+
 static int tua6100_sleep(struct dvb_frontend *fe)
 {
 	struct tua6100_priv *priv = fe->tuner_priv;
@@ -157,7 +163,7 @@
 		.frequency_max = 2150000,
 		.frequency_step = 1000,
 	},
-	.release = dvb_tuner_simple_release,
+	.release = tua6100_release,
 	.sleep = tua6100_sleep,
 	.set_params = tua6100_set_params,
 	.get_frequency = tua6100_get_frequency,
diff --git a/drivers/media/dvb-frontends/zl10036.c b/drivers/media/dvb-frontends/zl10036.c
index 0116557..a6d020f 100644
--- a/drivers/media/dvb-frontends/zl10036.c
+++ b/drivers/media/dvb-frontends/zl10036.c
@@ -134,6 +134,14 @@
 	return 0;
 }
 
+static void zl10036_release(struct dvb_frontend *fe)
+{
+	struct zl10036_state *state = fe->tuner_priv;
+
+	fe->tuner_priv = NULL;
+	kfree(state);
+}
+
 static int zl10036_sleep(struct dvb_frontend *fe)
 {
 	struct zl10036_state *state = fe->tuner_priv;
@@ -443,7 +451,7 @@
 		.frequency_max = 2175000
 	},
 	.init = zl10036_init,
-	.release = dvb_tuner_simple_release,
+	.release = zl10036_release,
 	.sleep = zl10036_sleep,
 	.set_params = zl10036_set_params,
 	.get_frequency = zl10036_get_frequency,