summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTzafrir Cohen <tzafrir.cohen@xorcom.com>2009-05-19 15:58:14 +0000
committerTzafrir Cohen <tzafrir.cohen@xorcom.com>2009-05-19 15:58:14 +0000
commitbc110fe9b114b8e3b99f068ad9b3aac6466ee63d (patch)
tree48d460edef7ef0b94583e18d95ef5f99a3c74f99
parent3edbbea09a2931b9a6cc9154576b67edcfa37218 (diff)
xpp: report in sysfs if bri module uses hardhdlc support
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@6640 a0bf4364-ded3-4de4-8d8a-66a801d63aff
-rw-r--r--drivers/dahdi/xpp/card_bri.c25
-rw-r--r--drivers/dahdi/xpp/xdefs.h2
2 files changed, 26 insertions, 1 deletions
diff --git a/drivers/dahdi/xpp/card_bri.c b/drivers/dahdi/xpp/card_bri.c
index 47e62a3..fb5fdd2 100644
--- a/drivers/dahdi/xpp/card_bri.c
+++ b/drivers/dahdi/xpp/card_bri.c
@@ -443,7 +443,9 @@ static void bri_hdlc_abort(xpd_t *xpd, struct dahdi_chan *dchan, int event)
priv = xpd->priv;
BUG_ON(!priv);
#ifdef CONFIG_DAHDI_BRI_DCHANS
- dump_hex_buf(xpd, "D-Chan RX: dchan_rbuf", priv->dchan_rbuf, priv->dchan_r_idx);
+ if(debug & DBG_COMMANDS)
+ dump_hex_buf(xpd, "D-Chan(abort) RX: dchan_rbuf",
+ priv->dchan_rbuf, priv->dchan_r_idx);
priv->dchan_r_idx = 0;
#else
dahdi_hdlc_abort(dchan, event);
@@ -1143,6 +1145,7 @@ static int BRI_card_close(xpd_t *xpd, lineno_t pos)
#ifdef CONFIG_DAHDI_BRI_DCHANS
struct dahdi_chan *chan = XPD_CHAN(xpd, pos);
+ /* Clear D-Channel pending data */
chan->bytes2receive = 0;
chan->eofrx = 0;
chan->bytes2transmit = 0;
@@ -1753,6 +1756,22 @@ static int proc_bri_info_read(char *page, char **start, off_t off, int count, in
return len;
}
+static DRIVER_ATTR_READER(dchan_hardhdlc_show, drv,buf)
+{
+ int len = 0;
+
+#if defined(CONFIG_DAHDI_BRI_DCHANS)
+ len += sprintf(buf + len, "0\n");
+#elif defined(DAHDI_SIG_HARDHDLC)
+ len += sprintf(buf + len, "1\n");
+#else
+#error Cannot build BRI without BRISTUFF or HARDHDLC supprt
+#endif
+ return len;
+}
+
+static DRIVER_ATTR(dchan_hardhdlc,S_IRUGO,dchan_hardhdlc_show,NULL);
+
static int bri_xpd_probe(struct device *dev)
{
xpd_t *xpd;
@@ -1795,6 +1814,9 @@ static int __init card_bri_startup(void)
if((ret = xpd_driver_register(&bri_driver.driver)) < 0)
return ret;
+ ret = driver_create_file(&bri_driver.driver, &driver_attr_dchan_hardhdlc);
+ if(ret < 0)
+ return ret;
INFO("revision %s\n", XPP_VERSION);
#if defined(CONFIG_DAHDI_BRI_DCHANS)
INFO("FEATURE: WITH BRISTUFF\n");
@@ -1812,6 +1834,7 @@ static void __exit card_bri_cleanup(void)
{
DBG(GENERAL, "\n");
xproto_unregister(&PROTO_TABLE(BRI));
+ driver_remove_file(&bri_driver.driver, &driver_attr_dchan_hardhdlc);
xpd_driver_unregister(&bri_driver.driver);
}
diff --git a/drivers/dahdi/xpp/xdefs.h b/drivers/dahdi/xpp/xdefs.h
index 1a25e68..e55c706 100644
--- a/drivers/dahdi/xpp/xdefs.h
+++ b/drivers/dahdi/xpp/xdefs.h
@@ -135,6 +135,8 @@ typedef unsigned char byte;
#define DEVICE_ATTR_WRITER(name,dev,buf, count) \
ssize_t name(struct device *dev, const char *buf, size_t count)
#endif
+#define DRIVER_ATTR_READER(name,drv,buf) \
+ ssize_t name(struct device_driver *drv, char * buf)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
#define dev_name(dev) (dev)->bus_id