From 3359e84a8d937b96153af9b1d608b68f9c0a949b Mon Sep 17 00:00:00 2001 From: Tzafrir Cohen Date: Wed, 23 May 2012 12:35:56 +0000 Subject: sysfs: add a linecompat span attribute This way, dahdi_genconf may gather needed information without issuing ioctl()'s Signed-off-by: Shaun Ruffell Acked-by: Tzafrir Cohen git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@10684 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/dahdi-sysfs.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'drivers/dahdi/dahdi-sysfs.c') diff --git a/drivers/dahdi/dahdi-sysfs.c b/drivers/dahdi/dahdi-sysfs.c index 8bfbb9a..d7bf608 100644 --- a/drivers/dahdi/dahdi-sysfs.c +++ b/drivers/dahdi/dahdi-sysfs.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "dahdi.h" #include "dahdi-sysfs.h" @@ -201,6 +202,27 @@ static BUS_ATTR_READER(lineconfig_show, dev, buf) return len; } +static BUS_ATTR_READER(linecompat_show, dev, buf) +{ + struct dahdi_span *span; + int bit; + int len = 0; + + span = dev_to_span(dev); + for (bit = 4; bit <= 12; bit++) { + if (span->linecompat & (1 << bit)) { + const char *name = dahdi_lineconfig_bit_name(bit); + if (name) + len += sprintf(buf + len, "%s ", name); + } + } + /* chomp */ + while (len > 0 && isspace(buf[len - 1])) + buf[--len] = '\0'; + len += sprintf(buf + len, "\n"); + return len; +} + static struct device_attribute span_dev_attrs[] = { __ATTR_RO(name), __ATTR_RO(desc), @@ -214,6 +236,7 @@ static struct device_attribute span_dev_attrs[] = { __ATTR_RO(basechan), __ATTR_RO(channels), __ATTR_RO(lineconfig), + __ATTR_RO(linecompat), __ATTR_NULL, }; -- cgit v1.2.3