Browse Source

V4L/DVB (5741): Tuner: add release callback

Individual tuner drivers are now allocating memory themselves for
their own private data structures.  This changeset adds a release
callback to the tuner operations, so that newer drivers that may
require more complex data structures may release this private data
themselves.

Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Michael Krufky 18 years ago
parent
commit
be2b85a135
2 changed files with 6 additions and 0 deletions
  1. 5 0
      drivers/media/video/tuner-core.c
  2. 1 0
      include/media/tuner.h

+ 5 - 0
drivers/media/video/tuner-core.c

@@ -178,8 +178,11 @@ static void set_type(struct i2c_client *c, unsigned int type,
 	}
 
 	/* discard private data, in case set_type() was previously called */
+	if (t->release)
+		t->release(c);
 	kfree(t->priv);
 	t->priv = NULL;
+
 	switch (t->type) {
 	case TUNER_MT2032:
 		microtune_init(c);
@@ -561,6 +564,8 @@ static int tuner_detach(struct i2c_client *client)
 		return err;
 	}
 
+	if (t->release)
+		t->release(client);
 	kfree(t->priv);
 	kfree(t);
 	return 0;

+ 1 - 0
include/media/tuner.h

@@ -215,6 +215,7 @@ struct tuner {
 	int  (*get_afc)(struct i2c_client *c);
 	void (*tuner_status)(struct i2c_client *c);
 	void (*standby)(struct i2c_client *c);
+	void (*release)(struct i2c_client *c);
 };
 
 extern unsigned const int tuner_count;