diff options
Diffstat (limited to 'drivers/dahdi/xpp/xbus-sysfs.c')
-rw-r--r-- | drivers/dahdi/xpp/xbus-sysfs.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/dahdi/xpp/xbus-sysfs.c b/drivers/dahdi/xpp/xbus-sysfs.c index 1094a19..67c4c28 100644 --- a/drivers/dahdi/xpp/xbus-sysfs.c +++ b/drivers/dahdi/xpp/xbus-sysfs.c @@ -612,6 +612,26 @@ static DEVICE_ATTR_READER(type_show, dev, buf) return len; } +static DEVICE_ATTR_READER(offhook_show, dev, buf) +{ + xpd_t *xpd; + int len = 0; + int i; + + BUG_ON(!dev); + xpd = dev_to_xpd(dev); + if(!xpd) + return -ENODEV; + for_each_line(xpd, i) { + len += sprintf(buf + len, "%d ", IS_OFFHOOK(xpd, i)); + } + if(len) { + len--; /* backout last space */ + len += sprintf(buf + len, "\n"); + } + return len; +} + static int xpd_match(struct device *dev, struct device_driver *driver) { struct xpd_driver *xpd_driver; @@ -634,6 +654,7 @@ static struct device_attribute xpd_dev_attrs[] = { __ATTR(blink, S_IRUGO | S_IWUSR, blink_show, blink_store), __ATTR(span, S_IRUGO | S_IWUSR, span_show, span_store), __ATTR_RO(type), + __ATTR_RO(offhook), __ATTR_NULL, }; |