summaryrefslogtreecommitdiff
path: root/drivers/media/dvb/bt8xx/dst.c
diff options
context:
space:
mode:
authorManu Abraham <abraham.manu@gmail.com>2006-08-08 22:48:08 +0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-09-26 18:53:37 +0400
commitbbdd11fa957913d6648cabbca59be1da479180ed (patch)
tree48d00e950c54a6cb1d04c3eba4e742a0c829ad9e /drivers/media/dvb/bt8xx/dst.c
parente4a49d76ca4e2c0b2b4c89d59d43486d781ffe95 (diff)
downloadlinux-bbdd11fa957913d6648cabbca59be1da479180ed.tar.xz
V4L/DVB (4432): Fix Circular dependencies
Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/dvb/bt8xx/dst.c')
-rw-r--r--drivers/media/dvb/bt8xx/dst.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/media/dvb/bt8xx/dst.c b/drivers/media/dvb/bt8xx/dst.c
index 52b6fb2455f9..9f72b7000c08 100644
--- a/drivers/media/dvb/bt8xx/dst.c
+++ b/drivers/media/dvb/bt8xx/dst.c
@@ -1715,6 +1715,15 @@ static int dst_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_paramet
static void dst_release(struct dvb_frontend *fe)
{
struct dst_state *state = fe->demodulator_priv;
+ if (state->dst_ca) {
+ dvb_unregister_device(state->dst_ca);
+#ifdef CONFIG_DVB_CORE_ATTACH
+ symbol_put(dst_ca_attach);
+#endif
+ }
+#ifdef CONFIG_DVB_CORE_ATTACH
+ symbol_put(dst_attach);
+#endif
kfree(state);
}
@@ -1752,11 +1761,6 @@ struct dst_state *dst_attach(struct dst_state *state, struct dvb_adapter *dvb_ad
}
state->frontend.demodulator_priv = state;
- /* Attach other DST peripherals if any */
- /* Conditional Access device */
- if (state->dst_hw_cap & DST_TYPE_HAS_CA)
- dst_ca_attach(state, dvb_adapter);
-
return state; /* Manu (DST is a card not a frontend) */
}