iio: buffer: refactor buffer attributes setup

Move all core (non-custom) buffer attributes to a vector to make it
easier to add more of them in the future.

Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
Octavian Purdila 2015-01-31 02:00:00 +02:00 committed by Jonathan Cameron
parent ee3ac290e8
commit 6da9b382bd

View File

@ -761,6 +761,11 @@ static struct device_attribute dev_attr_length_ro = __ATTR(length,
static DEVICE_ATTR(enable, S_IRUGO | S_IWUSR, static DEVICE_ATTR(enable, S_IRUGO | S_IWUSR,
iio_buffer_show_enable, iio_buffer_store_enable); iio_buffer_show_enable, iio_buffer_store_enable);
static struct attribute *iio_buffer_attrs[] = {
&dev_attr_length.attr,
&dev_attr_enable.attr,
};
int iio_buffer_alloc_sysfs_and_mask(struct iio_dev *indio_dev) int iio_buffer_alloc_sysfs_and_mask(struct iio_dev *indio_dev)
{ {
struct iio_dev_attr *p; struct iio_dev_attr *p;
@ -778,21 +783,23 @@ int iio_buffer_alloc_sysfs_and_mask(struct iio_dev *indio_dev)
attrcount++; attrcount++;
} }
buffer->buffer_group.name = "buffer"; attr = kcalloc(attrcount + ARRAY_SIZE(iio_buffer_attrs) + 1,
buffer->buffer_group.attrs = kcalloc(attrcount + 3, sizeof(struct attribute *), GFP_KERNEL);
sizeof(*buffer->buffer_group.attrs), GFP_KERNEL); if (!attr)
if (!buffer->buffer_group.attrs)
return -ENOMEM; return -ENOMEM;
if (buffer->access->set_length) memcpy(attr, iio_buffer_attrs, sizeof(iio_buffer_attrs));
buffer->buffer_group.attrs[0] = &dev_attr_length.attr; if (!buffer->access->set_length)
else attr[0] = &dev_attr_length_ro.attr;
buffer->buffer_group.attrs[0] = &dev_attr_length_ro.attr;
buffer->buffer_group.attrs[1] = &dev_attr_enable.attr;
if (buffer->attrs) if (buffer->attrs)
memcpy(&buffer->buffer_group.attrs[2], buffer->attrs, memcpy(&attr[ARRAY_SIZE(iio_buffer_attrs)], buffer->attrs,
sizeof(*&buffer->buffer_group.attrs) * attrcount); sizeof(struct attribute *) * attrcount);
buffer->buffer_group.attrs[attrcount+2] = NULL;
attr[attrcount + ARRAY_SIZE(iio_buffer_attrs)] = NULL;
buffer->buffer_group.name = "buffer";
buffer->buffer_group.attrs = attr;
indio_dev->groups[indio_dev->groupcounter++] = &buffer->buffer_group; indio_dev->groups[indio_dev->groupcounter++] = &buffer->buffer_group;