From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: Re: [PATCH v4 1/4] i2c: at91: Send bus clear command if SDA is down Date: Sun, 29 Mar 2020 21:13:15 +0000 Message-ID: <3ebaa9a6-73d5-863f-bc40-e38230ab732e@microchip.com> References: <20200225155012.22764-1-codrin.ciubotariu@microchip.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20200225155012.22764-1-codrin.ciubotariu@microchip.com> Content-Language: en-US Content-ID: <632800FB3723DB43945BCCB99702CD01@namprd11.prod.outlook.com> Sender: linux-kernel-owner@vger.kernel.org To: Codrin.Ciubotariu@microchip.com, linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Cc: Nicolas.Ferre@microchip.com, alexandre.belloni@bootlin.com, robh+dt@kernel.org, peda@axentia.se, linux@armlinux.org.uk, wsa@the-dreams.de List-Id: linux-i2c@vger.kernel.org T24gMi8yNS8yMDIwIDQ6NTAgUE0sIENvZHJpbiBDaXVib3Rhcml1IHdyb3RlOg0KPiBBZnRlciBh IHRyYW5zZmVyIHRpbWVvdXQsIHNvbWUgZmF1bHR5IEkyQyBzbGF2ZSBkZXZpY2VzIG1pZ2h0IGhv bGQgZG93bg0KPiB0aGUgU0RBIHBpbi4gV2UgY2FuIGdlbmVyYXRlIGEgYnVzIGNsZWFyIGNvbW1h bmQsIGhvcGluZyB0aGF0IHRoZSBzbGF2ZQ0KPiBtaWdodCByZWxlYXNlIHRoZSBwaW5zLg0KPiBJ ZiB0aGUgQ0xFQVIgY29tbWFuZCBpcyBub3Qgc3VwcG9ydGVkLCB3ZSB3aWxsIHVzZSBncGlvIHJl Y292ZXJ5LCBpZg0KPiBhdmFpbGFibGUsIHRvIHJlc2V0IHRoZSBidXMuDQo+IA0KPiBTaWduZWQt b2ZmLWJ5OiBDb2RyaW4gQ2l1Ym90YXJpdSA8Y29kcmluLmNpdWJvdGFyaXVAbWljcm9jaGlwLmNv bT4NCg0KU291bmRzIGdvb2Qgc28NCkFja2VkLWJ5OiBMdWRvdmljIERlc3JvY2hlcyA8bHVkb3Zp Yy5kZXNyb2NoZXNAbWljcm9jaGlwLmNvbT4NCg0KV29sZnJhbSwgeW91IGhhdmUgYWNjZXB0ZWQg dGhlIHYzIG9mIHRoZSByZWNvdmVyeSBzdXBwb3J0IGFuZCByZXF1ZXN0ZWQgDQp0aGVzZSBjaGFu Z2VzLiBJdCBoYXMgYmVlbiBzZW50IGFzIGEgdjQsIGJ1dCwgaW4gZmFjdCwgdGhpcyBwYXRjaCBn b2VzIA0Kb24gdG9wIG9uIHYzLiBJdCBjb3VsZCwgc2hvdWxkLCBoYXZlIGJlZW4gYSBuZXcgcGF0 Y2guDQoNClJlZ2FyZHMNCg0KTHVkb3ZpYw0KDQo+IC0tLQ0KPiANCj4gQ2hhbmdlcyBpbiB2NDoN Cj4gICAtIG1vdmVkIHRoZSBIVyBidXMgY2xlYXIgY29tbWFuZCBpbiBhIHJlY292ZXJfYnVzKCkg ZnVuY3Rpb24sIHRvIGJlIGFibGUNCj4gICAgIHRvIGp1c3QgY2FsbCBpMmNfcmVjb3Zlcl9idXMo KSBpZiBhIHRyYW5zZmVyIGZhaWxzOw0KPiAgIC0gcmVjb3ZlcnkgZ3Bpb3MgYXJlIG5vIGxvbmdl ciB0YWtlbiBpZiBIVyBidXMgY2xlYXIgY29tbWFuZCBpcw0KPiAgICAgc3VwcG9ydGVkOw0KPiAN Cj4gQ2hhbmdlcyBpbiB2MzoNCj4gICAtIHJlbW92ZWQgdW5uZWNlc3NhcnkgY29uZGl0aW9uIGZy b20gaW5mbyBwcmludDsNCj4gICAtIHJlbW92ZWQgdW5uZWRlZCBkZWNsYXJhdGlvbnM7DQo+IA0K PiBDaGFuZ2VzIGluIHYyOg0KPiAgIC0gY2FsbGVkIGkyY19yZWNvdmVyX2J1cygpIGFmdGVyIGFu IGVycm9yIG9jY3VycywgaWYgU0RBIGlzIGRvd247DQo+ICAgLSByZWxlYXNlIGdwaW9zIGlmIHJl Y292ZXJ5IGluZm9ybWF0aW9uIGlzIGluY29tcGxldGU7DQo+IA0KPiAgIGRyaXZlcnMvaTJjL2J1 c3Nlcy9pMmMtYXQ5MS1jb3JlLmMgICB8ICAyICsrDQo+ICAgZHJpdmVycy9pMmMvYnVzc2VzL2ky Yy1hdDkxLW1hc3Rlci5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQ0KPiAgIGRy aXZlcnMvaTJjL2J1c3Nlcy9pMmMtYXQ5MS5oICAgICAgICB8ICA3ICsrKy0NCj4gICAzIGZpbGVz IGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hdDkxLWNvcmUuYyBiL2RyaXZlcnMvaTJjL2J1 c3Nlcy9pMmMtYXQ5MS1jb3JlLmMNCj4gaW5kZXggM2RhMWE4YWNlY2I1Li5lMTRlZGQyMzYxMDgg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYXQ5MS1jb3JlLmMNCj4gKysr IGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hdDkxLWNvcmUuYw0KPiBAQCAtMTMxLDYgKzEzMSw3 IEBAIHN0YXRpYyBzdHJ1Y3QgYXQ5MV90d2lfcGRhdGEgc2FtYTVkMl9jb25maWcgPSB7DQo+ICAg CS5oYXNfZGlnX2ZpbHRyID0gdHJ1ZSwNCj4gICAJLmhhc19hZHZfZGlnX2ZpbHRyID0gdHJ1ZSwN Cj4gICAJLmhhc19hbmFfZmlsdHIgPSB0cnVlLA0KPiArCS5oYXNfY2xlYXJfY21kID0gZmFsc2Us CS8qIGR1ZSB0byBlcnJhdGEsIENMRUFSIGNtZCBpcyBub3Qgd29ya2luZyAqLw0KPiAgIH07DQo+ ICAgDQo+ICAgc3RhdGljIHN0cnVjdCBhdDkxX3R3aV9wZGF0YSBzYW05eDYwX2NvbmZpZyA9IHsN Cj4gQEAgLTE0Miw2ICsxNDMsNyBAQCBzdGF0aWMgc3RydWN0IGF0OTFfdHdpX3BkYXRhIHNhbTl4 NjBfY29uZmlnID0gew0KPiAgIAkuaGFzX2RpZ19maWx0ciA9IHRydWUsDQo+ICAgCS5oYXNfYWR2 X2RpZ19maWx0ciA9IHRydWUsDQo+ICAgCS5oYXNfYW5hX2ZpbHRyID0gdHJ1ZSwNCj4gKwkuaGFz X2NsZWFyX2NtZCA9IHRydWUsDQo+ICAgfTsNCj4gICANCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBhdG1lbF90d2lfZHRfaWRzW10gPSB7DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2kyYy9idXNzZXMvaTJjLWF0OTEtbWFzdGVyLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJj LWF0OTEtbWFzdGVyLmMNCj4gaW5kZXggMGFiYTUxYTdkZjMyLi43NzZlOTU5NjJhYjYgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYXQ5MS1tYXN0ZXIuYw0KPiArKysgYi9k cml2ZXJzL2kyYy9idXNzZXMvaTJjLWF0OTEtbWFzdGVyLmMNCj4gQEAgLTQ4MCw3ICs0ODAsNiBA QCBzdGF0aWMgaW50IGF0OTFfZG9fdHdpX3RyYW5zZmVyKHN0cnVjdCBhdDkxX3R3aV9kZXYgKmRl dikNCj4gICAJdW5zaWduZWQgbG9uZyB0aW1lX2xlZnQ7DQo+ICAgCWJvb2wgaGFzX3VucmVfZmxh ZyA9IGRldi0+cGRhdGEtPmhhc191bnJlX2ZsYWc7DQo+ICAgCWJvb2wgaGFzX2FsdF9jbWQgPSBk ZXYtPnBkYXRhLT5oYXNfYWx0X2NtZDsNCj4gLQlzdHJ1Y3QgaTJjX2J1c19yZWNvdmVyeV9pbmZv ICpyaW5mbyA9ICZkZXYtPnJpbmZvOw0KPiAgIA0KPiAgIAkvKg0KPiAgIAkgKiBXQVJOSU5HOiB0 aGUgVFhDT01QIGJpdCBpbiB0aGUgU3RhdHVzIFJlZ2lzdGVyIGlzIE5PVCBhIGNsZWFyIG9uDQo+ IEBAIC02NDEsMTEgKzY0MCwxMiBAQCBzdGF0aWMgaW50IGF0OTFfZG9fdHdpX3RyYW5zZmVyKHN0 cnVjdCBhdDkxX3R3aV9kZXYgKmRldikNCj4gICAJCQkgICAgICAgQVQ5MV9UV0lfVEhSQ0xSIHwg QVQ5MV9UV0lfTE9DS0NMUik7DQo+ICAgCX0NCj4gICANCj4gLQlpZiAocmluZm8tPmdldF9zZGEg JiYgIShyaW5mby0+Z2V0X3NkYSgmZGV2LT5hZGFwdGVyKSkpIHsNCj4gLQkJZGV2X2RiZyhkZXYt PmRldiwNCj4gLQkJCSJTREEgaXMgZG93bjsgY2xlYXIgYnVzIHVzaW5nIGdwaW9cbiIpOw0KPiAt CQlpMmNfcmVjb3Zlcl9idXMoJmRldi0+YWRhcHRlcik7DQo+IC0JfQ0KPiArCS8qDQo+ICsJICog c29tZSBmYXVsdHkgSTJDIHNsYXZlIGRldmljZXMgbWlnaHQgaG9sZCBTREEgZG93bjsNCj4gKwkg KiB3ZSBjYW4gc2VuZCBhIGJ1cyBjbGVhciBjb21tYW5kLCBob3BpbmcgdGhhdCB0aGUgcGlucyB3 aWxsIGJlDQo+ICsJICogcmVsZWFzZWQNCj4gKwkgKi8NCj4gKwlpMmNfcmVjb3Zlcl9idXMoJmRl di0+YWRhcHRlcik7DQo+ICAgDQo+ICAgCXJldHVybiByZXQ7DQo+ICAgfQ0KPiBAQCAtODMwLDcg KzgzMCw3IEBAIHN0YXRpYyB2b2lkIGF0OTFfdW5wcmVwYXJlX3R3aV9yZWNvdmVyeShzdHJ1Y3Qg aTJjX2FkYXB0ZXIgKmFkYXApDQo+ICAgCXBpbmN0cmxfc2VsZWN0X3N0YXRlKGRldi0+cGluY3Ry bCwgZGV2LT5waW5jdHJsX3BpbnNfZGVmYXVsdCk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGlu dCBhdDkxX2luaXRfdHdpX3JlY292ZXJ5X2luZm8oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwNCj4gK3N0YXRpYyBpbnQgYXQ5MV9pbml0X3R3aV9yZWNvdmVyeV9ncGlvKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ICAgCQkJCSAgICAgICBzdHJ1Y3QgYXQ5MV90d2lfZGV2ICpk ZXYpDQo+ICAgew0KPiAgIAlzdHJ1Y3QgaTJjX2J1c19yZWNvdmVyeV9pbmZvICpyaW5mbyA9ICZk ZXYtPnJpbmZvOw0KPiBAQCAtODgwLDYgKzg4MCw0MSBAQCBzdGF0aWMgaW50IGF0OTFfaW5pdF90 d2lfcmVjb3ZlcnlfaW5mbyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KPiAgIAlyZXR1 cm4gMDsNCj4gICB9DQo+ICAgDQo+ICtzdGF0aWMgaW50IGF0OTFfdHdpX3JlY292ZXJfYnVzX2Nt ZChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXApDQo+ICt7DQo+ICsJc3RydWN0IGF0OTFfdHdpX2Rl diAqZGV2ID0gaTJjX2dldF9hZGFwZGF0YShhZGFwKTsNCj4gKw0KPiArCWRldi0+dHJhbnNmZXJf c3RhdHVzIHw9IGF0OTFfdHdpX3JlYWQoZGV2LCBBVDkxX1RXSV9TUik7DQo+ICsJaWYgKCEoZGV2 LT50cmFuc2Zlcl9zdGF0dXMgJiBBVDkxX1RXSV9TREEpKSB7DQo+ICsJCWRldl9kYmcoZGV2LT5k ZXYsICJTREEgaXMgZG93bjsgc2VuZGluZyBidXMgY2xlYXIgY29tbWFuZFxuIik7DQo+ICsJCWlm IChkZXYtPnVzZV9hbHRfY21kKSB7DQo+ICsJCQl1bnNpZ25lZCBpbnQgYWNyOw0KPiArDQo+ICsJ CQlhY3IgPSBhdDkxX3R3aV9yZWFkKGRldiwgQVQ5MV9UV0lfQUNSKTsNCj4gKwkJCWFjciAmPSB+ QVQ5MV9UV0lfQUNSX0RBVEFMX01BU0s7DQo+ICsJCQlhdDkxX3R3aV93cml0ZShkZXYsIEFUOTFf VFdJX0FDUiwgYWNyKTsNCj4gKwkJfQ0KPiArCQlhdDkxX3R3aV93cml0ZShkZXYsIEFUOTFfVFdJ X0NSLCBBVDkxX1RXSV9DTEVBUik7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgYXQ5MV9pbml0X3R3aV9yZWNvdmVyeV9pbmZvKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ICsJCQkJICAgICAgIHN0cnVjdCBhdDkxX3R3aV9kZXYgKmRl dikNCj4gK3sNCj4gKwlzdHJ1Y3QgaTJjX2J1c19yZWNvdmVyeV9pbmZvICpyaW5mbyA9ICZkZXYt PnJpbmZvOw0KPiArCWJvb2wgaGFzX2NsZWFyX2NtZCA9IGRldi0+cGRhdGEtPmhhc19jbGVhcl9j bWQ7DQo+ICsNCj4gKwlpZiAoIWhhc19jbGVhcl9jbWQpDQo+ICsJCXJldHVybiBhdDkxX2luaXRf dHdpX3JlY292ZXJ5X2dwaW8ocGRldiwgZGV2KTsNCj4gKw0KPiArCXJpbmZvLT5yZWNvdmVyX2J1 cyA9IGF0OTFfdHdpX3JlY292ZXJfYnVzX2NtZDsNCj4gKwlkZXYtPmFkYXB0ZXIuYnVzX3JlY292 ZXJ5X2luZm8gPSByaW5mbzsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICAgaW50 IGF0OTFfdHdpX3Byb2JlX21hc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KPiAg IAkJCSAgdTMyIHBoeV9hZGRyLCBzdHJ1Y3QgYXQ5MV90d2lfZGV2ICpkZXYpDQo+ICAgew0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hdDkxLmggYi9kcml2ZXJzL2kyYy9i dXNzZXMvaTJjLWF0OTEuaA0KPiBpbmRleCBmNTdhNmNhYjk2YjQuLjdlN2I0OTU1Y2E3ZiAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hdDkxLmgNCj4gKysrIGIvZHJpdmVy cy9pMmMvYnVzc2VzL2kyYy1hdDkxLmgNCj4gQEAgLTM2LDYgKzM2LDcgQEANCj4gICAjZGVmaW5l CUFUOTFfVFdJX1NWRElTCQlCSVQoNSkJLyogU2xhdmUgVHJhbnNmZXIgRGlzYWJsZSAqLw0KPiAg ICNkZWZpbmUJQVQ5MV9UV0lfUVVJQ0sJCUJJVCg2KQkvKiBTTUJ1cyBxdWljayBjb21tYW5kICov DQo+ICAgI2RlZmluZQlBVDkxX1RXSV9TV1JTVAkJQklUKDcpCS8qIFNvZnR3YXJlIFJlc2V0ICov DQo+ICsjZGVmaW5lCUFUOTFfVFdJX0NMRUFSCQlCSVQoMTUpIC8qIEJ1cyBjbGVhciBjb21tYW5k ICovDQo+ICAgI2RlZmluZQlBVDkxX1RXSV9BQ01FTgkJQklUKDE2KSAvKiBBbHRlcm5hdGl2ZSBD b21tYW5kIE1vZGUgRW5hYmxlICovDQo+ICAgI2RlZmluZQlBVDkxX1RXSV9BQ01ESVMJCUJJVCgx NykgLyogQWx0ZXJuYXRpdmUgQ29tbWFuZCBNb2RlIERpc2FibGUgKi8NCj4gICAjZGVmaW5lCUFU OTFfVFdJX1RIUkNMUgkJQklUKDI0KSAvKiBUcmFuc21pdCBIb2xkaW5nIFJlZ2lzdGVyIENsZWFy ICovDQo+IEBAIC02OSw2ICs3MCw4IEBADQo+ICAgI2RlZmluZQlBVDkxX1RXSV9OQUNLCQlCSVQo OCkJLyogTm90IEFja25vd2xlZGdlZCAqLw0KPiAgICNkZWZpbmUJQVQ5MV9UV0lfRU9TQUNDCQlC SVQoMTEpCS8qIEVuZCBPZiBTbGF2ZSBBY2Nlc3MgKi8NCj4gICAjZGVmaW5lCUFUOTFfVFdJX0xP Q0sJCUJJVCgyMykgLyogVFdJIExvY2sgZHVlIHRvIEZyYW1lIEVycm9ycyAqLw0KPiArI2RlZmlu ZQlBVDkxX1RXSV9TQ0wJCUJJVCgyNCkgLyogVFdJIFNDTCBzdGF0dXMgKi8NCj4gKyNkZWZpbmUJ QVQ5MV9UV0lfU0RBCQlCSVQoMjUpIC8qIFRXSSBTREEgc3RhdHVzICovDQo+ICAgDQo+ICAgI2Rl ZmluZQlBVDkxX1RXSV9JTlRfTUFTSyBcDQo+ICAgCShBVDkxX1RXSV9UWENPTVAgfCBBVDkxX1RX SV9SWFJEWSB8IEFUOTFfVFdJX1RYUkRZIHwgQVQ5MV9UV0lfTkFDSyBcDQo+IEBAIC04MSw3ICs4 NCw4IEBADQo+ICAgI2RlZmluZQlBVDkxX1RXSV9USFIJCTB4MDAzNAkvKiBUcmFuc21pdCBIb2xk aW5nIFJlZ2lzdGVyICovDQo+ICAgDQo+ICAgI2RlZmluZQlBVDkxX1RXSV9BQ1IJCTB4MDA0MAkv KiBBbHRlcm5hdGl2ZSBDb21tYW5kIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lCUFUOTFfVFdJX0FD Ul9EQVRBTChsZW4pCSgobGVuKSAmIDB4ZmYpDQo+ICsjZGVmaW5lCUFUOTFfVFdJX0FDUl9EQVRB TF9NQVNLCUdFTk1BU0soMTUsIDApDQo+ICsjZGVmaW5lCUFUOTFfVFdJX0FDUl9EQVRBTChsZW4p CSgobGVuKSAmIEFUOTFfVFdJX0FDUl9EQVRBTF9NQVNLKQ0KPiAgICNkZWZpbmUJQVQ5MV9UV0lf QUNSX0RJUglCSVQoOCkNCj4gICANCj4gICAjZGVmaW5lIEFUOTFfVFdJX0ZJTFRSCQkweDAwNDQN Cj4gQEAgLTExOCw2ICsxMjIsNyBAQCBzdHJ1Y3QgYXQ5MV90d2lfcGRhdGEgew0KPiAgIAlib29s IGhhc19kaWdfZmlsdHI7DQo+ICAgCWJvb2wgaGFzX2Fkdl9kaWdfZmlsdHI7DQo+ICAgCWJvb2wg aGFzX2FuYV9maWx0cjsNCj4gKwlib29sIGhhc19jbGVhcl9jbWQ7DQo+ICAgCXN0cnVjdCBhdF9k bWFfc2xhdmUgZG1hX3NsYXZlOw0KPiAgIH07DQo+ICAgDQo+IA0KDQo=