* [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.