All of lore.kernel.org
 help / color / mirror / Atom feed
* [lm-sensors] [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
@ 2013-12-11  0:57 ` José Miguel Gonçalves
  0 siblings, 0 replies; 12+ messages in thread
From: José Miguel Gonçalves @ 2013-12-11  0:57 UTC (permalink / raw)
  To: Jean Delvare, Guenter Roeck, lm-sensors, linux-kernel
  Cc: José Miguel Gonçalves

U29tZSBJMkMgYnVzIGRyaXZlcnMgZG8gbm90IGFsbG93IHplcm8tbGVuZ2h0IGRhdGEgdHJhbnNm
ZXJzIHdoaWNoIGFyZQpyZXF1aXJlZCB0byBzdGFydCBhIG1lc3VyZW1lbnQgd2l0aCB0aGUgSElI
NjEzMC8xIHNlbnNvci4gTmV2ZXJ0aGVsZXNzLAp3ZSBjYW4gb3ZlcmNvbWUgdGhpcyBsaW1pdGF0
aW9uIGJ5IHdyaXRpbmcgYSB6ZXJvIGR1bW15IGJ5dGUuIFRoaXMgYnl0ZQppcyBpZ25vcmVkIGJ5
IHRoZSBzZW5zb3IgYW5kIHdhcyB2ZXJpZmllZCB0byBiZSB3b3JraW5nIHdpdGggdGhlIE9NQVAK
STJDIGJ1cyBkcml2ZXIgaW4gYSBCZWFnbGVCb25lIGJvYXJkLgoKU2lnbmVkLW9mZi1ieTogSm9z
w6kgTWlndWVsIEdvbsOnYWx2ZXMgPGpvc2UuZ29uY2FsdmVzQGlub3YucHQ+Ci0tLQogZHJpdmVy
cy9od21vbi9oaWg2MTMwLmMgfCAgIDE2ICsrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2Vk
LCAxNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv
aHdtb24vaGloNjEzMC5jIGIvZHJpdmVycy9od21vbi9oaWg2MTMwLmMKaW5kZXggMmRjMzdjNy4u
YTg2MGNjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9oaWg2MTMwLmMKKysrIGIvZHJpdmVy
cy9od21vbi9oaWg2MTMwLmMKQEAgLTEyMSw4ICsxMjEsMjAgQEAgc3RhdGljIGludCBoaWg2MTMw
X3VwZGF0ZV9tZWFzdXJlbWVudHMoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAkgKi8KIAlp
ZiAodGltZV9hZnRlcihqaWZmaWVzLCBoaWg2MTMwLT5sYXN0X3VwZGF0ZSArIEhaKSB8fCAhaGlo
NjEzMC0+dmFsaWQpIHsKIAotCQkvKiB3cml0ZSB0byBzbGF2ZSBhZGRyZXNzLCBubyBkYXRhLCB0
byByZXF1ZXN0IGEgbWVhc3VyZW1lbnQgKi8KLQkJcmV0ID0gaTJjX21hc3Rlcl9zZW5kKGNsaWVu
dCwgdG1wLCAwKTsKKwkJLyoKKwkJICogV3JpdGUgdG8gc2xhdmUgYWRkcmVzcywgdG8gcmVxdWVz
dCBhIG1lYXN1cmVtZW50LgorCQkgKiBBY2NvcmRpbmcgd2l0aCB0aGUgZGF0YXNoZWV0IGl0IHNo
b3VsZCBiZSB3aXRoIG5vIGRhdGEsIGJ1dAorCQkgKiBmb3Igc3lzdGVtcyB3aXRoIEkyQyBidXMg
ZHJpdmVycyB0aGF0IGRvIG5vdCBhbGxvdyB6ZXJvCisJCSAqIGxlbmd0aCBwYWNrZXRzIHdlIHdy
aXRlIG9uZSBkdW1teSBieXRlIHRvIGFsbG93IHNlbnNvcgorCQkgKiBtZWFzdXJlbWVudHMgb24g
dGhlbS4KKwkJICovCisJCWlmIChpMmNfZ2V0X2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVy
KSAmCisJCSAgICBJMkNfRlVOQ19TTUJVU19RVUlDSykgeworCQkJcmV0ID0gaTJjX21hc3Rlcl9z
ZW5kKGNsaWVudCwgdG1wLCAwKTsKKwkJfSBlbHNlIHsKKwkJCXRtcFswXSA9IDA7CisJCQlyZXQg
PSBpMmNfbWFzdGVyX3NlbmQoY2xpZW50LCB0bXAsIDEpOworCQl9CiAJCWlmIChyZXQgPCAwKQog
CQkJZ290byBvdXQ7CiAKLS0gCjEuNy4xMC40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0Bs
bS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5m
by9sbS1zZW5zb3Jz

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

* [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
@ 2013-12-11  0:57 ` José Miguel Gonçalves
  0 siblings, 0 replies; 12+ messages in thread
From: José Miguel Gonçalves @ 2013-12-11  0:57 UTC (permalink / raw)
  To: Jean Delvare, Guenter Roeck, lm-sensors, linux-kernel
  Cc: José Miguel Gonçalves

Some I2C bus drivers do not allow zero-lenght data transfers which are
required to start a mesurement with the HIH6130/1 sensor. Nevertheless,
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.
+		 * 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);
+		}
 		if (ret < 0)
 			goto out;
 
