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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 5B31BC00528 for ; Wed, 2 Aug 2023 11:01:28 +0000 (UTC) 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:In-Reply-To:MIME-Version:References: 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=oKGnMvBrxDFshfRYo1oCsYSsgLsbURIEsDE5PFCTtcQ=; b=wubUrmy//5yPjH 4sLatM6+fEOcdqJTaKsOxEnDjfabqOijqgPJFSO/Kd/y2xpI9ZSC7jHY0iD0Xf27AGtBhqj0sqXR2 ysVx9RZu+vWJzuJQ49HcST+7hd3ctzHMb/TgBV1lqsQJW5HAhgc394E377xcQXneg/smONWHDPfI4 HHOxs+hEzm/Tx+SEdNbYhviKzDmy+qb9clgHzvTwn1tZBeuRL1P+NihMOFdBmidmAggWYK1NFEsyB dQVct11Xe2Ywi44r5Op65CDdu+JHZaEG2CKDhcBw3o6YjkXw90xHfmwfAA2X4CxNUy+SN7tx+WKl8 g2ADpKQ9AYHpLxDF4Kow==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qR9bb-004izS-08; Wed, 02 Aug 2023 11:01:27 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qR9bX-004ix2-2Q for ath11k@lists.infradead.org; Wed, 02 Aug 2023 11:01:25 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 3EF93618CF for ; Wed, 2 Aug 2023 11:01:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DCD74C433C7; Wed, 2 Aug 2023 11:01:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1690974082; bh=XKuLTtq7vHM7OrcnA+bCh8OFj1zxjB+o9QgZMTt1OJ0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ApfwCvXImiiCS2oCn28D8X7MQR/dQNtUoV85WTzzIhi3hq4SiAKxpS2gZdXJqhvX+ TCJkcO4/BRpyHzFNAWo+D5fLWA4lNmy4+ce1a8rh1qb/OzLmJaK3zovZBFW88cQa5b Q79fg1jtM4mBgserT4VOXFlbiDiRYDl1R2tdGxV38Er/3DtMCdhSxUSeupJjMejuSw kp8Z7IwcMy8E7aPyvtViEYjdImL6amh7V8n3qDlDAhdO0boGb4ypp1Kf3lpuZVoJIB tIhDkm5xyqi0WlmDZNvsLIoyqqM1B+7MK0SJO4mk6UsDP5L4IwOHxyEUzNXvMw1Otj FvsAg5DUERgAA== Date: Wed, 2 Aug 2023 16:31:10 +0530 From: Manivannan Sadhasivam To: Kalle Valo Cc: mhi@lists.linux.dev, ath11k@lists.infradead.org, linux-wireless@vger.kernel.org Subject: Re: [PATCH v4 1/3] bus: mhi: host: allow MHI client drivers to provide the firmware via a pointer Message-ID: <20230802110110.GD57374@thinkpad> References: <20230727100430.3603551-1-kvalo@kernel.org> <20230727100430.3603551-2-kvalo@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20230727100430.3603551-2-kvalo@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230802_040123_875078_900FD220 X-CRM114-Status: GOOD ( 30.93 ) X-BeenThere: ath11k@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: "ath11k" Errors-To: ath11k-bounces+ath11k=archiver.kernel.org@lists.infradead.org T24gVGh1LCBKdWwgMjcsIDIwMjMgYXQgMDE6MDQ6MjhQTSArMDMwMCwgS2FsbGUgVmFsbyB3cm90 ZToKPiBGcm9tOiBLYWxsZSBWYWxvIDxxdWljX2t2YWxvQHF1aWNpbmMuY29tPgo+IAo+IEN1cnJl bnRseSBNSEkgbG9hZHMgdGhlIGZpcm13YXJlIGltYWdlIGZyb20gdGhlIHBhdGggcHJvdmlkZWQg YnkgY2xpZW50Cj4gZGV2aWNlcy4gYXRoMTFrIG5lZWRzIHRvIHN1cHBvcnQgZmlybXdhcmUgaW1h Z2UgZW1iZWRkZWQgYWxvbmcgd2l0aCBtZXRhIGRhdGEKPiAobmFtZWQgYXMgZmlybXdhcmUtMi5i aW4pLiBTbyBhbGxvdyB0aGUgY2xpZW50IGRyaXZlciB0byByZXF1ZXN0IHRoZSBmaXJtd2FyZQo+ IGZpbGUgZnJvbSB1c2VyIHNwYWNlIG9uIGl0J3Mgb3duIGFuZCBwcm92aWRlIHRoZSBmaXJtd2Fy ZSBpbWFnZSBkYXRhIGFuZCBzaXplCj4gdG8gTUhJIHZpYSBhIHBvaW50ZXIgc3RydWN0IG1oaV9j b250cm9sbGVyOjpmd19kYXRhLgo+IAo+IFRoaXMgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSwgaWYg ZndfZGF0YSBpcyBOVUxMIE1ISSBsb2FkIHRoZSBmaXJtd2FyZSB1c2luZyB0aGUKPiBuYW1lIGZy b20gc3RydWN0IG1oaV9jb250cm9sbGVyOjpmd19pbWFnZSBzdHJpbmcgYXMgYmVmb3JlLgo+IAo+ IFRlc3RlZCB3aXRoIGF0aDExayBhbmQgV0NONjg1NSBodzIuMC4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBLYWxsZSBWYWxvIDxxdWljX2t2YWxvQHF1aWNpbmMuY29tPgoKUmV2aWV3ZWQtYnk6IE1hbml2 YW5uYW4gU2FkaGFzaXZhbSA8bWFuaUBrZXJuZWwub3JnPgoKSSBjYW4gYXBwbHkgdGhpcyBmb3Ig Ni42IGFuZCB0aGVuIHlvdSBjYW4gbWVyZ2UgYXRoMTFrIGNoYW5nZXMgZm9yIDYuNy4gQnV0IGlm CnlvdSB3YW50IGFsbCBvZiB0aGVzZSBwYXRjaGVzIHRvIGJlIGFwcGxpZWQgZm9yIDYuNiwgdGhl biB3ZSBjYW4gZ28gd2l0aCBhbgppbW11dGFibGUgYnJhbmNoLgoKTGV0IG1lIGtub3chCgotIE1h bmkKCj4gLS0tCj4gIGRyaXZlcnMvYnVzL21oaS9ob3N0L2Jvb3QuYyB8IDM0ICsrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0KPiAgaW5jbHVkZS9saW51eC9taGkuaCAgICAgICAgIHwg IDYgKysrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlv bnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9idXMvbWhpL2hvc3QvYm9vdC5jIGIvZHJp dmVycy9idXMvbWhpL2hvc3QvYm9vdC5jCj4gaW5kZXggZDJhMTliMDdjY2I4Li5lZGMwZWM1YTA5 MzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9idXMvbWhpL2hvc3QvYm9vdC5jCj4gKysrIGIvZHJp dmVycy9idXMvbWhpL2hvc3QvYm9vdC5jCj4gQEAgLTM2NSwxMiArMzY1LDEwIEBAIGludCBtaGlf YWxsb2NfYmhpZV90YWJsZShzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCwKPiAgfQo+ ICAKPiAgc3RhdGljIHZvaWQgbWhpX2Zpcm13YXJlX2NvcHkoc3RydWN0IG1oaV9jb250cm9sbGVy ICptaGlfY250cmwsCj4gLQkJCSAgICAgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUs Cj4gKwkJCSAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCByZW1haW5kZXIsCj4gIAkJCSAgICAg IHN0cnVjdCBpbWFnZV9pbmZvICppbWdfaW5mbykKPiAgewo+IC0Jc2l6ZV90IHJlbWFpbmRlciA9 IGZpcm13YXJlLT5zaXplOwo+ICAJc2l6ZV90IHRvX2NweTsKPiAtCWNvbnN0IHU4ICpidWYgPSBm aXJtd2FyZS0+ZGF0YTsKPiAgCXN0cnVjdCBtaGlfYnVmICptaGlfYnVmID0gaW1nX2luZm8tPm1o aV9idWY7Cj4gIAlzdHJ1Y3QgYmhpX3ZlY19lbnRyeSAqYmhpX3ZlYyA9IGltZ19pbmZvLT5iaGlf dmVjOwo+ICAKPiBAQCAtMzkzLDkgKzM5MSwxMCBAQCB2b2lkIG1oaV9md19sb2FkX2hhbmRsZXIo c3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwpCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYg PSAmbWhpX2NudHJsLT5taGlfZGV2LT5kZXY7Cj4gIAllbnVtIG1oaV9wbV9zdGF0ZSBuZXdfc3Rh dGU7Cj4gIAljb25zdCBjaGFyICpmd19uYW1lOwo+ICsJY29uc3QgdTggKmZ3X2RhdGE7Cj4gIAl2 b2lkICpidWY7Cj4gIAlkbWFfYWRkcl90IGRtYV9hZGRyOwo+IC0Jc2l6ZV90IHNpemU7Cj4gKwlz aXplX3Qgc2l6ZSwgZndfc3o7Cj4gIAlpbnQgaSwgcmV0Owo+ICAKPiAgCWlmIChNSElfUE1fSU5f RVJST1JfU1RBVEUobWhpX2NudHJsLT5wbV9zdGF0ZSkpIHsKPiBAQCAtNDI1LDYgKzQyNCwyMCBA QCB2b2lkIG1oaV9md19sb2FkX2hhbmRsZXIoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250 cmwpCj4gIAlmd19uYW1lID0gKG1oaV9jbnRybC0+ZWUgPT0gTUhJX0VFX0VETCkgPwo+ICAJCW1o aV9jbnRybC0+ZWRsX2ltYWdlIDogbWhpX2NudHJsLT5md19pbWFnZTsKPiAgCj4gKwkvKiBjaGVj ayBpZiB0aGUgZHJpdmVyIGhhcyBhbHJlYWR5IHByb3ZpZGVkIHRoZSBmaXJtd2FyZSBkYXRhICov Cj4gKwlpZiAoIWZ3X25hbWUgJiYgbWhpX2NudHJsLT5mYmNfZG93bmxvYWQgJiYKPiArCSAgICBt aGlfY250cmwtPmZ3X2RhdGEgJiYgbWhpX2NudHJsLT5md19zeikgewo+ICsJCWlmICghbWhpX2Nu dHJsLT5zYmxfc2l6ZSkgewo+ICsJCQlkZXZfZXJyKGRldiwgImZ3X2RhdGEgcHJvdmlkZWQgYnV0 IG5vIHNibF9zaXplXG4iKTsKPiArCQkJZ290byBlcnJvcl9md19sb2FkOwo+ICsJCX0KPiArCj4g KwkJc2l6ZSA9IG1oaV9jbnRybC0+c2JsX3NpemU7Cj4gKwkJZndfZGF0YSA9IG1oaV9jbnRybC0+ ZndfZGF0YTsKPiArCQlmd19zeiA9IG1oaV9jbnRybC0+Zndfc3o7Cj4gKwkJZ290byBza2lwX3Jl cV9mdzsKPiArCX0KPiArCj4gIAlpZiAoIWZ3X25hbWUgfHwgKG1oaV9jbnRybC0+ZmJjX2Rvd25s b2FkICYmICghbWhpX2NudHJsLT5zYmxfc2l6ZSB8fAo+ICAJCQkJCQkgICAgICFtaGlfY250cmwt PnNlZ19sZW4pKSkgewo+ICAJCWRldl9lcnIoZGV2LAo+IEBAIC00NDQsNiArNDU3LDEwIEBAIHZv aWQgbWhpX2Z3X2xvYWRfaGFuZGxlcihzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCkK PiAgCWlmIChzaXplID4gZmlybXdhcmUtPnNpemUpCj4gIAkJc2l6ZSA9IGZpcm13YXJlLT5zaXpl Owo+ICAKPiArCWZ3X2RhdGEgPSBmaXJtd2FyZS0+ZGF0YTsKPiArCWZ3X3N6ID0gZmlybXdhcmUt PnNpemU7Cj4gKwo+ICtza2lwX3JlcV9mdzoKPiAgCWJ1ZiA9IGRtYV9hbGxvY19jb2hlcmVudCht aGlfY250cmwtPmNudHJsX2Rldiwgc2l6ZSwgJmRtYV9hZGRyLAo+ICAJCQkJIEdGUF9LRVJORUwp Owo+ICAJaWYgKCFidWYpIHsKPiBAQCAtNDUyLDcgKzQ2OSw3IEBAIHZvaWQgbWhpX2Z3X2xvYWRf aGFuZGxlcihzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCkKPiAgCX0KPiAgCj4gIAkv KiBEb3dubG9hZCBpbWFnZSB1c2luZyBCSEkgKi8KPiAtCW1lbWNweShidWYsIGZpcm13YXJlLT5k YXRhLCBzaXplKTsKPiArCW1lbWNweShidWYsIGZ3X2RhdGEsIHNpemUpOwo+ICAJcmV0ID0gbWhp X2Z3X2xvYWRfYmhpKG1oaV9jbnRybCwgZG1hX2FkZHIsIHNpemUpOwo+ICAJZG1hX2ZyZWVfY29o ZXJlbnQobWhpX2NudHJsLT5jbnRybF9kZXYsIHNpemUsIGJ1ZiwgZG1hX2FkZHIpOwo+ICAKPiBA QCAtNDY0LDcgKzQ4MSw3IEBAIHZvaWQgbWhpX2Z3X2xvYWRfaGFuZGxlcihzdHJ1Y3QgbWhpX2Nv bnRyb2xsZXIgKm1oaV9jbnRybCkKPiAgCX0KPiAgCj4gIAkvKiBXYWl0IGZvciByZWFkeSBzaW5j ZSBFREwgaW1hZ2Ugd2FzIGxvYWRlZCAqLwo+IC0JaWYgKGZ3X25hbWUgPT0gbWhpX2NudHJsLT5l ZGxfaW1hZ2UpIHsKPiArCWlmIChmd19uYW1lICYmIGZ3X25hbWUgPT0gbWhpX2NudHJsLT5lZGxf aW1hZ2UpIHsKPiAgCQlyZWxlYXNlX2Zpcm13YXJlKGZpcm13YXJlKTsKPiAgCQlnb3RvIGZ3X2xv YWRfcmVhZHlfc3RhdGU7Cj4gIAl9Cj4gQEAgLTQ3OCwxNSArNDk1LDE0IEBAIHZvaWQgbWhpX2Z3 X2xvYWRfaGFuZGxlcihzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCkKPiAgCSAqIGRl dmljZSB0cmFuc2l0aW9uaW5nIGludG8gTUhJIFJFQURZIHN0YXRlCj4gIAkgKi8KPiAgCWlmICht aGlfY250cmwtPmZiY19kb3dubG9hZCkgewo+IC0JCXJldCA9IG1oaV9hbGxvY19iaGllX3RhYmxl KG1oaV9jbnRybCwgJm1oaV9jbnRybC0+ZmJjX2ltYWdlLAo+IC0JCQkJCSAgIGZpcm13YXJlLT5z aXplKTsKPiArCQlyZXQgPSBtaGlfYWxsb2NfYmhpZV90YWJsZShtaGlfY250cmwsICZtaGlfY250 cmwtPmZiY19pbWFnZSwgZndfc3opOwo+ICAJCWlmIChyZXQpIHsKPiAgCQkJcmVsZWFzZV9maXJt d2FyZShmaXJtd2FyZSk7Cj4gIAkJCWdvdG8gZXJyb3JfZndfbG9hZDsKPiAgCQl9Cj4gIAo+ICAJ CS8qIExvYWQgdGhlIGZpcm13YXJlIGludG8gQkhJRSB2ZWMgdGFibGUgKi8KPiAtCQltaGlfZmly bXdhcmVfY29weShtaGlfY250cmwsIGZpcm13YXJlLCBtaGlfY250cmwtPmZiY19pbWFnZSk7Cj4g KwkJbWhpX2Zpcm13YXJlX2NvcHkobWhpX2NudHJsLCBmd19kYXRhLCBmd19zeiwgbWhpX2NudHJs LT5mYmNfaW1hZ2UpOwo+ICAJfQo+ICAKPiAgCXJlbGVhc2VfZmlybXdhcmUoZmlybXdhcmUpOwo+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21oaS5oIGIvaW5jbHVkZS9saW51eC9taGkuaAo+ IGluZGV4IGY2ZGU0YjZlY2ZjNy4uMDM5OTQzZWM0ZDRlIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUv bGludXgvbWhpLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L21oaS5oCj4gQEAgLTI5OSw2ICsyOTks MTAgQEAgc3RydWN0IG1oaV9jb250cm9sbGVyX2NvbmZpZyB7Cj4gICAqIEBpb3ZhX3N0YXJ0OiBJ T01NVSBzdGFydGluZyBhZGRyZXNzIGZvciBkYXRhIChyZXF1aXJlZCkKPiAgICogQGlvdmFfc3Rv cDogSU9NTVUgc3RvcCBhZGRyZXNzIGZvciBkYXRhIChyZXF1aXJlZCkKPiAgICogQGZ3X2ltYWdl OiBGaXJtd2FyZSBpbWFnZSBuYW1lIGZvciBub3JtYWwgYm9vdGluZyAob3B0aW9uYWwpCj4gKyAq IEBmd19kYXRhOiBGaXJtd2FyZSBpbWFnZSBkYXRhIGNvbnRlbnQgZm9yIG5vcm1hbCBib290aW5n LCB1c2VkIG9ubHkKPiArICogICAgICAgICAgIGlmIGZ3X2ltYWdlIGlzIE5VTEwgYW5kIGZiY19k b3dubG9hZCBpcyB0cnVlIChvcHRpb25hbCkKPiArICogQGZ3X3N6OiBGaXJtd2FyZSBpbWFnZSBk YXRhIHNpemUgZm9yIG5vcm1hbCBib290aW5nLCB1c2VkIG9ubHkgaWYgZndfaW1hZ2UKPiArICog ICAgICAgICBpcyBOVUxMIGFuZCBmYmNfZG93bmxvYWQgaXMgdHJ1ZSAob3B0aW9uYWwpCj4gICAq IEBlZGxfaW1hZ2U6IEZpcm13YXJlIGltYWdlIG5hbWUgZm9yIGVtZXJnZW5jeSBkb3dubG9hZCBt b2RlIChvcHRpb25hbCkKPiAgICogQHJkZG1fc2l6ZTogUkFNIGR1bXAgc2l6ZSB0aGF0IGhvc3Qg c2hvdWxkIGFsbG9jYXRlIGZvciBkZWJ1Z2dpbmcgcHVycG9zZQo+ICAgKiBAc2JsX3NpemU6IFNC TCBpbWFnZSBzaXplIGRvd25sb2FkZWQgdGhyb3VnaCBCSEllIChvcHRpb25hbCkKPiBAQCAtMzg0 LDYgKzM4OCw4IEBAIHN0cnVjdCBtaGlfY29udHJvbGxlciB7Cj4gIAlkbWFfYWRkcl90IGlvdmFf c3RhcnQ7Cj4gIAlkbWFfYWRkcl90IGlvdmFfc3RvcDsKPiAgCWNvbnN0IGNoYXIgKmZ3X2ltYWdl Owo+ICsJY29uc3QgdTggKmZ3X2RhdGE7Cj4gKwlzaXplX3QgZndfc3o7Cj4gIAljb25zdCBjaGFy ICplZGxfaW1hZ2U7Cj4gIAlzaXplX3QgcmRkbV9zaXplOwo+ICAJc2l6ZV90IHNibF9zaXplOwo+ IC0tIAo+IDIuMzkuMgo+IAo+IAoKLS0gCuCuruCuo+Cuv+CuteCuo+CvjeCuo+CuqeCvjSDgrprg rqTgrr7grprgrr/grrXgrq7gr40KCi0tIAphdGgxMWsgbWFpbGluZyBsaXN0CmF0aDExa0BsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vYXRoMTFrCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14E876FAB for ; Wed, 2 Aug 2023 11:01:22 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DCD74C433C7; Wed, 2 Aug 2023 11:01:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1690974082; bh=XKuLTtq7vHM7OrcnA+bCh8OFj1zxjB+o9QgZMTt1OJ0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ApfwCvXImiiCS2oCn28D8X7MQR/dQNtUoV85WTzzIhi3hq4SiAKxpS2gZdXJqhvX+ TCJkcO4/BRpyHzFNAWo+D5fLWA4lNmy4+ce1a8rh1qb/OzLmJaK3zovZBFW88cQa5b Q79fg1jtM4mBgserT4VOXFlbiDiRYDl1R2tdGxV38Er/3DtMCdhSxUSeupJjMejuSw kp8Z7IwcMy8E7aPyvtViEYjdImL6amh7V8n3qDlDAhdO0boGb4ypp1Kf3lpuZVoJIB tIhDkm5xyqi0WlmDZNvsLIoyqqM1B+7MK0SJO4mk6UsDP5L4IwOHxyEUzNXvMw1Otj FvsAg5DUERgAA== Date: Wed, 2 Aug 2023 16:31:10 +0530 From: Manivannan Sadhasivam To: Kalle Valo Cc: mhi@lists.linux.dev, ath11k@lists.infradead.org, linux-wireless@vger.kernel.org Subject: Re: [PATCH v4 1/3] bus: mhi: host: allow MHI client drivers to provide the firmware via a pointer Message-ID: <20230802110110.GD57374@thinkpad> References: <20230727100430.3603551-1-kvalo@kernel.org> <20230727100430.3603551-2-kvalo@kernel.org> Precedence: bulk X-Mailing-List: mhi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20230727100430.3603551-2-kvalo@kernel.org> On Thu, Jul 27, 2023 at 01:04:28PM +0300, Kalle Valo wrote: > From: Kalle Valo > > Currently MHI loads the firmware image from the path provided by client > devices. ath11k needs to support firmware image embedded along with meta data > (named as firmware-2.bin). So allow the client driver to request the firmware > file from user space on it's own and provide the firmware image data and size > to MHI via a pointer struct mhi_controller::fw_data. > > This is an optional feature, if fw_data is NULL MHI load the firmware using the > name from struct mhi_controller::fw_image string as before. > > Tested with ath11k and WCN6855 hw2.0. > > Signed-off-by: Kalle Valo Reviewed-by: Manivannan Sadhasivam I can apply this for 6.6 and then you can merge ath11k changes for 6.7. But if you want all of these patches to be applied for 6.6, then we can go with an immutable branch. Let me know! - Mani > --- > drivers/bus/mhi/host/boot.c | 34 +++++++++++++++++++++++++--------- > include/linux/mhi.h | 6 ++++++ > 2 files changed, 31 insertions(+), 9 deletions(-) > > diff --git a/drivers/bus/mhi/host/boot.c b/drivers/bus/mhi/host/boot.c > index d2a19b07ccb8..edc0ec5a0933 100644 > --- a/drivers/bus/mhi/host/boot.c > +++ b/drivers/bus/mhi/host/boot.c > @@ -365,12 +365,10 @@ int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl, > } > > static void mhi_firmware_copy(struct mhi_controller *mhi_cntrl, > - const struct firmware *firmware, > + const u8 *buf, size_t remainder, > struct image_info *img_info) > { > - size_t remainder = firmware->size; > size_t to_cpy; > - const u8 *buf = firmware->data; > struct mhi_buf *mhi_buf = img_info->mhi_buf; > struct bhi_vec_entry *bhi_vec = img_info->bhi_vec; > > @@ -393,9 +391,10 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) > struct device *dev = &mhi_cntrl->mhi_dev->dev; > enum mhi_pm_state new_state; > const char *fw_name; > + const u8 *fw_data; > void *buf; > dma_addr_t dma_addr; > - size_t size; > + size_t size, fw_sz; > int i, ret; > > if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) { > @@ -425,6 +424,20 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) > fw_name = (mhi_cntrl->ee == MHI_EE_EDL) ? > mhi_cntrl->edl_image : mhi_cntrl->fw_image; > > + /* check if the driver has already provided the firmware data */ > + if (!fw_name && mhi_cntrl->fbc_download && > + mhi_cntrl->fw_data && mhi_cntrl->fw_sz) { > + if (!mhi_cntrl->sbl_size) { > + dev_err(dev, "fw_data provided but no sbl_size\n"); > + goto error_fw_load; > + } > + > + size = mhi_cntrl->sbl_size; > + fw_data = mhi_cntrl->fw_data; > + fw_sz = mhi_cntrl->fw_sz; > + goto skip_req_fw; > + } > + > if (!fw_name || (mhi_cntrl->fbc_download && (!mhi_cntrl->sbl_size || > !mhi_cntrl->seg_len))) { > dev_err(dev, > @@ -444,6 +457,10 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) > if (size > firmware->size) > size = firmware->size; > > + fw_data = firmware->data; > + fw_sz = firmware->size; > + > +skip_req_fw: > buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, &dma_addr, > GFP_KERNEL); > if (!buf) { > @@ -452,7 +469,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) > } > > /* Download image using BHI */ > - memcpy(buf, firmware->data, size); > + memcpy(buf, fw_data, size); > ret = mhi_fw_load_bhi(mhi_cntrl, dma_addr, size); > dma_free_coherent(mhi_cntrl->cntrl_dev, size, buf, dma_addr); > > @@ -464,7 +481,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) > } > > /* Wait for ready since EDL image was loaded */ > - if (fw_name == mhi_cntrl->edl_image) { > + if (fw_name && fw_name == mhi_cntrl->edl_image) { > release_firmware(firmware); > goto fw_load_ready_state; > } > @@ -478,15 +495,14 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) > * device transitioning into MHI READY state > */ > if (mhi_cntrl->fbc_download) { > - ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, > - firmware->size); > + ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, fw_sz); > if (ret) { > release_firmware(firmware); > goto error_fw_load; > } > > /* Load the firmware into BHIE vec table */ > - mhi_firmware_copy(mhi_cntrl, firmware, mhi_cntrl->fbc_image); > + mhi_firmware_copy(mhi_cntrl, fw_data, fw_sz, mhi_cntrl->fbc_image); > } > > release_firmware(firmware); > diff --git a/include/linux/mhi.h b/include/linux/mhi.h > index f6de4b6ecfc7..039943ec4d4e 100644 > --- a/include/linux/mhi.h > +++ b/include/linux/mhi.h > @@ -299,6 +299,10 @@ struct mhi_controller_config { > * @iova_start: IOMMU starting address for data (required) > * @iova_stop: IOMMU stop address for data (required) > * @fw_image: Firmware image name for normal booting (optional) > + * @fw_data: Firmware image data content for normal booting, used only > + * if fw_image is NULL and fbc_download is true (optional) > + * @fw_sz: Firmware image data size for normal booting, used only if fw_image > + * is NULL and fbc_download is true (optional) > * @edl_image: Firmware image name for emergency download mode (optional) > * @rddm_size: RAM dump size that host should allocate for debugging purpose > * @sbl_size: SBL image size downloaded through BHIe (optional) > @@ -384,6 +388,8 @@ struct mhi_controller { > dma_addr_t iova_start; > dma_addr_t iova_stop; > const char *fw_image; > + const u8 *fw_data; > + size_t fw_sz; > const char *edl_image; > size_t rddm_size; > size_t sbl_size; > -- > 2.39.2 > > -- மணிவண்ணன் சதாசிவம்