Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 363564
b: refs/heads/master
c: 8655cc4
h: refs/heads/master
v: v3
  • Loading branch information
Jonathan Cameron committed Mar 17, 2013
1 parent 27ce283 commit c0b0ef1
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 10f5b14811023df0ba1a936b14880eabb6d9c199
refs/heads/master: 8655cc490e83f66476de8c1294411860325c3531
30 changes: 30 additions & 0 deletions trunk/drivers/iio/industrialio-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -708,6 +708,36 @@ static int iio_device_add_channel_sysfs(struct iio_dev *indio_dev,
goto error_ret;
attrcount++;
}
for_each_set_bit(i, &chan->info_mask_separate, sizeof(long)*8) {
ret = __iio_add_chan_devattr(iio_chan_info_postfix[i],
chan,
&iio_read_channel_info,
&iio_write_channel_info,
i,
0,
&indio_dev->dev,
&indio_dev->channel_attr_list);
if (ret < 0)
goto error_ret;
attrcount++;
}
for_each_set_bit(i, &chan->info_mask_shared_by_type, sizeof(long)*8) {
ret = __iio_add_chan_devattr(iio_chan_info_postfix[i],
chan,
&iio_read_channel_info,
&iio_write_channel_info,
i,
1,
&indio_dev->dev,
&indio_dev->channel_attr_list);
if (ret == -EBUSY) {
ret = 0;
continue;
} else if (ret < 0) {
goto error_ret;
}
attrcount++;
}

if (chan->ext_info) {
unsigned int i = 0;
Expand Down
10 changes: 9 additions & 1 deletion trunk/include/linux/iio/iio.h
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,10 @@ ssize_t iio_enum_write(struct iio_dev *indio_dev,
* endianness: little or big endian
* @info_mask: What information is to be exported about this channel.
* This includes calibbias, scale etc.
* @info_mask_separate: What information is to be exported that is specific to
* this channel.
* @info_mask_shared_by_type: What information is to be exported that is shared
* by all channels of the same type.
* @event_mask: What events can this channel produce.
* @ext_info: Array of extended info attributes for this channel.
* The array is NULL terminated, the last element should
Expand Down Expand Up @@ -253,6 +257,8 @@ struct iio_chan_spec {
enum iio_endian endianness;
} scan_type;
long info_mask;
long info_mask_separate;
long info_mask_shared_by_type;
long event_mask;
const struct iio_chan_spec_ext_info *ext_info;
const char *extend_name;
Expand All @@ -275,7 +281,9 @@ struct iio_chan_spec {
static inline bool iio_channel_has_info(const struct iio_chan_spec *chan,
enum iio_chan_info_enum type)
{
return chan->info_mask & IIO_CHAN_INFO_BITS(type);
return (chan->info_mask & IIO_CHAN_INFO_BITS(type)) |
(chan->info_mask_separate & type) |
(chan->info_mask_shared_by_type & type);
}

#define IIO_ST(si, rb, sb, sh) \
Expand Down

0 comments on commit c0b0ef1

Please sign in to comment.