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>
This commit is contained in:
parent
9ee476a56c
commit
be2b85a135
2 changed files with 6 additions and 0 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue