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=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable 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 D9376C4338F for ; Mon, 16 Aug 2021 03:39:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B5A8361884 for ; Mon, 16 Aug 2021 03:39:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232746AbhHPDjH (ORCPT ); Sun, 15 Aug 2021 23:39:07 -0400 Received: from mailgw02.mediatek.com ([1.203.163.81]:15537 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S229816AbhHPDik (ORCPT ); Sun, 15 Aug 2021 23:38:40 -0400 X-UUID: e4712aae6dc341d480fe8057d6fc19f2-20210816 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=BniR1vT/ITzPIV/dl+gZPyHdSRm/k7l4QdTEiMfemhc=; b=vFocEYNogtTxR6BCyPqAx8Hhupbra+n6zya/5UbskyYTCoWetUOsGPX9R5xDlLl9mQIx3XBfuwHUojY5PEKmYsPwFkykTpv+2p91t92rInxdkgBSGQZDpdgAa6mKuw9MNf1UPB/y0dsNT6RXx2zeEY8PbcCBRGXaewSZOACnfdM=; X-UUID: e4712aae6dc341d480fe8057d6fc19f2-20210816 Received: from mtkcas35.mediatek.inc [(172.27.4.253)] by mailgw02.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 645195723; Mon, 16 Aug 2021 11:37:59 +0800 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS32N2.mediatek.inc (172.27.4.72) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 16 Aug 2021 11:37:47 +0800 Received: from mhfsdcap04 (10.17.3.154) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 16 Aug 2021 11:37:46 +0800 Message-ID: <8ec92b60f97b7e6516a0ffd32328f428d233fa93.camel@mediatek.com> Subject: Re: [PATCH v6 5/9] mtk-mdp: make mdp driver to be loadable by platform_device_register*() From: houlong wei To: Eizan Miyamoto , "linux-kernel@vger.kernel.org" CC: "wenst@chromium.org" , "Yong Wu =?UTF-8?Q?=28=E5=90=B4=E5=8B=87=29?=" , "enric.balletbo@collabora.com" , "devicetree@vger.kernel.org" , "chunkuang.hu@kernel.org" , "Andrew-CT Chen =?UTF-8?Q?=28=E9=99=B3=E6=99=BA=E8=BF=AA=29?=" , Matthias Brugger , Mauro Carvalho Chehab , "Minghsiu Tsai =?UTF-8?Q?=28=E8=94=A1=E6=98=8E=E4=BF=AE=29?=" , "linux-arm-kernel@lists.infradead.org" , "linux-media@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , Date: Mon, 16 Aug 2021 11:37:47 +0800 In-Reply-To: <20210802220943.v6.5.Iedb6b4f47788548b0cf7bfffae85cac917344c2f@changeid> References: <20210802121215.703023-1-eizan@chromium.org> <20210802220943.v6.5.Iedb6b4f47788548b0cf7bfffae85cac917344c2f@changeid> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 9B9AD6F64CBAAF17ECD8FEBE62D25A84C601BECC7CD52BDDFDAAAEEFE97A73EF2000:8 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gTW9uLCAyMDIxLTA4LTAyIGF0IDIwOjEyICswODAwLCBFaXphbiBNaXlhbW90byB3cm90ZToN Cj4gUmF0aGVyIHRoYW4gaGFuZ2luZyB0aGUgTURQIG1hc3RlciBjb21wb25lbnQgZHJpdmVyIG9m ZiBvZiB0aGUgcmRtYTANCj4gZGV2aWNlLCBtYWtlIGl0IHBvc3NpYmxlIHRvbyBjcmVhdGUgYSAi dmlydHVhbCIgZGV2aWNlIGJ5IHJlZ2lzdGVyaW5nDQo+IGl0IHdpdGggcGxhdGZvcm1fZGV2aWNl X3JlZ2lzdGVyXyooKSB0byBiZSBwcm9iZWQgYnkgdGhlIG10a19tZHBfY29yZQ0KPiBkcml2ZXIu DQo+IA0KPiBCcm9hZGx5LCB0aHJlZSBpbnRlcmRlcGVuZGVudCB0aGluZ3MgYXJlIGRvbmUgYnkg dGhpcyBjaGFuZ2U6DQo+IC0gTWFrZSBpdCBpcyBwb3NzaWJsZSB0byBzZWFyY2ggZm9yIE1EUCBk ZXZpY2VzIGluIHRoZSBkZXZpY2UgdHJlZQ0KPiAgIHRocm91Z2ggdGhlIGdyYW5kcGFyZW50IGRl dmljZSdzIG9mX25vZGUuDQo+IC0gdjRsLXJlbGF0ZWQgc2V0dXAgaXMgbW92ZWQgaW50byBmcm9t IHRoZSBtdGtfbWRwX2NvcmUgZHJpdmVyIHRvIHRoZQ0KPiAgIG10a19tZHBfY29tcCBkcml2ZXIu DQo+IC0gUHJlc2VuY2Ugb2YgYSBtZWRpYXRlayx2cHUgcHJvcGVydHkgaW4gYW4gTURQIGNvbXBv bmVudCBkZXZpY2Ugbm9kZQ0KPiAgIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgZGV2aWNlIHRv IHVzZSB3aGVuIGRpc3BhdGNoaW5nIERNQSBvcHMNCj4gZnJvbQ0KPiAgIHRoZSByZWxldmFudCBp b2N0bCwgYW5kIGFsc28gZG8gVjRMMiBpbml0aWFsaXphdGlvbiBpbiB0aGlzIGNhc2UuDQo+IA0K PiBTaWduZWQtb2ZmLWJ5OiBFaXphbiBNaXlhbW90byA8ZWl6YW5AY2hyb21pdW0ub3JnPg0KPiAt LS0NCj4gDQo+IENoYW5nZXMgaW4gdjY6DQo+IC0gRG9uJ3QgcHJvcGFnYXRlIGVycm9ycyBmcm9t IGNsb2NrX29uL29mZiBhcyBhbiBhZnRlcnRob3VnaHQuDQo+IC0gU3BsaXQgYXBhcnQgbW9kaWZ5 aW5nIG1kcCBkcml2ZXIgdG8gYmUgbG9hZGFibGUgZnJvbSBtbXN5cyBmcm9tDQo+ICAgYWN0dWFs bHkgbG9hZGluZyBpdCBmcm9tIG1tc3lzIGludG8gdHdvIGNoYW5ncyB0byBtYWtlIHJldmlldw0K PiBlYXNpZXIuDQo+IC0gVXBkYXRlIGRldmljZXRyZWUgYmluZGluZ3MgdG8gcmVmbGVjdCBubyBs b25nZXIgbmVlZGluZyB0aGUNCj4gICBtZWRpYXRlayx2cHUgcHJvcGVydHkgaW4gdGhlIG1kcF9y ZG1hMCBkZXZpY2Ugbm9kZS4NCj4gLSBTb21lIHN0eWxpc3RpYyBjbGVhbnVwcy4NCj4gDQo+IENo YW5nZXMgaW4gdjU6DQo+IC0gcmViYXNlIGFuZCB0ZXN0IG9uIDUuMTMtbmV4dCBAIGUyZjc0YjEz ZGJlNg0KPiANCj4gQ2hhbmdlcyBpbiB2NDoNCj4gLSByZWJhc2UgYW5kIHRlc3Qgb24gNS4xMw0K PiAtIGRvbid0IGRlcGVuZCBvbiANCj4gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9q ZWN0L2xpbnV4LW1lZGlhdGVrL2xpc3QvP3Nlcmllcz00NjQ4NzMNCj4gDQo+IENoYW5nZXMgaW4g djM6DQo+IC0gZ2V0IG1kcCBtYXN0ZXIgZnJvbSBhbGlhc2VzIGluc3RlYWQgb2Ygc3RyY21wIGFn YWluc3Qgb2Zfbm9kZS0+bmFtZQ0KPiANCj4gQ2hhbmdlcyBpbiB2MjoNCj4gLSByZWJhc2VkIG9u dG8gTGludXggNS4xMg0KPiAtIDEwMCBjaGFyIGxpbmUgbGVuZ3RoIGFsbG93YW5jZSB3YXMgdXRp bGl6ZWQgaW4gYSBmZXcgcGxhY2VzDQo+IC0gUmVtb3ZhbCBvZiBhIHJlZHVuZGFudCBkZXZfZXJy KCkgcHJpbnQgYXQgdGhlIGVuZCBvZg0KPiAgIG10a19tZHBfY29tcF9pbml0KCkNCj4gLSBJbnN0 ZWFkIG9mIHByaW50aW5nIGVycm9ycyBhbmQgaWdub3JpbmcgdGhlbSwgSSd2ZSBhZGRlZCBhIHBh dGNoIHRvDQo+ICAgY29ycmVjdGx5IHByb3BhZ2F0ZSB0aGVtLg0KPiAtIFVzZSBvZiBDIHN0eWxl IGNvbW1lbnRzLg0KPiAtIFRocmVlIGFkZGl0aW9uYWwgcGF0Y2hlcyB3ZXJlIGFkZGVkIHRvIGVs aW1pbmF0ZSBkZXBlbmRlbmN5IG9uIHRoZQ0KPiAgIG1lZGlhdGVrLHZwdSBwcm9wZXJ0eSBpbnNp ZGUgdGhlIG1kcF9yZG1hMCBkZXZpY2Ugbm9kZS4NCj4gDQo+ICBkcml2ZXJzL21lZGlhL3BsYXRm b3JtL210ay1tZHAvbXRrX21kcF9jb21wLmMgfCA1MSArKysrKysrKysrLS0tLS0NCj4gIGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcC9tdGtfbWRwX2NvcmUuYyB8IDYyICsrKysrKy0tLS0t LS0tLS0tDQo+IC0tDQo+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAvbXRrX21kcF9j b3JlLmggfCAgMiArDQo+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAvbXRrX21kcF9t Mm0uYyAgfCAgNCArLQ0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCA1OSBk ZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210 ay1tZHAvbXRrX21kcF9jb21wLmMNCj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAv bXRrX21kcF9jb21wLmMNCj4gaW5kZXggN2I2YzhhM2YzNDU1Li44NWVmMjc0ODQxYTMgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcC9tdGtfbWRwX2NvbXAuYw0K PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAvbXRrX21kcF9jb21wLmMNCj4g QEAgLTE1NSw4ICsxNTUsNDUgQEAgc3RhdGljIGludCBtdGtfbWRwX2NvbXBfYmluZChzdHJ1Y3Qg ZGV2aWNlICpkZXYsDQo+IHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGENCj4gIHsNCj4g IAlzdHJ1Y3QgbXRrX21kcF9jb21wICpjb21wID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICAJ c3RydWN0IG10a19tZHBfZGV2ICptZHAgPSBkYXRhOw0KPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAq dnB1X25vZGU7DQo+ICANCj4gIAltdGtfbWRwX3JlZ2lzdGVyX2NvbXBvbmVudChtZHAsIGNvbXAp Ow0KPiArDQo+ICsJLyoNCj4gKwkgKiBJZiB0aGlzIGNvbXBvbmVudCBoYXMgYSAibWVkaWF0ZWst dnB1IiBwcm9wZXJ0eSwgaXQgaXMNCj4gcmVzcG9uc2libGUgZm9yDQo+ICsJICogbm90aWZ5aW5n IHRoZSBtZHAgbWFzdGVyIGRyaXZlciBhYm91dCBpdCBzbyBpdCBjYW4gYmUNCj4gZnVydGhlciBp bml0aWFsaXplZA0KPiArCSAqIGxhdGVyLg0KPiArCSAqLw0KPiArCXZwdV9ub2RlID0gb2ZfcGFy c2VfcGhhbmRsZShkZXYtPm9mX25vZGUsICJtZWRpYXRlayx2cHUiLCAwKTsNCj4gKwlpZiAodnB1 X25vZGUpIHsNCj4gKwkJaW50IHJldDsNCj4gKw0KPiArCQltZHAtPnZwdV9kZXYgPSBvZl9maW5k X2RldmljZV9ieV9ub2RlKHZwdV9ub2RlKTsNCj4gKwkJaWYgKFdBUk5fT04oIW1kcC0+dnB1X2Rl dikpIHsNCj4gKwkJCWRldl9lcnIoZGV2LCAidnB1IHBkZXYgZmFpbGVkXG4iKTsNCj4gKwkJCW9m X25vZGVfcHV0KHZwdV9ub2RlKTsNCj4gKwkJfQ0KDQpNYXliZSAnb2Zfbm9kZV9wdXQodnB1X25v ZGUpJyBzaG91bGQgYmUgY2FsbGVkIHdoZW4gJ21kcC0+dnB1X2RldicgaXMNCnZhbGlkLg0KDQoN Cj4gKwkJcmV0ID0gdjRsMl9kZXZpY2VfcmVnaXN0ZXIoZGV2LCAmbWRwLT52NGwyX2Rldik7DQo+ ICsJCWlmIChyZXQpIHsNCj4gKwkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHY0 bDINCj4gZGV2aWNlXG4iKTsNCj4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiArCQl9DQo+ICsNCj4g KwkJcmV0ID0gdmIyX2RtYV9jb250aWdfc2V0X21heF9zZWdfc2l6ZShkZXYsDQo+IERNQV9CSVRf TUFTSygzMikpOw0KPiArCQlpZiAocmV0KSB7DQo+ICsJCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byBzZXQgdmIyIGRtYSBtYWcgc2VnDQo+IHNpemVcbiIpOw0KPiArCQkJcmV0dXJuIC1FSU5WQUw7 DQo+ICsJCX0NCj4gKw0KPiArCQkvKg0KPiArCQkgKiBwcmVzZW5jZSBvZiB0aGUgIm1lZGlhdGVr LHZwdSIgcHJvcGVydHkgaW4gYSBkZXZpY2UNCj4gbm9kZQ0KPiArCQkgKiBpbmRpY2F0ZXMgdGhh dCBpdCBpcyB0aGUgcHJpbWFyeSBNRFAgcmRtYSBkZXZpY2UgYW5kDQo+IE1EUCBETUENCj4gKwkJ ICogb3BzIHNob3VsZCBiZSBoYW5kbGVkIGJ5IGl0cyBETUEgY2FsbGJhY2tzLg0KPiArCQkgKi8N Cj4gKwkJbWRwLT5yZG1hX2RldiA9IGRldjsNCj4gKwl9DQo+ICsNCj4gIAlwbV9ydW50aW1lX2Vu YWJsZShkZXYpOw0KPiAgDQo+ICAJcmV0dXJuIDA7DQo+IEBAIC0yMzcsMjMgKzI3NCw5IEBAIGlu dCBtdGtfbWRwX2NvbXBfaW5pdChzdHJ1Y3QgbXRrX21kcF9jb21wICpjb21wLA0KPiBzdHJ1Y3Qg ZGV2aWNlICpkZXYpDQo+ICBzdGF0aWMgaW50IG10a19tZHBfY29tcF9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgew0KPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2 LT5kZXY7DQo+IC0Jc3RydWN0IGRldmljZV9ub2RlICp2cHVfbm9kZTsNCj4gIAlpbnQgc3RhdHVz Ow0KPiAgCXN0cnVjdCBtdGtfbWRwX2NvbXAgKmNvbXA7DQo+ICANCj4gLQl2cHVfbm9kZSA9IG9m X3BhcnNlX3BoYW5kbGUoZGV2LT5vZl9ub2RlLCAibWVkaWF0ZWssdnB1IiwgMCk7DQo+IC0JaWYg KHZwdV9ub2RlKSB7DQo+IC0JCW9mX25vZGVfcHV0KHZwdV9ub2RlKTsNCj4gLQkJLyoNCj4gLQkJ ICogVGhlIGRldmljZSB0cmVlIG5vZGUgd2l0aCBhIG1lZGlhdGVrLHZwdSBwcm9wZXJ0eSBpcw0K PiBkZWVtZWQNCj4gLQkJICogdGhlIE1EUCAibWFzdGVyIiBkZXZpY2UsIHdlIGRvbid0IHdhbnQg dG8gYWRkIGENCj4gY29tcG9uZW50DQo+IC0JCSAqIGZvciBpdCBpbiB0aGlzIGZ1bmN0aW9uIGJl Y2F1c2UgdGhlIGluaXRpYWxpemF0aW9uDQo+IGZvciB0aGUNCj4gLQkJICogbWFzdGVyIGlzIGRv bmUgZWxzZXdoZXJlLg0KPiAtCQkgKi8NCj4gLQkJZGV2X2luZm8oZGV2LCAidnB1IG5vZGUgZm91 bmQsIG5vdCBwcm9iaW5nXG4iKTsNCj4gLQkJcmV0dXJuIC1FTk9ERVY7DQo+IC0JfQ0KPiAtDQo+ ICAJY29tcCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY29tcCksIEdGUF9LRVJORUwpOw0K PiAgCWlmICghY29tcCkNCj4gIAkJcmV0dXJuIC1FTk9NRU07DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAvbXRrX21kcF9jb3JlLmMNCj4gYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1tZHAvbXRrX21kcF9jb3JlLmMNCj4gaW5kZXggYTcyYTliYTQxZWE2 Li41MGVhZmNjOTk5M2QgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LW1kcC9tdGtfbWRwX2NvcmUuYw0KPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1t ZHAvbXRrX21kcF9jb3JlLmMNCj4gQEAgLTE1OSw2ICsxNTksMTcgQEAgc3RhdGljIGludCBtdGtf bWRwX21hc3Rlcl9iaW5kKHN0cnVjdCBkZXZpY2UNCj4gKmRldikNCj4gIAkJZ290byBlcnJfY29t cG9uZW50X2JpbmRfYWxsOw0KPiAgCX0NCj4gIA0KPiArCWlmIChtZHAtPnZwdV9kZXYpIHsNCj4g KwkJaW50IHJldCA9IHZwdV93ZHRfcmVnX2hhbmRsZXIobWRwLT52cHVfZGV2LA0KPiBtdGtfbWRw X3Jlc2V0X2hhbmRsZXIsIG1kcCwNCj4gKwkJCQkJICBWUFVfUlNUX01EUCk7DQo+ICsJCWlmIChy ZXQpIHsNCj4gKwkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHJlc2V0DQo+IGhh bmRsZXJcbiIpOw0KPiArCQkJZ290byBlcnJfd2R0X3JlZzsNCj4gKwkJfQ0KPiArCX0gZWxzZSB7 DQo+ICsJCWRldl9lcnIoZGV2LCAibm8gdnB1X2RldiBmb3VuZFxuIik7DQo+ICsJfQ0KPiArDQo+ ICAJc3RhdHVzID0gbXRrX21kcF9yZWdpc3Rlcl9tMm1fZGV2aWNlKG1kcCk7DQo+ICAJaWYgKHN0 YXR1cykgew0KPiAgCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWdpc3RlciBtMm0gZGV2aWNl OiAlZFxuIiwNCj4gc3RhdHVzKTsNCj4gQEAgLTE3MCw2ICsxODEsOCBAQCBzdGF0aWMgaW50IG10 a19tZHBfbWFzdGVyX2JpbmQoc3RydWN0IGRldmljZQ0KPiAqZGV2KQ0KPiAgCXJldHVybiAwOw0K PiAgDQo+ICBlcnJfbXRrX21kcF9yZWdpc3Rlcl9tMm1fZGV2aWNlOg0KPiArDQo+ICtlcnJfd2R0 X3JlZzoNCj4gIAljb21wb25lbnRfdW5iaW5kX2FsbChkZXYsIG1kcCk7DQo+ICANCj4gIGVycl9j b21wb25lbnRfYmluZF9hbGw6DQo+IEBAIC0yMjgsOCArMjQxLDEzIEBAIHN0YXRpYyBpbnQgbXRr X21kcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlDQo+ICpwZGV2KQ0KPiAgCQlvZl9ub2Rl X3B1dChub2RlKTsNCj4gIAkJcGFyZW50ID0gZGV2LT5vZl9ub2RlOw0KPiAgCQlkZXZfd2Fybihk ZXYsICJkZXZpY2UgdHJlZSBpcyBvdXQgb2YgZGF0ZVxuIik7DQo+IC0JfSBlbHNlIHsNCj4gKwl9 IGVsc2UgaWYgKGRldi0+b2Zfbm9kZSkgew0KPiAgCQlwYXJlbnQgPSBkZXYtPm9mX25vZGUtPnBh cmVudDsNCj4gKwl9IGVsc2UgaWYgKGRldi0+cGFyZW50KSB7DQo+ICsJCS8qIG1heWJlIHdlIHdl cmUgY3JlYXRlZCBmcm9tIGEgY2FsbCB0bw0KPiBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZGF0 YSgpICovDQo+ICsJCXBhcmVudCA9IGRldi0+cGFyZW50LT5wYXJlbnQtPm9mX25vZGU7DQo+ICsJ fSBlbHNlIHsNCj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ICAJfQ0KPiAgDQo+ICAJLyogSXRlcmF0 ZSBvdmVyIHNpYmxpbmcgTURQIGZ1bmN0aW9uIGJsb2NrcyAqLw0KPiBAQCAtMjYyLDE2ICsyODAs NiBAQCBzdGF0aWMgaW50IG10a19tZHBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZQ0KPiAq cGRldikNCj4gIAkJfQ0KPiAgCX0NCj4gIA0KPiAtCS8qDQo+IC0JICogQ3JlYXRlIGEgY29tcG9u ZW50IGZvciBteXNlbGYgc28gdGhhdCBjbG9ja3MgY2FuIGJlIHRvZ2dsZWQNCj4gaW4NCj4gLQkg KiBjbG9ja19vbigpLg0KPiAtCSAqLw0KPiAtCXJldCA9IG10a19tZHBfY29tcF9pbml0KCZtZHAt PmNvbXBfc2VsZiwgZGV2KTsNCj4gLQlpZiAocmV0KSB7DQo+IC0JCWRldl9lcnIoZGV2LCAiRmFp bGVkIHRvIGluaXRpYWxpemUgY29tcG9uZW50XG4iKTsNCj4gLQkJZ290byBlcnJfY29tcDsNCj4g LQl9DQo+IC0NCj4gIAltZHAtPmpvYl93cSA9DQo+IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1 ZXVlKE1US19NRFBfTU9EVUxFX05BTUUpOw0KPiAgCWlmICghbWRwLT5qb2Jfd3EpIHsNCj4gIAkJ ZGV2X2VycigmcGRldi0+ZGV2LCAidW5hYmxlIHRvIGFsbG9jIGpvYiB3b3JrcXVldWVcbiIpOw0K PiBAQCAtMjg3LDI5ICsyOTUsOCBAQCBzdGF0aWMgaW50IG10a19tZHBfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZQ0KPiAqcGRldikNCj4gIAl9DQo+ICAJSU5JVF9XT1JLKCZtZHAtPndkdF93 b3JrLCBtdGtfbWRwX3dkdF93b3JrZXIpOw0KPiAgDQo+IC0JcmV0ID0gdjRsMl9kZXZpY2VfcmVn aXN0ZXIoZGV2LCAmbWRwLT52NGwyX2Rldik7DQo+IC0JaWYgKHJldCkgew0KPiAtCQlkZXZfZXJy KCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgdjRsMg0KPiBkZXZpY2VcbiIpOw0KPiAt CQlyZXQgPSAtRUlOVkFMOw0KPiAtCQlnb3RvIGVycl9kZXZfcmVnaXN0ZXI7DQo+IC0JfQ0KPiAt DQo+IC0JbWRwLT52cHVfZGV2ID0gdnB1X2dldF9wbGF0X2RldmljZShwZGV2KTsNCj4gLQlyZXQg PSB2cHVfd2R0X3JlZ19oYW5kbGVyKG1kcC0+dnB1X2RldiwgbXRrX21kcF9yZXNldF9oYW5kbGVy LA0KPiBtZHAsDQo+IC0JCQkJICBWUFVfUlNUX01EUCk7DQo+IC0JaWYgKHJldCkgew0KPiAtCQlk ZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgcmVzZXQNCj4gaGFuZGxlclxu Iik7DQo+IC0JCWdvdG8gZXJyX3dkdF9yZWc7DQo+IC0JfQ0KPiAtDQo+ICAJcGxhdGZvcm1fc2V0 X2RydmRhdGEocGRldiwgbWRwKTsNCj4gIA0KPiAtCXJldCA9IHZiMl9kbWFfY29udGlnX3NldF9t YXhfc2VnX3NpemUoJnBkZXYtPmRldiwNCj4gRE1BX0JJVF9NQVNLKDMyKSk7DQo+IC0JaWYgKHJl dCkgew0KPiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gc2V0IHZiMiBkbWEgbWFn IHNlZw0KPiBzaXplXG4iKTsNCj4gLQkJZ290byBlcnJfc2V0X21heF9zZWdfc2l6ZTsNCj4gLQl9 DQo+IC0NCj4gIAlyZXQgPSBjb21wb25lbnRfbWFzdGVyX2FkZF93aXRoX21hdGNoKGRldiwgJm10 a19tZHBfY29tX29wcywNCj4gbWF0Y2gpOw0KPiAgCWlmIChyZXQpIHsNCj4gIAkJZGV2X2Vycihk ZXYsICJDb21wb25lbnQgbWFzdGVyIGFkZCBmYWlsZWRcbiIpOw0KPiBAQCAtMzIxLDIyICszMDgs MTIgQEAgc3RhdGljIGludCBtdGtfbWRwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UNCj4g KnBkZXYpDQo+ICAJcmV0dXJuIDA7DQo+ICANCj4gIGVycl9jb21wb25lbnRfbWFzdGVyX2FkZDoN Cj4gLQl2YjJfZG1hX2NvbnRpZ19jbGVhcl9tYXhfc2VnX3NpemUoJnBkZXYtPmRldik7DQo+IC0N Cj4gLWVycl9zZXRfbWF4X3NlZ19zaXplOg0KPiAtDQo+IC1lcnJfd2R0X3JlZzoNCj4gLQl2NGwy X2RldmljZV91bnJlZ2lzdGVyKCZtZHAtPnY0bDJfZGV2KTsNCj4gLQ0KPiAtZXJyX2Rldl9yZWdp c3RlcjoNCj4gIAlkZXN0cm95X3dvcmtxdWV1ZShtZHAtPndkdF93cSk7DQo+ICANCj4gIGVycl9h bGxvY193ZHRfd3E6DQo+ICAJZGVzdHJveV93b3JrcXVldWUobWRwLT5qb2Jfd3EpOw0KPiAgDQo+ ICBlcnJfYWxsb2Nfam9iX3dxOg0KPiAtDQo+IC1lcnJfY29tcDoNCj4gIAlkZXZfZGJnKGRldiwg ImVyciAlZFxuIiwgcmV0KTsNCj4gIAlyZXR1cm4gcmV0Ow0KPiAgfQ0KPiBAQCAtNDA0LDcgKzM4 MSw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19tZHBfZHJpdmVyID0gew0K PiAgCS5kcml2ZXIgPSB7DQo+ICAJCS5uYW1lCT0gTVRLX01EUF9NT0RVTEVfTkFNRSwNCj4gIAkJ LnBtCT0gJm10a19tZHBfcG1fb3BzLA0KPiAtCQkub2ZfbWF0Y2hfdGFibGUgPSBtdGtfbWRwX29m X2lkcywNCj4gIAl9DQo+ICB9Ow0KPiAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL210ay1tZHAvbXRrX21kcF9jb3JlLmgNCj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1tZHAvbXRrX21kcF9jb3JlLmgNCj4gaW5kZXggOGE1MjUzOWIxNWQ0Li45ZmNkOGI4ZTdj MjUgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcC9tdGtfbWRw X2NvcmUuaA0KPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAvbXRrX21kcF9j b3JlLmgNCj4gQEAgLTEzMyw2ICsxMzMsNyBAQCBzdHJ1Y3QgbXRrX21kcF92YXJpYW50IHsNCj4g ICAqIHN0cnVjdCBtdGtfbWRwX2RldiAtIGFic3RyYWN0aW9uIGZvciBpbWFnZSBwcm9jZXNzb3Ig ZW50aXR5DQo+ICAgKiBAbG9jazoJdGhlIG11dGV4IHByb3RlY3RpbmcgdGhpcyBkYXRhIHN0cnVj dHVyZQ0KPiAgICogQHZwdWxvY2s6CXRoZSBtdXRleCBwcm90ZWN0aW5nIHRoZSBjb21tdW5pY2F0 aW9uIHdpdGggVlBVDQo+ICsgKiBAcmRtYV9kZXY6ICBkZXZpY2UgcG9pbnRlciB0byByZG1hIGRl dmljZSBmb3IgTURQDQo+ICAgKiBAcGRldjoJcG9pbnRlciB0byB0aGUgaW1hZ2UgcHJvY2Vzc29y IHBsYXRmb3JtIGRldmljZQ0KPiAgICogQHZhcmlhbnQ6CXRoZSBJUCB2YXJpYW50IGluZm9ybWF0 aW9uDQo+ICAgKiBAaWQ6CQlpbWFnZSBwcm9jZXNzb3IgZGV2aWNlIGluZGV4DQo+ICgwLi5NVEtf TURQX01BWF9ERVZTKQ0KPiBAQCAtMTUxLDYgKzE1Miw3IEBAIHN0cnVjdCBtdGtfbWRwX3Zhcmlh bnQgew0KPiAgc3RydWN0IG10a19tZHBfZGV2IHsNCj4gIAlzdHJ1Y3QgbXV0ZXgJCQlsb2NrOw0K PiAgCXN0cnVjdCBtdXRleAkJCXZwdWxvY2s7DQo+ICsJc3RydWN0IGRldmljZQkJCSpyZG1hX2Rl djsNCj4gIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlCQkqcGRldjsNCj4gIAlzdHJ1Y3QgbXRrX21k cF92YXJpYW50CQkqdmFyaWFudDsNCj4gIAl1MTYJCQkJaWQ7DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAvbXRrX21kcF9tMm0uYw0KPiBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbXRrLW1kcC9tdGtfbWRwX20ybS5jDQo+IGluZGV4IGYxNDc3OWU3NTk2ZS4u OTgzNGQzYmJlODUxIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1t ZHAvbXRrX21kcF9tMm0uYw0KPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAv bXRrX21kcF9tMm0uYw0KPiBAQCAtOTI5LDcgKzkyOSw3IEBAIHN0YXRpYyBpbnQgbXRrX21kcF9t Mm1fcXVldWVfaW5pdCh2b2lkICpwcml2LA0KPiBzdHJ1Y3QgdmIyX3F1ZXVlICpzcmNfdnEsDQo+ ICAJc3JjX3ZxLT5tZW1fb3BzID0gJnZiMl9kbWFfY29udGlnX21lbW9wczsNCj4gIAlzcmNfdnEt PmJ1Zl9zdHJ1Y3Rfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdjRsMl9tMm1fYnVmZmVyKTsNCj4gIAlz cmNfdnEtPnRpbWVzdGFtcF9mbGFncyA9IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX0NPUFk7DQo+ IC0Jc3JjX3ZxLT5kZXYgPSAmY3R4LT5tZHBfZGV2LT5wZGV2LT5kZXY7DQo+ICsJc3JjX3ZxLT5k ZXYgPSBjdHgtPm1kcF9kZXYtPnJkbWFfZGV2Ow0KPiAgCXNyY192cS0+bG9jayA9ICZjdHgtPm1k cF9kZXYtPmxvY2s7DQo+ICANCj4gIAlyZXQgPSB2YjJfcXVldWVfaW5pdChzcmNfdnEpOw0KPiBA QCAtOTQ0LDcgKzk0NCw3IEBAIHN0YXRpYyBpbnQgbXRrX21kcF9tMm1fcXVldWVfaW5pdCh2b2lk ICpwcml2LA0KPiBzdHJ1Y3QgdmIyX3F1ZXVlICpzcmNfdnEsDQo+ICAJZHN0X3ZxLT5tZW1fb3Bz ID0gJnZiMl9kbWFfY29udGlnX21lbW9wczsNCj4gIAlkc3RfdnEtPmJ1Zl9zdHJ1Y3Rfc2l6ZSA9 IHNpemVvZihzdHJ1Y3QgdjRsMl9tMm1fYnVmZmVyKTsNCj4gIAlkc3RfdnEtPnRpbWVzdGFtcF9m bGFncyA9IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX0NPUFk7DQo+IC0JZHN0X3ZxLT5kZXYgPSAm Y3R4LT5tZHBfZGV2LT5wZGV2LT5kZXY7DQo+ICsJZHN0X3ZxLT5kZXYgPSBjdHgtPm1kcF9kZXYt PnJkbWFfZGV2Ow0KPiAgCWRzdF92cS0+bG9jayA9ICZjdHgtPm1kcF9kZXYtPmxvY2s7DQo+ICAN Cj4gIAlyZXR1cm4gdmIyX3F1ZXVlX2luaXQoZHN0X3ZxKTsNCj4gLS0gDQo+IDIuMzIuMC41NTQu Z2UxYjMyNzA2ZDgtZ29vZw0KPiANCg== 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,UNPARSEABLE_RELAY, 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 C2C97C4338F for ; Mon, 16 Aug 2021 03:38:38 +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 755A96187F for ; Mon, 16 Aug 2021 03:38:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 755A96187F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.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: Date:CC:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XKRvqpHuiXSfnX8RHYh2MWjB0P3oRMFhg4w70uvm3xQ=; b=gAjkmtpZCln+Ds o+NPtB2eZho+Z6wRlPCZfbfJgWnJ9hJ0yLdYxi65HwPSM9dESDjDQn7w+MyoIZ8jAKXv2RFtiJW0p YIMIjNfJpbcgVnvdZN8orRTYXDz/aX18l5n/OBN8RJHf80C2LrsUUM61G2Yn0h9RHnJMlz8vfCc0P nqpuONUHAu14iRwBuun0qEcMWwLOy7yTogqHShjmLJnoTJhdW81maTrWdmBv5GJrxXUU3DgrAQOG8 aT4dZbChfP98WMNq3ByuO1zRe4TVTxGYo2xz2AY8Jrt+JHFrrFUZraCWGBdeoXAeQBIMi/3mtw9FD 8RyPNVK+YQUQxia5UlcA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mFTSA-00G4EC-MG; Mon, 16 Aug 2021 03:38:22 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mFTRv-00G4DF-Fv; Mon, 16 Aug 2021 03:38:11 +0000 X-UUID: eb8d45022efe444bb122a697c2e333a4-20210815 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=BniR1vT/ITzPIV/dl+gZPyHdSRm/k7l4QdTEiMfemhc=; b=SkPI7pEieNgoVoFTPoP4pzS+IepVJEfh0JBzqsPDEqeAyZs6HpTXzY2zB/HKFoBk319l1UjTwKLQxaRKpi75YCxHvhk0x5Fg+7BlR4cXjJkqOeq5HiRX5VTpoJB6Wo5spMkv65pZvbnj65oWuksrgCXdQfvr25UvUiq0HWDB0GA=; X-UUID: eb8d45022efe444bb122a697c2e333a4-20210815 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1984267039; Sun, 15 Aug 2021 20:38:02 -0700 Received: from MTKMBS32N2.mediatek.inc (172.27.4.72) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sun, 15 Aug 2021 20:38:00 -0700 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS32N2.mediatek.inc (172.27.4.72) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 16 Aug 2021 11:37:47 +0800 Received: from mhfsdcap04 (10.17.3.154) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 16 Aug 2021 11:37:46 +0800 Message-ID: <8ec92b60f97b7e6516a0ffd32328f428d233fa93.camel@mediatek.com> Subject: Re: [PATCH v6 5/9] mtk-mdp: make mdp driver to be loadable by platform_device_register*() From: houlong wei To: Eizan Miyamoto , "linux-kernel@vger.kernel.org" CC: "wenst@chromium.org" , Yong Wu =?UTF-8?Q?=28=E5=90=B4=E5=8B=87=29?= , "enric.balletbo@collabora.com" , "devicetree@vger.kernel.org" , "chunkuang.hu@kernel.org" , Andrew-CT Chen =?UTF-8?Q?=28=E9=99=B3=E6=99=BA=E8=BF=AA=29?= , Matthias Brugger , Mauro Carvalho Chehab , Minghsiu Tsai =?UTF-8?Q?=28=E8=94=A1=E6=98=8E=E4=BF=AE=29?= , "linux-arm-kernel@lists.infradead.org" , "linux-media@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , Date: Mon, 16 Aug 2021 11:37:47 +0800 In-Reply-To: <20210802220943.v6.5.Iedb6b4f47788548b0cf7bfffae85cac917344c2f@changeid> References: <20210802121215.703023-1-eizan@chromium.org> <20210802220943.v6.5.Iedb6b4f47788548b0cf7bfffae85cac917344c2f@changeid> X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 9B9AD6F64CBAAF17ECD8FEBE62D25A84C601BECC7CD52BDDFDAAAEEFE97A73EF2000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210815_203807_598239_7BE95395 X-CRM114-Status: GOOD ( 48.51 ) X-BeenThere: linux-mediatek@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="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org On Mon, 2021-08-02 at 20:12 +0800, Eizan Miyamoto wrote: > Rather than hanging the MDP master component driver off of the rdma0 > device, make it possible too create a "virtual" device by registering > it with platform_device_register_*() to be probed by the mtk_mdp_core > driver. > > Broadly, three interdependent things are done by this change: > - Make it is possible to search for MDP devices in the device tree > through the grandparent device's of_node. > - v4l-related setup is moved into from the mtk_mdp_core driver to the > mtk_mdp_comp driver. > - Presence of a mediatek,vpu property in an MDP component device node > is used to determine what device to use when dispatching DMA ops > from > the relevant ioctl, and also do V4L2 initialization in this case. > > Signed-off-by: Eizan Miyamoto > --- > > Changes in v6: > - Don't propagate errors from clock_on/off as an afterthought. > - Split apart modifying mdp driver to be loadable from mmsys from > actually loading it from mmsys into two changs to make review > easier. > - Update devicetree bindings to reflect no longer needing the > mediatek,vpu property in the mdp_rdma0 device node. > - Some stylistic cleanups. > > Changes in v5: > - rebase and test on 5.13-next @ e2f74b13dbe6 > > Changes in v4: > - rebase and test on 5.13 > - don't depend on > https://patchwork.kernel.org/project/linux-mediatek/list/?series=464873 > > Changes in v3: > - get mdp master from aliases instead of strcmp against of_node->name > > Changes in v2: > - rebased onto Linux 5.12 > - 100 char line length allowance was utilized in a few places > - Removal of a redundant dev_err() print at the end of > mtk_mdp_comp_init() > - Instead of printing errors and ignoring them, I've added a patch to > correctly propagate them. > - Use of C style comments. > - Three additional patches were added to eliminate dependency on the > mediatek,vpu property inside the mdp_rdma0 device node. > > drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 51 ++++++++++----- > drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 62 ++++++----------- > -- > drivers/media/platform/mtk-mdp/mtk_mdp_core.h | 2 + > drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c | 4 +- > 4 files changed, 60 insertions(+), 59 deletions(-) > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > index 7b6c8a3f3455..85ef274841a3 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > @@ -155,8 +155,45 @@ static int mtk_mdp_comp_bind(struct device *dev, > struct device *master, void *da > { > struct mtk_mdp_comp *comp = dev_get_drvdata(dev); > struct mtk_mdp_dev *mdp = data; > + struct device_node *vpu_node; > > mtk_mdp_register_component(mdp, comp); > + > + /* > + * If this component has a "mediatek-vpu" property, it is > responsible for > + * notifying the mdp master driver about it so it can be > further initialized > + * later. > + */ > + vpu_node = of_parse_phandle(dev->of_node, "mediatek,vpu", 0); > + if (vpu_node) { > + int ret; > + > + mdp->vpu_dev = of_find_device_by_node(vpu_node); > + if (WARN_ON(!mdp->vpu_dev)) { > + dev_err(dev, "vpu pdev failed\n"); > + of_node_put(vpu_node); > + } Maybe 'of_node_put(vpu_node)' should be called when 'mdp->vpu_dev' is valid. > + ret = v4l2_device_register(dev, &mdp->v4l2_dev); > + if (ret) { > + dev_err(dev, "Failed to register v4l2 > device\n"); > + return -EINVAL; > + } > + > + ret = vb2_dma_contig_set_max_seg_size(dev, > DMA_BIT_MASK(32)); > + if (ret) { > + dev_err(dev, "Failed to set vb2 dma mag seg > size\n"); > + return -EINVAL; > + } > + > + /* > + * presence of the "mediatek,vpu" property in a device > node > + * indicates that it is the primary MDP rdma device and > MDP DMA > + * ops should be handled by its DMA callbacks. > + */ > + mdp->rdma_dev = dev; > + } > + > pm_runtime_enable(dev); > > return 0; > @@ -237,23 +274,9 @@ int mtk_mdp_comp_init(struct mtk_mdp_comp *comp, > struct device *dev) > static int mtk_mdp_comp_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > - struct device_node *vpu_node; > int status; > struct mtk_mdp_comp *comp; > > - vpu_node = of_parse_phandle(dev->of_node, "mediatek,vpu", 0); > - if (vpu_node) { > - of_node_put(vpu_node); > - /* > - * The device tree node with a mediatek,vpu property is > deemed > - * the MDP "master" device, we don't want to add a > component > - * for it in this function because the initialization > for the > - * master is done elsewhere. > - */ > - dev_info(dev, "vpu node found, not probing\n"); > - return -ENODEV; > - } > - > comp = devm_kzalloc(dev, sizeof(*comp), GFP_KERNEL); > if (!comp) > return -ENOMEM; > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > index a72a9ba41ea6..50eafcc9993d 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > @@ -159,6 +159,17 @@ static int mtk_mdp_master_bind(struct device > *dev) > goto err_component_bind_all; > } > > + if (mdp->vpu_dev) { > + int ret = vpu_wdt_reg_handler(mdp->vpu_dev, > mtk_mdp_reset_handler, mdp, > + VPU_RST_MDP); > + if (ret) { > + dev_err(dev, "Failed to register reset > handler\n"); > + goto err_wdt_reg; > + } > + } else { > + dev_err(dev, "no vpu_dev found\n"); > + } > + > status = mtk_mdp_register_m2m_device(mdp); > if (status) { > dev_err(dev, "Failed to register m2m device: %d\n", > status); > @@ -170,6 +181,8 @@ static int mtk_mdp_master_bind(struct device > *dev) > return 0; > > err_mtk_mdp_register_m2m_device: > + > +err_wdt_reg: > component_unbind_all(dev, mdp); > > err_component_bind_all: > @@ -228,8 +241,13 @@ static int mtk_mdp_probe(struct platform_device > *pdev) > of_node_put(node); > parent = dev->of_node; > dev_warn(dev, "device tree is out of date\n"); > - } else { > + } else if (dev->of_node) { > parent = dev->of_node->parent; > + } else if (dev->parent) { > + /* maybe we were created from a call to > platform_device_register_data() */ > + parent = dev->parent->parent->of_node; > + } else { > + return -ENODEV; > } > > /* Iterate over sibling MDP function blocks */ > @@ -262,16 +280,6 @@ static int mtk_mdp_probe(struct platform_device > *pdev) > } > } > > - /* > - * Create a component for myself so that clocks can be toggled > in > - * clock_on(). > - */ > - ret = mtk_mdp_comp_init(&mdp->comp_self, dev); > - if (ret) { > - dev_err(dev, "Failed to initialize component\n"); > - goto err_comp; > - } > - > mdp->job_wq = > create_singlethread_workqueue(MTK_MDP_MODULE_NAME); > if (!mdp->job_wq) { > dev_err(&pdev->dev, "unable to alloc job workqueue\n"); > @@ -287,29 +295,8 @@ static int mtk_mdp_probe(struct platform_device > *pdev) > } > INIT_WORK(&mdp->wdt_work, mtk_mdp_wdt_worker); > > - ret = v4l2_device_register(dev, &mdp->v4l2_dev); > - if (ret) { > - dev_err(&pdev->dev, "Failed to register v4l2 > device\n"); > - ret = -EINVAL; > - goto err_dev_register; > - } > - > - mdp->vpu_dev = vpu_get_plat_device(pdev); > - ret = vpu_wdt_reg_handler(mdp->vpu_dev, mtk_mdp_reset_handler, > mdp, > - VPU_RST_MDP); > - if (ret) { > - dev_err(&pdev->dev, "Failed to register reset > handler\n"); > - goto err_wdt_reg; > - } > - > platform_set_drvdata(pdev, mdp); > > - ret = vb2_dma_contig_set_max_seg_size(&pdev->dev, > DMA_BIT_MASK(32)); > - if (ret) { > - dev_err(&pdev->dev, "Failed to set vb2 dma mag seg > size\n"); > - goto err_set_max_seg_size; > - } > - > ret = component_master_add_with_match(dev, &mtk_mdp_com_ops, > match); > if (ret) { > dev_err(dev, "Component master add failed\n"); > @@ -321,22 +308,12 @@ static int mtk_mdp_probe(struct platform_device > *pdev) > return 0; > > err_component_master_add: > - vb2_dma_contig_clear_max_seg_size(&pdev->dev); > - > -err_set_max_seg_size: > - > -err_wdt_reg: > - v4l2_device_unregister(&mdp->v4l2_dev); > - > -err_dev_register: > destroy_workqueue(mdp->wdt_wq); > > err_alloc_wdt_wq: > destroy_workqueue(mdp->job_wq); > > err_alloc_job_wq: > - > -err_comp: > dev_dbg(dev, "err %d\n", ret); > return ret; > } > @@ -404,7 +381,6 @@ static struct platform_driver mtk_mdp_driver = { > .driver = { > .name = MTK_MDP_MODULE_NAME, > .pm = &mtk_mdp_pm_ops, > - .of_match_table = mtk_mdp_of_ids, > } > }; > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.h > b/drivers/media/platform/mtk-mdp/mtk_mdp_core.h > index 8a52539b15d4..9fcd8b8e7c25 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.h > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.h > @@ -133,6 +133,7 @@ struct mtk_mdp_variant { > * struct mtk_mdp_dev - abstraction for image processor entity > * @lock: the mutex protecting this data structure > * @vpulock: the mutex protecting the communication with VPU > + * @rdma_dev: device pointer to rdma device for MDP > * @pdev: pointer to the image processor platform device > * @variant: the IP variant information > * @id: image processor device index > (0..MTK_MDP_MAX_DEVS) > @@ -151,6 +152,7 @@ struct mtk_mdp_variant { > struct mtk_mdp_dev { > struct mutex lock; > struct mutex vpulock; > + struct device *rdma_dev; > struct platform_device *pdev; > struct mtk_mdp_variant *variant; > u16 id; > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c > b/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c > index f14779e7596e..9834d3bbe851 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c > @@ -929,7 +929,7 @@ static int mtk_mdp_m2m_queue_init(void *priv, > struct vb2_queue *src_vq, > src_vq->mem_ops = &vb2_dma_contig_memops; > src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer); > src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; > - src_vq->dev = &ctx->mdp_dev->pdev->dev; > + src_vq->dev = ctx->mdp_dev->rdma_dev; > src_vq->lock = &ctx->mdp_dev->lock; > > ret = vb2_queue_init(src_vq); > @@ -944,7 +944,7 @@ static int mtk_mdp_m2m_queue_init(void *priv, > struct vb2_queue *src_vq, > dst_vq->mem_ops = &vb2_dma_contig_memops; > dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer); > dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; > - dst_vq->dev = &ctx->mdp_dev->pdev->dev; > + dst_vq->dev = ctx->mdp_dev->rdma_dev; > dst_vq->lock = &ctx->mdp_dev->lock; > > return vb2_queue_init(dst_vq); > -- > 2.32.0.554.ge1b32706d8-goog > _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek 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,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable 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 532D9C4338F for ; Mon, 16 Aug 2021 03:40:43 +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 0552C600AA for ; Mon, 16 Aug 2021 03:40:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0552C600AA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.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: Date:CC:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XlECviaYCXWRjAuXMFNisws38y8G9++NR450ZYOyRaw=; b=bHDQJ1YnB3WIxb IA6/wsZdCWidWX6lrYXnJ0bVxFBqFKsnCCZZJpai1XXoZ8H1oG0zFpxo2QQ1ZLFTunsar9ENjVNPE e7cumMuJ9VuiOhe/YbO1V0DFT9DAsmj/aFPdwkkwBl4lPEtrVc8H0zIFLjC56w1QjrCuzRqVYDUg4 pZ2mhxY5QfhSS//cq2m+4G9KDSVkiYiCPnAsMjiuyvA88C/mtGRxJyMMG2Re2XdVX8mrm1IZ3QtVK oBw7ydIMcFOGeXBcrg6m1K3DboApGNY/Kw2Ot0xD6sJFnmF/VUA/Md82DFQtGktrCMsLwJb0yo4eH fOMq9uohfwqiBDVdKeCg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mFTS1-00G4Dg-Eb; Mon, 16 Aug 2021 03:38:13 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mFTRv-00G4DF-Fv; Mon, 16 Aug 2021 03:38:11 +0000 X-UUID: eb8d45022efe444bb122a697c2e333a4-20210815 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=BniR1vT/ITzPIV/dl+gZPyHdSRm/k7l4QdTEiMfemhc=; b=SkPI7pEieNgoVoFTPoP4pzS+IepVJEfh0JBzqsPDEqeAyZs6HpTXzY2zB/HKFoBk319l1UjTwKLQxaRKpi75YCxHvhk0x5Fg+7BlR4cXjJkqOeq5HiRX5VTpoJB6Wo5spMkv65pZvbnj65oWuksrgCXdQfvr25UvUiq0HWDB0GA=; X-UUID: eb8d45022efe444bb122a697c2e333a4-20210815 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1984267039; Sun, 15 Aug 2021 20:38:02 -0700 Received: from MTKMBS32N2.mediatek.inc (172.27.4.72) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sun, 15 Aug 2021 20:38:00 -0700 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS32N2.mediatek.inc (172.27.4.72) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 16 Aug 2021 11:37:47 +0800 Received: from mhfsdcap04 (10.17.3.154) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 16 Aug 2021 11:37:46 +0800 Message-ID: <8ec92b60f97b7e6516a0ffd32328f428d233fa93.camel@mediatek.com> Subject: Re: [PATCH v6 5/9] mtk-mdp: make mdp driver to be loadable by platform_device_register*() From: houlong wei To: Eizan Miyamoto , "linux-kernel@vger.kernel.org" CC: "wenst@chromium.org" , Yong Wu =?UTF-8?Q?=28=E5=90=B4=E5=8B=87=29?= , "enric.balletbo@collabora.com" , "devicetree@vger.kernel.org" , "chunkuang.hu@kernel.org" , Andrew-CT Chen =?UTF-8?Q?=28=E9=99=B3=E6=99=BA=E8=BF=AA=29?= , Matthias Brugger , Mauro Carvalho Chehab , Minghsiu Tsai =?UTF-8?Q?=28=E8=94=A1=E6=98=8E=E4=BF=AE=29?= , "linux-arm-kernel@lists.infradead.org" , "linux-media@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , Date: Mon, 16 Aug 2021 11:37:47 +0800 In-Reply-To: <20210802220943.v6.5.Iedb6b4f47788548b0cf7bfffae85cac917344c2f@changeid> References: <20210802121215.703023-1-eizan@chromium.org> <20210802220943.v6.5.Iedb6b4f47788548b0cf7bfffae85cac917344c2f@changeid> X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 9B9AD6F64CBAAF17ECD8FEBE62D25A84C601BECC7CD52BDDFDAAAEEFE97A73EF2000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210815_203807_598239_7BE95395 X-CRM114-Status: GOOD ( 48.51 ) X-BeenThere: linux-arm-kernel@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="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Mon, 2021-08-02 at 20:12 +0800, Eizan Miyamoto wrote: > Rather than hanging the MDP master component driver off of the rdma0 > device, make it possible too create a "virtual" device by registering > it with platform_device_register_*() to be probed by the mtk_mdp_core > driver. > > Broadly, three interdependent things are done by this change: > - Make it is possible to search for MDP devices in the device tree > through the grandparent device's of_node. > - v4l-related setup is moved into from the mtk_mdp_core driver to the > mtk_mdp_comp driver. > - Presence of a mediatek,vpu property in an MDP component device node > is used to determine what device to use when dispatching DMA ops > from > the relevant ioctl, and also do V4L2 initialization in this case. > > Signed-off-by: Eizan Miyamoto > --- > > Changes in v6: > - Don't propagate errors from clock_on/off as an afterthought. > - Split apart modifying mdp driver to be loadable from mmsys from > actually loading it from mmsys into two changs to make review > easier. > - Update devicetree bindings to reflect no longer needing the > mediatek,vpu property in the mdp_rdma0 device node. > - Some stylistic cleanups. > > Changes in v5: > - rebase and test on 5.13-next @ e2f74b13dbe6 > > Changes in v4: > - rebase and test on 5.13 > - don't depend on > https://patchwork.kernel.org/project/linux-mediatek/list/?series=464873 > > Changes in v3: > - get mdp master from aliases instead of strcmp against of_node->name > > Changes in v2: > - rebased onto Linux 5.12 > - 100 char line length allowance was utilized in a few places > - Removal of a redundant dev_err() print at the end of > mtk_mdp_comp_init() > - Instead of printing errors and ignoring them, I've added a patch to > correctly propagate them. > - Use of C style comments. > - Three additional patches were added to eliminate dependency on the > mediatek,vpu property inside the mdp_rdma0 device node. > > drivers/media/platform/mtk-mdp/mtk_mdp_comp.c | 51 ++++++++++----- > drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 62 ++++++----------- > -- > drivers/media/platform/mtk-mdp/mtk_mdp_core.h | 2 + > drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c | 4 +- > 4 files changed, 60 insertions(+), 59 deletions(-) > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > index 7b6c8a3f3455..85ef274841a3 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c > @@ -155,8 +155,45 @@ static int mtk_mdp_comp_bind(struct device *dev, > struct device *master, void *da > { > struct mtk_mdp_comp *comp = dev_get_drvdata(dev); > struct mtk_mdp_dev *mdp = data; > + struct device_node *vpu_node; > > mtk_mdp_register_component(mdp, comp); > + > + /* > + * If this component has a "mediatek-vpu" property, it is > responsible for > + * notifying the mdp master driver about it so it can be > further initialized > + * later. > + */ > + vpu_node = of_parse_phandle(dev->of_node, "mediatek,vpu", 0); > + if (vpu_node) { > + int ret; > + > + mdp->vpu_dev = of_find_device_by_node(vpu_node); > + if (WARN_ON(!mdp->vpu_dev)) { > + dev_err(dev, "vpu pdev failed\n"); > + of_node_put(vpu_node); > + } Maybe 'of_node_put(vpu_node)' should be called when 'mdp->vpu_dev' is valid. > + ret = v4l2_device_register(dev, &mdp->v4l2_dev); > + if (ret) { > + dev_err(dev, "Failed to register v4l2 > device\n"); > + return -EINVAL; > + } > + > + ret = vb2_dma_contig_set_max_seg_size(dev, > DMA_BIT_MASK(32)); > + if (ret) { > + dev_err(dev, "Failed to set vb2 dma mag seg > size\n"); > + return -EINVAL; > + } > + > + /* > + * presence of the "mediatek,vpu" property in a device > node > + * indicates that it is the primary MDP rdma device and > MDP DMA > + * ops should be handled by its DMA callbacks. > + */ > + mdp->rdma_dev = dev; > + } > + > pm_runtime_enable(dev); > > return 0; > @@ -237,23 +274,9 @@ int mtk_mdp_comp_init(struct mtk_mdp_comp *comp, > struct device *dev) > static int mtk_mdp_comp_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > - struct device_node *vpu_node; > int status; > struct mtk_mdp_comp *comp; > > - vpu_node = of_parse_phandle(dev->of_node, "mediatek,vpu", 0); > - if (vpu_node) { > - of_node_put(vpu_node); > - /* > - * The device tree node with a mediatek,vpu property is > deemed > - * the MDP "master" device, we don't want to add a > component > - * for it in this function because the initialization > for the > - * master is done elsewhere. > - */ > - dev_info(dev, "vpu node found, not probing\n"); > - return -ENODEV; > - } > - > comp = devm_kzalloc(dev, sizeof(*comp), GFP_KERNEL); > if (!comp) > return -ENOMEM; > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > index a72a9ba41ea6..50eafcc9993d 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.c > @@ -159,6 +159,17 @@ static int mtk_mdp_master_bind(struct device > *dev) > goto err_component_bind_all; > } > > + if (mdp->vpu_dev) { > + int ret = vpu_wdt_reg_handler(mdp->vpu_dev, > mtk_mdp_reset_handler, mdp, > + VPU_RST_MDP); > + if (ret) { > + dev_err(dev, "Failed to register reset > handler\n"); > + goto err_wdt_reg; > + } > + } else { > + dev_err(dev, "no vpu_dev found\n"); > + } > + > status = mtk_mdp_register_m2m_device(mdp); > if (status) { > dev_err(dev, "Failed to register m2m device: %d\n", > status); > @@ -170,6 +181,8 @@ static int mtk_mdp_master_bind(struct device > *dev) > return 0; > > err_mtk_mdp_register_m2m_device: > + > +err_wdt_reg: > component_unbind_all(dev, mdp); > > err_component_bind_all: > @@ -228,8 +241,13 @@ static int mtk_mdp_probe(struct platform_device > *pdev) > of_node_put(node); > parent = dev->of_node; > dev_warn(dev, "device tree is out of date\n"); > - } else { > + } else if (dev->of_node) { > parent = dev->of_node->parent; > + } else if (dev->parent) { > + /* maybe we were created from a call to > platform_device_register_data() */ > + parent = dev->parent->parent->of_node; > + } else { > + return -ENODEV; > } > > /* Iterate over sibling MDP function blocks */ > @@ -262,16 +280,6 @@ static int mtk_mdp_probe(struct platform_device > *pdev) > } > } > > - /* > - * Create a component for myself so that clocks can be toggled > in > - * clock_on(). > - */ > - ret = mtk_mdp_comp_init(&mdp->comp_self, dev); > - if (ret) { > - dev_err(dev, "Failed to initialize component\n"); > - goto err_comp; > - } > - > mdp->job_wq = > create_singlethread_workqueue(MTK_MDP_MODULE_NAME); > if (!mdp->job_wq) { > dev_err(&pdev->dev, "unable to alloc job workqueue\n"); > @@ -287,29 +295,8 @@ static int mtk_mdp_probe(struct platform_device > *pdev) > } > INIT_WORK(&mdp->wdt_work, mtk_mdp_wdt_worker); > > - ret = v4l2_device_register(dev, &mdp->v4l2_dev); > - if (ret) { > - dev_err(&pdev->dev, "Failed to register v4l2 > device\n"); > - ret = -EINVAL; > - goto err_dev_register; > - } > - > - mdp->vpu_dev = vpu_get_plat_device(pdev); > - ret = vpu_wdt_reg_handler(mdp->vpu_dev, mtk_mdp_reset_handler, > mdp, > - VPU_RST_MDP); > - if (ret) { > - dev_err(&pdev->dev, "Failed to register reset > handler\n"); > - goto err_wdt_reg; > - } > - > platform_set_drvdata(pdev, mdp); > > - ret = vb2_dma_contig_set_max_seg_size(&pdev->dev, > DMA_BIT_MASK(32)); > - if (ret) { > - dev_err(&pdev->dev, "Failed to set vb2 dma mag seg > size\n"); > - goto err_set_max_seg_size; > - } > - > ret = component_master_add_with_match(dev, &mtk_mdp_com_ops, > match); > if (ret) { > dev_err(dev, "Component master add failed\n"); > @@ -321,22 +308,12 @@ static int mtk_mdp_probe(struct platform_device > *pdev) > return 0; > > err_component_master_add: > - vb2_dma_contig_clear_max_seg_size(&pdev->dev); > - > -err_set_max_seg_size: > - > -err_wdt_reg: > - v4l2_device_unregister(&mdp->v4l2_dev); > - > -err_dev_register: > destroy_workqueue(mdp->wdt_wq); > > err_alloc_wdt_wq: > destroy_workqueue(mdp->job_wq); > > err_alloc_job_wq: > - > -err_comp: > dev_dbg(dev, "err %d\n", ret); > return ret; > } > @@ -404,7 +381,6 @@ static struct platform_driver mtk_mdp_driver = { > .driver = { > .name = MTK_MDP_MODULE_NAME, > .pm = &mtk_mdp_pm_ops, > - .of_match_table = mtk_mdp_of_ids, > } > }; > > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_core.h > b/drivers/media/platform/mtk-mdp/mtk_mdp_core.h > index 8a52539b15d4..9fcd8b8e7c25 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_core.h > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_core.h > @@ -133,6 +133,7 @@ struct mtk_mdp_variant { > * struct mtk_mdp_dev - abstraction for image processor entity > * @lock: the mutex protecting this data structure > * @vpulock: the mutex protecting the communication with VPU > + * @rdma_dev: device pointer to rdma device for MDP > * @pdev: pointer to the image processor platform device > * @variant: the IP variant information > * @id: image processor device index > (0..MTK_MDP_MAX_DEVS) > @@ -151,6 +152,7 @@ struct mtk_mdp_variant { > struct mtk_mdp_dev { > struct mutex lock; > struct mutex vpulock; > + struct device *rdma_dev; > struct platform_device *pdev; > struct mtk_mdp_variant *variant; > u16 id; > diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c > b/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c > index f14779e7596e..9834d3bbe851 100644 > --- a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c > +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c > @@ -929,7 +929,7 @@ static int mtk_mdp_m2m_queue_init(void *priv, > struct vb2_queue *src_vq, > src_vq->mem_ops = &vb2_dma_contig_memops; > src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer); > src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; > - src_vq->dev = &ctx->mdp_dev->pdev->dev; > + src_vq->dev = ctx->mdp_dev->rdma_dev; > src_vq->lock = &ctx->mdp_dev->lock; > > ret = vb2_queue_init(src_vq); > @@ -944,7 +944,7 @@ static int mtk_mdp_m2m_queue_init(void *priv, > struct vb2_queue *src_vq, > dst_vq->mem_ops = &vb2_dma_contig_memops; > dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer); > dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; > - dst_vq->dev = &ctx->mdp_dev->pdev->dev; > + dst_vq->dev = ctx->mdp_dev->rdma_dev; > dst_vq->lock = &ctx->mdp_dev->lock; > > return vb2_queue_init(dst_vq); > -- > 2.32.0.554.ge1b32706d8-goog > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel