Thread (18 messages) 18 messages, 6 authors, 2021-05-17

Re: [PATCH 1/4] iio: proximity: vcnl3020: add periodic mode

From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
Date: 2021-05-05 08:24:27
Also in: linux-iio, lkml

On Tue, 4 May 2021 22:07:53 +0300
Ivan Mikhaylov [off-list ref] wrote:
On Sun, 2021-05-02 at 19:00 +0100, Jonathan Cameron wrote:
quoted
On Fri, 30 Apr 2021 18:24:16 +0300
Ivan Mikhaylov [off-list ref] wrote:
  
quoted
Add the possibility to run proximity sensor in periodic measurement
mode.  
Without an interrupt?  Unusual and perhaps best left to userspace.  
Do you mean without interrupt handler in driver for this particular interrupt?
If it's need to be added here, I can add it. In this patch I just added trigger
to enable/disable periodic measurement mode without interrupt handler.
The model for events in IIO is that they are 'pushed' to userspace.
So it is possible to do this with a polling thread, but on a device
with an interrupt line tied to the event, it makes much more sense
to do it that way.

We don't have read on demand event as there has been little real
demand for them (and they can be implemented in userspase).

Jonathan

quoted
  
quoted
+		if (rc)
+			return rc;
+
+		/* Enable periodic measurement of proximity data. */
+		cmd = VCNL_PS_EN | VCNL_PS_SELFTIMED_EN;
+
+		/*
+		 * Enable interrupts on threshold, for proximity data by
+		 * default.
+		 */
+		icr = VCNL_ICR_THRES_EN;
+	} else {
+		if (!vcnl3020_is_thr_enabled(data))
+			return 0;
+
+		cmd = 0;
+		icr = 0;
+		isr = 0;
+	}
+
+	rc = regmap_write(data->regmap, VCNL_COMMAND, cmd);
+	if (rc)
+		goto end;
+
+	rc = regmap_write(data->regmap, VCNL_PS_ICR, icr);
+	if (rc)
+		goto end;
+
+	if (!state)
+		/* Clear interrupts */  
Given you don't seem to have an interrupt. I guess this is clearing
a status flag?  
Yes, it is clearing flag in interrupt status register.
quoted
  
quoted
+		rc = regmap_write(data->regmap, VCNL_ISR, isr);
+
+end:
+	if (state)
+		iio_device_release_direct_mode(indio_dev);  
  
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help