forked from Minki/linux
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:
parent
ee3ac290e8
commit
6da9b382bd
@ -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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user