提交 6ddbb08a 编写于 作者: J Jonathan Cameron 提交者: Greg Kroah-Hartman

staging:iio:accel:lis3l02dq ring->buffer renames.

This driver already supports kfifo usage, so the term ring is
misleading and hence replaced.
Signed-off-by: NJonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 14555b14
...@@ -175,19 +175,19 @@ int lis3l02dq_spi_write_reg_8(struct iio_dev *indio_dev, ...@@ -175,19 +175,19 @@ int lis3l02dq_spi_write_reg_8(struct iio_dev *indio_dev,
int lis3l02dq_disable_all_events(struct iio_dev *indio_dev); int lis3l02dq_disable_all_events(struct iio_dev *indio_dev);
#ifdef CONFIG_IIO_BUFFER #ifdef CONFIG_IIO_BUFFER
/* At the moment triggers are only used for ring buffer /* At the moment triggers are only used for buffer
* filling. This may change! * filling. This may change!
*/ */
void lis3l02dq_remove_trigger(struct iio_dev *indio_dev); void lis3l02dq_remove_trigger(struct iio_dev *indio_dev);
int lis3l02dq_probe_trigger(struct iio_dev *indio_dev); int lis3l02dq_probe_trigger(struct iio_dev *indio_dev);
ssize_t lis3l02dq_read_accel_from_ring(struct iio_buffer *ring, ssize_t lis3l02dq_read_accel_from_buffer(struct iio_buffer *buffer,
int index, int index,
int *val); int *val);
int lis3l02dq_configure_ring(struct iio_dev *indio_dev); int lis3l02dq_configure_buffer(struct iio_dev *indio_dev);
void lis3l02dq_unconfigure_ring(struct iio_dev *indio_dev); void lis3l02dq_unconfigure_buffer(struct iio_dev *indio_dev);
#ifdef CONFIG_LIS3L02DQ_BUF_RING_SW #ifdef CONFIG_LIS3L02DQ_BUF_RING_SW
#define lis3l02dq_free_buf iio_sw_rb_free #define lis3l02dq_free_buf iio_sw_rb_free
...@@ -203,7 +203,7 @@ irqreturn_t lis3l02dq_data_rdy_trig_poll(int irq, void *private); ...@@ -203,7 +203,7 @@ irqreturn_t lis3l02dq_data_rdy_trig_poll(int irq, void *private);
#define lis3l02dq_th lis3l02dq_data_rdy_trig_poll #define lis3l02dq_th lis3l02dq_data_rdy_trig_poll
#else /* CONFIG_IIO_BUFFER */ #else /* CONFIG_IIO_BUFFER */
#define lis3l02dq_th lis3l02dq_noring #define lis3l02dq_th lis3l02dq_nobuffer
static inline void lis3l02dq_remove_trigger(struct iio_dev *indio_dev) static inline void lis3l02dq_remove_trigger(struct iio_dev *indio_dev)
{ {
...@@ -213,18 +213,18 @@ static inline int lis3l02dq_probe_trigger(struct iio_dev *indio_dev) ...@@ -213,18 +213,18 @@ static inline int lis3l02dq_probe_trigger(struct iio_dev *indio_dev)
return 0; return 0;
} }
static inline ssize_t static inline ssize_t
lis3l02dq_read_accel_from_ring(struct iio_buffer *ring, lis3l02dq_read_accel_from_buffer(struct iio_buffer *buffer,
int index, int index,
int *val) int *val)
{ {
return 0; return 0;
} }
static int lis3l02dq_configure_ring(struct iio_dev *indio_dev) static int lis3l02dq_configure_buffer(struct iio_dev *indio_dev)
{ {
return 0; return 0;
} }
static inline void lis3l02dq_unconfigure_ring(struct iio_dev *indio_dev) static inline void lis3l02dq_unconfigure_buffer(struct iio_dev *indio_dev)
{ {
} }
#endif /* CONFIG_IIO_BUFFER */ #endif /* CONFIG_IIO_BUFFER */
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
*/ */
/* direct copy of the irq_default_primary_handler */ /* direct copy of the irq_default_primary_handler */
#ifndef CONFIG_IIO_BUFFER #ifndef CONFIG_IIO_BUFFER
static irqreturn_t lis3l02dq_noring(int irq, void *private) static irqreturn_t lis3l02dq_nobuffer(int irq, void *private)
{ {
return IRQ_WAKE_THREAD; return IRQ_WAKE_THREAD;
} }
...@@ -260,9 +260,10 @@ static int lis3l02dq_read_raw(struct iio_dev *indio_dev, ...@@ -260,9 +260,10 @@ static int lis3l02dq_read_raw(struct iio_dev *indio_dev,
/* Take the iio_dev status lock */ /* Take the iio_dev status lock */
mutex_lock(&indio_dev->mlock); mutex_lock(&indio_dev->mlock);
if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED)
ret = lis3l02dq_read_accel_from_ring(indio_dev->buffer, ret = lis3l02dq_read_accel_from_buffer(indio_dev->
chan->scan_index, buffer,
val); chan->scan_index,
val);
else { else {
reg = lis3l02dq_axis_map reg = lis3l02dq_axis_map
[LIS3L02DQ_ACCEL][chan->address]; [LIS3L02DQ_ACCEL][chan->address];
...@@ -686,7 +687,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi) ...@@ -686,7 +687,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->modes = INDIO_DIRECT_MODE;
ret = lis3l02dq_configure_ring(indio_dev); ret = lis3l02dq_configure_buffer(indio_dev);
if (ret) if (ret)
goto error_free_dev; goto error_free_dev;
...@@ -694,8 +695,8 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi) ...@@ -694,8 +695,8 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
lis3l02dq_channels, lis3l02dq_channels,
ARRAY_SIZE(lis3l02dq_channels)); ARRAY_SIZE(lis3l02dq_channels));
if (ret) { if (ret) {
printk(KERN_ERR "failed to initialize the ring\n"); printk(KERN_ERR "failed to initialize the buffer\n");
goto error_unreg_ring_funcs; goto error_unreg_buffer_funcs;
} }
if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0) { if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0) {
...@@ -706,7 +707,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi) ...@@ -706,7 +707,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
"lis3l02dq", "lis3l02dq",
indio_dev); indio_dev);
if (ret) if (ret)
goto error_uninitialize_ring; goto error_uninitialize_buffer;
ret = lis3l02dq_probe_trigger(indio_dev); ret = lis3l02dq_probe_trigger(indio_dev);
if (ret) if (ret)
...@@ -730,10 +731,10 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi) ...@@ -730,10 +731,10 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
error_free_interrupt: error_free_interrupt:
if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0) if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0)
free_irq(st->us->irq, indio_dev); free_irq(st->us->irq, indio_dev);
error_uninitialize_ring: error_uninitialize_buffer:
iio_buffer_unregister(indio_dev); iio_buffer_unregister(indio_dev);
error_unreg_ring_funcs: error_unreg_buffer_funcs:
lis3l02dq_unconfigure_ring(indio_dev); lis3l02dq_unconfigure_buffer(indio_dev);
error_free_dev: error_free_dev:
iio_free_device(indio_dev); iio_free_device(indio_dev);
error_ret: error_ret:
...@@ -786,7 +787,7 @@ static int lis3l02dq_remove(struct spi_device *spi) ...@@ -786,7 +787,7 @@ static int lis3l02dq_remove(struct spi_device *spi)
lis3l02dq_remove_trigger(indio_dev); lis3l02dq_remove_trigger(indio_dev);
iio_buffer_unregister(indio_dev); iio_buffer_unregister(indio_dev);
lis3l02dq_unconfigure_ring(indio_dev); lis3l02dq_unconfigure_buffer(indio_dev);
iio_device_unregister(indio_dev); iio_device_unregister(indio_dev);
......
...@@ -38,30 +38,30 @@ irqreturn_t lis3l02dq_data_rdy_trig_poll(int irq, void *private) ...@@ -38,30 +38,30 @@ irqreturn_t lis3l02dq_data_rdy_trig_poll(int irq, void *private)
} }
/** /**
* lis3l02dq_read_accel_from_ring() individual acceleration read from ring * lis3l02dq_read_accel_from_buffer() individual acceleration read from buffer
**/ **/
ssize_t lis3l02dq_read_accel_from_ring(struct iio_buffer *ring, ssize_t lis3l02dq_read_accel_from_buffer(struct iio_buffer *buffer,
int index, int index,
int *val) int *val)
{ {
int ret; int ret;
s16 *data; s16 *data;
if (!iio_scan_mask_query(ring, index)) if (!iio_scan_mask_query(buffer, index))
return -EINVAL; return -EINVAL;
if (!ring->access->read_last) if (!buffer->access->read_last)
return -EBUSY; return -EBUSY;
data = kmalloc(ring->access->get_bytes_per_datum(ring), data = kmalloc(buffer->access->get_bytes_per_datum(buffer),
GFP_KERNEL); GFP_KERNEL);
if (data == NULL) if (data == NULL)
return -ENOMEM; return -ENOMEM;
ret = ring->access->read_last(ring, (u8 *)data); ret = buffer->access->read_last(buffer, (u8 *)data);
if (ret) if (ret)
goto error_free_data; goto error_free_data;
*val = data[bitmap_weight(ring->scan_mask, index)]; *val = data[bitmap_weight(buffer->scan_mask, index)];
error_free_data: error_free_data:
kfree(data); kfree(data);
...@@ -86,13 +86,13 @@ static const u8 read_all_tx_array[] = { ...@@ -86,13 +86,13 @@ static const u8 read_all_tx_array[] = {
**/ **/
static int lis3l02dq_read_all(struct iio_dev *indio_dev, u8 *rx_array) static int lis3l02dq_read_all(struct iio_dev *indio_dev, u8 *rx_array)
{ {
struct iio_buffer *ring = indio_dev->buffer; struct iio_buffer *buffer = indio_dev->buffer;
struct lis3l02dq_state *st = iio_priv(indio_dev); struct lis3l02dq_state *st = iio_priv(indio_dev);
struct spi_transfer *xfers; struct spi_transfer *xfers;
struct spi_message msg; struct spi_message msg;
int ret, i, j = 0; int ret, i, j = 0;
xfers = kzalloc((ring->scan_count) * 2 xfers = kzalloc((buffer->scan_count) * 2
* sizeof(*xfers), GFP_KERNEL); * sizeof(*xfers), GFP_KERNEL);
if (!xfers) if (!xfers)
return -ENOMEM; return -ENOMEM;
...@@ -100,7 +100,7 @@ static int lis3l02dq_read_all(struct iio_dev *indio_dev, u8 *rx_array) ...@@ -100,7 +100,7 @@ static int lis3l02dq_read_all(struct iio_dev *indio_dev, u8 *rx_array)
mutex_lock(&st->buf_lock); mutex_lock(&st->buf_lock);
for (i = 0; i < ARRAY_SIZE(read_all_tx_array)/4; i++) for (i = 0; i < ARRAY_SIZE(read_all_tx_array)/4; i++)
if (test_bit(i, ring->scan_mask)) { if (test_bit(i, buffer->scan_mask)) {
/* lower byte */ /* lower byte */
xfers[j].tx_buf = st->tx + 2*j; xfers[j].tx_buf = st->tx + 2*j;
st->tx[2*j] = read_all_tx_array[i*4]; st->tx[2*j] = read_all_tx_array[i*4];
...@@ -128,7 +128,7 @@ static int lis3l02dq_read_all(struct iio_dev *indio_dev, u8 *rx_array) ...@@ -128,7 +128,7 @@ static int lis3l02dq_read_all(struct iio_dev *indio_dev, u8 *rx_array)
* values in alternate bytes * values in alternate bytes
*/ */
spi_message_init(&msg); spi_message_init(&msg);
for (j = 0; j < ring->scan_count * 2; j++) for (j = 0; j < buffer->scan_count * 2; j++)
spi_message_add_tail(&xfers[j], &msg); spi_message_add_tail(&xfers[j], &msg);
ret = spi_sync(st->us, &msg); ret = spi_sync(st->us, &msg);
...@@ -138,7 +138,7 @@ static int lis3l02dq_read_all(struct iio_dev *indio_dev, u8 *rx_array) ...@@ -138,7 +138,7 @@ static int lis3l02dq_read_all(struct iio_dev *indio_dev, u8 *rx_array)
return ret; return ret;
} }
static int lis3l02dq_get_ring_element(struct iio_dev *indio_dev, static int lis3l02dq_get_buffer_element(struct iio_dev *indio_dev,
u8 *buf) u8 *buf)
{ {
int ret, i; int ret, i;
...@@ -163,26 +163,26 @@ static irqreturn_t lis3l02dq_trigger_handler(int irq, void *p) ...@@ -163,26 +163,26 @@ static irqreturn_t lis3l02dq_trigger_handler(int irq, void *p)
{ {
struct iio_poll_func *pf = p; struct iio_poll_func *pf = p;
struct iio_dev *indio_dev = pf->indio_dev; struct iio_dev *indio_dev = pf->indio_dev;
struct iio_buffer *ring = indio_dev->buffer; struct iio_buffer *buffer = indio_dev->buffer;
int len = 0; int len = 0;
size_t datasize = ring->access->get_bytes_per_datum(ring); size_t datasize = buffer->access->get_bytes_per_datum(buffer);
char *data = kmalloc(datasize, GFP_KERNEL); char *data = kmalloc(datasize, GFP_KERNEL);
if (data == NULL) { if (data == NULL) {
dev_err(indio_dev->dev.parent, dev_err(indio_dev->dev.parent,
"memory alloc failed in ring bh"); "memory alloc failed in buffer bh");
return -ENOMEM; return -ENOMEM;
} }
if (ring->scan_count) if (buffer->scan_count)
len = lis3l02dq_get_ring_element(indio_dev, data); len = lis3l02dq_get_buffer_element(indio_dev, data);
/* Guaranteed to be aligned with 8 byte boundary */ /* Guaranteed to be aligned with 8 byte boundary */
if (ring->scan_timestamp) if (buffer->scan_timestamp)
*(s64 *)(((phys_addr_t)data + len *(s64 *)(((phys_addr_t)data + len
+ sizeof(s64) - 1) & ~(sizeof(s64) - 1)) + sizeof(s64) - 1) & ~(sizeof(s64) - 1))
= pf->timestamp; = pf->timestamp;
ring->access->store_to(ring, (u8 *)data, pf->timestamp); buffer->access->store_to(buffer, (u8 *)data, pf->timestamp);
iio_trigger_notify_done(indio_dev->trig); iio_trigger_notify_done(indio_dev->trig);
kfree(data); kfree(data);
...@@ -255,7 +255,7 @@ __lis3l02dq_write_data_ready_config(struct device *dev, bool state) ...@@ -255,7 +255,7 @@ __lis3l02dq_write_data_ready_config(struct device *dev, bool state)
* *
* If disabling the interrupt also does a final read to ensure it is clear. * If disabling the interrupt also does a final read to ensure it is clear.
* This is only important in some cases where the scan enable elements are * This is only important in some cases where the scan enable elements are
* switched before the ring is reenabled. * switched before the buffer is reenabled.
**/ **/
static int lis3l02dq_data_rdy_trigger_set_state(struct iio_trigger *trig, static int lis3l02dq_data_rdy_trigger_set_state(struct iio_trigger *trig,
bool state) bool state)
...@@ -343,13 +343,13 @@ void lis3l02dq_remove_trigger(struct iio_dev *indio_dev) ...@@ -343,13 +343,13 @@ void lis3l02dq_remove_trigger(struct iio_dev *indio_dev)
iio_free_trigger(st->trig); iio_free_trigger(st->trig);
} }
void lis3l02dq_unconfigure_ring(struct iio_dev *indio_dev) void lis3l02dq_unconfigure_buffer(struct iio_dev *indio_dev)
{ {
iio_dealloc_pollfunc(indio_dev->pollfunc); iio_dealloc_pollfunc(indio_dev->pollfunc);
lis3l02dq_free_buf(indio_dev->buffer); lis3l02dq_free_buf(indio_dev->buffer);
} }
static int lis3l02dq_ring_postenable(struct iio_dev *indio_dev) static int lis3l02dq_buffer_postenable(struct iio_dev *indio_dev)
{ {
/* Disable unwanted channels otherwise the interrupt will not clear */ /* Disable unwanted channels otherwise the interrupt will not clear */
u8 t; u8 t;
...@@ -392,7 +392,7 @@ static int lis3l02dq_ring_postenable(struct iio_dev *indio_dev) ...@@ -392,7 +392,7 @@ static int lis3l02dq_ring_postenable(struct iio_dev *indio_dev)
} }
/* Turn all channels on again */ /* Turn all channels on again */
static int lis3l02dq_ring_predisable(struct iio_dev *indio_dev) static int lis3l02dq_buffer_predisable(struct iio_dev *indio_dev)
{ {
u8 t; u8 t;
int ret; int ret;
...@@ -418,29 +418,29 @@ static int lis3l02dq_ring_predisable(struct iio_dev *indio_dev) ...@@ -418,29 +418,29 @@ static int lis3l02dq_ring_predisable(struct iio_dev *indio_dev)
return ret; return ret;
} }
static const struct iio_buffer_setup_ops lis3l02dq_ring_setup_ops = { static const struct iio_buffer_setup_ops lis3l02dq_buffer_setup_ops = {
.preenable = &iio_sw_buffer_preenable, .preenable = &iio_sw_buffer_preenable,
.postenable = &lis3l02dq_ring_postenable, .postenable = &lis3l02dq_buffer_postenable,
.predisable = &lis3l02dq_ring_predisable, .predisable = &lis3l02dq_buffer_predisable,
}; };
int lis3l02dq_configure_ring(struct iio_dev *indio_dev) int lis3l02dq_configure_buffer(struct iio_dev *indio_dev)
{ {
int ret; int ret;
struct iio_buffer *ring; struct iio_buffer *buffer;
ring = lis3l02dq_alloc_buf(indio_dev); buffer = lis3l02dq_alloc_buf(indio_dev);
if (!ring) if (!buffer)
return -ENOMEM; return -ENOMEM;
indio_dev->buffer = ring; indio_dev->buffer = buffer;
/* Effectively select the ring buffer implementation */ /* Effectively select the buffer implementation */
indio_dev->buffer->access = &lis3l02dq_access_funcs; indio_dev->buffer->access = &lis3l02dq_access_funcs;
ring->bpe = 2; buffer->bpe = 2;
ring->scan_timestamp = true; buffer->scan_timestamp = true;
ring->setup_ops = &lis3l02dq_ring_setup_ops; buffer->setup_ops = &lis3l02dq_buffer_setup_ops;
ring->owner = THIS_MODULE; buffer->owner = THIS_MODULE;
/* Functions are NULL as we set handler below */ /* Functions are NULL as we set handler below */
indio_dev->pollfunc = iio_alloc_pollfunc(&iio_pollfunc_store_time, indio_dev->pollfunc = iio_alloc_pollfunc(&iio_pollfunc_store_time,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册