Skip to content

Commit

Permalink
V4L/DVB (4392): Fix dst_ca attach
Browse files Browse the repository at this point in the history
Move the call to dst_attach into the dst_attach function to eliminate
problems caused with dvb_attach.

Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Acked-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Andrew de Quincey authored and Mauro Carvalho Chehab committed Sep 26, 2006
1 parent f52a838 commit 0912ad0
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 14 deletions.
11 changes: 5 additions & 6 deletions drivers/media/dvb/bt8xx/dst.c
Original file line number Diff line number Diff line change
Expand Up @@ -1715,12 +1715,6 @@ 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;

#ifdef CONFIG_DVB_CORE_ATTACH
if (state->dst_hw_cap & DST_TYPE_HAS_CA)
symbol_put(dst_ca_attach);
#endif

kfree(state);
}

Expand Down Expand Up @@ -1758,6 +1752,11 @@ 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) */
}

Expand Down
3 changes: 1 addition & 2 deletions drivers/media/dvb/bt8xx/dst_ca.c
Original file line number Diff line number Diff line change
Expand Up @@ -699,12 +699,11 @@ static struct dvb_device dvbdev_ca = {
.fops = &dst_ca_fops
};

ssize_t dst_ca_attach(struct dst_state *dst, struct dvb_adapter *dvb_adapter)
void dst_ca_attach(struct dst_state *dst, struct dvb_adapter *dvb_adapter)
{
struct dvb_device *dvbdev;
dprintk(verbose, DST_CA_ERROR, 1, "registering DST-CA device");
dvb_register_device(dvb_adapter, &dvbdev, &dvbdev_ca, dst, DVB_DEVICE_CA);
return 1; // must return non-zero for dvb_attach() to work
}

EXPORT_SYMBOL(dst_ca_attach);
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb/bt8xx/dst_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ int write_dst(struct dst_state *state, u8 * data, u8 len);
int read_dst(struct dst_state *state, u8 * ret, u8 len);
u8 dst_check_sum(u8 * buf, u32 len);
struct dst_state* dst_attach(struct dst_state* state, struct dvb_adapter *dvb_adapter);
ssize_t dst_ca_attach(struct dst_state *state, struct dvb_adapter *dvb_adapter);
void dst_ca_attach(struct dst_state *state, struct dvb_adapter *dvb_adapter);
int dst_gpio_outb(struct dst_state* state, u32 mask, u32 enbb, u32 outhigh, int delay);

int dst_command(struct dst_state* state, u8 * data, u8 len);
Expand Down
5 changes: 0 additions & 5 deletions drivers/media/dvb/bt8xx/dvb-bt8xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -676,11 +676,6 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
break;
}
card->fe = &state->frontend;

/* Attach other DST peripherals if any */
/* Conditional Access device */
if (state->dst_hw_cap & DST_TYPE_HAS_CA)
dvb_attach(dst_ca_attach, state, &card->dvb_adapter);
break;

case BTTV_BOARD_PINNACLESAT:
Expand Down

0 comments on commit 0912ad0

Please sign in to comment.