All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Cristina Moraru <cristina.moraru09@gmail.com>,
	knaack.h@gmx.de, lars@metafoo.de, pmeerw@pmeerw.net,
	gregkh@linuxfoundation.org, cristina.opriceana@gmail.com,
	marek@goldelico.com, sdliyong@gmail.com,
	linux-iio@vger.kernel.org, devel@driverdev.osuosl.org,
	linux-kernel@vger.kernel.org, linux-api@vger.kernel.org,
	tolga.ceylan@gmail.com, k.kozlowski@samsung.com,
	javier@osg.samsung.com, arnd@arndb.de, geert@linux-m68k.org,
	irina.tirdea@intel.com, daniel.baluta@intel.com,
	octavia.purdila@intel.com
Subject: Re: [PATCH 1/5] iio: hmc5843: Add attribute for available measurement config
Date: Tue, 9 Feb 2016 22:10:26 +0000	[thread overview]
Message-ID: <56BA63D2.1060209@kernel.org> (raw)
In-Reply-To: <1454883711-15489-2-git-send-email-cristina.moraru09@gmail.com>

On 07/02/16 22:21, Cristina Moraru wrote:
> Add static attribute meas_conf_available to show available
> configurations for the bias current.
> 
> API for setting bias measurement configuration:
> 
> 0 - Normal measurement configuration (default): In normal measurement
>     configuration the device follows normal measurement flow. Pins BP
>     and BN are left floating and high impedance.
> 
> 1 - Positive bias configuration: In positive bias configuration, a
>     positive current is forced across the resistive load on pins BP
>     and BN.
> 
> 2 - Negative bias configuration. In negative bias configuration, a
>     negative current is forced across the resistive load on pins BP
>     and BN.
> 
> 3 - Only available on HMC5983. Magnetic sensor is disabled.
>     Temperature sensor is enabled.
> 
> Signed-off-by: Cristina Moraru <cristina.moraru09@gmail.com>
I'd much prefer to see this done using the iio_enum magic, giving
something like.

cat meas_conf_available 
normal, positivebias, negativebias, disabled

then have meas_conf read as one of these strings and take one as a write.

This abi is never going to make all that much sense to someone who
hasn't read the datasheet / docs, but if possible it is nice to
give them a hint by using informative strings as the values.

