linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums.
@ 2011-07-06 18:56 Bryan Freed
  2011-07-06 18:56 ` [PATCH 2/3] staging:iio: Add an iio channel type string to support proximity sensors Bryan Freed
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Bryan Freed @ 2011-07-06 18:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: jic23, gregkh, rklein, linux-iio, Bryan Freed

This makes comparison between the iio_chan_type_name_spec_shared strings
and the iio_chan_type enums easier.

Signed-off-by: Bryan Freed <bfreed@chromium.org>
---
 drivers/staging/iio/industrialio-core.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c
index 94d3bfa..4987bf4 100644
--- a/drivers/staging/iio/industrialio-core.c
+++ b/drivers/staging/iio/industrialio-core.c
@@ -44,20 +44,20 @@ struct bus_type iio_bus_type = {
 EXPORT_SYMBOL(iio_bus_type);
 
 static const char * const iio_chan_type_name_spec_shared[] = {
-	[IIO_TIMESTAMP] = "timestamp",
-	[IIO_ACCEL] = "accel",
 	[IIO_IN] = "in",
 	[IIO_CURRENT] = "current",
 	[IIO_POWER] = "power",
+	[IIO_ACCEL] = "accel",
 	[IIO_IN_DIFF] = "in-in",
 	[IIO_GYRO] = "gyro",
-	[IIO_TEMP] = "temp",
 	[IIO_MAGN] = "magn",
+	[IIO_LIGHT] = "illuminance",
+	[IIO_INTENSITY] = "intensity",
+	[IIO_TEMP] = "temp",
 	[IIO_INCLI] = "incli",
 	[IIO_ROT] = "rot",
-	[IIO_INTENSITY] = "intensity",
-	[IIO_LIGHT] = "illuminance",
 	[IIO_ANGL] = "angl",
+	[IIO_TIMESTAMP] = "timestamp",
 };
 
 static const char * const iio_chan_type_name_spec_complex[] = {
-- 
1.7.3.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] staging:iio: Add an iio channel type string to support proximity sensors.
  2011-07-06 18:56 [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums Bryan Freed
@ 2011-07-06 18:56 ` Bryan Freed
  2011-07-06 19:45   ` Jonathan Cameron
  2011-07-06 18:56 ` [PATCH 3/3] staging:iio:light:isl29018: Convert some of the isl29018 driver to the new IIO_CHAN framework Bryan Freed
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Bryan Freed @ 2011-07-06 18:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: jic23, gregkh, rklein, linux-iio, Bryan Freed

Add "proximity" to the iio_chan_type_name_spec_shared string list to
support proximity sensors.
Now this list fully matches the declared iio_chan_type enums.

Signed-off-by: Bryan Freed <bfreed@chromium.org>
---
 drivers/staging/iio/industrialio-core.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c
