diff options
Diffstat (limited to 'drivers/dahdi/xpp/xpp_dahdi.c')
-rw-r--r-- | drivers/dahdi/xpp/xpp_dahdi.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/dahdi/xpp/xpp_dahdi.c b/drivers/dahdi/xpp/xpp_dahdi.c index 6e7ee85..33fb137 100644 --- a/drivers/dahdi/xpp/xpp_dahdi.c +++ b/drivers/dahdi/xpp/xpp_dahdi.c @@ -940,6 +940,12 @@ static int xpp_hooksig(struct dahdi_chan *chan, enum dahdi_txsig txsig) __FUNCTION__, pos); return -ENODEV; } + if(!xpd->xops->card_hooksig) { + LINE_ERR(xpd, pos, + "%s: No hooksig method for this channel. Ignore.\n", + __FUNCTION__); + return -ENODEV; + } xbus = xpd->xbus; BUG_ON(!xbus); DBG(SIGNAL, "Setting %s to %s (%d)\n", chan->name, txsig2str(txsig), txsig); @@ -1081,7 +1087,8 @@ int dahdi_register_xpd(xpd_t *xpd) span->open = xpp_open; span->close = xpp_close; span->flags = DAHDI_FLAG_RBS; - span->hooksig = xpp_hooksig; /* Only with RBS bits */ + if(xops->card_hooksig) + span->hooksig = xpp_hooksig; /* Only with RBS bits */ span->ioctl = xpp_ioctl; span->maint = xpp_maint; /* |