summaryrefslogtreecommitdiff
path: root/drivers/iio/industrialio-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/iio/industrialio-core.c')
-rw-r--r--drivers/iio/industrialio-core.c70
1 files changed, 22 insertions, 48 deletions
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index adf054c7a75e..358b909298c0 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -334,29 +334,6 @@ s64 iio_get_time_ns(const struct iio_dev *indio_dev)
}
EXPORT_SYMBOL(iio_get_time_ns);
-/**
- * iio_get_time_res() - utility function to get time stamp clock resolution in
- * nano seconds.
- * @indio_dev: device
- */
-unsigned int iio_get_time_res(const struct iio_dev *indio_dev)
-{
- switch (iio_device_get_clock(indio_dev)) {
- case CLOCK_REALTIME:
- case CLOCK_MONOTONIC:
- case CLOCK_MONOTONIC_RAW:
- case CLOCK_BOOTTIME:
- case CLOCK_TAI:
- return hrtimer_resolution;
- case CLOCK_REALTIME_COARSE:
- case CLOCK_MONOTONIC_COARSE:
- return LOW_RES_NSEC;
- default:
- BUG();
- }
-}
-EXPORT_SYMBOL(iio_get_time_res);
-
static int __init iio_init(void)
{
int ret;
@@ -398,7 +375,7 @@ static ssize_t iio_debugfs_read_reg(struct file *file, char __user *userbuf,
{
struct iio_dev *indio_dev = file->private_data;
struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
- unsigned val = 0;
+ unsigned int val = 0;
int ret;
if (*ppos > 0)
@@ -428,7 +405,7 @@ static ssize_t iio_debugfs_write_reg(struct file *file,
{
struct iio_dev *indio_dev = file->private_data;
struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
- unsigned reg, val;
+ unsigned int reg, val;
char buf[80];
int ret;
@@ -1127,12 +1104,12 @@ int __iio_device_attr_init(struct device_attribute *dev_attr,
dev_attr->attr.name = name;
if (readfunc) {
- dev_attr->attr.mode |= S_IRUGO;
+ dev_attr->attr.mode |= 0444;
dev_attr->show = readfunc;
}
if (writefunc) {
- dev_attr->attr.mode |= S_IWUSR;
+ dev_attr->attr.mode |= 0200;
dev_attr->store = writefunc;
}
@@ -1406,29 +1383,27 @@ void iio_free_chan_devattr_list(struct list_head *attr_list)
}
}
-static ssize_t iio_show_dev_name(struct device *dev,
- struct device_attribute *attr,
- char *buf)
+static ssize_t name_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
{
struct iio_dev *indio_dev = dev_to_iio_dev(dev);
return sysfs_emit(buf, "%s\n", indio_dev->name);
}
-static DEVICE_ATTR(name, S_IRUGO, iio_show_dev_name, NULL);
+static DEVICE_ATTR_RO(name);
-static ssize_t iio_show_dev_label(struct device *dev,
- struct device_attribute *attr,
- char *buf)
+static ssize_t label_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
{
struct iio_dev *indio_dev = dev_to_iio_dev(dev);
return sysfs_emit(buf, "%s\n", indio_dev->label);
}
-static DEVICE_ATTR(label, S_IRUGO, iio_show_dev_label, NULL);
+static DEVICE_ATTR_RO(label);
-static ssize_t iio_show_timestamp_clock(struct device *dev,
- struct device_attribute *attr,
- char *buf)
+static ssize_t current_timestamp_clock_show(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
{
const struct iio_dev *indio_dev = dev_to_iio_dev(dev);
const clockid_t clk = iio_device_get_clock(indio_dev);
@@ -1472,9 +1447,9 @@ static ssize_t iio_show_timestamp_clock(struct device *dev,
return sz;
}
-static ssize_t iio_store_timestamp_clock(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t len)
+static ssize_t current_timestamp_clock_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t len)
{
clockid_t clk;
int ret;
@@ -1522,8 +1497,7 @@ int iio_device_register_sysfs_group(struct iio_dev *indio_dev,
return 0;
}
-static DEVICE_ATTR(current_timestamp_clock, S_IRUGO | S_IWUSR,
- iio_show_timestamp_clock, iio_store_timestamp_clock);
+static DEVICE_ATTR_RW(current_timestamp_clock);
static int iio_device_register_sysfs(struct iio_dev *indio_dev)
{
@@ -1631,7 +1605,7 @@ static void iio_dev_release(struct device *device)
iio_device_detach_buffers(indio_dev);
- ida_simple_remove(&iio_ida, iio_dev_opaque->id);
+ ida_free(&iio_ida, iio_dev_opaque->id);
kfree(iio_dev_opaque);
}
@@ -1653,7 +1627,7 @@ struct iio_dev *iio_device_alloc(struct device *parent, int sizeof_priv)
alloc_size = sizeof(struct iio_dev_opaque);
if (sizeof_priv) {
- alloc_size = ALIGN(alloc_size, IIO_ALIGN);
+ alloc_size = ALIGN(alloc_size, IIO_DMA_MINALIGN);
alloc_size += sizeof_priv;
}
@@ -1663,7 +1637,7 @@ struct iio_dev *iio_device_alloc(struct device *parent, int sizeof_priv)
indio_dev = &iio_dev_opaque->indio_dev;
indio_dev->priv = (char *)iio_dev_opaque +
- ALIGN(sizeof(struct iio_dev_opaque), IIO_ALIGN);
+ ALIGN(sizeof(struct iio_dev_opaque), IIO_DMA_MINALIGN);
indio_dev->dev.parent = parent;
indio_dev->dev.type = &iio_device_type;
@@ -1673,7 +1647,7 @@ struct iio_dev *iio_device_alloc(struct device *parent, int sizeof_priv)
mutex_init(&iio_dev_opaque->info_exist_lock);
INIT_LIST_HEAD(&iio_dev_opaque->channel_attr_list);
- iio_dev_opaque->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL);
+ iio_dev_opaque->id = ida_alloc(&iio_ida, GFP_KERNEL);
if (iio_dev_opaque->id < 0) {
/* cannot use a dev_err as the name isn't available */
pr_err("failed to get device id\n");
@@ -1682,7 +1656,7 @@ struct iio_dev *iio_device_alloc(struct device *parent, int sizeof_priv)
}
if (dev_set_name(&indio_dev->dev, "iio:device%d", iio_dev_opaque->id)) {
- ida_simple_remove(&iio_ida, iio_dev_opaque->id);
+ ida_free(&iio_ida, iio_dev_opaque->id);
kfree(iio_dev_opaque);
return NULL;
}