diff --git a/[refs] b/[refs] index 044e7b8a0d9e..5652b2b0cf01 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9ee476a56c3ee119a02b6823659f5698b1241f04 +refs/heads/master: be2b85a13543bbaf1a141b3a54f84c1e3b059e69 diff --git a/trunk/drivers/media/video/tuner-core.c b/trunk/drivers/media/video/tuner-core.c index 4369f6d12499..0e71a22f1d4f 100644 --- a/trunk/drivers/media/video/tuner-core.c +++ b/trunk/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; diff --git a/trunk/include/media/tuner.h b/trunk/include/media/tuner.h index b901373c6e10..da821a027e76 100644 --- a/trunk/include/media/tuner.h +++ b/trunk/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;