index 4987bf4..ef9a11e 100644
--- a/drivers/staging/iio/industrialio-core.c
+++ b/drivers/staging/iio/industrialio-core.c
@@ -53,6 +53,7 @@ static const char * const iio_chan_type_name_spec_shared[] = {
 	[IIO_MAGN] = "magn",
 	[IIO_LIGHT] = "illuminance",
 	[IIO_INTENSITY] = "intensity",
+	[IIO_PROXIMITY] = "proximity",
 	[IIO_TEMP] = "temp",
 	[IIO_INCLI] = "incli",
 	[IIO_ROT] = "rot",
-- 
1.7.3.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] staging:iio:light:isl29018: Convert some of the isl29018 driver to the new IIO_CHAN framework.
  2011-07-06 18:56 [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums Bryan Freed
  2011-07-06 18:56 ` [PATCH 2/3] staging:iio: Add an iio channel type string to support proximity sensors Bryan Freed
@ 2011-07-06 18:56 ` Bryan Freed
  2011-07-06 19:44 ` [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums Jonathan Cameron
  2011-07-06 23:27 ` Greg KH
  3 siblings, 0 replies; 7+ messages in thread
From: Bryan Freed @ 2011-07-06 18:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: jic23, gregkh, rklein, linux-iio, Bryan Freed

Remove the driver's get_sensor_data() interfaces and replace them with
IIO_CHAN channels.  This converts 4 files to the new framework.
Driver ABI change: The intensity_infrared_raw file is now intensity_ir_raw.

Signed-off-by: Bryan Freed <bfreed@chromium.org>
---
 drivers/staging/iio/light/isl29018.c |  159 +++++++++++++++-------------------
 1 files changed, 69 insertions(+), 90 deletions(-)

diff --git a/drivers/staging/iio/light/isl29018.c b/drivers/staging/iio/light/isl29018.c
index cd88311..aac4e39 100644
--- a/drivers/staging/iio/light/isl29018.c
+++ b/drivers/staging/iio/light/isl29018.c
@@ -225,74 +225,7 @@ static int isl29018_read_proximity_ir(struct i2c_client *client, int scheme,
 	return 0;
 }
 
-static ssize_t get_sensor_data(struct device *dev, char *buf, int mode)
-{
-	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct isl29018_chip *chip = indio_dev->dev_data;
-	struct i2c_client *client = chip->client;
-	int value = 0;
-	int status;
-
-	mutex_lock(&chip->lock);
-	switch (mode) {
-	case COMMMAND1_OPMODE_PROX_ONCE:
-		status = isl29018_read_proximity_ir(client,
-				chip->prox_scheme, &value);
-		break;
-
-	case COMMMAND1_OPMODE_ALS_ONCE:
-		status = isl29018_read_lux(client, &value);
-		break;
-
-	case COMMMAND1_OPMODE_IR_ONCE:
-		status = isl29018_read_ir(client, &value);
-		break;
-
-	default:
-		dev_err(&client->dev, "Mode %d is not supported\n", mode);
-		mutex_unlock(&chip->lock);
-		return -EBUSY;
-	}
-	if (status < 0) {
-		dev_err(&client->dev, "Error in Reading data");
-		mutex_unlock(&chip->lock);
-		return status;
-	}
-
-	mutex_unlock(&chip->lock);
-
-	return sprintf(buf, "%d\n", value);
-}
-
 /* Sysfs interface */
-/* lux_scale */
-static ssize_t show_lux_scale(struct device *dev,
-			struct device_attribute *attr, char *buf)
-{
-	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct isl29018_chip *chip = indio_dev->dev_data;
-
-	return sprintf(buf, "%d\n", chip->lux_scale);
-}
-
-static ssize_t store_lux_scale(struct device *dev,
-		struct device_attribute *attr, const char *buf, size_t count)
-{
-	struct iio_dev *indio_dev = dev_get_drvdata(dev);
-	struct isl29018_chip *chip = indio_dev->dev_data;
-	unsigned long lval;
-
-	lval = simple_strtoul(buf, NULL, 10);
-	if (lval == 0)
-		return -EINVAL;
-
-	mutex_lock(&chip->lock);
-	chip->lux_scale = lval;
-	mutex_unlock(&chip->lock);
-
-	return count;
-}
-
 /* range */
 static ssize_t show_range(struct device *dev,
 			struct device_attribute *attr, char *buf)
@@ -410,27 +343,78 @@ static ssize_t store_prox_infrared_supression(struct device *dev,
 	return count;
 }
 
-/* Read lux */
-static ssize_t show_lux(struct device *dev,
-		struct device_attribute *devattr, char *buf)
+/* Channel IO */
+static int isl29018_write_raw(struct iio_dev *indio_dev,
+			      struct iio_chan_spec const *chan,
+			      int val,
+			      int val2,
+			      long mask)
 {
-	return get_sensor_data(dev, buf, COMMMAND1_OPMODE_ALS_ONCE);
-}
+	struct isl29018_chip *chip = indio_dev->dev_data;
+	int ret = -EINVAL;
 
-/* Read ir */
-static ssize_t show_ir(struct device *dev,
-		struct device_attribute *devattr, char *buf)
-{
-	return get_sensor_data(dev, buf, COMMMAND1_OPMODE_IR_ONCE);
+	mutex_lock(&chip->lock);
+	if (mask == (1 << IIO_CHAN_INFO_CALIBSCALE_SEPARATE) &&
+	    chan->type == IIO_LIGHT) {
+		chip->lux_scale = val;
+		ret = 0;
+	}
+	mutex_unlock(&chip->lock);
+
+	return 0;
 }
 
-/* Read nearest ir */
-static ssize_t show_proxim_ir(struct device *dev,
-		struct device_attribute *devattr, char *buf)
+static int isl29018_read_raw(struct iio_dev *indio_dev,
+			     struct iio_chan_spec const *chan,
+			     int *val,
+			     int *val2,
+			     long mask)
 {
-	return get_sensor_data(dev, buf, COMMMAND1_OPMODE_PROX_ONCE);
+	int ret = -EINVAL;
+	struct isl29018_chip *chip = indio_dev->dev_data;
+	struct i2c_client *client = chip->client;
+
+	mutex_lock(&chip->lock);
+	switch (mask) {
+	case 0:
+		switch (chan->type) {
+		case IIO_LIGHT:
+			ret = isl29018_read_lux(client, val);
+			break;
+		case IIO_INTENSITY:
+			ret = isl29018_read_ir(client, val);
+			break;
+		case IIO_PROXIMITY:
+			ret = isl29018_read_proximity_ir(client,
+					chip->prox_scheme, val);
+			break;
+		default:
+			break;
+		}
+		if (!ret)
+			ret = IIO_VAL_INT;
+		break;
+	case (1 << IIO_CHAN_INFO_CALIBSCALE_SEPARATE):
+		if (chan->type == IIO_LIGHT) {
+			*val = chip->lux_scale;
+			ret = IIO_VAL_INT;
+		}
+		break;
+	default:
+		break;
+	}
+	mutex_unlock(&chip->lock);
+	return ret;
 }
 
+#define LIGHT_INFO_MASK (1 << IIO_CHAN_INFO_CALIBSCALE_SEPARATE)
+static const struct iio_chan_spec isl29018_channels[] = {
+	IIO_CHAN(IIO_LIGHT,     0, 1, 1, NULL, 0, 0, LIGHT_INFO_MASK,
+							0, 0, {}, 0),
+	IIO_CHAN(IIO_INTENSITY, 1, 0, 0, NULL, 0, 1, 0, 0, 0, {}, 0),
+	IIO_CHAN(IIO_PROXIMITY, 0, 0, 0, NULL, 0, 0, 0, 0, 0, {}, 0),
+};
+
 static IIO_DEVICE_ATTR(range, S_IRUGO | S_IWUSR, show_range, store_range, 0);
 static IIO_CONST_ATTR(range_available, "1000 4000 16000 64000");
 static IIO_CONST_ATTR(adc_resolution_available, "4 8 12 16");
@@ -440,11 +424,6 @@ static IIO_DEVICE_ATTR(proximity_on_chip_ambient_infrared_supression,
 					S_IRUGO | S_IWUSR,
 					show_prox_infrared_supression,
 					store_prox_infrared_supression, 0);
-static IIO_DEVICE_ATTR(illuminance0_input, S_IRUGO, show_lux, NULL, 0);
-static IIO_DEVICE_ATTR(illuminance0_calibscale, S_IRUGO | S_IWUSR,
-					show_lux_scale, store_lux_scale, 0);
-static IIO_DEVICE_ATTR(intensity_infrared_raw, S_IRUGO, show_ir, NULL, 0);
-static IIO_DEVICE_ATTR(proximity_raw, S_IRUGO, show_proxim_ir, NULL, 0);
 
 #define ISL29018_DEV_ATTR(name) (&iio_dev_attr_##name.dev_attr.attr)
 #define ISL29018_CONST_ATTR(name) (&iio_const_attr_##name.dev_attr.attr)
@@ -454,10 +433,6 @@ static struct attribute *isl29018_attributes[] = {
 	ISL29018_DEV_ATTR(adc_resolution),
 	ISL29018_CONST_ATTR(adc_resolution_available),
 	ISL29018_DEV_ATTR(proximity_on_chip_ambient_infrared_supression),
-	ISL29018_DEV_ATTR(illuminance0_input),
-	ISL29018_DEV_ATTR(illuminance0_calibscale),
-	ISL29018_DEV_ATTR(intensity_infrared_raw),
-	ISL29018_DEV_ATTR(proximity_raw),
 	NULL
 };
 
@@ -490,6 +465,8 @@ static int isl29018_chip_init(struct i2c_client *client)
 static const struct iio_info isl29108_info = {
 	.attrs = &isl29108_group,
 	.driver_module = THIS_MODULE,
+	.read_raw = &isl29018_read_raw,
+	.write_raw = &isl29018_write_raw,
 };
 
 static int __devinit isl29018_probe(struct i2c_client *client,
@@ -524,6 +501,8 @@ static int __devinit isl29018_probe(struct i2c_client *client,
 		goto exit_free;
 	}
 	chip->indio_dev->info = &isl29108_info;
+	chip->indio_dev->channels = isl29018_channels;
+	chip->indio_dev->num_channels = ARRAY_SIZE(isl29018_channels);
 	chip->indio_dev->name = id->name;
 	chip->indio_dev->dev.parent = &client->dev;
 	chip->indio_dev->dev_data = (void *)(chip);
-- 
1.7.3.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums.
  2011-07-06 18:56 [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums Bryan Freed
  2011-07-06 18:56 ` [PATCH 2/3] staging:iio: Add an iio channel type string to support proximity sensors Bryan Freed
  2011-07-06 18:56 ` [PATCH 3/3] staging:iio:light:isl29018: Convert some of the isl29018 driver to the new IIO_CHAN framework Bryan Freed
@ 2011-07-06 19:44 ` Jonathan Cameron
  2011-07-06 23:27 ` Greg KH
  3 siblings, 0 replies; 7+ messages in thread
From: Jonathan Cameron @ 2011-07-06 19:44 UTC (permalink / raw)
  To: Bryan Freed; +Cc: linux-kernel, gregkh, rklein, linux-iio

On 07/06/11 19:56, Bryan Freed wrote:
> This makes comparison between the iio_chan_type_name_spec_shared strings
> and the iio_chan_type enums easier.
> 
> Signed-off-by: Bryan Freed <bfreed@chromium.org>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
> ---
>  drivers/staging/iio/industrialio-core.c |   10 +++++-----
>  1 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c
> index 94d3bfa..4987bf4 100644
> --- a/drivers/staging/iio/industrialio-core.c
> +++ b/drivers/staging/iio/industrialio-core.c
> @@ -44,20 +44,20 @@ struct bus_type iio_bus_type = {
>  EXPORT_SYMBOL(iio_bus_type);
>  
>  static const char * const iio_chan_type_name_spec_shared[] = {
> -	[IIO_TIMESTAMP] = "timestamp",
> -	[IIO_ACCEL] = "accel",
>  	[IIO_IN] = "in",
>  	[IIO_CURRENT] = "current",
>  	[IIO_POWER] = "power",
> +	[IIO_ACCEL] = "accel",
>  	[IIO_IN_DIFF] = "in-in",
>  	[IIO_GYRO] = "gyro",
> -	[IIO_TEMP] = "temp",
>  	[IIO_MAGN] = "magn",
> +	[IIO_LIGHT] = "illuminance",
> +	[IIO_INTENSITY] = "intensity",
> +	[IIO_TEMP] = "temp",
>  	[IIO_INCLI] = "incli",
>  	[IIO_ROT] = "rot",
> -	[IIO_INTENSITY] = "intensity",
> -	[IIO_LIGHT] = "illuminance",
>  	[IIO_ANGL] = "angl",
> +	[IIO_TIMESTAMP] = "timestamp",
>  };
>  
>  static const char * const iio_chan_type_name_spec_complex[] = {


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/3] staging:iio: Add an iio channel type string to support proximity sensors.
  2011-07-06 18:56 ` [PATCH 2/3] staging:iio: Add an iio channel type string to support proximity sensors Bryan Freed
@ 2011-07-06 19:45   ` Jonathan Cameron
  0 siblings, 0 replies; 7+ messages in thread
From: Jonathan Cameron @ 2011-07-06 19:45 UTC (permalink / raw)
  To: Bryan Freed; +Cc: linux-kernel, gregkh, rklein, linux-iio

On 07/06/11 19:56, Bryan Freed wrote:
> Add "proximity" to the iio_chan_type_name_spec_shared string list to
> support proximity sensors.
> Now this list fully matches the declared iio_chan_type enums.
> 
> Signed-off-by: Bryan Freed <bfreed@chromium.org>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
> ---
>  drivers/staging/iio/industrialio-core.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c
> index 4987bf4..ef9a11e 100644
> --- a/drivers/staging/iio/industrialio-core.c
> +++ b/drivers/staging/iio/industrialio-core.c
> @@ -53,6 +53,7 @@ static const char * const iio_chan_type_name_spec_shared[] = {
>  	[IIO_MAGN] = "magn",
>  	[IIO_LIGHT] = "illuminance",
>  	[IIO_INTENSITY] = "intensity",
> +	[IIO_PROXIMITY] = "proximity",
>  	[IIO_TEMP] = "temp",
>  	[IIO_INCLI] = "incli",
>  	[IIO_ROT] = "rot",


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums.
  2011-07-06 18:56 [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums Bryan Freed
                   ` (2 preceding siblings ...)
  2011-07-06 19:44 ` [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums Jonathan Cameron
@ 2011-07-06 23:27 ` Greg KH
       [not found]   ` <CAEYUcX2C4XqYW1NgqzV+KbdHdcKRs1V3RFVnCN7C=bhojywA=g@mail.gmail.com>
  3 siblings, 1 reply; 7+ messages in thread
From: Greg KH @ 2011-07-06 23:27 UTC (permalink / raw)
  To: Bryan Freed; +Cc: linux-kernel, jic23, gregkh, rklein, linux-iio

On Wed, Jul 06, 2011 at 11:56:24AM -0700, Bryan Freed wrote:
> This makes comparison between the iio_chan_type_name_spec_shared strings
> and the iio_chan_type enums easier.

This, and patch 2/3, don't apply at all to my tree, what did you make
them against?

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums.
       [not found]   ` <CAEYUcX2C4XqYW1NgqzV+KbdHdcKRs1V3RFVnCN7C=bhojywA=g@mail.gmail.com>
@ 2011-07-07 17:14     ` Greg KH
  0 siblings, 0 replies; 7+ messages in thread
From: Greg KH @ 2011-07-07 17:14 UTC (permalink / raw)
  To: Bryan Freed; +Cc: Greg KH, linux-kernel, jic23, rklein, linux-iio

On Thu, Jul 07, 2011 at 10:03:53AM -0700, Bryan Freed wrote:
> These are made from git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
> linux-2.6.git last synced on 6/22.

Ick, wrong tree.

> I synced up just now and had no problem cherry-picking the first two patches
> into a new branch.
> The third one required a manual merge, but I am not sure why.  They were all my
> diffs.
> 
> I will resubmit them all in a moment.

Please work against linux-next or the staging-next branch.  That is
where all of the development happens and your previous patches are
applied against.  We can't work against Linus's tree as it doesn't have
the previously accepted patches in it.

So please use that one instead.

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-07-07 17:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-06 18:56 [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums Bryan Freed
2011-07-06 18:56 ` [PATCH 2/3] staging:iio: Add an iio channel type string to support proximity sensors Bryan Freed
2011-07-06 19:45   ` Jonathan Cameron
2011-07-06 18:56 ` [PATCH 3/3] staging:iio:light:isl29018: Convert some of the isl29018 driver to the new IIO_CHAN framework Bryan Freed
2011-07-06 19:44 ` [PATCH 1/3] staging:iio: Reorder channel type strings to match the iio.h enums Jonathan Cameron
2011-07-06 23:27 ` Greg KH
     [not found]   ` <CAEYUcX2C4XqYW1NgqzV+KbdHdcKRs1V3RFVnCN7C=bhojywA=g@mail.gmail.com>
2011-07-07 17:14     ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).