From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AD20BC4338F for ; Mon, 16 Aug 2021 07:15:30 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6323C613CF for ; Mon, 16 Aug 2021 07:15:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 6323C613CF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=61VMSNjXWQZHPARHVDDK9mk3bVsergaUCCaEaDWhJO4=; b=gfhE2IrIDRdfze +GmWEFAV/HMT2mwbi9HLwv5fJH8/icidfbAZjYWT1QZExK6B/V3wDZOEpRjjtwOHWeDWtkT0FE+mU XuXZg4xWGAc4wP55zRTNqxDVoIAH50DpBCL+o0OglVYPNjfayzSEL/0DTEtJ/XjSqNcTRLcL/QSHP CWpYPa5sa7hj8N0t7ZngjsCaYxotTlr0aNizNeYGd526tHf/iGBftTjddHTmPI5G52rTjOW06tyH8 NkJCh9eSt2jDEytOqk5RBxQJpclbaaT64lKLh4zHdE/6KVJnmQDfLEt65GEsZDZm2nbZiZuPQCPZi q4e6NY0w9xmGGtk2MseQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mFWqH-00GLB4-D5; Mon, 16 Aug 2021 07:15:29 +0000 Received: from relay3-d.mail.gandi.net ([217.70.183.195]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mFWqD-00GLAG-BA for linux-i3c@lists.infradead.org; Mon, 16 Aug 2021 07:15:27 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 67F116000B; Mon, 16 Aug 2021 07:15:21 +0000 (UTC) Date: Mon, 16 Aug 2021 09:15:20 +0200 From: Miquel Raynal To: Clark Wang Cc: conor.culhane@silvaco.com, alexandre.belloni@bootlin.com, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-imx@nxp.com Subject: Re: [PATCH V4 4/8] i3c: master: svc: add support for slave to stop returning data Message-ID: <20210816091520.349dac41@xps13> In-Reply-To: <20210809063645.2289988-5-xiaoning.wang@nxp.com> References: <20210809063645.2289988-1-xiaoning.wang@nxp.com> <20210809063645.2289988-5-xiaoning.wang@nxp.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210816_001525_723230_A3962111 X-CRM114-Status: GOOD ( 27.90 ) X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org SGkgQ2xhcmssCgpKdXN0IGEgZmV3IG5pdHBpY2tzLgoKQ2xhcmsgV2FuZyA8eGlhb25pbmcud2Fu Z0BueHAuY29tPiB3cm90ZSBvbiBNb24sICA5IEF1ZyAyMDIxIDE0OjM2OjQxCiswODAwOgoKPiBX aGVuIGkzYyBjb250cm9sbGVyIHJlYWRzIGRhdGEgZnJvbSBzbGF2ZSBkZXZpY2UsIHNsYXZlIGRl dmljZSBjYW4gc3RvcAo+IHJldHVybmluZyBkYXRhIHdpdGggYW4gQUNLIGFmdGVyIGFueSBieXRl Lgo+IEFkZCB0aGlzIHN1cHBvcnQgZm9yIHN2YyBpM2MgY29udHJvbGxlci4gT3RoZXJ3aXNlLCBp dCB3aWxsIGdvIFRJTUVPVVQKCiJpdCB3aWxsIHRpbWVvdXQgd2hlbiB0aGUgc2xhdmUuLi4iCgo+ IGVycm9yIHBhdGggd2hlbiB0aGUgc2xhdmUgZGV2aWNlIGVuZHMgdGhlIHJlYWQgb3BlcmF0aW9u IGVhcmx5Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IENsYXJrIFdhbmcgPHhpYW9uaW5nLndhbmdAbnhw LmNvbT4KPiBSZXZpZXdlZC1ieTogSnVuIExpIDxqdW4ubGlAbnhwLmNvbT4KPiAtLS0KPiBWNCBj aGFuZ2VzOgo+ICAtIE9ubHkgdXNlIENPTVBMRVRFIGZsYWcgaW4gdGhlIHJlYWQgZnVuY3Rpb24u Cj4gIC0gQWRkIGEgcmVzZXQgYmVmb3JlIGVhY2ggdHJhbnNmZXIuCj4gVjIvVjM6IE5vIGNoYW5n ZS4KPiAtLS0KPiAgZHJpdmVycy9pM2MvbWFzdGVyL3N2Yy1pM2MtbWFzdGVyLmMgfCA1NiArKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMzkgaW5zZXJ0aW9u cygrKSwgMTcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTNjL21hc3Rl ci9zdmMtaTNjLW1hc3Rlci5jIGIvZHJpdmVycy9pM2MvbWFzdGVyL3N2Yy1pM2MtbWFzdGVyLmMK PiBpbmRleCA0ZTY5YzY5MTI1M2QuLmU3NjdmMzA3ZGIyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2kzYy9tYXN0ZXIvc3ZjLWkzYy1tYXN0ZXIuYwo+ICsrKyBiL2RyaXZlcnMvaTNjL21hc3Rlci9z dmMtaTNjLW1hc3Rlci5jCj4gQEAgLTg5NiwyNyArODk2LDM1IEBAIHN0YXRpYyBpbnQgc3ZjX2kz Y19tYXN0ZXJfZG9fZGFhKHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm0pCj4gIHN0YXRp YyBpbnQgc3ZjX2kzY19tYXN0ZXJfcmVhZChzdHJ1Y3Qgc3ZjX2kzY19tYXN0ZXIgKm1hc3RlciwK PiAgCQkJICAgICAgIHU4ICppbiwgdW5zaWduZWQgaW50IGxlbikKPiAgewo+IC0JaW50IG9mZnNl dCA9IDAsIGksIHJldDsKPiAtCXUzMiBtZGN0cmw7Cj4gKwlpbnQgb2Zmc2V0ID0gMCwgaTsKPiAr CXUzMiBtZGN0cmwsIG1zdGF0dXM7Cj4gKwlib29sIGNvbXBsZXRlZCA9IGZhbHNlOwo+ICsJdW5z aWduZWQgaW50IGNvdW50Owo+ICsJdW5zaWduZWQgbG9uZyBzdGFydCA9IGppZmZpZXM7Cj4gIAo+ IC0Jd2hpbGUgKG9mZnNldCA8IGxlbikgewo+IC0JCXVuc2lnbmVkIGludCBjb3VudDsKPiArCXdo aWxlICghY29tcGxldGVkKSB7Cj4gKwkJbXN0YXR1cyA9IHJlYWRsKG1hc3Rlci0+cmVncyArIFNW Q19JM0NfTVNUQVRVUyk7Cj4gKwkJaWYgKFNWQ19JM0NfTVNUQVRVU19DT01QTEVURShtc3RhdHVz KSAhPSAwKQo+ICsJCQljb21wbGV0ZWQgPSB0cnVlOwo+ICAKPiAtCQlyZXQgPSByZWFkbF9wb2xs X3RpbWVvdXQobWFzdGVyLT5yZWdzICsgU1ZDX0kzQ19NREFUQUNUUkwsCj4gLQkJCQkJIG1kY3Ry bCwKPiAtCQkJCQkgIShtZGN0cmwgJiBTVkNfSTNDX01EQVRBQ1RSTF9SWEVNUFRZKSwKPiAtCQkJ CQkgMCwgMTAwMCk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiArCQlpZiAodGlt ZV9hZnRlcihqaWZmaWVzLCBzdGFydCArIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpKSB7Cj4gKwkJ CWRldl9kYmcobWFzdGVyLT5kZXYsICI8JXM+IHRpbWVvdXRcbiIsIF9fZnVuY19fKTsKCkNhbiB5 b3UgZ2V0IHJpZCBvZiB0aGlzIDwlcz4vX19mdW5jX18gcGFyYW1ldGVyIGFuZCBqdXN0IHRlbGwg dGhhdCB3ZQpnb3QgYSByZWFkIHRpbWVvdXQ/Cgo+ICsJCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiAr CQl9Cj4gIAo+ICsJCW1kY3RybCA9IHJlYWRsKG1hc3Rlci0+cmVncyArIFNWQ19JM0NfTURBVEFD VFJMKTsKPiAgCQljb3VudCA9IFNWQ19JM0NfTURBVEFDVFJMX1JYQ09VTlQobWRjdHJsKTsKPiAr CQlpZiAob2Zmc2V0ICsgY291bnQgPiBsZW4pIHsKPiArCQkJZGV2X2VycihtYXN0ZXItPmRldiwg Ijwlcz4gcmVjdiBsZW4gdG9vIGxvbmchXG4iLAo+ICsJCQkJX19mdW5jX18pOwo+ICsJCQlyZXR1 cm4gLUVJTlZBTDsKPiArCQl9CgpBbmQgaXMgdGhpcyBzb21ldGhpbmcgdGhlb3JldGljYWwgb3Ig YSByZWFsIGVycm9yIHRoYXQgY2FuIGhhcHBlbj8KCklmIHlvdSB0aGluayB0aGlzIGlzIHJlYWxs eSBuZWVkZWQsIHBsZWFzZSBrZWVwIHRoZSBzYW1lIGRldl9lcnIoKQpmb3JtYXR0aW5nIGFzIGlu IHRoZSBvdGhlciBwbGFjZXMgaW4gdGhpcyBkcml2ZXIuCgo+ICAJCWZvciAoaSA9IDA7IGkgPCBj b3VudDsgaSsrKQo+ICAJCQlpbltvZmZzZXQgKyBpXSA9IHJlYWRsKG1hc3Rlci0+cmVncyArIFNW Q19JM0NfTVJEQVRBQik7Cj4gLQoKUGxlYXNlIGtlZXAgdGhhdCBzcGFjZQoKPiAgCQlvZmZzZXQg Kz0gY291bnQ7Cj4gIAl9Cj4gIAo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4gb2Zmc2V0Owo+ICB9 Cj4gIAo+ICBzdGF0aWMgaW50IHN2Y19pM2NfbWFzdGVyX3dyaXRlKHN0cnVjdCBzdmNfaTNjX21h c3RlciAqbWFzdGVyLAo+IEBAIC05NDksNyArOTU3LDcgQEAgc3RhdGljIGludCBzdmNfaTNjX21h c3Rlcl93cml0ZShzdHJ1Y3Qgc3ZjX2kzY19tYXN0ZXIgKm1hc3RlciwKPiAgc3RhdGljIGludCBz dmNfaTNjX21hc3Rlcl94ZmVyKHN0cnVjdCBzdmNfaTNjX21hc3RlciAqbWFzdGVyLAo+ICAJCQkg ICAgICAgYm9vbCBybncsIHVuc2lnbmVkIGludCB4ZmVyX3R5cGUsIHU4IGFkZHIsCj4gIAkJCSAg ICAgICB1OCAqaW4sIGNvbnN0IHU4ICpvdXQsIHVuc2lnbmVkIGludCB4ZmVyX2xlbiwKPiAtCQkJ ICAgICAgIHVuc2lnbmVkIGludCByZWFkX2xlbiwgYm9vbCBjb250aW51ZWQpCj4gKwkJCSAgICAg ICB1bnNpZ25lZCBpbnQgKnJlYWRfbGVuLCBib29sIGNvbnRpbnVlZCkKPiAgewo+ICAJdTMyIHJl ZzsKPiAgCWludCByZXQ7Cj4gQEAgLTk1OSw3ICs5NjcsNyBAQCBzdGF0aWMgaW50IHN2Y19pM2Nf bWFzdGVyX3hmZXIoc3RydWN0IHN2Y19pM2NfbWFzdGVyICptYXN0ZXIsCj4gIAkgICAgICAgU1ZD X0kzQ19NQ1RSTF9JQklSRVNQX05BQ0sgfAo+ICAJICAgICAgIFNWQ19JM0NfTUNUUkxfRElSKHJu dykgfAo+ICAJICAgICAgIFNWQ19JM0NfTUNUUkxfQUREUihhZGRyKSB8Cj4gLQkgICAgICAgU1ZD X0kzQ19NQ1RSTF9SRFRFUk0ocmVhZF9sZW4pLAo+ICsJICAgICAgIFNWQ19JM0NfTUNUUkxfUkRU RVJNKCpyZWFkX2xlbiksCj4gIAkgICAgICAgbWFzdGVyLT5yZWdzICsgU1ZDX0kzQ19NQ1RSTCk7 Cj4gIAo+ICAJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KG1hc3Rlci0+cmVncyArIFNWQ19JM0Nf TVNUQVRVUywgcmVnLAo+IEBAIC05NzEsMTcgKzk3OSwyNSBAQCBzdGF0aWMgaW50IHN2Y19pM2Nf bWFzdGVyX3hmZXIoc3RydWN0IHN2Y19pM2NfbWFzdGVyICptYXN0ZXIsCj4gIAkJcmV0ID0gc3Zj X2kzY19tYXN0ZXJfcmVhZChtYXN0ZXIsIGluLCB4ZmVyX2xlbik7Cj4gIAllbHNlCj4gIAkJcmV0 ID0gc3ZjX2kzY19tYXN0ZXJfd3JpdGUobWFzdGVyLCBvdXQsIHhmZXJfbGVuKTsKPiAtCWlmIChy ZXQpCj4gKwlpZiAocmV0IDwgMCkKPiAgCQlnb3RvIGVtaXRfc3RvcDsKClNwYWNlPwoKPiArCWlm IChybncpCj4gKwkJKnJlYWRfbGVuID0gcmV0Owo+ICAKPiAgCXJldCA9IHJlYWRsX3BvbGxfdGlt ZW91dChtYXN0ZXItPnJlZ3MgKyBTVkNfSTNDX01TVEFUVVMsIHJlZywKPiAgCQkJCSBTVkNfSTND X01TVEFUVVNfQ09NUExFVEUocmVnKSwgMCwgMTAwMCk7Cj4gIAlpZiAocmV0KQo+ICAJCWdvdG8g ZW1pdF9zdG9wOwoKU3BhY2U/Cgo+ICsJd3JpdGVsKFNWQ19JM0NfTUlOVF9DT01QTEVURSwgbWFz dGVyLT5yZWdzICsgU1ZDX0kzQ19NU1RBVFVTKTsKPiAgCj4gLQlpZiAoIWNvbnRpbnVlZCkKPiAr CWlmICghY29udGludWVkKSB7Cj4gIAkJc3ZjX2kzY19tYXN0ZXJfZW1pdF9zdG9wKG1hc3Rlcik7 Cj4gIAo+ICsJCS8qIFdhaXQgaWRsZSBpZiBzdG9wIGlzIHNlbnQuICovCj4gKwkJcmVhZGxfcG9s bF90aW1lb3V0KG1hc3Rlci0+cmVncyArIFNWQ19JM0NfTVNUQVRVUywgcmVnLAo+ICsJCQkJICAg IVNWQ19JM0NfTVNUQVRVU19TVEFURShyZWcpLCAwLCAxMDAwKTsKClBsZWFzZSB1c2UgX01TVEFU VVNfU1RBVEVfSURMRSgpIGZvciBtb3JlIGNsYXJpdHkuCgpJZiB0aGlzIHdhaXQgbG9vcCBpcyBy ZWFsbHkgbmVlZGVkLCBiZXR0ZXIgYWRkaW5nIGl0IHRvCl9tYXN0ZXJfZW1pdF9zdG9wKCk/IChp biBhbm90aGVyIHBhdGNoKQoKPiArCX0KPiArCj4gIAlyZXR1cm4gMDsKPiAgCj4gIGVtaXRfc3Rv cDoKPiBAQCAtMTAzOSwxMiArMTA1NSwxNSBAQCBzdGF0aWMgdm9pZCBzdmNfaTNjX21hc3Rlcl9z dGFydF94ZmVyX2xvY2tlZChzdHJ1Y3Qgc3ZjX2kzY19tYXN0ZXIgKm1hc3RlcikKPiAgCWlmICgh eGZlcikKPiAgCQlyZXR1cm47Cj4gIAo+ICsJc3ZjX2kzY19tYXN0ZXJfY2xlYXJfbWVycndhcm4o bWFzdGVyKTsKPiArCXN2Y19pM2NfbWFzdGVyX2ZsdXNoX2ZpZm8obWFzdGVyKTsKPiArCj4gIAlm b3IgKGkgPSAwOyBpIDwgeGZlci0+bmNtZHM7IGkrKykgewo+ICAJCXN0cnVjdCBzdmNfaTNjX2Nt ZCAqY21kID0gJnhmZXItPmNtZHNbaV07Cj4gIAo+ICAJCXJldCA9IHN2Y19pM2NfbWFzdGVyX3hm ZXIobWFzdGVyLCBjbWQtPnJudywgeGZlci0+dHlwZSwKPiAgCQkJCQkgIGNtZC0+YWRkciwgY21k LT5pbiwgY21kLT5vdXQsCj4gLQkJCQkJICBjbWQtPmxlbiwgY21kLT5yZWFkX2xlbiwKPiArCQkJ CQkgIGNtZC0+bGVuLCAmY21kLT5yZWFkX2xlbiwKPiAgCQkJCQkgIGNtZC0+Y29udGludWVkKTsK PiAgCQlpZiAocmV0KQo+ICAJCQlicmVhazsKPiBAQCAtMTE3Myw2ICsxMTkyLDkgQEAgc3RhdGlj IGludCBzdmNfaTNjX21hc3Rlcl9zZW5kX2RpcmVjdF9jY2NfY21kKHN0cnVjdCBzdmNfaTNjX21h c3RlciAqbWFzdGVyLAo+ICAJaWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJnhmZXIt PmNvbXAsIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpKQo+ICAJCXN2Y19pM2NfbWFzdGVyX2RlcXVl dWVfeGZlcihtYXN0ZXIsIHhmZXIpOwo+ICAKPiArCWlmIChjbWQtPnJlYWRfbGVuICE9IHhmZXJf bGVuKQo+ICsJCWNjYy0+ZGVzdHNbMF0ucGF5bG9hZC5sZW4gPSBjbWQtPnJlYWRfbGVuOwo+ICsK PiAgCXJldCA9IHhmZXItPnJldDsKPiAgCXN2Y19pM2NfbWFzdGVyX2ZyZWVfeGZlcih4ZmVyKTsK PiAgCgpUaGFua3MsCk1pcXXDqGwKCi0tIApsaW51eC1pM2MgbWFpbGluZyBsaXN0CmxpbnV4LWkz Y0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtaTNjCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CCE4BC4338F for ; Mon, 16 Aug 2021 07:15:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A7D2661A89 for ; Mon, 16 Aug 2021 07:15:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234107AbhHPHPz convert rfc822-to-8bit (ORCPT ); Mon, 16 Aug 2021 03:15:55 -0400 Received: from relay3-d.mail.gandi.net ([217.70.183.195]:57807 "EHLO relay3-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233723AbhHPHPy (ORCPT ); Mon, 16 Aug 2021 03:15:54 -0400 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 67F116000B; Mon, 16 Aug 2021 07:15:21 +0000 (UTC) Date: Mon, 16 Aug 2021 09:15:20 +0200 From: Miquel Raynal To: Clark Wang Cc: conor.culhane@silvaco.com, alexandre.belloni@bootlin.com, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, linux-imx@nxp.com Subject: Re: [PATCH V4 4/8] i3c: master: svc: add support for slave to stop returning data Message-ID: <20210816091520.349dac41@xps13> In-Reply-To: <20210809063645.2289988-5-xiaoning.wang@nxp.com> References: <20210809063645.2289988-1-xiaoning.wang@nxp.com> <20210809063645.2289988-5-xiaoning.wang@nxp.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Clark, Just a few nitpicks. Clark Wang wrote on Mon, 9 Aug 2021 14:36:41 +0800: > When i3c controller reads data from slave device, slave device can stop > returning data with an ACK after any byte. > Add this support for svc i3c controller. Otherwise, it will go TIMEOUT "it will timeout when the slave..." > error path when the slave device ends the read operation early. > > Signed-off-by: Clark Wang > Reviewed-by: Jun Li > --- > V4 changes: > - Only use COMPLETE flag in the read function. > - Add a reset before each transfer. > V2/V3: No change. > --- > drivers/i3c/master/svc-i3c-master.c | 56 ++++++++++++++++++++--------- > 1 file changed, 39 insertions(+), 17 deletions(-) > > diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c > index 4e69c691253d..e767f307db2d 100644 > --- a/drivers/i3c/master/svc-i3c-master.c > +++ b/drivers/i3c/master/svc-i3c-master.c > @@ -896,27 +896,35 @@ static int svc_i3c_master_do_daa(struct i3c_master_controller *m) > static int svc_i3c_master_read(struct svc_i3c_master *master, > u8 *in, unsigned int len) > { > - int offset = 0, i, ret; > - u32 mdctrl; > + int offset = 0, i; > + u32 mdctrl, mstatus; > + bool completed = false; > + unsigned int count; > + unsigned long start = jiffies; > > - while (offset < len) { > - unsigned int count; > + while (!completed) { > + mstatus = readl(master->regs + SVC_I3C_MSTATUS); > + if (SVC_I3C_MSTATUS_COMPLETE(mstatus) != 0) > + completed = true; > > - ret = readl_poll_timeout(master->regs + SVC_I3C_MDATACTRL, > - mdctrl, > - !(mdctrl & SVC_I3C_MDATACTRL_RXEMPTY), > - 0, 1000); > - if (ret) > - return ret; > + if (time_after(jiffies, start + msecs_to_jiffies(1000))) { > + dev_dbg(master->dev, "<%s> timeout\n", __func__); Can you get rid of this <%s>/__func__ parameter and just tell that we got a read timeout? > + return -ETIMEDOUT; > + } > > + mdctrl = readl(master->regs + SVC_I3C_MDATACTRL); > count = SVC_I3C_MDATACTRL_RXCOUNT(mdctrl); > + if (offset + count > len) { > + dev_err(master->dev, "<%s> recv len too long!\n", > + __func__); > + return -EINVAL; > + } And is this something theoretical or a real error that can happen? If you think this is really needed, please keep the same dev_err() formatting as in the other places in this driver. > for (i = 0; i < count; i++) > in[offset + i] = readl(master->regs + SVC_I3C_MRDATAB); > - Please keep that space > offset += count; > } > > - return 0; > + return offset; > } > > static int svc_i3c_master_write(struct svc_i3c_master *master, > @@ -949,7 +957,7 @@ static int svc_i3c_master_write(struct svc_i3c_master *master, > static int svc_i3c_master_xfer(struct svc_i3c_master *master, > bool rnw, unsigned int xfer_type, u8 addr, > u8 *in, const u8 *out, unsigned int xfer_len, > - unsigned int read_len, bool continued) > + unsigned int *read_len, bool continued) > { > u32 reg; > int ret; > @@ -959,7 +967,7 @@ static int svc_i3c_master_xfer(struct svc_i3c_master *master, > SVC_I3C_MCTRL_IBIRESP_NACK | > SVC_I3C_MCTRL_DIR(rnw) | > SVC_I3C_MCTRL_ADDR(addr) | > - SVC_I3C_MCTRL_RDTERM(read_len), > + SVC_I3C_MCTRL_RDTERM(*read_len), > master->regs + SVC_I3C_MCTRL); > > ret = readl_poll_timeout(master->regs + SVC_I3C_MSTATUS, reg, > @@ -971,17 +979,25 @@ static int svc_i3c_master_xfer(struct svc_i3c_master *master, > ret = svc_i3c_master_read(master, in, xfer_len); > else > ret = svc_i3c_master_write(master, out, xfer_len); > - if (ret) > + if (ret < 0) > goto emit_stop; Space? > + if (rnw) > + *read_len = ret; > > ret = readl_poll_timeout(master->regs + SVC_I3C_MSTATUS, reg, > SVC_I3C_MSTATUS_COMPLETE(reg), 0, 1000); > if (ret) > goto emit_stop; Space? > + writel(SVC_I3C_MINT_COMPLETE, master->regs + SVC_I3C_MSTATUS); > > - if (!continued) > + if (!continued) { > svc_i3c_master_emit_stop(master); > > + /* Wait idle if stop is sent. */ > + readl_poll_timeout(master->regs + SVC_I3C_MSTATUS, reg, > + !SVC_I3C_MSTATUS_STATE(reg), 0, 1000); Please use _MSTATUS_STATE_IDLE() for more clarity. If this wait loop is really needed, better adding it to _master_emit_stop()? (in another patch) > + } > + > return 0; > > emit_stop: > @@ -1039,12 +1055,15 @@ static void svc_i3c_master_start_xfer_locked(struct svc_i3c_master *master) > if (!xfer) > return; > > + svc_i3c_master_clear_merrwarn(master); > + svc_i3c_master_flush_fifo(master); > + > for (i = 0; i < xfer->ncmds; i++) { > struct svc_i3c_cmd *cmd = &xfer->cmds[i]; > > ret = svc_i3c_master_xfer(master, cmd->rnw, xfer->type, > cmd->addr, cmd->in, cmd->out, > - cmd->len, cmd->read_len, > + cmd->len, &cmd->read_len, > cmd->continued); > if (ret) > break; > @@ -1173,6 +1192,9 @@ static int svc_i3c_master_send_direct_ccc_cmd(struct svc_i3c_master *master, > if (!wait_for_completion_timeout(&xfer->comp, msecs_to_jiffies(1000))) > svc_i3c_master_dequeue_xfer(master, xfer); > > + if (cmd->read_len != xfer_len) > + ccc->dests[0].payload.len = cmd->read_len; > + > ret = xfer->ret; > svc_i3c_master_free_xfer(xfer); > Thanks, Miquèl