-- 
1.7.10.4


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

* Re: [lm-sensors] [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
  2013-12-11  0:57 ` José Miguel Gonçalves
@ 2013-12-11  1:28   ` Guenter Roeck
  -1 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2013-12-11  1:28 UTC (permalink / raw)
  To: José Miguel Gonçalves, Jean Delvare, Guenter Roeck,
	lm-sensors, linux-kernel

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

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

* Re: [lm-sensors] [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
@ 2013-12-11  1:28   ` Guenter Roeck
  0 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2013-12-11  1:28 UTC (permalink / raw)
  To: José Miguel Gonçalves, Jean Delvare, Guenter Roeck,
	lm-sensors, linux-kernel

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;
>
>


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

* [lm-sensors] [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
@ 2013-12-11 11:11   ` José Miguel Gonçalves
  0 siblings, 0 replies; 12+ messages in thread
From: José Miguel Gonçalves @ 2013-12-11 11:11 UTC (permalink / raw)
  To: Jean Delvare, Guenter Roeck, lm-sensors, linux-kernel
  Cc: José Miguel Gonçalves

U29tZSBJMkMgYnVzIGRyaXZlcnMgZG8gbm90IGFsbG93IHplcm8tbGVuZ3RoIGRhdGEgdHJhbnNm
ZXJzIHdoaWNoIGFyZQpyZXF1aXJlZCB0byBzdGFydCBhIG1lYXN1cmVtZW50IHdpdGggdGhlIEhJ
SDYxMzAvMSBzZW5zb3IuIE5ldmVydGhlbGVzcywKd2UgY2FuIG92ZXJjb21lIHRoaXMgbGltaXRh
dGlvbiBieSB3cml0aW5nIGEgemVybyBkdW1teSBieXRlLiBUaGlzIGJ5dGUKaXMgaWdub3JlZCBi
eSB0aGUgc2Vuc29yIGFuZCB3YXMgdmVyaWZpZWQgdG8gYmUgd29ya2luZyB3aXRoIHRoZSBPTUFQ
CkkyQyBidXMgZHJpdmVyIGluIGEgQmVhZ2xlQm9uZSBib2FyZC4KClNpZ25lZC1vZmYtYnk6IEpv
c8OpIE1pZ3VlbCBHb27Dp2FsdmVzIDxqb3NlLmdvbmNhbHZlc0Bpbm92LnB0PgotLS0KdjI6IFVz
ZSBhIGZpZWxkIGluIHN0cnVjdCBoaWg2MTMwIHRvIHN0b3JlIHRoZSBtZWFzdXJlbWVudCByZXF1
ZXN0J3MgCiAgICB3cml0ZSBsZW5ndGggd2hlbiBwcm9iaW5nLgoKIGRyaXZlcnMvaHdtb24vaGlo
NjEzMC5jIHwgICAxNiArKysrKysrKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0
aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2hpaDYx
MzAuYyBiL2RyaXZlcnMvaHdtb24vaGloNjEzMC5jCmluZGV4IDJkYzM3YzcuLjhlNDYyNjUgMTAw
NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vaGloNjEzMC5jCisrKyBiL2RyaXZlcnMvaHdtb24vaGlo
NjEzMC5jCkBAIC00Myw2ICs0Myw3IEBACiAgKiBAbGFzdF91cGRhdGU6IHRpbWUgb2YgbGFzdCB1
cGRhdGUgKGppZmZpZXMpCiAgKiBAdGVtcGVyYXR1cmU6IGNhY2hlZCB0ZW1wZXJhdHVyZSBtZWFz
dXJlbWVudCB2YWx1ZQogICogQGh1bWlkaXR5OiBjYWNoZWQgaHVtaWRpdHkgbWVhc3VyZW1lbnQg
dmFsdWUKKyAqIEB3cml0ZV9sZW5ndGg6IGxlbmd0aCBmb3IgSTJDIG1lYXN1cmVtZW50IHJlcXVl
c3QKICAqLwogc3RydWN0IGhpaDYxMzAgewogCXN0cnVjdCBkZXZpY2UgKmh3bW9uX2RldjsKQEAg
LTUxLDYgKzUyLDcgQEAgc3RydWN0IGhpaDYxMzAgewogCXVuc2lnbmVkIGxvbmcgbGFzdF91cGRh
dGU7CiAJaW50IHRlbXBlcmF0dXJlOwogCWludCBodW1pZGl0eTsKKwlzaXplX3Qgd3JpdGVfbGVu
Z3RoOwogfTsKIAogLyoqCkBAIC0xMjEsOCArMTIzLDE1IEBAIHN0YXRpYyBpbnQgaGloNjEzMF91
cGRhdGVfbWVhc3VyZW1lbnRzKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJICovCiAJaWYg
KHRpbWVfYWZ0ZXIoamlmZmllcywgaGloNjEzMC0+bGFzdF91cGRhdGUgKyBIWikgfHwgIWhpaDYx
MzAtPnZhbGlkKSB7CiAKLQkJLyogd3JpdGUgdG8gc2xhdmUgYWRkcmVzcywgbm8gZGF0YSwgdG8g
cmVxdWVzdCBhIG1lYXN1cmVtZW50ICovCi0JCXJldCA9IGkyY19tYXN0ZXJfc2VuZChjbGllbnQs
IHRtcCwgMCk7CisJCS8qCisJCSAqIFdyaXRlIHRvIHNsYXZlIGFkZHJlc3MgdG8gcmVxdWVzdCBh
IG1lYXN1cmVtZW50LgorCQkgKiBBY2NvcmRpbmcgd2l0aCB0aGUgZGF0YXNoZWV0IGl0IHNob3Vs
ZCBiZSB3aXRoIG5vIGRhdGEsIGJ1dAorCQkgKiBmb3Igc3lzdGVtcyB3aXRoIEkyQyBidXMgZHJp
dmVycyB0aGF0IGRvIG5vdCBhbGxvdyB6ZXJvCisJCSAqIGxlbmd0aCBwYWNrZXRzIHdlIHdyaXRl
IG9uZSBkdW1teSBieXRlIHRvIGFsbG93IHNlbnNvcgorCQkgKiBtZWFzdXJlbWVudHMgb24gdGhl
bS4KKwkJICovCisJCXRtcFswXSA9IDA7CisJCXJldCA9IGkyY19tYXN0ZXJfc2VuZChjbGllbnQs
IHRtcCwgaGloNjEzMC0+d3JpdGVfbGVuZ3RoKTsKIAkJaWYgKHJldCA8IDApCiAJCQlnb3RvIG91
dDsKIApAQCAtMjUyLDYgKzI2MSw5IEBAIHN0YXRpYyBpbnQgaGloNjEzMF9wcm9iZShzdHJ1Y3Qg
aTJjX2NsaWVudCAqY2xpZW50LAogCQlnb3RvIGZhaWxfcmVtb3ZlX3N5c2ZzOwogCX0KIAorCWhp
aDYxMzAtPndyaXRlX2xlbmd0aCA9IChpMmNfZ2V0X2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFw
dGVyKSAmCisJCQkJIEkyQ19GVU5DX1NNQlVTX1FVSUNLID8gMCA6IDEpOworCiAJcmV0dXJuIDA7
CiAKIGZhaWxfcmVtb3ZlX3N5c2ZzOgotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1z
ZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFu
L2xpc3RpbmZvL2xtLXNlbnNvcnM

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

* [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
@ 2013-12-11 11:11   ` José Miguel Gonçalves
  0 siblings, 0 replies; 12+ messages in thread
From: José Miguel Gonçalves @ 2013-12-11 11:11 UTC (permalink / raw)
  To: Jean Delvare, Guenter Roeck, lm-sensors, linux-kernel
  Cc: José Miguel Gonçalves

Some I2C bus drivers do not allow zero-length data transfers which are
required to start a measurement with the HIH6130/1 sensor. Nevertheless,
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>
---
v2: Use a field in struct hih6130 to store the measurement request's 
    write length when probing.

 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..8e46265 100644
--- a/drivers/hwmon/hih6130.c
+++ b/drivers/hwmon/hih6130.c
@@ -43,6 +43,7 @@
  * @last_update: time of last update (jiffies)
  * @temperature: cached temperature measurement value
  * @humidity: cached humidity measurement value
+ * @write_length: length for I2C measurement request
  */
 struct hih6130 {
 	struct device *hwmon_dev;
@@ -51,6 +52,7 @@ struct hih6130 {
 	unsigned long last_update;
 	int temperature;
 	int humidity;
+	size_t write_length;
 };
 
 /**
@@ -121,8 +123,15 @@ 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.
+		 * 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.
+		 */
+		tmp[0] = 0;
+		ret = i2c_master_send(client, tmp, hih6130->write_length);
 		if (ret < 0)
 			goto out;
 
@@ -252,6 +261,9 @@ static int hih6130_probe(struct i2c_client *client,
 		goto fail_remove_sysfs;
 	}
 
+	hih6130->write_length = (i2c_get_functionality(client->adapter) &
+				 I2C_FUNC_SMBUS_QUICK ? 0 : 1);
+
 	return 0;
 
 fail_remove_sysfs:
-- 
1.7.10.4


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

* Re: [lm-sensors] [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
  2013-12-11 11:11   ` José Miguel Gonçalves
@ 2013-12-11 19:29     ` Guenter Roeck
  -1 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2013-12-11 19:29 UTC (permalink / raw)
  To: José Miguel Gonçalves; +Cc: Jean Delvare, lm-sensors, linux-kernel

On Wed, Dec 11, 2013 at 11:11:13AM +0000, José Miguel Gonçalves wrote:
> Some I2C bus drivers do not allow zero-length data transfers which are
> required to start a measurement with the HIH6130/1 sensor. Nevertheless,
> 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>

Applied, after simplifying write_length initialization a bit.

Should this go to -stable ?

Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
@ 2013-12-11 19:29     ` Guenter Roeck
  0 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2013-12-11 19:29 UTC (permalink / raw)
  To: José Miguel Gonçalves; +Cc: Jean Delvare, lm-sensors, linux-kernel

On Wed, Dec 11, 2013 at 11:11:13AM +0000, José Miguel Gonçalves wrote:
> Some I2C bus drivers do not allow zero-length data transfers which are
> required to start a measurement with the HIH6130/1 sensor. Nevertheless,
> 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>

Applied, after simplifying write_length initialization a bit.

Should this go to -stable ?

Guenter

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

* Re: [lm-sensors] [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
  2013-12-11 19:29     ` Guenter Roeck
@ 2013-12-11 19:51       ` José Miguel Gonçalves
  -1 siblings, 0 replies; 12+ messages in thread
From: José Miguel Gonçalves @ 2013-12-11 19:51 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: Jean Delvare, lm-sensors, linux-kernel

On 11-12-2013 19:29, Guenter Roeck wrote:
> On Wed, Dec 11, 2013 at 11:11:13AM +0000, José Miguel Gonçalves wrote:
>> Some I2C bus drivers do not allow zero-length data transfers which are
>> required to start a measurement with the HIH6130/1 sensor. Nevertheless,
>> 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>
> Applied, after simplifying write_length initialization a bit.
>
> Should this go to -stable ?

Any BeagleBone user that tries to use this sensor will encounter this issue. As 
this board is very popular, this will potentially solve the problems of many 
users. Nevertheless, it does not seems to me that this patch fixes "something 
critical", which is one of the conditions to be accepted in the -stable tree.

José Gonçalves

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
@ 2013-12-11 19:51       ` José Miguel Gonçalves
  0 siblings, 0 replies; 12+ messages in thread
From: José Miguel Gonçalves @ 2013-12-11 19:51 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: Jean Delvare, lm-sensors, linux-kernel

On 11-12-2013 19:29, Guenter Roeck wrote:
> On Wed, Dec 11, 2013 at 11:11:13AM +0000, José Miguel Gonçalves wrote:
>> Some I2C bus drivers do not allow zero-length data transfers which are
>> required to start a measurement with the HIH6130/1 sensor. Nevertheless,
>> 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>
> Applied, after simplifying write_length initialization a bit.
>
> Should this go to -stable ?

Any BeagleBone user that tries to use this sensor will encounter this issue. As 
this board is very popular, this will potentially solve the problems of many 
users. Nevertheless, it does not seems to me that this patch fixes "something 
critical", which is one of the conditions to be accepted in the -stable tree.

José Gonçalves

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

* Re: [lm-sensors] [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
  2013-12-11 19:51       ` José Miguel Gonçalves
@ 2013-12-11 21:28         ` Guenter Roeck
  -1 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2013-12-11 21:28 UTC (permalink / raw)
  To: José Miguel Gonçalves; +Cc: Jean Delvare, lm-sensors, linux-kernel

On Wed, Dec 11, 2013 at 07:51:54PM +0000, José Miguel Gonçalves wrote:
> On 11-12-2013 19:29, Guenter Roeck wrote:
> >On Wed, Dec 11, 2013 at 11:11:13AM +0000, José Miguel Gonçalves wrote:
> >>Some I2C bus drivers do not allow zero-length data transfers which are
> >>required to start a measurement with the HIH6130/1 sensor. Nevertheless,
> >>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>
> >Applied, after simplifying write_length initialization a bit.
> >
> >Should this go to -stable ?
> 
> Any BeagleBone user that tries to use this sensor will encounter
> this issue. As this board is very popular, this will potentially
> solve the problems of many users. Nevertheless, it does not seems to
> me that this patch fixes "something critical", which is one of the
> conditions to be accepted in the -stable tree.
> 
Depends on the definition of "critical".

Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

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

* Re: [PATCH] hwmon: HIH-6130: Support I2C bus drivers without I2C_FUNC_SMBUS_QUICK
@ 2013-12-11 21:28         ` Guenter Roeck
  0 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2013-12-11 21:28 UTC (permalink / raw)
  To: José Miguel Gonçalves; +Cc: Jean Delvare, lm-sensors, linux-kernel

On Wed, Dec 11, 2013 at 07:51:54PM +0000, José Miguel Gonçalves wrote:
> On 11-12-2013 19:29, Guenter Roeck wrote:
> >On Wed, Dec 11, 2013 at 11:11:13AM +0000, José Miguel Gonçalves wrote:
> >>Some I2C bus drivers do not allow zero-length data transfers which are
> >>required to start a measurement with the HIH6130/1 sensor. Nevertheless,
> >>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>
> >Applied, after simplifying write_length initialization a bit.
> >
> >Should this go to -stable ?
> 
> Any BeagleBone user that tries to use this sensor will encounter
> this issue. As this board is very popular, this will potentially
> solve the problems of many users. Nevertheless, it does not seems to
> me that this patch fixes "something critical", which is one of the
> conditions to be accepted in the -stable tree.
> 
Depends on the definition of "critical".

Guenter

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

end of thread, other threads:[~2013-12-11 21:28 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [lm-sensors] " Guenter Roeck
2013-12-11  1:28   ` 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

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.