All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: "José Miguel Gonçalves" <jose.goncalves@inov.pt>,
	"Jean Delvare" <khali@linux-fr.org>,
	"Guenter Roeck" <guenter.roeck@ericsson.com>,
	lm-sensors@lm-sensors.org, linux-kernel@vger.kernel.org
Subject: Re: [lm-sensors] [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
Date: Wed, 11 Dec 2013 01:28:04 +0000	[thread overview]
Message-ID: <52A7BFA4.2080402@roeck-us.net> (raw)
In-Reply-To: <1386723462-21388-1-git-send-email-jose.goncalves@inov.pt>

T24gMTIvMTAvMjAxMyAwNDo1NyBQTSwgSm9zw6kgTWlndWVsIEdvbsOnYWx2ZXMgd3JvdGU6Cj4g
U29tZSBJMkMgYnVzIGRyaXZlcnMgZG8gbm90IGFsbG93IHplcm8tbGVuZ2h0IGRhdGEgdHJhbnNm
ZXJzIHdoaWNoIGFyZQoKcy9sZW5naHQvbGVuZ3RoLwoKPiByZXF1aXJlZCB0byBzdGFydCBhIG1l
c3VyZW1lbnQgd2l0aCB0aGUgSElINjEzMC8xIHNlbnNvci4gTmV2ZXJ0aGVsZXNzLAoKcy9tZXN1
cmVtZW50L21lYXN1cmVtZW50LwoKPiB3ZSBjYW4gb3ZlcmNvbWUgdGhpcyBsaW1pdGF0aW9uIGJ5
IHdyaXRpbmcgYSB6ZXJvIGR1bW15IGJ5dGUuIFRoaXMgYnl0ZQo+IGlzIGlnbm9yZWQgYnkgdGhl
IHNlbnNvciBhbmQgd2FzIHZlcmlmaWVkIHRvIGJlIHdvcmtpbmcgd2l0aCB0aGUgT01BUAo+IEky
QyBidXMgZHJpdmVyIGluIGEgQmVhZ2xlQm9uZSBib2FyZC4KPgo+IFNpZ25lZC1vZmYtYnk6IEpv
c8OpIE1pZ3VlbCBHb27Dp2FsdmVzIDxqb3NlLmdvbmNhbHZlc0Bpbm92LnB0Pgo+IC0tLQo+ICAg
ZHJpdmVycy9od21vbi9oaWg2MTMwLmMgfCAgIDE2ICsrKysrKysrKysrKysrLS0KPiAgIDEgZmls
ZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdp
dCBhL2RyaXZlcnMvaHdtb24vaGloNjEzMC5jIGIvZHJpdmVycy9od21vbi9oaWg2MTMwLmMKPiBp
bmRleCAyZGMzN2M3Li5hODYwY2M0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaHdtb24vaGloNjEz
MC5jCj4gKysrIGIvZHJpdmVycy9od21vbi9oaWg2MTMwLmMKPiBAQCAtMTIxLDggKzEyMSwyMCBA
QCBzdGF0aWMgaW50IGhpaDYxMzBfdXBkYXRlX21lYXN1cmVtZW50cyhzdHJ1Y3QgaTJjX2NsaWVu
dCAqY2xpZW50KQo+ICAgCSAqLwo+ICAgCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIGhpaDYxMzAt
Pmxhc3RfdXBkYXRlICsgSFopIHx8ICFoaWg2MTMwLT52YWxpZCkgewo+Cj4gLQkJLyogd3JpdGUg
dG8gc2xhdmUgYWRkcmVzcywgbm8gZGF0YSwgdG8gcmVxdWVzdCBhIG1lYXN1cmVtZW50ICovCj4g
LQkJcmV0ID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgdG1wLCAwKTsKPiArCQkvKgo+ICsJCSAq
IFdyaXRlIHRvIHNsYXZlIGFkZHJlc3MsIHRvIHJlcXVlc3QgYSBtZWFzdXJlbWVudC4KCnMvLC8v
Cgo+ICsJCSAqIEFjY29yZGluZyB3aXRoIHRoZSBkYXRhc2hlZXQgaXQgc2hvdWxkIGJlIHdpdGgg
bm8gZGF0YSwgYnV0Cj4gKwkJICogZm9yIHN5c3RlbXMgd2l0aCBJMkMgYnVzIGRyaXZlcnMgdGhh
dCBkbyBub3QgYWxsb3cgemVybwo+ICsJCSAqIGxlbmd0aCBwYWNrZXRzIHdlIHdyaXRlIG9uZSBk
dW1teSBieXRlIHRvIGFsbG93IHNlbnNvcgo+ICsJCSAqIG1lYXN1cmVtZW50cyBvbiB0aGVtLgo+
ICsJCSAqLwo+ICsJCWlmIChpMmNfZ2V0X2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVyKSAm
Cj4gKwkJICAgIEkyQ19GVU5DX1NNQlVTX1FVSUNLKSB7Cj4gKwkJCXJldCA9IGkyY19tYXN0ZXJf
c2VuZChjbGllbnQsIHRtcCwgMCk7Cj4gKwkJfSBlbHNlIHsKPiArCQkJdG1wWzBdID0gMDsKPiAr
CQkJcmV0ID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgdG1wLCAxKTsKPiArCQl9CgpZb3UgY2Fu
IHNpbXBsaWZ5IHRoaXMgY29kZSBieSBpbnRyb2R1Y2luZyBhIHZhcmlhYmxlIHRvIGhvbGQKdGhl
IHdyaXRlIGxlbmd0aCBpbnRvIHN0cnVjdCBoaWg2MTMwLiBUaGlzIHZhcmlhYmxlIGNhbiBiZQpp
bml0aWFsaXplZCB3aXRoIDEgb3IgMCBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uCgoJaWYgKGkyY19j
aGVja19mdW5jdGlvbmFsaXR5KGNsaWVudC0+YWRhcHRlciwgSTJDX0ZVTkNfU01CVVNfUVVJQ0sp
KQoJCWhpaDYxMzAtPndyaXRlX2xlbmd0aCA9IDA7CgllbHNlCgkJaGloNjEzMC0+d3JpdGVfbGVu
Z3RoID0gMTsKClRoZW4gcmVwbGFjZSBhYm92ZSBjb2RlIHdpdGgKCgl0bXBbMF0gPSAwOwoJcmV0
ID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVudCwgdG1wLCBoaWg2MTMwLT53cml0ZV9sZW5ndGgpOwoK
VGhpcyB3YXkgeW91IGRvbid0IGhhdmUgdG8gY2FsbCBpMmNfe2dldCxjaGVja31fZnVuY3Rpb25h
bGl0eSgpIHJlcGVhdGVkbHkuCgpUaGFua3MsCkd1ZW50ZXIKCQo+ICAgCQlpZiAocmV0IDwgMCkK
PiAgIAkJCWdvdG8gb3V0Owo+Cj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNlbnNv
cnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNl
bnNvcnM

WARNING: multiple messages have this Message-ID (diff)
From: Guenter Roeck <linux@roeck-us.net>
To: "José Miguel Gonçalves" <jose.goncalves@inov.pt>,
	"Jean Delvare" <khali@linux-fr.org>,
	"Guenter Roeck" <guenter.roeck@ericsson.com>,
	lm-sensors@lm-sensors.org, linux-kernel@vger.kernel.org
Subject: Re: [lm-sensors] [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
Date: Tue, 10 Dec 2013 17:28:04 -0800	[thread overview]
Message-ID: <52A7BFA4.2080402@roeck-us.net> (raw)
In-Reply-To: <1386723462-21388-1-git-send-email-jose.goncalves@inov.pt>

On 12/10/2013 04:57 PM, José Miguel Gonçalves wrote:
> Some I2C bus drivers do not allow zero-lenght data transfers which are

s/lenght/length/

> required to start a mesurement with the HIH6130/1 sensor. Nevertheless,

s/mesurement/measurement/

> we can overcome this limitation by writing a zero dummy byte. This byte
> is ignored by the sensor and was verified to be working with the OMAP
> I2C bus driver in a BeagleBone board.
>
> Signed-off-by: José Miguel Gonçalves <jose.goncalves@inov.pt>
> ---
>   drivers/hwmon/hih6130.c |   16 ++++++++++++++--
>   1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hwmon/hih6130.c b/drivers/hwmon/hih6130.c
> index 2dc37c7..a860cc4 100644
> --- a/drivers/hwmon/hih6130.c
> +++ b/drivers/hwmon/hih6130.c
> @@ -121,8 +121,20 @@ static int hih6130_update_measurements(struct i2c_client *client)
>   	 */
>   	if (time_after(jiffies, hih6130->last_update + HZ) || !hih6130->valid) {
>
> -		/* write to slave address, no data, to request a measurement */
> -		ret = i2c_master_send(client, tmp, 0);
> +		/*
> +		 * Write to slave address, to request a measurement.

s/,//

> +		 * According with the datasheet it should be with no data, but
> +		 * for systems with I2C bus drivers that do not allow zero
> +		 * length packets we write one dummy byte to allow sensor
> +		 * measurements on them.
> +		 */
> +		if (i2c_get_functionality(client->adapter) &
> +		    I2C_FUNC_SMBUS_QUICK) {
> +			ret = i2c_master_send(client, tmp, 0);
> +		} else {
> +			tmp[0] = 0;
> +			ret = i2c_master_send(client, tmp, 1);
> +		}

You can simplify this code by introducing a variable to hold
the write length into struct hih6130. This variable can be
initialized with 1 or 0 in the probe function.

	if (i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_QUICK))
		hih6130->write_length = 0;
	else
		hih6130->write_length = 1;

Then replace above code with

	tmp[0] = 0;
	ret = i2c_master_send(client, tmp, hih6130->write_length);

This way you don't have to call i2c_{get,check}_functionality() repeatedly.

Thanks,
Guenter
	
>   		if (ret < 0)
>   			goto out;
>
>


  reply	other threads:[~2013-12-11  1:28 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-11  0:57 [lm-sensors] [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK José Miguel Gonçalves
2013-12-11  0:57 ` José Miguel Gonçalves
2013-12-11  1:28 ` Guenter Roeck [this message]
2013-12-11  1:28   ` [lm-sensors] " Guenter Roeck
2013-12-11 11:11 ` José Miguel Gonçalves
2013-12-11 11:11   ` José Miguel Gonçalves
2013-12-11 19:29   ` [lm-sensors] " Guenter Roeck
2013-12-11 19:29     ` Guenter Roeck
2013-12-11 19:51     ` [lm-sensors] " José Miguel Gonçalves
2013-12-11 19:51       ` José Miguel Gonçalves
2013-12-11 21:28       ` [lm-sensors] " Guenter Roeck
2013-12-11 21:28         ` Guenter Roeck

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=52A7BFA4.2080402@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=guenter.roeck@ericsson.com \
    --cc=jose.goncalves@inov.pt \
    --cc=khali@linux-fr.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lm-sensors@lm-sensors.org \
    /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.