Jonathan
> ---
>  drivers/staging/iio/magnetometer/hmc5843_core.c | 83 +++++++++++++++++++------
>  1 file changed, 65 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/staging/iio/magnetometer/hmc5843_core.c b/drivers/staging/iio/magnetometer/hmc5843_core.c
> index 4aab022..4e2a7ec 100644
> --- a/drivers/staging/iio/magnetometer/hmc5843_core.c
> +++ b/drivers/staging/iio/magnetometer/hmc5843_core.c
> @@ -66,6 +66,34 @@
>  #define HMC5843_MEAS_CONF_NEGATIVE_BIAS		0x02
>  #define HMC5843_MEAS_CONF_MASK			0x03
>  
> +/*
> + * API for setting the measurement configuration to
> + * Normal, Positive bias and Negative bias
> + *
> + * From the datasheet:
> + * 0 - Normal measurement configuration (default): In normal measurement
> + *     configuration the device follows normal measurement flow. Pins BP
> + *     and BN are left floating and high impedance.
> + *
> + * 1 - Positive bias configuration: In positive bias configuration, a
> + *     positive current is forced across the resistive load on pins BP
> + *     and BN.
> + *
> + * 2 - Negative bias configuration. In negative bias configuration, a
> + *     negative current is forced across the resistive load on pins BP
> + *     and BN.
> + *
> + * 3 - Only available on HMC5983. Magnetic sensor is disabled.
> + *     Temperature sensor is enabled.
> + */
> +static const int hmc5843_regval_to_meas_conf[] = {
> +	0, 1, 2
> +};
> +
> +static const int hmc5983_regval_to_meas_conf[] = {
> +	0, 1, 2, 3
> +};
> +
>  /* Scaling factors: 10000000/Gain */
>  static const int hmc5843_regval_to_nanoscale[] = {
>  	6173, 7692, 10309, 12821, 18868, 21739, 25641, 35714
> @@ -109,6 +137,8 @@ static const int hmc5983_regval_to_samp_freq[][2] = {
>  /* Describe chip variants */
>  struct hmc5843_chip_info {
>  	const struct iio_chan_spec *channels;
> +	const int *regval_to_meas_conf;
> +	const int n_regval_to_meas_conf;
>  	const int (*regval_to_samp_freq)[2];
>  	const int n_regval_to_samp_freq;
>  	const int *regval_to_nanoscale;
> @@ -174,24 +204,6 @@ static int hmc5843_read_measurement(struct hmc5843_data *data,
>  	return IIO_VAL_INT;
>  }
>  
> -/*
> - * API for setting the measurement configuration to
> - * Normal, Positive bias and Negative bias
> - *
> - * From the datasheet:
> - * 0 - Normal measurement configuration (default): In normal measurement
> - *     configuration the device follows normal measurement flow. Pins BP
> - *     and BN are left floating and high impedance.
> - *
> - * 1 - Positive bias configuration: In positive bias configuration, a
> - *     positive current is forced across the resistive load on pins BP
> - *     and BN.
> - *
> - * 2 - Negative bias configuration. In negative bias configuration, a
> - *     negative current is forced across the resistive load on pins BP
> - *     and BN.
> - *
> - */
>  static int hmc5843_set_meas_conf(struct hmc5843_data *data, u8 meas_conf)
>  {
>  	int ret;
> @@ -248,6 +260,28 @@ static IIO_DEVICE_ATTR(meas_conf,
>  			hmc5843_set_measurement_configuration,
>  			0);
>  
> +static ssize_t hmc5843_show_meas_conf_avail(struct device *dev,
> +					    struct device_attribute *attr,
> +					    char *buf)
> +{
> +	struct hmc5843_data *data = iio_priv(dev_to_iio_dev(dev));
> +
> +	size_t len = 0;
> +	int i;
> +
> +	for (i = 0; i < data->variant->n_regval_to_meas_conf; i++)
> +		len += scnprintf(buf + len, PAGE_SIZE - len,
> +			"%d ", data->variant->regval_to_meas_conf[i]);
> +
> +	/* replace trailing space by newline */
> +	buf[len - 1] = '\n';
> +
> +	return len;
> +}
> +
> +static IIO_DEVICE_ATTR(meas_conf_available, S_IRUGO,
> +	hmc5843_show_meas_conf_avail, NULL, 0);
> +
>  static
>  ssize_t hmc5843_show_samp_freq_avail(struct device *dev,
>  				     struct device_attribute *attr, char *buf)
> @@ -478,6 +512,7 @@ static const struct iio_chan_spec hmc5883_channels[] = {
>  
>  static struct attribute *hmc5843_attributes[] = {
>  	&iio_dev_attr_meas_conf.dev_attr.attr,
> +	&iio_dev_attr_meas_conf_available.dev_attr.attr,
>  	&iio_dev_attr_scale_available.dev_attr.attr,
>  	&iio_dev_attr_sampling_frequency_available.dev_attr.attr,
>  	NULL
> @@ -490,6 +525,9 @@ static const struct attribute_group hmc5843_group = {
>  static const struct hmc5843_chip_info hmc5843_chip_info_tbl[] = {
>  	[HMC5843_ID] = {
>  		.channels = hmc5843_channels,
> +		.regval_to_meas_conf = hmc5843_regval_to_meas_conf,
> +		.n_regval_to_meas_conf =
> +				ARRAY_SIZE(hmc5843_regval_to_meas_conf),
>  		.regval_to_samp_freq = hmc5843_regval_to_samp_freq,
>  		.n_regval_to_samp_freq =
>  				ARRAY_SIZE(hmc5843_regval_to_samp_freq),
> @@ -499,6 +537,9 @@ static const struct hmc5843_chip_info hmc5843_chip_info_tbl[] = {
>  	},
>  	[HMC5883_ID] = {
>  		.channels = hmc5883_channels,
> +		.regval_to_meas_conf = hmc5843_regval_to_meas_conf,
> +		.n_regval_to_meas_conf =
> +				ARRAY_SIZE(hmc5843_regval_to_meas_conf),
>  		.regval_to_samp_freq = hmc5883_regval_to_samp_freq,
>  		.n_regval_to_samp_freq =
>  				ARRAY_SIZE(hmc5883_regval_to_samp_freq),
> @@ -508,6 +549,9 @@ static const struct hmc5843_chip_info hmc5843_chip_info_tbl[] = {
>  	},
>  	[HMC5883L_ID] = {
>  		.channels = hmc5883_channels,
> +		.regval_to_meas_conf = hmc5843_regval_to_meas_conf,
> +		.n_regval_to_meas_conf =
> +				ARRAY_SIZE(hmc5843_regval_to_meas_conf),
>  		.regval_to_samp_freq = hmc5883_regval_to_samp_freq,
>  		.n_regval_to_samp_freq =
>  				ARRAY_SIZE(hmc5883_regval_to_samp_freq),
> @@ -517,6 +561,9 @@ static const struct hmc5843_chip_info hmc5843_chip_info_tbl[] = {
>  	},
>  	[HMC5983_ID] = {
>  		.channels = hmc5883_channels,
> +		.regval_to_meas_conf = hmc5983_regval_to_meas_conf,
> +		.n_regval_to_meas_conf =
> +				ARRAY_SIZE(hmc5983_regval_to_meas_conf),
>  		.regval_to_samp_freq = hmc5983_regval_to_samp_freq,
>  		.n_regval_to_samp_freq =
>  				ARRAY_SIZE(hmc5983_regval_to_samp_freq),
> 

  reply	other threads:[~2016-02-09 22:10 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-07 22:21 [PATCH 0/5] iio: hmc5843: Fix issues and move out of staging Cristina Moraru
2016-02-07 22:21 ` Cristina Moraru
2016-02-07 22:21 ` [PATCH 1/5] iio: hmc5843: Add attribute for available measurement config Cristina Moraru
2016-02-09 22:10   ` Jonathan Cameron [this message]
2016-02-07 22:21 ` [PATCH 2/5] iio: hmc5843: Swap suspend and resume implementations Cristina Moraru
     [not found]   ` <1454883711-15489-3-git-send-email-cristina.moraru09-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-02-09 22:14     ` Jonathan Cameron
2016-02-09 22:14       ` Jonathan Cameron
2016-02-07 22:21 ` [PATCH 3/5] iio: hmc5843: Add ABI documentation file for hmc5843 Cristina Moraru
2016-02-07 22:21 ` [PATCH 4/5] iio: hmc5843: Fix comment style warnings Cristina Moraru
     [not found]   ` <1454883711-15489-5-git-send-email-cristina.moraru09-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-02-09 22:17     ` Jonathan Cameron
2016-02-09 22:17       ` Jonathan Cameron
2016-02-07 22:21 ` [PATCH 5/5] iio: hmc5843: Move hmc5843 out of staging Cristina Moraru

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=56BA63D2.1060209@kernel.org \
    --to=jic23@kernel.org \
    --cc=arnd@arndb.de \
    --cc=cristina.moraru09@gmail.com \
    --cc=cristina.opriceana@gmail.com \
    --cc=daniel.baluta@intel.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=geert@linux-m68k.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=irina.tirdea@intel.com \
    --cc=javier@osg.samsung.com \
    --cc=k.kozlowski@samsung.com \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marek@goldelico.com \
    --cc=octavia.purdila@intel.com \
    --cc=pmeerw@pmeerw.net \
    --cc=sdliyong@gmail.com \
    --cc=tolga.ceylan@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.