From: Jonathan Cameron <jic23@kernel.org>
To: Matt Ranostay <mranostay@gmail.com>, linux-iio@vger.kernel.org
Subject: Re: [PATCH v2 3/3] iio: chemical: atlas-ph-sensor: add ORP feature
Date: Sun, 21 Aug 2016 12:00:05 +0100 [thread overview]
Message-ID: <c1bba3a3-417f-82e9-3ba6-478e5d2d76bf@kernel.org> (raw)
In-Reply-To: <1471638971-23039-4-git-send-email-mranostay@gmail.com>
On 19/08/16 21:36, Matt Ranostay wrote:
> Signed-off-by: Matt Ranostay <mranostay@gmail.com>
Applied.
thanks,
Jonathan
> ---
> .../bindings/iio/chemical/atlas,orp-sm.txt | 22 +++++++++
> drivers/iio/chemical/Kconfig | 1 +
> drivers/iio/chemical/atlas-ph-sensor.c | 53 +++++++++++++++++++++-
> 3 files changed, 75 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/devicetree/bindings/iio/chemical/atlas,orp-sm.txt
>
> diff --git a/Documentation/devicetree/bindings/iio/chemical/atlas,orp-sm.txt b/Documentation/devicetree/bindings/iio/chemical/atlas,orp-sm.txt
> new file mode 100644
> index 000000000000..5d8b687d5edc
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/chemical/atlas,orp-sm.txt
> @@ -0,0 +1,22 @@
> +* Atlas Scientific ORP-SM OEM sensor
> +
> +https://www.atlas-scientific.com/_files/_datasheets/_oem/ORP_oem_datasheet.pdf
> +
> +Required properties:
> +
> + - compatible: must be "atlas,orp-sm"
> + - reg: the I2C address of the sensor
> + - interrupt-parent: should be the phandle for the interrupt controller
> + - interrupts: the sole interrupt generated by the device
> +
> + Refer to interrupt-controller/interrupts.txt for generic interrupt client
> + node bindings.
> +
> +Example:
> +
> +atlas@66 {
> + compatible = "atlas,orp-sm";
> + reg = <0x66>;
> + interrupt-parent = <&gpio1>;
> + interrupts = <16 2>;
> +};
> diff --git a/drivers/iio/chemical/Kconfig b/drivers/iio/chemical/Kconfig
> index 4bcc025e8c8a..cea7f9857a1f 100644
> --- a/drivers/iio/chemical/Kconfig
> +++ b/drivers/iio/chemical/Kconfig
> @@ -16,6 +16,7 @@ config ATLAS_PH_SENSOR
> Atlas Scientific OEM SM sensors:
> * pH SM sensor
> * EC SM sensor
> + * ORP SM sensor
>
> To compile this driver as module, choose M here: the
> module will be called atlas-ph-sensor.
> diff --git a/drivers/iio/chemical/atlas-ph-sensor.c b/drivers/iio/chemical/atlas-ph-sensor.c
> index c0a0ebbbd54a..84fbff32b96d 100644
> --- a/drivers/iio/chemical/atlas-ph-sensor.c
> +++ b/drivers/iio/chemical/atlas-ph-sensor.c
> @@ -66,12 +66,17 @@
> #define ATLAS_REG_TDS_DATA 0x1c
> #define ATLAS_REG_PSS_DATA 0x20
>
> +#define ATLAS_REG_ORP_CALIB_STATUS 0x0d
> +#define ATLAS_REG_ORP_DATA 0x0e
> +
> #define ATLAS_PH_INT_TIME_IN_US 450000
> #define ATLAS_EC_INT_TIME_IN_US 650000
> +#define ATLAS_ORP_INT_TIME_IN_US 450000
>
> enum {
> ATLAS_PH_SM,
> ATLAS_EC_SM,
> + ATLAS_ORP_SM,
> };
>
> struct atlas_data {
> @@ -159,6 +164,23 @@ static const struct iio_chan_spec atlas_ec_channels[] = {
> },
> };
>
> +static const struct iio_chan_spec atlas_orp_channels[] = {
> + {
> + .type = IIO_VOLTAGE,
> + .address = ATLAS_REG_ORP_DATA,
> + .info_mask_separate =
> + BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
> + .scan_index = 0,
> + .scan_type = {
> + .sign = 's',
> + .realbits = 32,
> + .storagebits = 32,
> + .endianness = IIO_BE,
> + },
> + },
> + IIO_CHAN_SOFT_TIMESTAMP(1),
> +};
> +
> static int atlas_check_ph_calibration(struct atlas_data *data)
> {
> struct device *dev = &data->client->dev;
> @@ -224,6 +246,22 @@ static int atlas_check_ec_calibration(struct atlas_data *data)
> return 0;
> }
>
> +static int atlas_check_orp_calibration(struct atlas_data *data)
> +{
> + struct device *dev = &data->client->dev;
> + int ret;
> + unsigned int val;
> +
> + ret = regmap_read(data->regmap, ATLAS_REG_ORP_CALIB_STATUS, &val);
> + if (ret)
> + return ret;
> +
> + if (!val)
> + dev_warn(dev, "device has not been calibrated\n");
> +
> + return 0;
> +};
> +
> struct atlas_device {
> const struct iio_chan_spec *channels;
> int num_channels;
> @@ -248,7 +286,13 @@ static struct atlas_device atlas_devices[] = {
> .calibration = &atlas_check_ec_calibration,
> .delay = ATLAS_EC_INT_TIME_IN_US,
> },
> -
> + [ATLAS_ORP_SM] = {
> + .channels = atlas_orp_channels,
> + .num_channels = 2,
> + .data_reg = ATLAS_REG_ORP_DATA,
> + .calibration = &atlas_check_orp_calibration,
> + .delay = ATLAS_ORP_INT_TIME_IN_US,
> + },
> };
>
> static int atlas_set_powermode(struct atlas_data *data, int on)
> @@ -386,6 +430,7 @@ static int atlas_read_raw(struct iio_dev *indio_dev,
> case IIO_PH:
> case IIO_CONCENTRATION:
> case IIO_ELECTRICALCONDUCTIVITY:
> + case IIO_VOLTAGE:
> ret = iio_device_claim_direct_mode(indio_dev);
> if (ret)
> return ret;
> @@ -422,6 +467,10 @@ static int atlas_read_raw(struct iio_dev *indio_dev,
> *val = 0; /* 0.000000001 */
> *val2 = 1000;
> return IIO_VAL_INT_PLUS_NANO;
> + case IIO_VOLTAGE:
> + *val = 1; /* 0.1 */
> + *val2 = 10;
> + break;
> default:
> return -EINVAL;
> }
> @@ -457,6 +506,7 @@ static const struct iio_info atlas_info = {
> static const struct i2c_device_id atlas_id[] = {
> { "atlas-ph-sm", ATLAS_PH_SM},
> { "atlas-ec-sm", ATLAS_EC_SM},
> + { "atlas-orp-sm", ATLAS_ORP_SM},
> {}
> };
> MODULE_DEVICE_TABLE(i2c, atlas_id);
> @@ -464,6 +514,7 @@ MODULE_DEVICE_TABLE(i2c, atlas_id);
> static const struct of_device_id atlas_dt_ids[] = {
> { .compatible = "atlas,ph-sm", .data = (void *)ATLAS_PH_SM, },
> { .compatible = "atlas,ec-sm", .data = (void *)ATLAS_EC_SM, },
> + { .compatible = "atlas,orp-sm", .data = (void *)ATLAS_ORP_SM, },
> { }
> };
> MODULE_DEVICE_TABLE(of, atlas_dt_ids);
>
prev parent reply other threads:[~2016-08-21 11:00 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-19 20:36 [PATCH v2 0/3] iio: chemical: atlas-ph-sensor: add ORP feature Matt Ranostay
2016-08-19 20:36 ` [PATCH v2 1/3] iio: chemical: atlas-ph-sensor: switch to iio_device_*_direct_mode helpers Matt Ranostay
2016-08-21 10:56 ` Jonathan Cameron
2016-08-19 20:36 ` [PATCH v2 2/3] iio: chemical: atlas-ph-sensor: switch to REGCACHE_NONE regmap tree Matt Ranostay
2016-08-21 10:58 ` Jonathan Cameron
2016-08-19 20:36 ` [PATCH v2 3/3] iio: chemical: atlas-ph-sensor: add ORP feature Matt Ranostay
2016-08-21 11:00 ` Jonathan Cameron [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c1bba3a3-417f-82e9-3ba6-478e5d2d76bf@kernel.org \
--to=jic23@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=mranostay@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).