* [PATCH 1/2] staging:iio:ad7606: Remove incorrect kernel doc annotation @ 2018-09-10 16:16 Lars-Peter Clausen 2018-09-10 16:16 ` [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 Lars-Peter Clausen 0 siblings, 1 reply; 10+ messages in thread From: Lars-Peter Clausen @ 2018-09-10 16:16 UTC (permalink / raw) To: Jonathan Cameron Cc: Hartmut Knaack, Peter Meerwald-Stadler, Michael Hennerich, linux-iio, Lars-Peter Clausen The ad7606_chip_info struct has no field called lock. Remove the kernel documentation annotation for it. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> --- drivers/staging/iio/adc/ad7606.h | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/staging/iio/adc/ad7606.h b/drivers/staging/iio/adc/ad7606.h index 9716ee9d94a7..fb56f479e2f1 100644 --- a/drivers/staging/iio/adc/ad7606.h +++ b/drivers/staging/iio/adc/ad7606.h @@ -14,7 +14,6 @@ * @name: identification string for chip * @channels: channel specification * @num_channels: number of channels - * @lock protect sensor state */ struct ad7606_chip_info { -- 2.11.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 2018-09-10 16:16 [PATCH 1/2] staging:iio:ad7606: Remove incorrect kernel doc annotation Lars-Peter Clausen @ 2018-09-10 16:16 ` Lars-Peter Clausen 2018-09-11 7:15 ` Ardelean, Alexandru 0 siblings, 1 reply; 10+ messages in thread From: Lars-Peter Clausen @ 2018-09-10 16:16 UTC (permalink / raw) To: Jonathan Cameron Cc: Hartmut Knaack, Peter Meerwald-Stadler, Michael Hennerich, linux-iio, Lars-Peter Clausen Add support for the AD7605-4 to the AD7606 driver. The AD7605-4 is mostly interface compatible to the AD7606-6 with the only difference being not having support for oversampling. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> --- drivers/staging/iio/adc/Kconfig | 2 +- drivers/staging/iio/adc/ad7606.c | 10 ++++++++++ drivers/staging/iio/adc/ad7606.h | 3 +++ drivers/staging/iio/adc/ad7606_par.c | 3 +++ drivers/staging/iio/adc/ad7606_spi.c | 1 + 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/staging/iio/adc/Kconfig b/drivers/staging/iio/adc/Kconfig index e17efb03bac0..9d3062a07460 100644 --- a/drivers/staging/iio/adc/Kconfig +++ b/drivers/staging/iio/adc/Kconfig @@ -11,7 +11,7 @@ config AD7606 select IIO_TRIGGERED_BUFFER help Say yes here to build support for Analog Devices: - ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC). + ad7605-4, ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC). To compile this driver as a module, choose M here: the module will be called ad7606. diff --git a/drivers/staging/iio/adc/ad7606.c b/drivers/staging/iio/adc/ad7606.c index c5fe3003075b..44a4757b88cd 100644 --- a/drivers/staging/iio/adc/ad7606.c +++ b/drivers/staging/iio/adc/ad7606.c @@ -308,17 +308,24 @@ static const struct ad7606_chip_info ad7606_chip_info_tbl[] = { /* * More devices added in future */ + [ID_AD7605_4] = { + .channels = ad7606_channels, + .num_channels = 5, + }, [ID_AD7606_8] = { .channels = ad7606_channels, .num_channels = 9, + .has_oversampling = true, }, [ID_AD7606_6] = { .channels = ad7606_channels, .num_channels = 7, + .has_oversampling = true, }, [ID_AD7606_4] = { .channels = ad7606_channels, .num_channels = 5, + .has_oversampling = true, }, }; @@ -349,6 +356,9 @@ static int ad7606_request_gpios(struct ad7606_state *st) if (IS_ERR(st->gpio_frstdata)) return PTR_ERR(st->gpio_frstdata); + if (!st->chip_info->has_oversampling) + return 0; + st->gpio_os = devm_gpiod_get_array_optional(dev, "oversampling-ratio", GPIOD_OUT_LOW); return PTR_ERR_OR_ZERO(st->gpio_os); diff --git a/drivers/staging/iio/adc/ad7606.h b/drivers/staging/iio/adc/ad7606.h index fb56f479e2f1..2a8bc9e87449 100644 --- a/drivers/staging/iio/adc/ad7606.h +++ b/drivers/staging/iio/adc/ad7606.h @@ -14,11 +14,13 @@ * @name: identification string for chip * @channels: channel specification * @num_channels: number of channels + * @has_oversampling: whether the device has oversampling support */ struct ad7606_chip_info { const struct iio_chan_spec *channels; unsigned int num_channels; + bool has_oversampling; }; /** @@ -65,6 +67,7 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address, int ad7606_remove(struct device *dev, int irq); enum ad7606_supported_device_ids { + ID_AD7605_4, ID_AD7606_8, ID_AD7606_6, ID_AD7606_4 diff --git a/drivers/staging/iio/adc/ad7606_par.c b/drivers/staging/iio/adc/ad7606_par.c index 956e38774767..8bd86e727b02 100644 --- a/drivers/staging/iio/adc/ad7606_par.c +++ b/drivers/staging/iio/adc/ad7606_par.c @@ -79,6 +79,9 @@ static int ad7606_par_remove(struct platform_device *pdev) static const struct platform_device_id ad7606_driver_ids[] = { { + .name = "ad7605-4", + .driver_data = ID_AD7605_4, + }, { .name = "ad7606-8", .driver_data = ID_AD7606_8, }, { diff --git a/drivers/staging/iio/adc/ad7606_spi.c b/drivers/staging/iio/adc/ad7606_spi.c index ffd9d0626ec2..b76ca5a8c059 100644 --- a/drivers/staging/iio/adc/ad7606_spi.c +++ b/drivers/staging/iio/adc/ad7606_spi.c @@ -55,6 +55,7 @@ static int ad7606_spi_remove(struct spi_device *spi) } static const struct spi_device_id ad7606_id[] = { + {"ad7605-4", ID_AD7605_4}, {"ad7606-8", ID_AD7606_8}, {"ad7606-6", ID_AD7606_6}, {"ad7606-4", ID_AD7606_4}, -- 2.11.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 2018-09-10 16:16 ` [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 Lars-Peter Clausen @ 2018-09-11 7:15 ` Ardelean, Alexandru 0 siblings, 0 replies; 10+ messages in thread From: Ardelean, Alexandru @ 2018-09-11 7:15 UTC (permalink / raw) To: lars@metafoo.de, jic23@kernel.org Cc: knaack.h@gmx.de, pmeerw@pmeerw.net, Hennerich, Michael, linux-iio@vger.kernel.org T24gTW9uLCAyMDE4LTA5LTEwIGF0IDE4OjE2ICswMjAwLCBMYXJzLVBldGVyIENsYXVzZW4gd3Jv dGU6DQo+IEFkZCBzdXBwb3J0IGZvciB0aGUgQUQ3NjA1LTQgdG8gdGhlIEFENzYwNiBkcml2ZXIu IFRoZSBBRDc2MDUtNCBpcyBtb3N0bHkNCj4gaW50ZXJmYWNlIGNvbXBhdGlibGUgdG8gdGhlIEFE NzYwNi02IHdpdGggdGhlIG9ubHkgZGlmZmVyZW5jZSBiZWluZyBub3QNCj4gaGF2aW5nIHN1cHBv cnQgZm9yIG92ZXJzYW1wbGluZy4NCj4gDQoNCkhleSwNCg0KQSBmZXcgbm90ZXMuDQoNCj4gU2ln bmVkLW9mZi1ieTogTGFycy1QZXRlciBDbGF1c2VuIDxsYXJzQG1ldGFmb28uZGU+DQo+IC0tLQ0K PiAgZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvS2NvbmZpZyAgICAgIHwgIDIgKy0NCj4gIGRyaXZl cnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNi5jICAgICB8IDEwICsrKysrKysrKysNCj4gIGRyaXZl cnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNi5oICAgICB8ICAzICsrKw0KPiAgZHJpdmVycy9zdGFn aW5nL2lpby9hZGMvYWQ3NjA2X3Bhci5jIHwgIDMgKysrDQo+ICBkcml2ZXJzL3N0YWdpbmcvaWlv L2FkYy9hZDc2MDZfc3BpLmMgfCAgMSArDQo+ICA1IGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcv aWlvL2FkYy9LY29uZmlnDQo+IGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvS2NvbmZpZw0KPiBp bmRleCBlMTdlZmIwM2JhYzAuLjlkMzA2MmEwNzQ2MCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9z dGFnaW5nL2lpby9hZGMvS2NvbmZpZw0KPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9L Y29uZmlnDQo+IEBAIC0xMSw3ICsxMSw3IEBAIGNvbmZpZyBBRDc2MDYNCj4gIAlzZWxlY3QgSUlP X1RSSUdHRVJFRF9CVUZGRVINCj4gIAloZWxwDQo+ICAJICBTYXkgeWVzIGhlcmUgdG8gYnVpbGQg c3VwcG9ydCBmb3IgQW5hbG9nIERldmljZXM6DQo+IC0JICBhZDc2MDYsIGFkNzYwNi02LCBhZDc2 MDYtNCBhbmFsb2cgdG8gZGlnaXRhbCBjb252ZXJ0ZXJzIChBREMpLg0KPiArCSAgYWQ3NjA1LTQs IGFkNzYwNiwgYWQ3NjA2LTYsIGFkNzYwNi00IGFuYWxvZyB0byBkaWdpdGFsDQo+IGNvbnZlcnRl cnMgKEFEQykuDQo+ICANCj4gIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUs IGNob29zZSBNIGhlcmU6IHRoZQ0KPiAgCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFkNzYwNi4N Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNi5jDQo+IGIvZHJp dmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2LmMNCj4gaW5kZXggYzVmZTMwMDMwNzViLi40NGE0 NzU3Yjg4Y2QgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNi5j DQo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNi5jDQo+IEBAIC0zMDgsMTcg KzMwOCwyNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFkNzYwNl9jaGlwX2luZm8NCj4gYWQ3NjA2 X2NoaXBfaW5mb190YmxbXSA9IHsNCj4gIAkvKg0KPiAgCSAqIE1vcmUgZGV2aWNlcyBhZGRlZCBp biBmdXR1cmUNCj4gIAkgKi8NCj4gKwlbSURfQUQ3NjA1XzRdID0gew0KPiArCQkuY2hhbm5lbHMg PSBhZDc2MDZfY2hhbm5lbHMsDQo+ICsJCS5udW1fY2hhbm5lbHMgPSA1LA0KPiArCX0sDQo+ICAJ W0lEX0FENzYwNl84XSA9IHsNCj4gIAkJLmNoYW5uZWxzID0gYWQ3NjA2X2NoYW5uZWxzLA0KPiAg CQkubnVtX2NoYW5uZWxzID0gOSwNCj4gKwkJLmhhc19vdmVyc2FtcGxpbmcgPSB0cnVlLA0KPiAg CX0sDQo+ICAJW0lEX0FENzYwNl82XSA9IHsNCj4gIAkJLmNoYW5uZWxzID0gYWQ3NjA2X2NoYW5u ZWxzLA0KPiAgCQkubnVtX2NoYW5uZWxzID0gNywNCj4gKwkJLmhhc19vdmVyc2FtcGxpbmcgPSB0 cnVlLA0KPiAgCX0sDQo+ICAJW0lEX0FENzYwNl80XSA9IHsNCj4gIAkJLmNoYW5uZWxzID0gYWQ3 NjA2X2NoYW5uZWxzLA0KPiAgCQkubnVtX2NoYW5uZWxzID0gNSwNCj4gKwkJLmhhc19vdmVyc2Ft cGxpbmcgPSB0cnVlLA0KDQpUaGUgc3lzZnMgZW50cnkgZm9yIG92ZXJzYW1wbGluZyB3b3VsZCBz dGlsbCBzaG93IHVwIGZvciB0aGlzLg0KVGhlIElJT19DSEFOX0lORk9fT1ZFUlNBTVBMSU5HX1JB VElPIGJpdCBuZWVkcyB0byBiZSByZW1vdmVkIGZyb20gdGhlDQpgaW5mb19tYXNrX3NoYXJlZF9i eV9hbGxgIGZpZWxkLg0KSXQgZG9lc24ndCBodXJ0IHRvIGxlYXZlIGl0LCBqdXN0IGNhdXNlcyBz b21lIHNtYWxsIGNvbmZ1c2lvbnMgYWJvdXQNCm92ZXJzYW1wbGluZyB3aGVuIGxvb2tpbmcgYXQg dGhlIGRldmljZSBmcm9tIHN5c2ZzLg0KDQo+ICAJfSwNCj4gIH07DQo+ICANCj4gQEAgLTM0OSw2 ICszNTYsOSBAQCBzdGF0aWMgaW50IGFkNzYwNl9yZXF1ZXN0X2dwaW9zKHN0cnVjdCBhZDc2MDZf c3RhdGUNCj4gKnN0KQ0KPiAgCWlmIChJU19FUlIoc3QtPmdwaW9fZnJzdGRhdGEpKQ0KPiAgCQly ZXR1cm4gUFRSX0VSUihzdC0+Z3Bpb19mcnN0ZGF0YSk7DQo+ICANCj4gKwlpZiAoIXN0LT5jaGlw X2luZm8tPmhhc19vdmVyc2FtcGxpbmcpDQo+ICsJCXJldHVybiAwOw0KPiArDQoNCkkgdGhpbmsg dGhpcyBuZWVkcyBhbiBleHRyYSBwYXRjaC9jaGFuZ2UuDQpBdCB0aGlzIHBvaW50IGluIHRpbWUg YHN0LT5jaGlwX2luZm9gIGlzIE5VTEwsIHNvIHRoZSBhc3NpZ25tZW50IGhhcyB0byBiZQ0KbW92 ZWQgYmVmb3JlIGFkNzYwNl9yZXF1ZXN0X2dwaW9zKCkgaXMgY2FsbGVkLg0KDQoNCj4gIAlzdC0+ Z3Bpb19vcyA9IGRldm1fZ3Bpb2RfZ2V0X2FycmF5X29wdGlvbmFsKGRldiwgIm92ZXJzYW1wbGlu Zy0NCj4gcmF0aW8iLA0KPiAgCQkJR1BJT0RfT1VUX0xPVyk7DQo+ICAJcmV0dXJuIFBUUl9FUlJf T1JfWkVSTyhzdC0+Z3Bpb19vcyk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlv L2FkYy9hZDc2MDYuaA0KPiBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNi5oDQo+IGlu ZGV4IGZiNTZmNDc5ZTJmMS4uMmE4YmM5ZTg3NDQ5IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3N0 YWdpbmcvaWlvL2FkYy9hZDc2MDYuaA0KPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9h ZDc2MDYuaA0KPiBAQCAtMTQsMTEgKzE0LDEzIEBADQo+ICAgKiBAbmFtZToJCWlkZW50aWZpY2F0 aW9uIHN0cmluZyBmb3IgY2hpcA0KPiAgICogQGNoYW5uZWxzOgkJY2hhbm5lbCBzcGVjaWZpY2F0 aW9uDQo+ICAgKiBAbnVtX2NoYW5uZWxzOgludW1iZXIgb2YgY2hhbm5lbHMNCj4gKyAqIEBoYXNf b3ZlcnNhbXBsaW5nOgl3aGV0aGVyIHRoZSBkZXZpY2UgaGFzIG92ZXJzYW1wbGluZyBzdXBwb3J0 DQo+ICAgKi8NCj4gIA0KPiAgc3RydWN0IGFkNzYwNl9jaGlwX2luZm8gew0KPiAgCWNvbnN0IHN0 cnVjdCBpaW9fY2hhbl9zcGVjCSpjaGFubmVsczsNCj4gIAl1bnNpZ25lZCBpbnQJCQludW1fY2hh bm5lbHM7DQo+ICsJYm9vbAkJCQloYXNfb3ZlcnNhbXBsaW5nOw0KPiAgfTsNCj4gIA0KPiAgLyoq DQo+IEBAIC02NSw2ICs2Nyw3IEBAIGludCBhZDc2MDZfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2 LCBpbnQgaXJxLCB2b2lkDQo+IF9faW9tZW0gKmJhc2VfYWRkcmVzcywNCj4gIGludCBhZDc2MDZf cmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGlycSk7DQo+ICANCj4gIGVudW0gYWQ3NjA2 X3N1cHBvcnRlZF9kZXZpY2VfaWRzIHsNCj4gKwlJRF9BRDc2MDVfNCwNCj4gIAlJRF9BRDc2MDZf OCwNCj4gIAlJRF9BRDc2MDZfNiwNCj4gIAlJRF9BRDc2MDZfNA0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2X3Bhci5jDQo+IGIvZHJpdmVycy9zdGFnaW5nL2lp by9hZGMvYWQ3NjA2X3Bhci5jDQo+IGluZGV4IDk1NmUzODc3NDc2Ny4uOGJkODZlNzI3YjAyIDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2MDZfcGFyLmMNCj4gKysr IGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2X3Bhci5jDQo+IEBAIC03OSw2ICs3OSw5 IEBAIHN0YXRpYyBpbnQgYWQ3NjA2X3Bhcl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZQ0K PiAqcGRldikNCj4gIA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaWQg YWQ3NjA2X2RyaXZlcl9pZHNbXSA9IHsNCj4gIAl7DQo+ICsJCS5uYW1lCQk9ICJhZDc2MDUtNCIs DQo+ICsJCS5kcml2ZXJfZGF0YQk9IElEX0FENzYwNV80LA0KPiArCX0sIHsNCj4gIAkJLm5hbWUJ CT0gImFkNzYwNi04IiwNCj4gIAkJLmRyaXZlcl9kYXRhCT0gSURfQUQ3NjA2XzgsDQo+ICAJfSwg ew0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2X3NwaS5jDQo+ IGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2X3NwaS5jDQo+IGluZGV4IGZmZDlkMDYy NmVjMi4uYjc2Y2E1YThjMDU5IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2Fk Yy9hZDc2MDZfc3BpLmMNCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2X3Nw aS5jDQo+IEBAIC01NSw2ICs1NSw3IEBAIHN0YXRpYyBpbnQgYWQ3NjA2X3NwaV9yZW1vdmUoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSkNCj4gIH0NCj4gIA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBz cGlfZGV2aWNlX2lkIGFkNzYwNl9pZFtdID0gew0KPiArCXsiYWQ3NjA1LTQiLCBJRF9BRDc2MDVf NH0sDQo+ICAJeyJhZDc2MDYtOCIsIElEX0FENzYwNl84fSwNCj4gIAl7ImFkNzYwNi02IiwgSURf QUQ3NjA2XzZ9LA0KPiAgCXsiYWQ3NjA2LTQiLCBJRF9BRDc2MDZfNH0s ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/2] staging:iio:ad7606: Remove incorrect kernel doc annotations @ 2018-09-13 11:02 Alexandru Ardelean 2018-09-13 11:02 ` [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 Alexandru Ardelean 0 siblings, 1 reply; 10+ messages in thread From: Alexandru Ardelean @ 2018-09-13 11:02 UTC (permalink / raw) To: linux-iio, Michael.Hennerich, lars, jic23 Cc: knaack.h, pmeerw, Alexandru Ardelean The ad7606_chip_info struct does not have the lock & name fields. Remove the kernel documentation annotations for it. Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> --- drivers/staging/iio/adc/ad7606.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/staging/iio/adc/ad7606.h b/drivers/staging/iio/adc/ad7606.h index 24c2a85f5c5a..57f11b46bc69 100644 --- a/drivers/staging/iio/adc/ad7606.h +++ b/drivers/staging/iio/adc/ad7606.h @@ -11,10 +11,8 @@ /** * struct ad7606_chip_info - chip specific information - * @name: identification string for chip * @channels: channel specification * @num_channels: number of channels - * @lock protect sensor state */ struct ad7606_chip_info { -- 2.17.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 2018-09-13 11:02 [PATCH 1/2] staging:iio:ad7606: Remove incorrect kernel doc annotations Alexandru Ardelean @ 2018-09-13 11:02 ` Alexandru Ardelean 2018-09-16 11:22 ` Jonathan Cameron 0 siblings, 1 reply; 10+ messages in thread From: Alexandru Ardelean @ 2018-09-13 11:02 UTC (permalink / raw) To: linux-iio, Michael.Hennerich, lars, jic23 Cc: knaack.h, pmeerw, Alexandru Ardelean Add support for the AD7605-4 to the AD7606 driver. The AD7605-4 is mostly interface compatible to the AD7606-6 with the only difference being not having support for oversampling. Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> --- drivers/staging/iio/adc/Kconfig | 2 +- drivers/staging/iio/adc/ad7606.c | 33 +++++++++++++++++++++++----- drivers/staging/iio/adc/ad7606.h | 3 +++ drivers/staging/iio/adc/ad7606_par.c | 3 +++ drivers/staging/iio/adc/ad7606_spi.c | 1 + 5 files changed, 36 insertions(+), 6 deletions(-) diff --git a/drivers/staging/iio/adc/Kconfig b/drivers/staging/iio/adc/Kconfig index e17efb03bac0..9d3062a07460 100644 --- a/drivers/staging/iio/adc/Kconfig +++ b/drivers/staging/iio/adc/Kconfig @@ -11,7 +11,7 @@ config AD7606 select IIO_TRIGGERED_BUFFER help Say yes here to build support for Analog Devices: - ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC). + ad7605-4, ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC). To compile this driver as a module, choose M here: the module will be called ad7606. diff --git a/drivers/staging/iio/adc/ad7606.c b/drivers/staging/iio/adc/ad7606.c index 793de92f27ed..06d65196bedb 100644 --- a/drivers/staging/iio/adc/ad7606.c +++ b/drivers/staging/iio/adc/ad7606.c @@ -275,7 +275,7 @@ static const struct attribute_group ad7606_attribute_group_range = { .attrs = ad7606_attributes_range, }; -#define AD7606_CHANNEL(num) \ +#define AD760X_CHANNEL(num, mask) \ { \ .type = IIO_VOLTAGE, \ .indexed = 1, \ @@ -283,8 +283,7 @@ static const struct attribute_group ad7606_attribute_group_range = { .address = num, \ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),\ - .info_mask_shared_by_all = \ - BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO), \ + .info_mask_shared_by_all = mask, \ .scan_index = num, \ .scan_type = { \ .sign = 's', \ @@ -294,6 +293,20 @@ static const struct attribute_group ad7606_attribute_group_range = { }, \ } +#define AD7605_CHANNEL(num) \ + AD760X_CHANNEL(num, 0) + +#define AD7606_CHANNEL(num) \ + AD760X_CHANNEL(num, BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO)) + +static const struct iio_chan_spec ad7605_channels[] = { + IIO_CHAN_SOFT_TIMESTAMP(4), + AD7605_CHANNEL(0), + AD7605_CHANNEL(1), + AD7605_CHANNEL(2), + AD7605_CHANNEL(3), +}; + static const struct iio_chan_spec ad7606_channels[] = { IIO_CHAN_SOFT_TIMESTAMP(8), AD7606_CHANNEL(0), @@ -310,17 +323,24 @@ static const struct ad7606_chip_info ad7606_chip_info_tbl[] = { /* * More devices added in future */ + [ID_AD7605_4] = { + .channels = ad7605_channels, + .num_channels = 5, + }, [ID_AD7606_8] = { .channels = ad7606_channels, .num_channels = 9, + .has_oversampling = true, }, [ID_AD7606_6] = { .channels = ad7606_channels, .num_channels = 7, + .has_oversampling = true, }, [ID_AD7606_4] = { .channels = ad7606_channels, .num_channels = 5, + .has_oversampling = true, }, }; @@ -351,6 +371,9 @@ static int ad7606_request_gpios(struct ad7606_state *st) if (IS_ERR(st->gpio_frstdata)) return PTR_ERR(st->gpio_frstdata); + if (!st->chip_info->has_oversampling) + return 0; + st->gpio_os = devm_gpiod_get_array_optional(dev, "oversampling-ratio", GPIOD_OUT_LOW); return PTR_ERR_OR_ZERO(st->gpio_os); @@ -429,12 +452,12 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address, return ret; } + st->chip_info = &ad7606_chip_info_tbl[id]; + ret = ad7606_request_gpios(st); if (ret) goto error_disable_reg; - st->chip_info = &ad7606_chip_info_tbl[id]; - indio_dev->dev.parent = dev; if (st->gpio_os) { if (st->gpio_range) diff --git a/drivers/staging/iio/adc/ad7606.h b/drivers/staging/iio/adc/ad7606.h index 57f11b46bc69..f422296354c9 100644 --- a/drivers/staging/iio/adc/ad7606.h +++ b/drivers/staging/iio/adc/ad7606.h @@ -13,11 +13,13 @@ * struct ad7606_chip_info - chip specific information * @channels: channel specification * @num_channels: number of channels + * @has_oversampling: whether the device has oversampling support */ struct ad7606_chip_info { const struct iio_chan_spec *channels; unsigned int num_channels; + bool has_oversampling; }; /** @@ -87,6 +89,7 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address, int ad7606_remove(struct device *dev, int irq); enum ad7606_supported_device_ids { + ID_AD7605_4, ID_AD7606_8, ID_AD7606_6, ID_AD7606_4 diff --git a/drivers/staging/iio/adc/ad7606_par.c b/drivers/staging/iio/adc/ad7606_par.c index 956e38774767..8bd86e727b02 100644 --- a/drivers/staging/iio/adc/ad7606_par.c +++ b/drivers/staging/iio/adc/ad7606_par.c @@ -79,6 +79,9 @@ static int ad7606_par_remove(struct platform_device *pdev) static const struct platform_device_id ad7606_driver_ids[] = { { + .name = "ad7605-4", + .driver_data = ID_AD7605_4, + }, { .name = "ad7606-8", .driver_data = ID_AD7606_8, }, { diff --git a/drivers/staging/iio/adc/ad7606_spi.c b/drivers/staging/iio/adc/ad7606_spi.c index ffd9d0626ec2..b76ca5a8c059 100644 --- a/drivers/staging/iio/adc/ad7606_spi.c +++ b/drivers/staging/iio/adc/ad7606_spi.c @@ -55,6 +55,7 @@ static int ad7606_spi_remove(struct spi_device *spi) } static const struct spi_device_id ad7606_id[] = { + {"ad7605-4", ID_AD7605_4}, {"ad7606-8", ID_AD7606_8}, {"ad7606-6", ID_AD7606_6}, {"ad7606-4", ID_AD7606_4}, -- 2.17.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 2018-09-13 11:02 ` [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 Alexandru Ardelean @ 2018-09-16 11:22 ` Jonathan Cameron 2018-09-17 7:33 ` Ardelean, Alexandru 0 siblings, 1 reply; 10+ messages in thread From: Jonathan Cameron @ 2018-09-16 11:22 UTC (permalink / raw) To: Alexandru Ardelean; +Cc: linux-iio, Michael.Hennerich, lars, knaack.h, pmeerw On Thu, 13 Sep 2018 14:02:12 +0300 Alexandru Ardelean <alexandru.ardelean@analog.com> wrote: > Add support for the AD7605-4 to the AD7606 driver. The AD7605-4 is mostly > interface compatible to the AD7606-6 with the only difference being not > having support for oversampling. > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> I am guessing this might clash with the devm change from earlier in the day so I'm not going to apply it (too much risk of a bug sneaking in). Please resend the remaining patches in for this driver as a series so ordering is obvious etc. Otherwise this one looks good to me. Thanks, Jonathan > --- > drivers/staging/iio/adc/Kconfig | 2 +- > drivers/staging/iio/adc/ad7606.c | 33 +++++++++++++++++++++++----- > drivers/staging/iio/adc/ad7606.h | 3 +++ > drivers/staging/iio/adc/ad7606_par.c | 3 +++ > drivers/staging/iio/adc/ad7606_spi.c | 1 + > 5 files changed, 36 insertions(+), 6 deletions(-) > > diff --git a/drivers/staging/iio/adc/Kconfig b/drivers/staging/iio/adc/Kconfig > index e17efb03bac0..9d3062a07460 100644 > --- a/drivers/staging/iio/adc/Kconfig > +++ b/drivers/staging/iio/adc/Kconfig > @@ -11,7 +11,7 @@ config AD7606 > select IIO_TRIGGERED_BUFFER > help > Say yes here to build support for Analog Devices: > - ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC). > + ad7605-4, ad7606, ad7606-6, ad7606-4 analog to digital converters (ADC). > > To compile this driver as a module, choose M here: the > module will be called ad7606. > diff --git a/drivers/staging/iio/adc/ad7606.c b/drivers/staging/iio/adc/ad7606.c > index 793de92f27ed..06d65196bedb 100644 > --- a/drivers/staging/iio/adc/ad7606.c > +++ b/drivers/staging/iio/adc/ad7606.c > @@ -275,7 +275,7 @@ static const struct attribute_group ad7606_attribute_group_range = { > .attrs = ad7606_attributes_range, > }; > > -#define AD7606_CHANNEL(num) \ > +#define AD760X_CHANNEL(num, mask) \ > { \ > .type = IIO_VOLTAGE, \ > .indexed = 1, \ > @@ -283,8 +283,7 @@ static const struct attribute_group ad7606_attribute_group_range = { > .address = num, \ > .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \ > .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),\ > - .info_mask_shared_by_all = \ > - BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO), \ > + .info_mask_shared_by_all = mask, \ > .scan_index = num, \ > .scan_type = { \ > .sign = 's', \ > @@ -294,6 +293,20 @@ static const struct attribute_group ad7606_attribute_group_range = { > }, \ > } > > +#define AD7605_CHANNEL(num) \ > + AD760X_CHANNEL(num, 0) > + > +#define AD7606_CHANNEL(num) \ > + AD760X_CHANNEL(num, BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO)) > + > +static const struct iio_chan_spec ad7605_channels[] = { > + IIO_CHAN_SOFT_TIMESTAMP(4), > + AD7605_CHANNEL(0), > + AD7605_CHANNEL(1), > + AD7605_CHANNEL(2), > + AD7605_CHANNEL(3), > +}; > + > static const struct iio_chan_spec ad7606_channels[] = { > IIO_CHAN_SOFT_TIMESTAMP(8), > AD7606_CHANNEL(0), > @@ -310,17 +323,24 @@ static const struct ad7606_chip_info ad7606_chip_info_tbl[] = { > /* > * More devices added in future > */ > + [ID_AD7605_4] = { > + .channels = ad7605_channels, > + .num_channels = 5, > + }, > [ID_AD7606_8] = { > .channels = ad7606_channels, > .num_channels = 9, > + .has_oversampling = true, > }, > [ID_AD7606_6] = { > .channels = ad7606_channels, > .num_channels = 7, > + .has_oversampling = true, > }, > [ID_AD7606_4] = { > .channels = ad7606_channels, > .num_channels = 5, > + .has_oversampling = true, > }, > }; > > @@ -351,6 +371,9 @@ static int ad7606_request_gpios(struct ad7606_state *st) > if (IS_ERR(st->gpio_frstdata)) > return PTR_ERR(st->gpio_frstdata); > > + if (!st->chip_info->has_oversampling) > + return 0; > + > st->gpio_os = devm_gpiod_get_array_optional(dev, "oversampling-ratio", > GPIOD_OUT_LOW); > return PTR_ERR_OR_ZERO(st->gpio_os); > @@ -429,12 +452,12 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address, > return ret; > } > > + st->chip_info = &ad7606_chip_info_tbl[id]; > + > ret = ad7606_request_gpios(st); > if (ret) > goto error_disable_reg; > > - st->chip_info = &ad7606_chip_info_tbl[id]; > - > indio_dev->dev.parent = dev; > if (st->gpio_os) { > if (st->gpio_range) > diff --git a/drivers/staging/iio/adc/ad7606.h b/drivers/staging/iio/adc/ad7606.h > index 57f11b46bc69..f422296354c9 100644 > --- a/drivers/staging/iio/adc/ad7606.h > +++ b/drivers/staging/iio/adc/ad7606.h > @@ -13,11 +13,13 @@ > * struct ad7606_chip_info - chip specific information > * @channels: channel specification > * @num_channels: number of channels > + * @has_oversampling: whether the device has oversampling support > */ > > struct ad7606_chip_info { > const struct iio_chan_spec *channels; > unsigned int num_channels; > + bool has_oversampling; > }; > > /** > @@ -87,6 +89,7 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address, > int ad7606_remove(struct device *dev, int irq); > > enum ad7606_supported_device_ids { > + ID_AD7605_4, > ID_AD7606_8, > ID_AD7606_6, > ID_AD7606_4 > diff --git a/drivers/staging/iio/adc/ad7606_par.c b/drivers/staging/iio/adc/ad7606_par.c > index 956e38774767..8bd86e727b02 100644 > --- a/drivers/staging/iio/adc/ad7606_par.c > +++ b/drivers/staging/iio/adc/ad7606_par.c > @@ -79,6 +79,9 @@ static int ad7606_par_remove(struct platform_device *pdev) > > static const struct platform_device_id ad7606_driver_ids[] = { > { > + .name = "ad7605-4", > + .driver_data = ID_AD7605_4, > + }, { > .name = "ad7606-8", > .driver_data = ID_AD7606_8, > }, { > diff --git a/drivers/staging/iio/adc/ad7606_spi.c b/drivers/staging/iio/adc/ad7606_spi.c > index ffd9d0626ec2..b76ca5a8c059 100644 > --- a/drivers/staging/iio/adc/ad7606_spi.c > +++ b/drivers/staging/iio/adc/ad7606_spi.c > @@ -55,6 +55,7 @@ static int ad7606_spi_remove(struct spi_device *spi) > } > > static const struct spi_device_id ad7606_id[] = { > + {"ad7605-4", ID_AD7605_4}, > {"ad7606-8", ID_AD7606_8}, > {"ad7606-6", ID_AD7606_6}, > {"ad7606-4", ID_AD7606_4}, ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 2018-09-16 11:22 ` Jonathan Cameron @ 2018-09-17 7:33 ` Ardelean, Alexandru 2018-09-17 8:30 ` Jonathan Cameron 0 siblings, 1 reply; 10+ messages in thread From: Ardelean, Alexandru @ 2018-09-17 7:33 UTC (permalink / raw) To: jic23@kernel.org Cc: lars@metafoo.de, knaack.h@gmx.de, linux-iio@vger.kernel.org, Hennerich, Michael, pmeerw@pmeerw.net T24gU3VuLCAyMDE4LTA5LTE2IGF0IDEyOjIyICswMTAwLCBKb25hdGhhbiBDYW1lcm9uIHdyb3Rl Og0KPiBPbiBUaHUsIDEzIFNlcCAyMDE4IDE0OjAyOjEyICswMzAwDQo+IEFsZXhhbmRydSBBcmRl bGVhbiA8YWxleGFuZHJ1LmFyZGVsZWFuQGFuYWxvZy5jb20+IHdyb3RlOg0KPiANCj4gPiBBZGQg c3VwcG9ydCBmb3IgdGhlIEFENzYwNS00IHRvIHRoZSBBRDc2MDYgZHJpdmVyLiBUaGUgQUQ3NjA1 LTQgaXMNCj4gPiBtb3N0bHkNCj4gPiBpbnRlcmZhY2UgY29tcGF0aWJsZSB0byB0aGUgQUQ3NjA2 LTYgd2l0aCB0aGUgb25seSBkaWZmZXJlbmNlIGJlaW5nIG5vdA0KPiA+IGhhdmluZyBzdXBwb3J0 IGZvciBvdmVyc2FtcGxpbmcuDQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJ1IEFy ZGVsZWFuIDxhbGV4YW5kcnUuYXJkZWxlYW5AYW5hbG9nLmNvbT4NCj4gDQo+IEkgYW0gZ3Vlc3Np bmcgdGhpcyBtaWdodCBjbGFzaCB3aXRoIHRoZSBkZXZtIGNoYW5nZSBmcm9tIGVhcmxpZXIgaW4g dGhlDQo+IGRheSBzbyBJJ20gbm90IGdvaW5nIHRvIGFwcGx5IGl0ICh0b28gbXVjaCByaXNrIG9m IGEgYnVnIHNuZWFraW5nIGluKS4NCj4gDQo+IFBsZWFzZSByZXNlbmQgdGhlIHJlbWFpbmluZyBw YXRjaGVzIGluIGZvciB0aGlzIGRyaXZlciBhcyBhIHNlcmllcyBzbw0KPiBvcmRlcmluZyBpcyBv YnZpb3VzIGV0Yy4NCg0KSG1tLCB0aGUgcGF0Y2ggZG9lc24ndCBjbGFzaCwgYnV0IEkgd2lsbCBz ZW5kIHRoZW0gYXMgYSBzZXJpZXMuDQoNCj4gDQo+IE90aGVyd2lzZSB0aGlzIG9uZSBsb29rcyBn b29kIHRvIG1lLg0KPiANCj4gVGhhbmtzLA0KPiANCj4gSm9uYXRoYW4NCg0KVGhhbmtzDQpBbGV4 DQoNCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvS2NvbmZpZyAgICAgIHwg IDIgKy0NCj4gPiAgZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2LmMgICAgIHwgMzMgKysr KysrKysrKysrKysrKysrKysrKystLS0tLQ0KPiA+ICBkcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9h ZDc2MDYuaCAgICAgfCAgMyArKysNCj4gPiAgZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2 X3Bhci5jIHwgIDMgKysrDQo+ID4gIGRyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNl9zcGku YyB8ICAxICsNCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0 aW9ucygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9L Y29uZmlnDQo+ID4gYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9LY29uZmlnDQo+ID4gaW5kZXgg ZTE3ZWZiMDNiYWMwLi45ZDMwNjJhMDc0NjAgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9zdGFn aW5nL2lpby9hZGMvS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL0tj b25maWcNCj4gPiBAQCAtMTEsNyArMTEsNyBAQCBjb25maWcgQUQ3NjA2DQo+ID4gIAlzZWxlY3Qg SUlPX1RSSUdHRVJFRF9CVUZGRVINCj4gPiAgCWhlbHANCj4gPiAgCSAgU2F5IHllcyBoZXJlIHRv IGJ1aWxkIHN1cHBvcnQgZm9yIEFuYWxvZyBEZXZpY2VzOg0KPiA+IC0JICBhZDc2MDYsIGFkNzYw Ni02LCBhZDc2MDYtNCBhbmFsb2cgdG8gZGlnaXRhbCBjb252ZXJ0ZXJzDQo+ID4gKEFEQykuDQo+ ID4gKwkgIGFkNzYwNS00LCBhZDc2MDYsIGFkNzYwNi02LCBhZDc2MDYtNCBhbmFsb2cgdG8gZGln aXRhbA0KPiA+IGNvbnZlcnRlcnMgKEFEQykuDQo+ID4gIA0KPiA+ICAJICBUbyBjb21waWxlIHRo aXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUNCj4gPiAgCSAgbW9kdWxl IHdpbGwgYmUgY2FsbGVkIGFkNzYwNi4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L2lpby9hZGMvYWQ3NjA2LmMNCj4gPiBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNi5j DQo+ID4gaW5kZXggNzkzZGU5MmYyN2VkLi4wNmQ2NTE5NmJlZGIgMTAwNjQ0DQo+ID4gLS0tIGEv ZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2LmMNCj4gPiArKysgYi9kcml2ZXJzL3N0YWdp bmcvaWlvL2FkYy9hZDc2MDYuYw0KPiA+IEBAIC0yNzUsNyArMjc1LDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXANCj4gPiBhZDc2MDZfYXR0cmlidXRlX2dyb3VwX3Jhbmdl ID0gew0KPiA+ICAJLmF0dHJzID0gYWQ3NjA2X2F0dHJpYnV0ZXNfcmFuZ2UsDQo+ID4gIH07DQo+ ID4gIA0KPiA+IC0jZGVmaW5lIEFENzYwNl9DSEFOTkVMKG51bSkJCQkJCVwNCj4gPiArI2RlZmlu ZSBBRDc2MFhfQ0hBTk5FTChudW0sIG1hc2spCQkJCVwNCj4gPiAgCXsJCQkJCQkJXA0KPiA+ICAJ CS50eXBlID0gSUlPX1ZPTFRBR0UsCQkJCVwNCj4gPiAgCQkuaW5kZXhlZCA9IDEsCQkJCQlcDQo+ ID4gQEAgLTI4Myw4ICsyODMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91 cA0KPiA+IGFkNzYwNl9hdHRyaWJ1dGVfZ3JvdXBfcmFuZ2UgPSB7DQo+ID4gIAkJLmFkZHJlc3Mg PSBudW0sCQkJCQkNCj4gPiBcDQo+ID4gIAkJLmluZm9fbWFza19zZXBhcmF0ZSA9IEJJVChJSU9f Q0hBTl9JTkZPX1JBVyksCVwNCj4gPiAgCQkuaW5mb19tYXNrX3NoYXJlZF9ieV90eXBlID0gQklU KElJT19DSEFOX0lORk9fU0NBTEUpLFwNCj4gPiAtCQkuaW5mb19tYXNrX3NoYXJlZF9ieV9hbGwg PQkJCVwNCj4gPiAtCQkJQklUKElJT19DSEFOX0lORk9fT1ZFUlNBTVBMSU5HX1JBVElPKSwJDQo+ ID4gXA0KPiA+ICsJCS5pbmZvX21hc2tfc2hhcmVkX2J5X2FsbCA9IG1hc2ssCQlcDQo+ID4gIAkJ LnNjYW5faW5kZXggPSBudW0sCQkJCVwNCj4gPiAgCQkuc2Nhbl90eXBlID0gewkJCQkJDQo+ID4g XA0KPiA+ICAJCQkuc2lnbiA9ICdzJywJCQkJXA0KPiA+IEBAIC0yOTQsNiArMjkzLDIwIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwDQo+ID4gYWQ3NjA2X2F0dHJpYnV0ZV9n cm91cF9yYW5nZSA9IHsNCj4gPiAgCQl9LAkJCQkJCVwNCj4gPiAgCX0NCj4gPiAgDQo+ID4gKyNk ZWZpbmUgQUQ3NjA1X0NIQU5ORUwobnVtKQlcDQo+ID4gKwlBRDc2MFhfQ0hBTk5FTChudW0sIDAp DQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFENzYwNl9DSEFOTkVMKG51bSkJXA0KPiA+ICsJQUQ3NjBY X0NIQU5ORUwobnVtLCBCSVQoSUlPX0NIQU5fSU5GT19PVkVSU0FNUExJTkdfUkFUSU8pKQ0KPiA+ ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjIGFkNzYwNV9jaGFubmVs c1tdID0gew0KPiA+ICsJSUlPX0NIQU5fU09GVF9USU1FU1RBTVAoNCksDQo+ID4gKwlBRDc2MDVf Q0hBTk5FTCgwKSwNCj4gPiArCUFENzYwNV9DSEFOTkVMKDEpLA0KPiA+ICsJQUQ3NjA1X0NIQU5O RUwoMiksDQo+ID4gKwlBRDc2MDVfQ0hBTk5FTCgzKSwNCj4gPiArfTsNCj4gPiArDQo+ID4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBhZDc2MDZfY2hhbm5lbHNbXSA9IHsNCj4g PiAgCUlJT19DSEFOX1NPRlRfVElNRVNUQU1QKDgpLA0KPiA+ICAJQUQ3NjA2X0NIQU5ORUwoMCks DQo+ID4gQEAgLTMxMCwxNyArMzIzLDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWQ3NjA2X2No aXBfaW5mbw0KPiA+IGFkNzYwNl9jaGlwX2luZm9fdGJsW10gPSB7DQo+ID4gIAkvKg0KPiA+ICAJ ICogTW9yZSBkZXZpY2VzIGFkZGVkIGluIGZ1dHVyZQ0KPiA+ICAJICovDQo+ID4gKwlbSURfQUQ3 NjA1XzRdID0gew0KPiA+ICsJCS5jaGFubmVscyA9IGFkNzYwNV9jaGFubmVscywNCj4gPiArCQku bnVtX2NoYW5uZWxzID0gNSwNCj4gPiArCX0sDQo+ID4gIAlbSURfQUQ3NjA2XzhdID0gew0KPiA+ ICAJCS5jaGFubmVscyA9IGFkNzYwNl9jaGFubmVscywNCj4gPiAgCQkubnVtX2NoYW5uZWxzID0g OSwNCj4gPiArCQkuaGFzX292ZXJzYW1wbGluZyA9IHRydWUsDQo+ID4gIAl9LA0KPiA+ICAJW0lE X0FENzYwNl82XSA9IHsNCj4gPiAgCQkuY2hhbm5lbHMgPSBhZDc2MDZfY2hhbm5lbHMsDQo+ID4g IAkJLm51bV9jaGFubmVscyA9IDcsDQo+ID4gKwkJLmhhc19vdmVyc2FtcGxpbmcgPSB0cnVlLA0K PiA+ICAJfSwNCj4gPiAgCVtJRF9BRDc2MDZfNF0gPSB7DQo+ID4gIAkJLmNoYW5uZWxzID0gYWQ3 NjA2X2NoYW5uZWxzLA0KPiA+ICAJCS5udW1fY2hhbm5lbHMgPSA1LA0KPiA+ICsJCS5oYXNfb3Zl cnNhbXBsaW5nID0gdHJ1ZSwNCj4gPiAgCX0sDQo+ID4gIH07DQo+ID4gIA0KPiA+IEBAIC0zNTEs NiArMzcxLDkgQEAgc3RhdGljIGludCBhZDc2MDZfcmVxdWVzdF9ncGlvcyhzdHJ1Y3QgYWQ3NjA2 X3N0YXRlDQo+ID4gKnN0KQ0KPiA+ICAJaWYgKElTX0VSUihzdC0+Z3Bpb19mcnN0ZGF0YSkpDQo+ ID4gIAkJcmV0dXJuIFBUUl9FUlIoc3QtPmdwaW9fZnJzdGRhdGEpOw0KPiA+ICANCj4gPiArCWlm ICghc3QtPmNoaXBfaW5mby0+aGFzX292ZXJzYW1wbGluZykNCj4gPiArCQlyZXR1cm4gMDsNCj4g PiArDQo+ID4gIAlzdC0+Z3Bpb19vcyA9IGRldm1fZ3Bpb2RfZ2V0X2FycmF5X29wdGlvbmFsKGRl diwNCj4gPiAib3ZlcnNhbXBsaW5nLXJhdGlvIiwNCj4gPiAgCQkJR1BJT0RfT1VUX0xPVyk7DQo+ ID4gIAlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKHN0LT5ncGlvX29zKTsNCj4gPiBAQCAtNDI5LDEy ICs0NTIsMTIgQEAgaW50IGFkNzYwNl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBpcnEs DQo+ID4gdm9pZCBfX2lvbWVtICpiYXNlX2FkZHJlc3MsDQo+ID4gIAkJcmV0dXJuIHJldDsNCj4g PiAgCX0NCj4gPiAgDQo+ID4gKwlzdC0+Y2hpcF9pbmZvID0gJmFkNzYwNl9jaGlwX2luZm9fdGJs W2lkXTsNCj4gPiArDQo+ID4gIAlyZXQgPSBhZDc2MDZfcmVxdWVzdF9ncGlvcyhzdCk7DQo+ID4g IAlpZiAocmV0KQ0KPiA+ICAJCWdvdG8gZXJyb3JfZGlzYWJsZV9yZWc7DQo+ID4gIA0KPiA+IC0J c3QtPmNoaXBfaW5mbyA9ICZhZDc2MDZfY2hpcF9pbmZvX3RibFtpZF07DQo+ID4gLQ0KPiA+ICAJ aW5kaW9fZGV2LT5kZXYucGFyZW50ID0gZGV2Ow0KPiA+ICAJaWYgKHN0LT5ncGlvX29zKSB7DQo+ ID4gIAkJaWYgKHN0LT5ncGlvX3JhbmdlKQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdp bmcvaWlvL2FkYy9hZDc2MDYuaA0KPiA+IGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2 LmgNCj4gPiBpbmRleCA1N2YxMWI0NmJjNjkuLmY0MjIyOTYzNTRjOSAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2MDYuaA0KPiA+ICsrKyBiL2RyaXZlcnMvc3Rh Z2luZy9paW8vYWRjL2FkNzYwNi5oDQo+ID4gQEAgLTEzLDExICsxMywxMyBAQA0KPiA+ICAgKiBz dHJ1Y3QgYWQ3NjA2X2NoaXBfaW5mbyAtIGNoaXAgc3BlY2lmaWMgaW5mb3JtYXRpb24NCj4gPiAg ICogQGNoYW5uZWxzOgkJY2hhbm5lbCBzcGVjaWZpY2F0aW9uDQo+ID4gICAqIEBudW1fY2hhbm5l bHM6CW51bWJlciBvZiBjaGFubmVscw0KPiA+ICsgKiBAaGFzX292ZXJzYW1wbGluZzogICB3aGV0 aGVyIHRoZSBkZXZpY2UgaGFzIG92ZXJzYW1wbGluZyBzdXBwb3J0DQo+ID4gICAqLw0KPiA+ICAN Cj4gPiAgc3RydWN0IGFkNzYwNl9jaGlwX2luZm8gew0KPiA+ICAJY29uc3Qgc3RydWN0IGlpb19j aGFuX3NwZWMJKmNoYW5uZWxzOw0KPiA+ICAJdW5zaWduZWQgaW50CQkJbnVtX2NoYW5uZWxzOw0K PiA+ICsJYm9vbAkJCQloYXNfb3ZlcnNhbXBsaW5nOw0KPiA+ICB9Ow0KPiA+ICANCj4gPiAgLyoq DQo+ID4gQEAgLTg3LDYgKzg5LDcgQEAgaW50IGFkNzYwNl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpk ZXYsIGludCBpcnEsIHZvaWQNCj4gPiBfX2lvbWVtICpiYXNlX2FkZHJlc3MsDQo+ID4gIGludCBh ZDc2MDZfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGlycSk7DQo+ID4gIA0KPiA+ICBl bnVtIGFkNzYwNl9zdXBwb3J0ZWRfZGV2aWNlX2lkcyB7DQo+ID4gKwlJRF9BRDc2MDVfNCwNCj4g PiAgCUlEX0FENzYwNl84LA0KPiA+ICAJSURfQUQ3NjA2XzYsDQo+ID4gIAlJRF9BRDc2MDZfNA0K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2MDZfcGFyLmMNCj4g PiBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNl9wYXIuYw0KPiA+IGluZGV4IDk1NmUz ODc3NDc2Ny4uOGJkODZlNzI3YjAyIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9p aW8vYWRjL2FkNzYwNl9wYXIuYw0KPiA+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2Fk NzYwNl9wYXIuYw0KPiA+IEBAIC03OSw2ICs3OSw5IEBAIHN0YXRpYyBpbnQgYWQ3NjA2X3Bhcl9y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZQ0KPiA+ICpwZGV2KQ0KPiA+ICANCj4gPiAgc3Rh dGljIGNvbnN0IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaWQgYWQ3NjA2X2RyaXZlcl9pZHNbXSA9 IHsNCj4gPiAgCXsNCj4gPiArCQkubmFtZQkJPSAiYWQ3NjA1LTQiLA0KPiA+ICsJCS5kcml2ZXJf ZGF0YQk9IElEX0FENzYwNV80LA0KPiA+ICsJfSwgew0KPiA+ICAJCS5uYW1lCQk9ICJhZDc2MDYt OCIsDQo+ID4gIAkJLmRyaXZlcl9kYXRhCT0gSURfQUQ3NjA2XzgsDQo+ID4gIAl9LCB7DQo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNl9zcGkuYw0KPiA+IGIv ZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2X3NwaS5jDQo+ID4gaW5kZXggZmZkOWQwNjI2 ZWMyLi5iNzZjYTVhOGMwNTkgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9h ZGMvYWQ3NjA2X3NwaS5jDQo+ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2 X3NwaS5jDQo+ID4gQEAgLTU1LDYgKzU1LDcgQEAgc3RhdGljIGludCBhZDc2MDZfc3BpX3JlbW92 ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQ0KPiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0aWMgY29u c3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgYWQ3NjA2X2lkW10gPSB7DQo+ID4gKwl7ImFkNzYwNS00 IiwgSURfQUQ3NjA1XzR9LA0KPiA+ICAJeyJhZDc2MDYtOCIsIElEX0FENzYwNl84fSwNCj4gPiAg CXsiYWQ3NjA2LTYiLCBJRF9BRDc2MDZfNn0sDQo+ID4gIAl7ImFkNzYwNi00IiwgSURfQUQ3NjA2 XzR9LA0KPiANCj4g ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 2018-09-17 7:33 ` Ardelean, Alexandru @ 2018-09-17 8:30 ` Jonathan Cameron 2018-09-17 9:01 ` Ardelean, Alexandru 0 siblings, 1 reply; 10+ messages in thread From: Jonathan Cameron @ 2018-09-17 8:30 UTC (permalink / raw) To: Ardelean, Alexandru, lars@metafoo.de Cc: jic23@kernel.org, knaack.h@gmx.de, linux-iio@vger.kernel.org, Hennerich, Michael, pmeerw@pmeerw.net On Mon, 17 Sep 2018 07:33:13 +0000 "Ardelean, Alexandru" <alexandru.Ardelean@analog.com> wrote: > On Sun, 2018-09-16 at 12:22 +0100, Jonathan Cameron wrote: > > On Thu, 13 Sep 2018 14:02:12 +0300 > > Alexandru Ardelean <alexandru.ardelean@analog.com> wrote: > > > > > Add support for the AD7605-4 to the AD7606 driver. The AD7605-4 is > > > mostly > > > interface compatible to the AD7606-6 with the only difference being not > > > having support for oversampling. > > > > > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> > > > > I am guessing this might clash with the devm change from earlier in the > > day so I'm not going to apply it (too much risk of a bug sneaking in). > > > > Please resend the remaining patches in for this driver as a series so > > ordering is obvious etc. > > Hmm, the patch doesn't clash, but I will send them as a series. I was being lazy and didn't actually check ;) Relied on false intuition. Thanks, Jonathan > > > > > Otherwise this one looks good to me. > > > > Thanks, > > > > Jonathan > > Thanks > Alex > > > > --- > > > drivers/staging/iio/adc/Kconfig | 2 +- > > > drivers/staging/iio/adc/ad7606.c | 33 +++++++++++++++++++++++----- > > > drivers/staging/iio/adc/ad7606.h | 3 +++ > > > drivers/staging/iio/adc/ad7606_par.c | 3 +++ > > > drivers/staging/iio/adc/ad7606_spi.c | 1 + > > > 5 files changed, 36 insertions(+), 6 deletions(-) > > > > > > diff --git a/drivers/staging/iio/adc/Kconfig > > > b/drivers/staging/iio/adc/Kconfig > > > index e17efb03bac0..9d3062a07460 100644 > > > --- a/drivers/staging/iio/adc/Kconfig > > > +++ b/drivers/staging/iio/adc/Kconfig > > > @@ -11,7 +11,7 @@ config AD7606 > > > select IIO_TRIGGERED_BUFFER > > > help > > > Say yes here to build support for Analog Devices: > > > - ad7606, ad7606-6, ad7606-4 analog to digital converters > > > (ADC). > > > + ad7605-4, ad7606, ad7606-6, ad7606-4 analog to digital > > > converters (ADC). > > > > > > To compile this driver as a module, choose M here: the > > > module will be called ad7606. > > > diff --git a/drivers/staging/iio/adc/ad7606.c > > > b/drivers/staging/iio/adc/ad7606.c > > > index 793de92f27ed..06d65196bedb 100644 > > > --- a/drivers/staging/iio/adc/ad7606.c > > > +++ b/drivers/staging/iio/adc/ad7606.c > > > @@ -275,7 +275,7 @@ static const struct attribute_group > > > ad7606_attribute_group_range = { > > > .attrs = ad7606_attributes_range, > > > }; > > > > > > -#define AD7606_CHANNEL(num) \ > > > +#define AD760X_CHANNEL(num, mask) \ > > > { \ > > > .type = IIO_VOLTAGE, \ > > > .indexed = 1, \ > > > @@ -283,8 +283,7 @@ static const struct attribute_group > > > ad7606_attribute_group_range = { > > > .address = num, > > > \ > > > .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \ > > > .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),\ > > > - .info_mask_shared_by_all = \ > > > - BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO), > > > \ > > > + .info_mask_shared_by_all = mask, \ > > > .scan_index = num, \ > > > .scan_type = { > > > \ > > > .sign = 's', \ > > > @@ -294,6 +293,20 @@ static const struct attribute_group > > > ad7606_attribute_group_range = { > > > }, \ > > > } > > > > > > +#define AD7605_CHANNEL(num) \ > > > + AD760X_CHANNEL(num, 0) > > > + > > > +#define AD7606_CHANNEL(num) \ > > > + AD760X_CHANNEL(num, BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO)) > > > + > > > +static const struct iio_chan_spec ad7605_channels[] = { > > > + IIO_CHAN_SOFT_TIMESTAMP(4), > > > + AD7605_CHANNEL(0), > > > + AD7605_CHANNEL(1), > > > + AD7605_CHANNEL(2), > > > + AD7605_CHANNEL(3), > > > +}; > > > + > > > static const struct iio_chan_spec ad7606_channels[] = { > > > IIO_CHAN_SOFT_TIMESTAMP(8), > > > AD7606_CHANNEL(0), > > > @@ -310,17 +323,24 @@ static const struct ad7606_chip_info > > > ad7606_chip_info_tbl[] = { > > > /* > > > * More devices added in future > > > */ > > > + [ID_AD7605_4] = { > > > + .channels = ad7605_channels, > > > + .num_channels = 5, > > > + }, > > > [ID_AD7606_8] = { > > > .channels = ad7606_channels, > > > .num_channels = 9, > > > + .has_oversampling = true, > > > }, > > > [ID_AD7606_6] = { > > > .channels = ad7606_channels, > > > .num_channels = 7, > > > + .has_oversampling = true, > > > }, > > > [ID_AD7606_4] = { > > > .channels = ad7606_channels, > > > .num_channels = 5, > > > + .has_oversampling = true, > > > }, > > > }; > > > > > > @@ -351,6 +371,9 @@ static int ad7606_request_gpios(struct ad7606_state > > > *st) > > > if (IS_ERR(st->gpio_frstdata)) > > > return PTR_ERR(st->gpio_frstdata); > > > > > > + if (!st->chip_info->has_oversampling) > > > + return 0; > > > + > > > st->gpio_os = devm_gpiod_get_array_optional(dev, > > > "oversampling-ratio", > > > GPIOD_OUT_LOW); > > > return PTR_ERR_OR_ZERO(st->gpio_os); > > > @@ -429,12 +452,12 @@ int ad7606_probe(struct device *dev, int irq, > > > void __iomem *base_address, > > > return ret; > > > } > > > > > > + st->chip_info = &ad7606_chip_info_tbl[id]; > > > + > > > ret = ad7606_request_gpios(st); > > > if (ret) > > > goto error_disable_reg; > > > > > > - st->chip_info = &ad7606_chip_info_tbl[id]; > > > - > > > indio_dev->dev.parent = dev; > > > if (st->gpio_os) { > > > if (st->gpio_range) > > > diff --git a/drivers/staging/iio/adc/ad7606.h > > > b/drivers/staging/iio/adc/ad7606.h > > > index 57f11b46bc69..f422296354c9 100644 > > > --- a/drivers/staging/iio/adc/ad7606.h > > > +++ b/drivers/staging/iio/adc/ad7606.h > > > @@ -13,11 +13,13 @@ > > > * struct ad7606_chip_info - chip specific information > > > * @channels: channel specification > > > * @num_channels: number of channels > > > + * @has_oversampling: whether the device has oversampling support > > > */ > > > > > > struct ad7606_chip_info { > > > const struct iio_chan_spec *channels; > > > unsigned int num_channels; > > > + bool has_oversampling; > > > }; > > > > > > /** > > > @@ -87,6 +89,7 @@ int ad7606_probe(struct device *dev, int irq, void > > > __iomem *base_address, > > > int ad7606_remove(struct device *dev, int irq); > > > > > > enum ad7606_supported_device_ids { > > > + ID_AD7605_4, > > > ID_AD7606_8, > > > ID_AD7606_6, > > > ID_AD7606_4 > > > diff --git a/drivers/staging/iio/adc/ad7606_par.c > > > b/drivers/staging/iio/adc/ad7606_par.c > > > index 956e38774767..8bd86e727b02 100644 > > > --- a/drivers/staging/iio/adc/ad7606_par.c > > > +++ b/drivers/staging/iio/adc/ad7606_par.c > > > @@ -79,6 +79,9 @@ static int ad7606_par_remove(struct platform_device > > > *pdev) > > > > > > static const struct platform_device_id ad7606_driver_ids[] = { > > > { > > > + .name = "ad7605-4", > > > + .driver_data = ID_AD7605_4, > > > + }, { > > > .name = "ad7606-8", > > > .driver_data = ID_AD7606_8, > > > }, { > > > diff --git a/drivers/staging/iio/adc/ad7606_spi.c > > > b/drivers/staging/iio/adc/ad7606_spi.c > > > index ffd9d0626ec2..b76ca5a8c059 100644 > > > --- a/drivers/staging/iio/adc/ad7606_spi.c > > > +++ b/drivers/staging/iio/adc/ad7606_spi.c > > > @@ -55,6 +55,7 @@ static int ad7606_spi_remove(struct spi_device *spi) > > > } > > > > > > static const struct spi_device_id ad7606_id[] = { > > > + {"ad7605-4", ID_AD7605_4}, > > > {"ad7606-8", ID_AD7606_8}, > > > {"ad7606-6", ID_AD7606_6}, > > > {"ad7606-4", ID_AD7606_4}, > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 2018-09-17 8:30 ` Jonathan Cameron @ 2018-09-17 9:01 ` Ardelean, Alexandru 2018-09-17 11:10 ` Jonathan Cameron 0 siblings, 1 reply; 10+ messages in thread From: Ardelean, Alexandru @ 2018-09-17 9:01 UTC (permalink / raw) To: lars@metafoo.de, jonathan.cameron@huawei.com Cc: knaack.h@gmx.de, linux-iio@vger.kernel.org, jic23@kernel.org, Hennerich, Michael, pmeerw@pmeerw.net T24gTW9uLCAyMDE4LTA5LTE3IGF0IDA5OjMwICswMTAwLCBKb25hdGhhbiBDYW1lcm9uIHdyb3Rl Og0KPiBPbiBNb24sIDE3IFNlcCAyMDE4IDA3OjMzOjEzICswMDAwDQo+ICJBcmRlbGVhbiwgQWxl eGFuZHJ1IiA8YWxleGFuZHJ1LkFyZGVsZWFuQGFuYWxvZy5jb20+IHdyb3RlOg0KPiANCj4gPiBP biBTdW4sIDIwMTgtMDktMTYgYXQgMTI6MjIgKzAxMDAsIEpvbmF0aGFuIENhbWVyb24gd3JvdGU6 DQo+ID4gPiBPbiBUaHUsIDEzIFNlcCAyMDE4IDE0OjAyOjEyICswMzAwDQo+ID4gPiBBbGV4YW5k cnUgQXJkZWxlYW4gPGFsZXhhbmRydS5hcmRlbGVhbkBhbmFsb2cuY29tPiB3cm90ZToNCj4gPiA+ ICAgDQo+ID4gPiA+IEFkZCBzdXBwb3J0IGZvciB0aGUgQUQ3NjA1LTQgdG8gdGhlIEFENzYwNiBk cml2ZXIuIFRoZSBBRDc2MDUtNCBpcw0KPiA+ID4gPiBtb3N0bHkNCj4gPiA+ID4gaW50ZXJmYWNl IGNvbXBhdGlibGUgdG8gdGhlIEFENzYwNi02IHdpdGggdGhlIG9ubHkgZGlmZmVyZW5jZSBiZWlu Zw0KPiA+ID4gPiBub3QNCj4gPiA+ID4gaGF2aW5nIHN1cHBvcnQgZm9yIG92ZXJzYW1wbGluZy4N Cj4gPiA+ID4gDQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRydSBBcmRlbGVhbiA8YWxl eGFuZHJ1LmFyZGVsZWFuQGFuYWxvZy5jb20+ICANCj4gPiA+IA0KPiA+ID4gSSBhbSBndWVzc2lu ZyB0aGlzIG1pZ2h0IGNsYXNoIHdpdGggdGhlIGRldm0gY2hhbmdlIGZyb20gZWFybGllciBpbg0K PiA+ID4gdGhlDQo+ID4gPiBkYXkgc28gSSdtIG5vdCBnb2luZyB0byBhcHBseSBpdCAodG9vIG11 Y2ggcmlzayBvZiBhIGJ1ZyBzbmVha2luZw0KPiA+ID4gaW4pLg0KPiA+ID4gDQo+ID4gPiBQbGVh c2UgcmVzZW5kIHRoZSByZW1haW5pbmcgcGF0Y2hlcyBpbiBmb3IgdGhpcyBkcml2ZXIgYXMgYSBz ZXJpZXMgc28NCj4gPiA+IG9yZGVyaW5nIGlzIG9idmlvdXMgZXRjLiAgDQo+ID4gDQo+ID4gSG1t LCB0aGUgcGF0Y2ggZG9lc24ndCBjbGFzaCwgYnV0IEkgd2lsbCBzZW5kIHRoZW0gYXMgYSBzZXJp ZXMuDQo+IA0KPiBJIHdhcyBiZWluZyBsYXp5IGFuZCBkaWRuJ3QgYWN0dWFsbHkgY2hlY2sgOykg UmVsaWVkIG9uIGZhbHNlIGludHVpdGlvbi4NCj4gDQoNClRoZW4sIGRvIEkgc2VuZCBhIFYyIG9y IGlzIHRoaXMgcGF0Y2ggZmluZSBhcy1pcyA/DQpJIG9ubHkgaGF2ZSBhIHNpbmdsZSBwYXRjaCB0 byBWMiwgYW5kIHRoZW4gSSB0aGluayB3ZSBjb3VsZCBkaXNjdXNzIG1vdmluZw0KdGhpcyBvdXQg b2Ygc3RhZ2luZywgb3Igd2hhdCB5b3UgY29uc2lkZXIgaXMgc3RpbGwgbmVlZGVkIFtmb3IgdGhp c10gdG8gZG8NCnRoZSBtb3ZlLg0KTmF0dXJhbGx5LCBJJ2xsIHByZXBhcmUgYSBEVCBiaW5kaW5n IGRvYyBpbiB0aGUgbW92aW5nLW91dC1vZi1zdGFnaW5nDQpzZXJpZXMuDQoNClRoYW5rcw0KQWxl eA0KDQo+IFRoYW5rcywNCj4gDQo+IEpvbmF0aGFuDQo+IA0KPiA+IA0KPiA+ID4gDQo+ID4gPiBP dGhlcndpc2UgdGhpcyBvbmUgbG9va3MgZ29vZCB0byBtZS4NCj4gPiA+IA0KPiA+ID4gVGhhbmtz LA0KPiA+ID4gDQo+ID4gPiBKb25hdGhhbiAgDQo+ID4gDQo+ID4gVGhhbmtzDQo+ID4gQWxleA0K PiA+IA0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIGRyaXZlcnMvc3RhZ2luZy9paW8vYWRjL0tjb25m aWcgICAgICB8ICAyICstDQo+ID4gPiA+ICBkcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2MDYu YyAgICAgfCAzMyArKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiA+ID4gLS0tLQ0KPiA+ID4g PiAgZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2LmggICAgIHwgIDMgKysrDQo+ID4gPiA+ ICBkcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2MDZfcGFyLmMgfCAgMyArKysNCj4gPiA+ID4g IGRyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNl9zcGkuYyB8ICAxICsNCj4gPiA+ID4gIDUg ZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkNCj4gPiA+ID4g DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9LY29uZmlnDQo+ ID4gPiA+IGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvS2NvbmZpZw0KPiA+ID4gPiBpbmRleCBl MTdlZmIwM2JhYzAuLjlkMzA2MmEwNzQ2MCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJpdmVycy9z dGFnaW5nL2lpby9hZGMvS2NvbmZpZw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlv L2FkYy9LY29uZmlnDQo+ID4gPiA+IEBAIC0xMSw3ICsxMSw3IEBAIGNvbmZpZyBBRDc2MDYNCj4g PiA+ID4gIAlzZWxlY3QgSUlPX1RSSUdHRVJFRF9CVUZGRVINCj4gPiA+ID4gIAloZWxwDQo+ID4g PiA+ICAJICBTYXkgeWVzIGhlcmUgdG8gYnVpbGQgc3VwcG9ydCBmb3IgQW5hbG9nIERldmljZXM6 DQo+ID4gPiA+IC0JICBhZDc2MDYsIGFkNzYwNi02LCBhZDc2MDYtNCBhbmFsb2cgdG8gZGlnaXRh bCBjb252ZXJ0ZXJzDQo+ID4gPiA+IChBREMpLg0KPiA+ID4gPiArCSAgYWQ3NjA1LTQsIGFkNzYw NiwgYWQ3NjA2LTYsIGFkNzYwNi00IGFuYWxvZyB0byBkaWdpdGFsDQo+ID4gPiA+IGNvbnZlcnRl cnMgKEFEQykuDQo+ID4gPiA+ICANCj4gPiA+ID4gIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIg YXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQ0KPiA+ID4gPiAgCSAgbW9kdWxlIHdpbGwg YmUgY2FsbGVkIGFkNzYwNi4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9p aW8vYWRjL2FkNzYwNi5jDQo+ID4gPiA+IGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2 LmMNCj4gPiA+ID4gaW5kZXggNzkzZGU5MmYyN2VkLi4wNmQ2NTE5NmJlZGIgMTAwNjQ0DQo+ID4g PiA+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNi5jDQo+ID4gPiA+ICsrKyBi L2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzYwNi5jDQo+ID4gPiA+IEBAIC0yNzUsNyArMjc1 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXANCj4gPiA+ID4gYWQ3NjA2 X2F0dHJpYnV0ZV9ncm91cF9yYW5nZSA9IHsNCj4gPiA+ID4gIAkuYXR0cnMgPSBhZDc2MDZfYXR0 cmlidXRlc19yYW5nZSwNCj4gPiA+ID4gIH07DQo+ID4gPiA+ICANCj4gPiA+ID4gLSNkZWZpbmUg QUQ3NjA2X0NIQU5ORUwobnVtKQkJCQkJDQo+ID4gPiA+IFwNCj4gPiA+ID4gKyNkZWZpbmUgQUQ3 NjBYX0NIQU5ORUwobnVtLCBtYXNrKQkJCQlcDQo+ID4gPiA+ICAJewkJCQkJCQlcDQo+ID4gPiA+ ICAJCS50eXBlID0gSUlPX1ZPTFRBR0UsCQkJCQ0KPiA+ID4gPiBcDQo+ID4gPiA+ICAJCS5pbmRl eGVkID0gMSwJCQkJCQ0KPiA+ID4gPiBcDQo+ID4gPiA+IEBAIC0yODMsOCArMjgzLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXANCj4gPiA+ID4gYWQ3NjA2X2F0dHJpYnV0 ZV9ncm91cF9yYW5nZSA9IHsNCj4gPiA+ID4gIAkJLmFkZHJlc3MgPSBudW0sCQkJCQkNCj4gPiA+ ID4gXA0KPiA+ID4gPiAgCQkuaW5mb19tYXNrX3NlcGFyYXRlID0gQklUKElJT19DSEFOX0lORk9f UkFXKSwJDQo+ID4gPiA+IFwNCj4gPiA+ID4gIAkJLmluZm9fbWFza19zaGFyZWRfYnlfdHlwZSA9 DQo+ID4gPiA+IEJJVChJSU9fQ0hBTl9JTkZPX1NDQUxFKSxcDQo+ID4gPiA+IC0JCS5pbmZvX21h c2tfc2hhcmVkX2J5X2FsbCA9CQkJDQo+ID4gPiA+IFwNCj4gPiA+ID4gLQkJCUJJVChJSU9fQ0hB Tl9JTkZPX09WRVJTQU1QTElOR19SQVRJTyksCQ0KPiA+ID4gPiBcDQo+ID4gPiA+ICsJCS5pbmZv X21hc2tfc2hhcmVkX2J5X2FsbCA9IG1hc2ssCQlcDQo+ID4gPiA+ICAJCS5zY2FuX2luZGV4ID0g bnVtLAkJCQkNCj4gPiA+ID4gXA0KPiA+ID4gPiAgCQkuc2Nhbl90eXBlID0gewkJCQkJDQo+ID4g PiA+IFwNCj4gPiA+ID4gIAkJCS5zaWduID0gJ3MnLAkJCQkNCj4gPiA+ID4gXA0KPiA+ID4gPiBA QCAtMjk0LDYgKzI5MywyMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cA0K PiA+ID4gPiBhZDc2MDZfYXR0cmlidXRlX2dyb3VwX3JhbmdlID0gew0KPiA+ID4gPiAgCQl9LAkJ CQkJCQ0KPiA+ID4gPiBcDQo+ID4gPiA+ICAJfQ0KPiA+ID4gPiAgDQo+ID4gPiA+ICsjZGVmaW5l IEFENzYwNV9DSEFOTkVMKG51bSkJXA0KPiA+ID4gPiArCUFENzYwWF9DSEFOTkVMKG51bSwgMCkN Cj4gPiA+ID4gKw0KPiA+ID4gPiArI2RlZmluZSBBRDc2MDZfQ0hBTk5FTChudW0pCVwNCj4gPiA+ ID4gKwlBRDc2MFhfQ0hBTk5FTChudW0sIEJJVChJSU9fQ0hBTl9JTkZPX09WRVJTQU1QTElOR19S QVRJTykpDQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5f c3BlYyBhZDc2MDVfY2hhbm5lbHNbXSA9IHsNCj4gPiA+ID4gKwlJSU9fQ0hBTl9TT0ZUX1RJTUVT VEFNUCg0KSwNCj4gPiA+ID4gKwlBRDc2MDVfQ0hBTk5FTCgwKSwNCj4gPiA+ID4gKwlBRDc2MDVf Q0hBTk5FTCgxKSwNCj4gPiA+ID4gKwlBRDc2MDVfQ0hBTk5FTCgyKSwNCj4gPiA+ID4gKwlBRDc2 MDVfQ0hBTk5FTCgzKSwNCj4gPiA+ID4gK307DQo+ID4gPiA+ICsNCj4gPiA+ID4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBhZDc2MDZfY2hhbm5lbHNbXSA9IHsNCj4gPiA+ID4g IAlJSU9fQ0hBTl9TT0ZUX1RJTUVTVEFNUCg4KSwNCj4gPiA+ID4gIAlBRDc2MDZfQ0hBTk5FTCgw KSwNCj4gPiA+ID4gQEAgLTMxMCwxNyArMzIzLDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWQ3 NjA2X2NoaXBfaW5mbw0KPiA+ID4gPiBhZDc2MDZfY2hpcF9pbmZvX3RibFtdID0gew0KPiA+ID4g PiAgCS8qDQo+ID4gPiA+ICAJICogTW9yZSBkZXZpY2VzIGFkZGVkIGluIGZ1dHVyZQ0KPiA+ID4g PiAgCSAqLw0KPiA+ID4gPiArCVtJRF9BRDc2MDVfNF0gPSB7DQo+ID4gPiA+ICsJCS5jaGFubmVs cyA9IGFkNzYwNV9jaGFubmVscywNCj4gPiA+ID4gKwkJLm51bV9jaGFubmVscyA9IDUsDQo+ID4g PiA+ICsJfSwNCj4gPiA+ID4gIAlbSURfQUQ3NjA2XzhdID0gew0KPiA+ID4gPiAgCQkuY2hhbm5l bHMgPSBhZDc2MDZfY2hhbm5lbHMsDQo+ID4gPiA+ICAJCS5udW1fY2hhbm5lbHMgPSA5LA0KPiA+ ID4gPiArCQkuaGFzX292ZXJzYW1wbGluZyA9IHRydWUsDQo+ID4gPiA+ICAJfSwNCj4gPiA+ID4g IAlbSURfQUQ3NjA2XzZdID0gew0KPiA+ID4gPiAgCQkuY2hhbm5lbHMgPSBhZDc2MDZfY2hhbm5l bHMsDQo+ID4gPiA+ICAJCS5udW1fY2hhbm5lbHMgPSA3LA0KPiA+ID4gPiArCQkuaGFzX292ZXJz YW1wbGluZyA9IHRydWUsDQo+ID4gPiA+ICAJfSwNCj4gPiA+ID4gIAlbSURfQUQ3NjA2XzRdID0g ew0KPiA+ID4gPiAgCQkuY2hhbm5lbHMgPSBhZDc2MDZfY2hhbm5lbHMsDQo+ID4gPiA+ICAJCS5u dW1fY2hhbm5lbHMgPSA1LA0KPiA+ID4gPiArCQkuaGFzX292ZXJzYW1wbGluZyA9IHRydWUsDQo+ ID4gPiA+ICAJfSwNCj4gPiA+ID4gIH07DQo+ID4gPiA+ICANCj4gPiA+ID4gQEAgLTM1MSw2ICsz NzEsOSBAQCBzdGF0aWMgaW50IGFkNzYwNl9yZXF1ZXN0X2dwaW9zKHN0cnVjdA0KPiA+ID4gPiBh ZDc2MDZfc3RhdGUNCj4gPiA+ID4gKnN0KQ0KPiA+ID4gPiAgCWlmIChJU19FUlIoc3QtPmdwaW9f ZnJzdGRhdGEpKQ0KPiA+ID4gPiAgCQlyZXR1cm4gUFRSX0VSUihzdC0+Z3Bpb19mcnN0ZGF0YSk7 DQo+ID4gPiA+ICANCj4gPiA+ID4gKwlpZiAoIXN0LT5jaGlwX2luZm8tPmhhc19vdmVyc2FtcGxp bmcpDQo+ID4gPiA+ICsJCXJldHVybiAwOw0KPiA+ID4gPiArDQo+ID4gPiA+ICAJc3QtPmdwaW9f b3MgPSBkZXZtX2dwaW9kX2dldF9hcnJheV9vcHRpb25hbChkZXYsDQo+ID4gPiA+ICJvdmVyc2Ft cGxpbmctcmF0aW8iLA0KPiA+ID4gPiAgCQkJR1BJT0RfT1VUX0xPVyk7DQo+ID4gPiA+ICAJcmV0 dXJuIFBUUl9FUlJfT1JfWkVSTyhzdC0+Z3Bpb19vcyk7DQo+ID4gPiA+IEBAIC00MjksMTIgKzQ1 MiwxMiBAQCBpbnQgYWQ3NjA2X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGlycSwNCj4g PiA+ID4gdm9pZCBfX2lvbWVtICpiYXNlX2FkZHJlc3MsDQo+ID4gPiA+ICAJCXJldHVybiByZXQ7 DQo+ID4gPiA+ICAJfQ0KPiA+ID4gPiAgDQo+ID4gPiA+ICsJc3QtPmNoaXBfaW5mbyA9ICZhZDc2 MDZfY2hpcF9pbmZvX3RibFtpZF07DQo+ID4gPiA+ICsNCj4gPiA+ID4gIAlyZXQgPSBhZDc2MDZf cmVxdWVzdF9ncGlvcyhzdCk7DQo+ID4gPiA+ICAJaWYgKHJldCkNCj4gPiA+ID4gIAkJZ290byBl cnJvcl9kaXNhYmxlX3JlZzsNCj4gPiA+ID4gIA0KPiA+ID4gPiAtCXN0LT5jaGlwX2luZm8gPSAm YWQ3NjA2X2NoaXBfaW5mb190YmxbaWRdOw0KPiA+ID4gPiAtDQo+ID4gPiA+ICAJaW5kaW9fZGV2 LT5kZXYucGFyZW50ID0gZGV2Ow0KPiA+ID4gPiAgCWlmIChzdC0+Z3Bpb19vcykgew0KPiA+ID4g PiAgCQlpZiAoc3QtPmdwaW9fcmFuZ2UpDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0 YWdpbmcvaWlvL2FkYy9hZDc2MDYuaA0KPiA+ID4gPiBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRj L2FkNzYwNi5oDQo+ID4gPiA+IGluZGV4IDU3ZjExYjQ2YmM2OS4uZjQyMjI5NjM1NGM5IDEwMDY0 NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2MDYuaA0KPiA+ID4g PiArKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2MDYuaA0KPiA+ID4gPiBAQCAtMTMs MTEgKzEzLDEzIEBADQo+ID4gPiA+ICAgKiBzdHJ1Y3QgYWQ3NjA2X2NoaXBfaW5mbyAtIGNoaXAg c3BlY2lmaWMgaW5mb3JtYXRpb24NCj4gPiA+ID4gICAqIEBjaGFubmVsczoJCWNoYW5uZWwgc3Bl Y2lmaWNhdGlvbg0KPiA+ID4gPiAgICogQG51bV9jaGFubmVsczoJbnVtYmVyIG9mIGNoYW5uZWxz DQo+ID4gPiA+ICsgKiBAaGFzX292ZXJzYW1wbGluZzogICB3aGV0aGVyIHRoZSBkZXZpY2UgaGFz IG92ZXJzYW1wbGluZw0KPiA+ID4gPiBzdXBwb3J0DQo+ID4gPiA+ICAgKi8NCj4gPiA+ID4gIA0K PiA+ID4gPiAgc3RydWN0IGFkNzYwNl9jaGlwX2luZm8gew0KPiA+ID4gPiAgCWNvbnN0IHN0cnVj dCBpaW9fY2hhbl9zcGVjCSpjaGFubmVsczsNCj4gPiA+ID4gIAl1bnNpZ25lZCBpbnQJCQludW1f Y2hhbm5lbHM7DQo+ID4gPiA+ICsJYm9vbAkJCQloYXNfb3ZlcnNhbXBsaW5nOw0KPiA+ID4gPiAg fTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAgLyoqDQo+ID4gPiA+IEBAIC04Nyw2ICs4OSw3IEBAIGlu dCBhZDc2MDZfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgaXJxLA0KPiA+ID4gPiB2b2lk DQo+ID4gPiA+IF9faW9tZW0gKmJhc2VfYWRkcmVzcywNCj4gPiA+ID4gIGludCBhZDc2MDZfcmVt b3ZlKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGlycSk7DQo+ID4gPiA+ICANCj4gPiA+ID4gIGVu dW0gYWQ3NjA2X3N1cHBvcnRlZF9kZXZpY2VfaWRzIHsNCj4gPiA+ID4gKwlJRF9BRDc2MDVfNCwN Cj4gPiA+ID4gIAlJRF9BRDc2MDZfOCwNCj4gPiA+ID4gIAlJRF9BRDc2MDZfNiwNCj4gPiA+ID4g IAlJRF9BRDc2MDZfNA0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9h ZGMvYWQ3NjA2X3Bhci5jDQo+ID4gPiA+IGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2 X3Bhci5jDQo+ID4gPiA+IGluZGV4IDk1NmUzODc3NDc2Ny4uOGJkODZlNzI3YjAyIDEwMDY0NA0K PiA+ID4gPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2MDZfcGFyLmMNCj4gPiA+ ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2X3Bhci5jDQo+ID4gPiA+IEBA IC03OSw2ICs3OSw5IEBAIHN0YXRpYyBpbnQgYWQ3NjA2X3Bhcl9yZW1vdmUoc3RydWN0DQo+ID4g PiA+IHBsYXRmb3JtX2RldmljZQ0KPiA+ID4gPiAqcGRldikNCj4gPiA+ID4gIA0KPiA+ID4gPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaWQgYWQ3NjA2X2RyaXZlcl9pZHNb XSA9IHsNCj4gPiA+ID4gIAl7DQo+ID4gPiA+ICsJCS5uYW1lCQk9ICJhZDc2MDUtNCIsDQo+ID4g PiA+ICsJCS5kcml2ZXJfZGF0YQk9IElEX0FENzYwNV80LA0KPiA+ID4gPiArCX0sIHsNCj4gPiA+ ID4gIAkJLm5hbWUJCT0gImFkNzYwNi04IiwNCj4gPiA+ID4gIAkJLmRyaXZlcl9kYXRhCT0gSURf QUQ3NjA2XzgsDQo+ID4gPiA+ICAJfSwgew0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9z dGFnaW5nL2lpby9hZGMvYWQ3NjA2X3NwaS5jDQo+ID4gPiA+IGIvZHJpdmVycy9zdGFnaW5nL2lp by9hZGMvYWQ3NjA2X3NwaS5jDQo+ID4gPiA+IGluZGV4IGZmZDlkMDYyNmVjMi4uYjc2Y2E1YThj MDU5IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2MDZf c3BpLmMNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2X3NwaS5j DQo+ID4gPiA+IEBAIC01NSw2ICs1NSw3IEBAIHN0YXRpYyBpbnQgYWQ3NjA2X3NwaV9yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UNCj4gPiA+ID4gKnNwaSkNCj4gPiA+ID4gIH0NCj4gPiA+ID4gIA0K PiA+ID4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGFkNzYwNl9pZFtdID0g ew0KPiA+ID4gPiArCXsiYWQ3NjA1LTQiLCBJRF9BRDc2MDVfNH0sDQo+ID4gPiA+ICAJeyJhZDc2 MDYtOCIsIElEX0FENzYwNl84fSwNCj4gPiA+ID4gIAl7ImFkNzYwNi02IiwgSURfQUQ3NjA2XzZ9 LA0KPiA+ID4gPiAgCXsiYWQ3NjA2LTQiLCBJRF9BRDc2MDZfNH0sICANCj4gPiA+IA0KPiA+ID4g IA0KPiANCj4gDQo+IA== ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 2018-09-17 9:01 ` Ardelean, Alexandru @ 2018-09-17 11:10 ` Jonathan Cameron 2018-09-22 15:35 ` Jonathan Cameron 0 siblings, 1 reply; 10+ messages in thread From: Jonathan Cameron @ 2018-09-17 11:10 UTC (permalink / raw) To: Ardelean, Alexandru Cc: lars@metafoo.de, knaack.h@gmx.de, linux-iio@vger.kernel.org, jic23@kernel.org, Hennerich, Michael, pmeerw@pmeerw.net On Mon, 17 Sep 2018 09:01:53 +0000 "Ardelean, Alexandru" <alexandru.Ardelean@analog.com> wrote: > On Mon, 2018-09-17 at 09:30 +0100, Jonathan Cameron wrote: > > On Mon, 17 Sep 2018 07:33:13 +0000 > > "Ardelean, Alexandru" <alexandru.Ardelean@analog.com> wrote: > > > > > On Sun, 2018-09-16 at 12:22 +0100, Jonathan Cameron wrote: > > > > On Thu, 13 Sep 2018 14:02:12 +0300 > > > > Alexandru Ardelean <alexandru.ardelean@analog.com> wrote: > > > > > > > > > Add support for the AD7605-4 to the AD7606 driver. The AD7605-4 is > > > > > mostly > > > > > interface compatible to the AD7606-6 with the only difference being > > > > > not > > > > > having support for oversampling. > > > > > > > > > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> > > > > > > > > I am guessing this might clash with the devm change from earlier in > > > > the > > > > day so I'm not going to apply it (too much risk of a bug sneaking > > > > in). > > > > > > > > Please resend the remaining patches in for this driver as a series so > > > > ordering is obvious etc. > > > > > > Hmm, the patch doesn't clash, but I will send them as a series. > > > > I was being lazy and didn't actually check ;) Relied on false intuition. > > > > Then, do I send a V2 or is this patch fine as-is ? > I only have a single patch to V2, and then I think we could discuss moving > this out of staging, or what you consider is still needed [for this] to do > the move. > Naturally, I'll prepare a DT binding doc in the moving-out-of-staging > series. I'll pick it up from here - though may be a few days before I get to it (on wrong computer at the moment). I've not looked at the whole driver for a while. The easiest way to get feedback in general might be to do a series making the move (with move detection disabled so we see the whole code). That gives an opportunity for everyone to take a detailed look at the driver on list and comment on it in a coherent way. This is how I tend to do a review for a move out of staging anyway as it is the same treatment as a new driver gets and we should be consistent across the two. Thanks, Jonathan > > Thanks > Alex > > > Thanks, > > > > Jonathan > > > > > > > > > > > > > Otherwise this one looks good to me. > > > > > > > > Thanks, > > > > > > > > Jonathan > > > > > > Thanks > > > Alex > > > > > > > > --- > > > > > drivers/staging/iio/adc/Kconfig | 2 +- > > > > > drivers/staging/iio/adc/ad7606.c | 33 +++++++++++++++++++++++- > > > > > ---- > > > > > drivers/staging/iio/adc/ad7606.h | 3 +++ > > > > > drivers/staging/iio/adc/ad7606_par.c | 3 +++ > > > > > drivers/staging/iio/adc/ad7606_spi.c | 1 + > > > > > 5 files changed, 36 insertions(+), 6 deletions(-) > > > > > > > > > > diff --git a/drivers/staging/iio/adc/Kconfig > > > > > b/drivers/staging/iio/adc/Kconfig > > > > > index e17efb03bac0..9d3062a07460 100644 > > > > > --- a/drivers/staging/iio/adc/Kconfig > > > > > +++ b/drivers/staging/iio/adc/Kconfig > > > > > @@ -11,7 +11,7 @@ config AD7606 > > > > > select IIO_TRIGGERED_BUFFER > > > > > help > > > > > Say yes here to build support for Analog Devices: > > > > > - ad7606, ad7606-6, ad7606-4 analog to digital converters > > > > > (ADC). > > > > > + ad7605-4, ad7606, ad7606-6, ad7606-4 analog to digital > > > > > converters (ADC). > > > > > > > > > > To compile this driver as a module, choose M here: the > > > > > module will be called ad7606. > > > > > diff --git a/drivers/staging/iio/adc/ad7606.c > > > > > b/drivers/staging/iio/adc/ad7606.c > > > > > index 793de92f27ed..06d65196bedb 100644 > > > > > --- a/drivers/staging/iio/adc/ad7606.c > > > > > +++ b/drivers/staging/iio/adc/ad7606.c > > > > > @@ -275,7 +275,7 @@ static const struct attribute_group > > > > > ad7606_attribute_group_range = { > > > > > .attrs = ad7606_attributes_range, > > > > > }; > > > > > > > > > > -#define AD7606_CHANNEL(num) > > > > > \ > > > > > +#define AD760X_CHANNEL(num, mask) \ > > > > > { \ > > > > > .type = IIO_VOLTAGE, > > > > > \ > > > > > .indexed = 1, > > > > > \ > > > > > @@ -283,8 +283,7 @@ static const struct attribute_group > > > > > ad7606_attribute_group_range = { > > > > > .address = num, > > > > > \ > > > > > .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), > > > > > \ > > > > > .info_mask_shared_by_type = > > > > > BIT(IIO_CHAN_INFO_SCALE),\ > > > > > - .info_mask_shared_by_all = > > > > > \ > > > > > - BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO), > > > > > \ > > > > > + .info_mask_shared_by_all = mask, \ > > > > > .scan_index = num, > > > > > \ > > > > > .scan_type = { > > > > > \ > > > > > .sign = 's', > > > > > \ > > > > > @@ -294,6 +293,20 @@ static const struct attribute_group > > > > > ad7606_attribute_group_range = { > > > > > }, > > > > > \ > > > > > } > > > > > > > > > > +#define AD7605_CHANNEL(num) \ > > > > > + AD760X_CHANNEL(num, 0) > > > > > + > > > > > +#define AD7606_CHANNEL(num) \ > > > > > + AD760X_CHANNEL(num, BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO)) > > > > > + > > > > > +static const struct iio_chan_spec ad7605_channels[] = { > > > > > + IIO_CHAN_SOFT_TIMESTAMP(4), > > > > > + AD7605_CHANNEL(0), > > > > > + AD7605_CHANNEL(1), > > > > > + AD7605_CHANNEL(2), > > > > > + AD7605_CHANNEL(3), > > > > > +}; > > > > > + > > > > > static const struct iio_chan_spec ad7606_channels[] = { > > > > > IIO_CHAN_SOFT_TIMESTAMP(8), > > > > > AD7606_CHANNEL(0), > > > > > @@ -310,17 +323,24 @@ static const struct ad7606_chip_info > > > > > ad7606_chip_info_tbl[] = { > > > > > /* > > > > > * More devices added in future > > > > > */ > > > > > + [ID_AD7605_4] = { > > > > > + .channels = ad7605_channels, > > > > > + .num_channels = 5, > > > > > + }, > > > > > [ID_AD7606_8] = { > > > > > .channels = ad7606_channels, > > > > > .num_channels = 9, > > > > > + .has_oversampling = true, > > > > > }, > > > > > [ID_AD7606_6] = { > > > > > .channels = ad7606_channels, > > > > > .num_channels = 7, > > > > > + .has_oversampling = true, > > > > > }, > > > > > [ID_AD7606_4] = { > > > > > .channels = ad7606_channels, > > > > > .num_channels = 5, > > > > > + .has_oversampling = true, > > > > > }, > > > > > }; > > > > > > > > > > @@ -351,6 +371,9 @@ static int ad7606_request_gpios(struct > > > > > ad7606_state > > > > > *st) > > > > > if (IS_ERR(st->gpio_frstdata)) > > > > > return PTR_ERR(st->gpio_frstdata); > > > > > > > > > > + if (!st->chip_info->has_oversampling) > > > > > + return 0; > > > > > + > > > > > st->gpio_os = devm_gpiod_get_array_optional(dev, > > > > > "oversampling-ratio", > > > > > GPIOD_OUT_LOW); > > > > > return PTR_ERR_OR_ZERO(st->gpio_os); > > > > > @@ -429,12 +452,12 @@ int ad7606_probe(struct device *dev, int irq, > > > > > void __iomem *base_address, > > > > > return ret; > > > > > } > > > > > > > > > > + st->chip_info = &ad7606_chip_info_tbl[id]; > > > > > + > > > > > ret = ad7606_request_gpios(st); > > > > > if (ret) > > > > > goto error_disable_reg; > > > > > > > > > > - st->chip_info = &ad7606_chip_info_tbl[id]; > > > > > - > > > > > indio_dev->dev.parent = dev; > > > > > if (st->gpio_os) { > > > > > if (st->gpio_range) > > > > > diff --git a/drivers/staging/iio/adc/ad7606.h > > > > > b/drivers/staging/iio/adc/ad7606.h > > > > > index 57f11b46bc69..f422296354c9 100644 > > > > > --- a/drivers/staging/iio/adc/ad7606.h > > > > > +++ b/drivers/staging/iio/adc/ad7606.h > > > > > @@ -13,11 +13,13 @@ > > > > > * struct ad7606_chip_info - chip specific information > > > > > * @channels: channel specification > > > > > * @num_channels: number of channels > > > > > + * @has_oversampling: whether the device has oversampling > > > > > support > > > > > */ > > > > > > > > > > struct ad7606_chip_info { > > > > > const struct iio_chan_spec *channels; > > > > > unsigned int num_channels; > > > > > + bool has_oversampling; > > > > > }; > > > > > > > > > > /** > > > > > @@ -87,6 +89,7 @@ int ad7606_probe(struct device *dev, int irq, > > > > > void > > > > > __iomem *base_address, > > > > > int ad7606_remove(struct device *dev, int irq); > > > > > > > > > > enum ad7606_supported_device_ids { > > > > > + ID_AD7605_4, > > > > > ID_AD7606_8, > > > > > ID_AD7606_6, > > > > > ID_AD7606_4 > > > > > diff --git a/drivers/staging/iio/adc/ad7606_par.c > > > > > b/drivers/staging/iio/adc/ad7606_par.c > > > > > index 956e38774767..8bd86e727b02 100644 > > > > > --- a/drivers/staging/iio/adc/ad7606_par.c > > > > > +++ b/drivers/staging/iio/adc/ad7606_par.c > > > > > @@ -79,6 +79,9 @@ static int ad7606_par_remove(struct > > > > > platform_device > > > > > *pdev) > > > > > > > > > > static const struct platform_device_id ad7606_driver_ids[] = { > > > > > { > > > > > + .name = "ad7605-4", > > > > > + .driver_data = ID_AD7605_4, > > > > > + }, { > > > > > .name = "ad7606-8", > > > > > .driver_data = ID_AD7606_8, > > > > > }, { > > > > > diff --git a/drivers/staging/iio/adc/ad7606_spi.c > > > > > b/drivers/staging/iio/adc/ad7606_spi.c > > > > > index ffd9d0626ec2..b76ca5a8c059 100644 > > > > > --- a/drivers/staging/iio/adc/ad7606_spi.c > > > > > +++ b/drivers/staging/iio/adc/ad7606_spi.c > > > > > @@ -55,6 +55,7 @@ static int ad7606_spi_remove(struct spi_device > > > > > *spi) > > > > > } > > > > > > > > > > static const struct spi_device_id ad7606_id[] = { > > > > > + {"ad7605-4", ID_AD7605_4}, > > > > > {"ad7606-8", ID_AD7606_8}, > > > > > {"ad7606-6", ID_AD7606_6}, > > > > > {"ad7606-4", ID_AD7606_4}, > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 2018-09-17 11:10 ` Jonathan Cameron @ 2018-09-22 15:35 ` Jonathan Cameron 0 siblings, 0 replies; 10+ messages in thread From: Jonathan Cameron @ 2018-09-22 15:35 UTC (permalink / raw) To: Jonathan Cameron Cc: Ardelean, Alexandru, lars@metafoo.de, knaack.h@gmx.de, linux-iio@vger.kernel.org, Hennerich, Michael, pmeerw@pmeerw.net On Mon, 17 Sep 2018 12:10:58 +0100 Jonathan Cameron <jonathan.cameron@huawei.com> wrote: > On Mon, 17 Sep 2018 09:01:53 +0000 > "Ardelean, Alexandru" <alexandru.Ardelean@analog.com> wrote: > > > On Mon, 2018-09-17 at 09:30 +0100, Jonathan Cameron wrote: > > > On Mon, 17 Sep 2018 07:33:13 +0000 > > > "Ardelean, Alexandru" <alexandru.Ardelean@analog.com> wrote: > > > > > > > On Sun, 2018-09-16 at 12:22 +0100, Jonathan Cameron wrote: > > > > > On Thu, 13 Sep 2018 14:02:12 +0300 > > > > > Alexandru Ardelean <alexandru.ardelean@analog.com> wrote: > > > > > > > > > > > Add support for the AD7605-4 to the AD7606 driver. The AD7605-4 is > > > > > > mostly > > > > > > interface compatible to the AD7606-6 with the only difference being > > > > > > not > > > > > > having support for oversampling. > > > > > > > > > > > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> > > > > > > > > > > I am guessing this might clash with the devm change from earlier in > > > > > the > > > > > day so I'm not going to apply it (too much risk of a bug sneaking > > > > > in). > > > > > > > > > > Please resend the remaining patches in for this driver as a series so > > > > > ordering is obvious etc. > > > > > > > > Hmm, the patch doesn't clash, but I will send them as a series. > > > > > > I was being lazy and didn't actually check ;) Relied on false intuition. > > > > > > > Then, do I send a V2 or is this patch fine as-is ? > > I only have a single patch to V2, and then I think we could discuss moving > > this out of staging, or what you consider is still needed [for this] to do > > the move. > > Naturally, I'll prepare a DT binding doc in the moving-out-of-staging > > series. > > I'll pick it up from here - though may be a few days before I get to it > (on wrong computer at the moment). Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it. Thanks, Jonathan > > I've not looked at the whole driver for a while. The easiest way to get > feedback in general might be to do a series making the move (with move > detection disabled so we see the whole code). That gives an opportunity > for everyone to take a detailed look at the driver on list and comment on > it in a coherent way. This is how I tend to do a review for a move out > of staging anyway as it is the same treatment as a new driver gets and > we should be consistent across the two. > > Thanks, > > Jonathan > > > > Thanks > > Alex > > > > > Thanks, > > > > > > Jonathan > > > > > > > > > > > > > > > > > Otherwise this one looks good to me. > > > > > > > > > > Thanks, > > > > > > > > > > Jonathan > > > > > > > > Thanks > > > > Alex > > > > > > > > > > --- > > > > > > drivers/staging/iio/adc/Kconfig | 2 +- > > > > > > drivers/staging/iio/adc/ad7606.c | 33 +++++++++++++++++++++++- > > > > > > ---- > > > > > > drivers/staging/iio/adc/ad7606.h | 3 +++ > > > > > > drivers/staging/iio/adc/ad7606_par.c | 3 +++ > > > > > > drivers/staging/iio/adc/ad7606_spi.c | 1 + > > > > > > 5 files changed, 36 insertions(+), 6 deletions(-) > > > > > > > > > > > > diff --git a/drivers/staging/iio/adc/Kconfig > > > > > > b/drivers/staging/iio/adc/Kconfig > > > > > > index e17efb03bac0..9d3062a07460 100644 > > > > > > --- a/drivers/staging/iio/adc/Kconfig > > > > > > +++ b/drivers/staging/iio/adc/Kconfig > > > > > > @@ -11,7 +11,7 @@ config AD7606 > > > > > > select IIO_TRIGGERED_BUFFER > > > > > > help > > > > > > Say yes here to build support for Analog Devices: > > > > > > - ad7606, ad7606-6, ad7606-4 analog to digital converters > > > > > > (ADC). > > > > > > + ad7605-4, ad7606, ad7606-6, ad7606-4 analog to digital > > > > > > converters (ADC). > > > > > > > > > > > > To compile this driver as a module, choose M here: the > > > > > > module will be called ad7606. > > > > > > diff --git a/drivers/staging/iio/adc/ad7606.c > > > > > > b/drivers/staging/iio/adc/ad7606.c > > > > > > index 793de92f27ed..06d65196bedb 100644 > > > > > > --- a/drivers/staging/iio/adc/ad7606.c > > > > > > +++ b/drivers/staging/iio/adc/ad7606.c > > > > > > @@ -275,7 +275,7 @@ static const struct attribute_group > > > > > > ad7606_attribute_group_range = { > > > > > > .attrs = ad7606_attributes_range, > > > > > > }; > > > > > > > > > > > > -#define AD7606_CHANNEL(num) > > > > > > \ > > > > > > +#define AD760X_CHANNEL(num, mask) \ > > > > > > { \ > > > > > > .type = IIO_VOLTAGE, > > > > > > \ > > > > > > .indexed = 1, > > > > > > \ > > > > > > @@ -283,8 +283,7 @@ static const struct attribute_group > > > > > > ad7606_attribute_group_range = { > > > > > > .address = num, > > > > > > \ > > > > > > .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), > > > > > > \ > > > > > > .info_mask_shared_by_type = > > > > > > BIT(IIO_CHAN_INFO_SCALE),\ > > > > > > - .info_mask_shared_by_all = > > > > > > \ > > > > > > - BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO), > > > > > > \ > > > > > > + .info_mask_shared_by_all = mask, \ > > > > > > .scan_index = num, > > > > > > \ > > > > > > .scan_type = { > > > > > > \ > > > > > > .sign = 's', > > > > > > \ > > > > > > @@ -294,6 +293,20 @@ static const struct attribute_group > > > > > > ad7606_attribute_group_range = { > > > > > > }, > > > > > > \ > > > > > > } > > > > > > > > > > > > +#define AD7605_CHANNEL(num) \ > > > > > > + AD760X_CHANNEL(num, 0) > > > > > > + > > > > > > +#define AD7606_CHANNEL(num) \ > > > > > > + AD760X_CHANNEL(num, BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO)) > > > > > > + > > > > > > +static const struct iio_chan_spec ad7605_channels[] = { > > > > > > + IIO_CHAN_SOFT_TIMESTAMP(4), > > > > > > + AD7605_CHANNEL(0), > > > > > > + AD7605_CHANNEL(1), > > > > > > + AD7605_CHANNEL(2), > > > > > > + AD7605_CHANNEL(3), > > > > > > +}; > > > > > > + > > > > > > static const struct iio_chan_spec ad7606_channels[] = { > > > > > > IIO_CHAN_SOFT_TIMESTAMP(8), > > > > > > AD7606_CHANNEL(0), > > > > > > @@ -310,17 +323,24 @@ static const struct ad7606_chip_info > > > > > > ad7606_chip_info_tbl[] = { > > > > > > /* > > > > > > * More devices added in future > > > > > > */ > > > > > > + [ID_AD7605_4] = { > > > > > > + .channels = ad7605_channels, > > > > > > + .num_channels = 5, > > > > > > + }, > > > > > > [ID_AD7606_8] = { > > > > > > .channels = ad7606_channels, > > > > > > .num_channels = 9, > > > > > > + .has_oversampling = true, > > > > > > }, > > > > > > [ID_AD7606_6] = { > > > > > > .channels = ad7606_channels, > > > > > > .num_channels = 7, > > > > > > + .has_oversampling = true, > > > > > > }, > > > > > > [ID_AD7606_4] = { > > > > > > .channels = ad7606_channels, > > > > > > .num_channels = 5, > > > > > > + .has_oversampling = true, > > > > > > }, > > > > > > }; > > > > > > > > > > > > @@ -351,6 +371,9 @@ static int ad7606_request_gpios(struct > > > > > > ad7606_state > > > > > > *st) > > > > > > if (IS_ERR(st->gpio_frstdata)) > > > > > > return PTR_ERR(st->gpio_frstdata); > > > > > > > > > > > > + if (!st->chip_info->has_oversampling) > > > > > > + return 0; > > > > > > + > > > > > > st->gpio_os = devm_gpiod_get_array_optional(dev, > > > > > > "oversampling-ratio", > > > > > > GPIOD_OUT_LOW); > > > > > > return PTR_ERR_OR_ZERO(st->gpio_os); > > > > > > @@ -429,12 +452,12 @@ int ad7606_probe(struct device *dev, int irq, > > > > > > void __iomem *base_address, > > > > > > return ret; > > > > > > } > > > > > > > > > > > > + st->chip_info = &ad7606_chip_info_tbl[id]; > > > > > > + > > > > > > ret = ad7606_request_gpios(st); > > > > > > if (ret) > > > > > > goto error_disable_reg; > > > > > > > > > > > > - st->chip_info = &ad7606_chip_info_tbl[id]; > > > > > > - > > > > > > indio_dev->dev.parent = dev; > > > > > > if (st->gpio_os) { > > > > > > if (st->gpio_range) > > > > > > diff --git a/drivers/staging/iio/adc/ad7606.h > > > > > > b/drivers/staging/iio/adc/ad7606.h > > > > > > index 57f11b46bc69..f422296354c9 100644 > > > > > > --- a/drivers/staging/iio/adc/ad7606.h > > > > > > +++ b/drivers/staging/iio/adc/ad7606.h > > > > > > @@ -13,11 +13,13 @@ > > > > > > * struct ad7606_chip_info - chip specific information > > > > > > * @channels: channel specification > > > > > > * @num_channels: number of channels > > > > > > + * @has_oversampling: whether the device has oversampling > > > > > > support > > > > > > */ > > > > > > > > > > > > struct ad7606_chip_info { > > > > > > const struct iio_chan_spec *channels; > > > > > > unsigned int num_channels; > > > > > > + bool has_oversampling; > > > > > > }; > > > > > > > > > > > > /** > > > > > > @@ -87,6 +89,7 @@ int ad7606_probe(struct device *dev, int irq, > > > > > > void > > > > > > __iomem *base_address, > > > > > > int ad7606_remove(struct device *dev, int irq); > > > > > > > > > > > > enum ad7606_supported_device_ids { > > > > > > + ID_AD7605_4, > > > > > > ID_AD7606_8, > > > > > > ID_AD7606_6, > > > > > > ID_AD7606_4 > > > > > > diff --git a/drivers/staging/iio/adc/ad7606_par.c > > > > > > b/drivers/staging/iio/adc/ad7606_par.c > > > > > > index 956e38774767..8bd86e727b02 100644 > > > > > > --- a/drivers/staging/iio/adc/ad7606_par.c > > > > > > +++ b/drivers/staging/iio/adc/ad7606_par.c > > > > > > @@ -79,6 +79,9 @@ static int ad7606_par_remove(struct > > > > > > platform_device > > > > > > *pdev) > > > > > > > > > > > > static const struct platform_device_id ad7606_driver_ids[] = { > > > > > > { > > > > > > + .name = "ad7605-4", > > > > > > + .driver_data = ID_AD7605_4, > > > > > > + }, { > > > > > > .name = "ad7606-8", > > > > > > .driver_data = ID_AD7606_8, > > > > > > }, { > > > > > > diff --git a/drivers/staging/iio/adc/ad7606_spi.c > > > > > > b/drivers/staging/iio/adc/ad7606_spi.c > > > > > > index ffd9d0626ec2..b76ca5a8c059 100644 > > > > > > --- a/drivers/staging/iio/adc/ad7606_spi.c > > > > > > +++ b/drivers/staging/iio/adc/ad7606_spi.c > > > > > > @@ -55,6 +55,7 @@ static int ad7606_spi_remove(struct spi_device > > > > > > *spi) > > > > > > } > > > > > > > > > > > > static const struct spi_device_id ad7606_id[] = { > > > > > > + {"ad7605-4", ID_AD7605_4}, > > > > > > {"ad7606-8", ID_AD7606_8}, > > > > > > {"ad7606-6", ID_AD7606_6}, > > > > > > {"ad7606-4", ID_AD7606_4}, > > > > > > > > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2018-09-22 21:29 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-09-10 16:16 [PATCH 1/2] staging:iio:ad7606: Remove incorrect kernel doc annotation Lars-Peter Clausen 2018-09-10 16:16 ` [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 Lars-Peter Clausen 2018-09-11 7:15 ` Ardelean, Alexandru -- strict thread matches above, loose matches on Subject: below -- 2018-09-13 11:02 [PATCH 1/2] staging:iio:ad7606: Remove incorrect kernel doc annotations Alexandru Ardelean 2018-09-13 11:02 ` [PATCH 2/2] staging:iio:ad7606: Add support for the ad7605-4 Alexandru Ardelean 2018-09-16 11:22 ` Jonathan Cameron 2018-09-17 7:33 ` Ardelean, Alexandru 2018-09-17 8:30 ` Jonathan Cameron 2018-09-17 9:01 ` Ardelean, Alexandru 2018-09-17 11:10 ` Jonathan Cameron 2018-09-22 15:35 ` Jonathan Cameron
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).