Dear Lars,
On 07/05/2013 12:40 PM, Lars-Peter Clausen wrote:
On 07/05/2013 10:30 AM, Hector Palacios wrote:
[...]
+#define SHOW_SCALE_AVAILABLE_FUNC(ch) \
+static ssize_t mxs_lradc_show_scale_available##ch(struct device *dev, \
+ struct device_attribute *attr, \
+ char *buf) \
+{ \
+ return c ch); \
+}
No need for a separate function for each channel. Use the address attribute
of the iio_dev_attr. E.g.
struct iio_dev_attr *iio_attr = to_iio_dev_attr(attr);
return mxs_lradc_show_scale_available_ch(dev, attr, buf, iio_attr->address);
The last parameter to IIO_DEVICE_ATTR initializes this field.
Nice, I knew there had to be a better way.
But I think you can need less boilerplate code if you use the
iio_chan_spec_ext_info feature. Take a look at IIO_ENUM_AVAILABLE and
friends to see how it is done.
I just took a look but don't know how I can use this framework with scales, as a scale
is an array composed of two numbers (integer and fractional parts), not simple strings
which is what iio_enum.items expects.
Best regards,
--
Hector Palacios
--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html