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=-14.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 E1242C4338F for ; Fri, 6 Aug 2021 17:11:34 +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 9A5EA611C6 for ; Fri, 6 Aug 2021 17:11:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 9A5EA611C6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org 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:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=kEKfmRuOIQU2aUYu2VJtfPo8Tv+aKuo4kQlItl2s7aY=; b=Bg7C5r7z9adylq OCiku2HSwR+z1dfcg+6tlx5XzYUl3flcuJIAZeW1bRJMbonVV6fJW1zd8Lg6ej/qNzaBjdqTbjFxO Xu00XHz/niCfVcnEORfMlusx0U76FM30RvrYsD+V3Jz5yLodNW9aL6hEJlcUEKK3JOtRvnzLTB0JI NODN2OJPK0LbRurj5toNWJ8lBfnMEivyF24CXJnO71PYzlj29GRhCc6wqVp9/CJs8AHqcIbWE8sak k9eEMT4rzResw/r/GyOrlyjgDLa6bwKyhiJo0NQE2s8yQvt5gtFmTM3VPiuVxhT22W+/L9dPZeQz2 RoAevyuuPsFvCH9Q7eTg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mC3NQ-00D2BA-4Z; Fri, 06 Aug 2021 17:11:20 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mC3NC-00D29g-NS; Fri, 06 Aug 2021 17:11:09 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3875561205; Fri, 6 Aug 2021 17:11:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1628269866; bh=O0771EaCX+PHMTW//1AJu28HmkvGdYXV01bhOOIy/w4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=nQvGhbAE6S6AcXp3BPv3Ge5NltZrI1FAO5eO2ljqDrG3ZPb3OlmYikjvjqRTJKo9S OkmZ+JhYgB4/cToZUuU1Tt+cuus7pAojpKeQzz0aeQ74HhC4JE3DlXvheiDHF0u8Tj Q4D2mVT6CVEezbo8NSpJhEO3qTUz9Iccf7t4vIJPiT4SDFJnBQYvCPbju0226Hblld BnRw888UAe9SsJms1EZrNAXskT++DJPYeX615UQ1OqdJ6ih/qZr9gE2id9KHollVtC GjFiQJyES2HLuZp+rZ9NRQhuwJxXDClWz2yLCcb1oQWxCtfHUP71yMZw+ZTF2RYRLO 1oHOGb2U9DTCg== Received: by mail-ed1-f52.google.com with SMTP id y12so13981046edo.6; Fri, 06 Aug 2021 10:11:06 -0700 (PDT) X-Gm-Message-State: AOAM532+MBHW6Dw4wbD1LnBCZHQFbyqaSvBdUjxKfxd2c5Ju5yTo0v2P 8xT9A3GTwjHmMl0aDTR/9cbV5g5ytLcD2eNHnA== X-Google-Smtp-Source: ABdhPJzomInfpBZk1wb/IQTQmTY+/0lUdakWl5r8bwQcgCOCa/htcMif5CLvk5KeYercX9vZ6jD3/3zxX2lZ4vXUxJk= X-Received: by 2002:aa7:c6d3:: with SMTP id b19mr14378038eds.303.1628269864637; Fri, 06 Aug 2021 10:11:04 -0700 (PDT) MIME-Version: 1.0 References: <20210805205226.24880-1-jason-jh.lin@mediatek.com> <20210805205226.24880-7-jason-jh.lin@mediatek.com> In-Reply-To: <20210805205226.24880-7-jason-jh.lin@mediatek.com> From: Chun-Kuang Hu Date: Sat, 7 Aug 2021 01:10:53 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v6 6/7] drm/mediatek: add MERGE support for mediatek-drm To: "jason-jh.lin" Cc: Rob Herring , Matthias Brugger , Chun-Kuang Hu , Philipp Zabel , Enric Balletbo i Serra , fshao@chromium.org, David Airlie , Daniel Vetter , Fabien Parent , Hsin-Yi Wang , Yongqiang Niu , Nancy Lin , singo.chang@mediatek.com, DTML , Linux ARM , "moderated list:ARM/Mediatek SoC support" , linux-kernel , DRI Development X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210806_101106_857788_0F8B015D X-CRM114-Status: GOOD ( 27.28 ) 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="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org SGksIEphc29uOgoKamFzb24tamgubGluIDxqYXNvbi1qaC5saW5AbWVkaWF0ZWsuY29tPiDmlrwg MjAyMeW5tDjmnIg25pelIOmAseS6lCDkuIrljYg0OjUy5a+r6YGT77yaCj4KPiBBZGQgTUVSR0Ug ZW5naW5lIGZpbGU6Cj4gTUVSR0UgbW9kdWxlIGlzIHVzZWQgdG8gbWVyZ2UgdHdvIHNsaWNlLXBl ci1saW5lIGlucHV0cwo+IGludG8gb25lIHNpZGUtYnktc2lkZSBvdXRwdXQuCj4KPiBTaWduZWQt b2ZmLWJ5OiBqYXNvbi1qaC5saW4gPGphc29uLWpoLmxpbkBtZWRpYXRlay5jb20+Cj4gLS0tCj4g VGhpcyBwYXRjaCBpcyBiYXNlIG9uIFsxXQo+Cj4gWzFdIGR0LWJpbmRpbmdzOiBtZWRpYXRlazog ZGlzcGxheTogYWRkIG10ODE5NSBTb0MgYmluZGluZwo+IGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5l bC5vcmcvcHJvamVjdC9saW51eC1tZWRpYXRlay9wYXRjaC8yMDIxMDgwNTE3MTM0Ni4yNDI0OS01 LWphc29uLWpoLmxpbkBtZWRpYXRlay5jb20vCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2Rpc3BfZHJ2LmggICAgIHwgICA4ICsKPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kaXNwX21lcmdlLmMgICB8IDI2MyArKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5oIHwgICAxICsKPiAgZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMgICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCAgICAgIHwgICAxICsKPiAgNiBmaWxlcyBjaGFu Z2VkLCAyNzcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX21lcmdlLmMKPgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvTWFrZWZpbGUKPiBpbmRleCBkYzU0YTdhNjkwMDUuLjUzOGUwMDg3YTQ0YyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiBAQCAtMyw2ICszLDcgQEAKPiAgbWVkaWF0 ZWstZHJtLXkgOj0gbXRrX2Rpc3BfY2NvcnIubyBcCj4gICAgICAgICAgICAgICAgICAgbXRrX2Rp c3BfY29sb3IubyBcCj4gICAgICAgICAgICAgICAgICAgbXRrX2Rpc3BfZ2FtbWEubyBcCj4gKyAg ICAgICAgICAgICAgICAgbXRrX2Rpc3BfbWVyZ2UubyBcCj4gICAgICAgICAgICAgICAgICAgbXRr X2Rpc3Bfb3ZsLm8gXAo+ICAgICAgICAgICAgICAgICAgIG10a19kaXNwX3JkbWEubyBcCj4gICAg ICAgICAgICAgICAgICAgbXRrX2RybV9jcnRjLm8gXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2Rpc3BfZHJ2LmgKPiBpbmRleCBjYWZkOWRmMmQ2M2IuLmY0MDdjZDlkODczZSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfZHJ2LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfZHJ2LmgKPiBAQCAtNDYsNiArNDYsMTQg QEAgdm9pZCBtdGtfZ2FtbWFfc2V0X2NvbW1vbih2b2lkIF9faW9tZW0gKnJlZ3MsIHN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqc3RhdGUpOwo+ICB2b2lkIG10a19nYW1tYV9zdGFydChzdHJ1Y3QgZGV2 aWNlICpkZXYpOwo+ICB2b2lkIG10a19nYW1tYV9zdG9wKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4K PiAraW50IG10a19tZXJnZV9jbGtfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gK3ZvaWQg bXRrX21lcmdlX2Nsa19kaXNhYmxlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gK3ZvaWQgbXRrX21l cmdlX2NvbmZpZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB3aWR0aCwKPiArICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwgdW5zaWduZWQgaW50IHZyZWZy ZXNoLAo+ICsgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnBjLCBzdHJ1Y3QgY21k cV9wa3QgKmNtZHFfcGt0KTsKPiArdm9pZCBtdGtfbWVyZ2Vfc3RhcnQoc3RydWN0IGRldmljZSAq ZGV2KTsKPiArdm9pZCBtdGtfbWVyZ2Vfc3RvcChzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ICsKPiAg dm9pZCBtdGtfb3ZsX2JnY2xyX2luX29uKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gIHZvaWQgbXRr X292bF9iZ2Nscl9pbl9vZmYoc3RydWN0IGRldmljZSAqZGV2KTsKPiAgdm9pZCBtdGtfb3ZsX2J5 cGFzc19zaGFkb3coc3RydWN0IGRldmljZSAqZGV2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kaXNwX21lcmdlLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2Rpc3BfbWVyZ2UuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MDAwMDAwLi5mM2QyNjI3OTIwNTQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kaXNwX21lcmdlLmMKPiBAQCAtMCwwICsxLDI2MyBAQAo+ICsvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMp IDIwMjEgTWVkaWFUZWsgSW5jLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4K PiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2 aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvc29jL21lZGlhdGVrL210ay1jbWRx Lmg+Cj4gKwo+ICsjaW5jbHVkZSAibXRrX2RybV9kZHBfY29tcC5oIgo+ICsjaW5jbHVkZSAibXRr X2RybV9kcnYuaCIKPiArI2luY2x1ZGUgIm10a19kaXNwX2Rydi5oIgo+ICsKPiArI2RlZmluZSBE SVNQX1JFR19NRVJHRV9DVFJMICAgICAgICAgICAgMHgwMDAKPiArI2RlZmluZSBNRVJHRV9FTiAg ICAgICAgICAgICAgICAgICAgICAgMQoKT25lIG1vcmUgaW5kZW50IGZvciB0aGUgYml0d2lzZSB2 YWx1ZS4KCj4gKyNkZWZpbmUgRElTUF9SRUdfTUVSR0VfQ0ZHXzAgICAgICAgICAgIDB4MDEwCj4g KyNkZWZpbmUgRElTUF9SRUdfTUVSR0VfQ0ZHXzQgICAgICAgICAgIDB4MDIwCj4gKyNkZWZpbmUg RElTUF9SRUdfTUVSR0VfQ0ZHXzEwICAgICAgICAgIDB4MDM4Cj4gKy8qIG5vIHN3YXAgKi8KPiAr I2RlZmluZSBTV0FQX01PREUgICAgICAgICAgICAgICAgICAgICAgMAo+ICsjZGVmaW5lIEZMRF9T V0FQX01PREUgICAgICAgICAgICAgICAgICBHRU5NQVNLKDQsIDApCj4gKyNkZWZpbmUgRElTUF9S RUdfTUVSR0VfQ0ZHXzEyICAgICAgICAgIDB4MDQwCj4gKyNkZWZpbmUgQ0ZHXzEwXzEwXzFQSV8y UE9fQlVGX01PREUgICAgIDYKPiArI2RlZmluZSBDRkdfMTBfMTBfMlBJXzJQT19CVUZfTU9ERSAg ICAgOAo+ICsjZGVmaW5lIEZMRF9DRkdfTUVSR0VfTU9ERSAgICAgICAgICAgICBHRU5NQVNLKDQs IDApCj4gKyNkZWZpbmUgRElTUF9SRUdfTUVSR0VfQ0ZHXzI0ICAgICAgICAgIDB4MDcwCj4gKyNk ZWZpbmUgRElTUF9SRUdfTUVSR0VfQ0ZHXzI1ICAgICAgICAgIDB4MDc0Cj4gKyNkZWZpbmUgRElT UF9SRUdfTUVSR0VfQ0ZHXzM2ICAgICAgICAgIDB4MGEwCj4gKyNkZWZpbmUgVUxUUkFfRU4gICAg ICAgICAgICAgICAgICAgICAgIDEKPiArI2RlZmluZSBQUkVVTFRSQV9FTiAgICAgICAgICAgICAg ICAgICAgMQo+ICsjZGVmaW5lIEhBTFRfRk9SX0RWRlNfRU4gICAgICAgICAgICAgICAwCj4gKyNk ZWZpbmUgRkxEX1VMVFJBX0VOICAgICAgICAgICAgICAgICAgIEdFTk1BU0soMCwgMCkKPiArI2Rl ZmluZSBGTERfUFJFVUxUUkFfRU4gICAgICAgICAgICAgICAgICAgICAgICBHRU5NQVNLKDQsIDQp Cj4gKyNkZWZpbmUgRkxEX0hBTFRfRk9SX0RWRlNfRU4gICAgICAgICAgIEdFTk1BU0soOCwgOCkK PiArI2RlZmluZSBESVNQX1JFR19NRVJHRV9DRkdfMzcgICAgICAgICAgMHgwYTQKPiArLyogMDog T2ZmLCAxOiBTUkFNMCwgMjogU1JBTTEsIDM6IFNSQU0wICsgU1JBTTEgKi8KPiArI2RlZmluZSBC VUZGRVJfTU9ERSAgICAgICAgICAgICAgICAgICAgMwo+ICsjZGVmaW5lIEZMRF9CVUZGRVJfTU9E RSAgICAgICAgICAgICAgICAgICAgICAgIEdFTk1BU0soMSwgMCkKPiArI2RlZmluZSBESVNQX1JF R19NRVJHRV9DRkdfMzggICAgICAgICAgMHgwYTgKPiArI2RlZmluZSBGTERfVkRFX0JMT0NLX1VM VFJBICAgICAgICAgICAgR0VOTUFTSygwLCAwKQo+ICsjZGVmaW5lIEZMRF9WQUxJRF9USF9CTE9D S19VTFRSQSAgICAgICBHRU5NQVNLKDQsIDQpCj4gKyNkZWZpbmUgRkxEX1VMVFJBX0ZJRk9fVkFM SURfVEggICAgICAgICAgICAgICAgR0VOTUFTSygzMSwgMTYpCj4gKyNkZWZpbmUgRElTUF9SRUdf TUVSR0VfQ0ZHXzM5ICAgICAgICAgIDB4MGFjCj4gKyNkZWZpbmUgRkxEX05WREVfRk9SQ0VfUFJF VUxUUkEgICAgICAgICAgICAgICAgR0VOTUFTSyg4LCA4KQo+ICsjZGVmaW5lIEZMRF9OVkFMSURf VEhfRk9SQ0VfUFJFVUxUUkEgICBHRU5NQVNLKDEyLCAxMikKPiArI2RlZmluZSBGTERfUFJFVUxU UkFfRklGT19WQUxJRF9USCAgICAgR0VOTUFTSygzMSwgMTYpCj4gKyNkZWZpbmUgRElTUF9SRUdf TUVSR0VfQ0ZHXzQwICAgICAgICAgIDB4MGIwCj4gKy8qIDYgdXMsIDYwME0gcGl4ZWwvc2VjICov Cj4gKyNkZWZpbmUgVUxUUkFfVEhfTE9XICAgICAgICAgICAgICAgICAgICg2ICogNjAwKQo+ICsv KiA4IHVzLCA2MDBNIHBpeGVsL3NlYyAqLwo+ICsjZGVmaW5lIFVMVFJBX1RIX0hJR0ggICAgICAg ICAgICAgICAgICAoOCAqIDYwMCkKPiArI2RlZmluZSBGTERfVUxUUkFfVEhfTE9XICAgICAgICAg ICAgICAgR0VOTUFTSygxNSwgMCkKPiArI2RlZmluZSBGTERfVUxUUkFfVEhfSElHSCAgICAgICAg ICAgICAgR0VOTUFTSygzMSwgMTYpCj4gKyNkZWZpbmUgRElTUF9SRUdfTUVSR0VfQ0ZHXzQxICAg ICAgICAgIDB4MGI0Cj4gKy8qIDggdXMsIDYwME0gcGl4ZWwvc2VjICovCj4gKyNkZWZpbmUgUFJF VUxUUkFfVEhfTE9XICAgICAgICAgICAgICAgICAgICAgICAgKDggKiA2MDApCj4gKy8qIDkgdXMs IDYwME0gcGl4ZWwvc2VjICovCgpBZGQgY29tbWVudCB0aGF0ICI2IHVzIH4gOXVzIGlzIGV4cGVy aWVuY2UgdmFsdWUgYW5kIG1heCBtbXN5cyBjbG9jawpmcmVxdWVuY3kgaXMgNTk0TUh6IiwgYW5k IEkgdGhpbmsgeW91IHNob3VsZCB1c2UgNTk0IGluc3RlYWQgb2YgNjAwLgoKUmVnYXJkcywKQ2h1 bi1LdWFuZy4KCj4gKyNkZWZpbmUgUFJFVUxUUkFfVEhfSElHSCAgICAgICAgICAgICAgICg5ICog NjAwKQo+ICsjZGVmaW5lIEZMRF9QUkVVTFRSQV9USF9MT1cgICAgICAgICAgICBHRU5NQVNLKDE1 LCAwKQo+ICsjZGVmaW5lIEZMRF9QUkVVTFRSQV9USF9ISUdIICAgICAgICAgICBHRU5NQVNLKDMx LCAxNikKPiArCj4gK3N0cnVjdCBtdGtfZGlzcF9tZXJnZSB7Cj4gKyAgICAgICB2b2lkIF9faW9t ZW0gKnJlZ3M7Cj4gKyAgICAgICBzdHJ1Y3QgY2xrICpjbGs7Cj4gKyAgICAgICBzdHJ1Y3QgY2xr ICphc3luY19jbGs7Cj4gKyAgICAgICBzdHJ1Y3QgY21kcV9jbGllbnRfcmVnICAgICAgICAgIGNt ZHFfcmVnOwo+ICsgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX2Vu Owo+ICt9Owo+ICsKPiArdm9pZCBtdGtfbWVyZ2Vfc3RhcnQoc3RydWN0IGRldmljZSAqZGV2KQo+ ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rpc3BfbWVyZ2UgKnByaXYgPSBkZXZfZ2V0X2RydmRh dGEoZGV2KTsKPiArCj4gKyAgICAgICB3cml0ZWwoTUVSR0VfRU4sIHByaXYtPnJlZ3MgKyBESVNQ X1JFR19NRVJHRV9DVFJMKTsKPiArfQo+ICsKPiArdm9pZCBtdGtfbWVyZ2Vfc3RvcChzdHJ1Y3Qg ZGV2aWNlICpkZXYpCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdGtfZGlzcF9tZXJnZSAqcHJpdiA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArICAgICAgIHdyaXRlbCgweDAsIHByaXYtPnJl Z3MgKyBESVNQX1JFR19NRVJHRV9DVFJMKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX21l cmdlX2ZpZm9fc2V0dGluZyhzdHJ1Y3QgbXRrX2Rpc3BfbWVyZ2UgKnByaXYsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21kcV9wa3QgKmhhbmRsZSkKPiArewo+ ICsgICAgICAgbXRrX2RkcF93cml0ZV9tYXNrKGhhbmRsZSwgVUxUUkFfRU4gfCBQUkVVTFRSQV9F TiA8PCA0IHwgSEFMVF9GT1JfRFZGU19FTiA8PCA4LAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICZwcml2LT5jbWRxX3JlZywgcHJpdi0+cmVncywgRElTUF9SRUdfTUVSR0VfQ0ZHXzM2LAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEZMRF9VTFRSQV9FTiB8IEZMRF9QUkVVTFRSQV9F TiB8IEZMRF9IQUxUX0ZPUl9EVkZTX0VOKTsKPiArCj4gKyAgICAgICBtdGtfZGRwX3dyaXRlX21h c2soaGFuZGxlLCBCVUZGRVJfTU9ERSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJp di0+Y21kcV9yZWcsIHByaXYtPnJlZ3MsIERJU1BfUkVHX01FUkdFX0NGR18zNywKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBGTERfQlVGRkVSX01PREUpOwo+ICsKPiArICAgICAgIG10a19k ZHBfd3JpdGVfbWFzayhoYW5kbGUsIDAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnBy aXYtPmNtZHFfcmVnLCBwcml2LT5yZWdzLCBESVNQX1JFR19NRVJHRV9DRkdfMzgsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgRkxEX1ZERV9CTE9DS19VTFRSQSB8IEZMRF9WQUxJRF9USF9C TE9DS19VTFRSQSB8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRkxEX1VMVFJBX0ZJRk9f VkFMSURfVEgpOwo+ICsKPiArICAgICAgIG10a19kZHBfd3JpdGVfbWFzayhoYW5kbGUsIDAsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgJnByaXYtPmNtZHFfcmVnLCBwcml2LT5yZWdzLCBE SVNQX1JFR19NRVJHRV9DRkdfMzksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRkxEX05W REVfRk9SQ0VfUFJFVUxUUkEgfCBGTERfTlZBTElEX1RIX0ZPUkNFX1BSRVVMVFJBIHwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBGTERfUFJFVUxUUkFfRklGT19WQUxJRF9USCk7Cj4gKwo+ ICsgICAgICAgbXRrX2RkcF93cml0ZV9tYXNrKGhhbmRsZSwgVUxUUkFfVEhfTE9XIHwgVUxUUkFf VEhfSElHSCA8PCAxNiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJpdi0+Y21kcV9y ZWcsIHByaXYtPnJlZ3MsIERJU1BfUkVHX01FUkdFX0NGR180MCwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICBGTERfVUxUUkFfVEhfTE9XIHwgRkxEX1VMVFJBX1RIX0hJR0gpOwo+ICsKPiAr ICAgICAgIG10a19kZHBfd3JpdGVfbWFzayhoYW5kbGUsIFBSRVVMVFJBX1RIX0xPVyB8IFBSRVVM VFJBX1RIX0hJR0ggPDwgMTYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnByaXYtPmNt ZHFfcmVnLCBwcml2LT5yZWdzLCBESVNQX1JFR19NRVJHRV9DRkdfNDEsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgRkxEX1BSRVVMVFJBX1RIX0xPVyB8IEZMRF9QUkVVTFRSQV9USF9ISUdI KTsKPiArfQo+ICsKPiArdm9pZCBtdGtfbWVyZ2VfY29uZmlnKHN0cnVjdCBkZXZpY2UgKmRldiwg dW5zaWduZWQgaW50IHcsCj4gKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoLCB1 bnNpZ25lZCBpbnQgdnJlZnJlc2gsCj4gKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBicGMsIHN0cnVjdCBjbWRxX3BrdCAqaGFuZGxlKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRr X2Rpc3BfbWVyZ2UgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArICAgICAgIHVuc2ln bmVkIGludCBtb2RlID0gQ0ZHXzEwXzEwXzFQSV8yUE9fQlVGX01PREU7Cj4gKwo+ICsgICAgICAg aWYgKCFoIHx8ICF3KSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiJXM6IGlucHV0 IHdpZHRoKCVkKSBvciBoZWlnaHQoJWQpIGlzIGludmFsaWRcbiIsIF9fZnVuY19fLCB3LCBoKTsK PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChw cml2LT5maWZvX2VuKSB7Cj4gKyAgICAgICAgICAgICAgIG10a19tZXJnZV9maWZvX3NldHRpbmco cHJpdiwgaGFuZGxlKTsKPiArICAgICAgICAgICAgICAgbW9kZSA9IENGR18xMF8xMF8yUElfMlBP X0JVRl9NT0RFOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG10a19kZHBfd3JpdGUoaGFuZGxl LCBoIDw8IDE2IHwgdywgJnByaXYtPmNtZHFfcmVnLCBwcml2LT5yZWdzLAo+ICsgICAgICAgICAg ICAgICAgICAgICBESVNQX1JFR19NRVJHRV9DRkdfMCk7Cj4gKyAgICAgICBtdGtfZGRwX3dyaXRl KGhhbmRsZSwgaCA8PCAxNiB8IHcsICZwcml2LT5jbWRxX3JlZywgcHJpdi0+cmVncywKPiArICAg ICAgICAgICAgICAgICAgICAgRElTUF9SRUdfTUVSR0VfQ0ZHXzQpOwo+ICsgICAgICAgbXRrX2Rk cF93cml0ZShoYW5kbGUsIGggPDwgMTYgfCB3LCAmcHJpdi0+Y21kcV9yZWcsIHByaXYtPnJlZ3Ms Cj4gKyAgICAgICAgICAgICAgICAgICAgIERJU1BfUkVHX01FUkdFX0NGR18yNCk7Cj4gKyAgICAg ICBtdGtfZGRwX3dyaXRlKGhhbmRsZSwgaCA8PCAxNiB8IHcsICZwcml2LT5jbWRxX3JlZywgcHJp di0+cmVncywKPiArICAgICAgICAgICAgICAgICAgICAgRElTUF9SRUdfTUVSR0VfQ0ZHXzI1KTsK PiArICAgICAgIG10a19kZHBfd3JpdGVfbWFzayhoYW5kbGUsIFNXQVBfTU9ERSwgJnByaXYtPmNt ZHFfcmVnLCBwcml2LT5yZWdzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIERJU1BfUkVH X01FUkdFX0NGR18xMCwgRkxEX1NXQVBfTU9ERSk7Cj4gKyAgICAgICBtdGtfZGRwX3dyaXRlX21h c2soaGFuZGxlLCBtb2RlLCAmcHJpdi0+Y21kcV9yZWcsIHByaXYtPnJlZ3MsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgRElTUF9SRUdfTUVSR0VfQ0ZHXzEyLCBGTERfQ0ZHX01FUkdFX01P REUpOwo+ICt9Cj4gKwo+ICtpbnQgbXRrX21lcmdlX2Nsa19lbmFibGUoc3RydWN0IGRldmljZSAq ZGV2KQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0ID0gMDsKPiArICAgICAgIHN0cnVjdCBtdGtfZGlz cF9tZXJnZSAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArICAgICAgIHJldCA9 IGNsa19wcmVwYXJlX2VuYWJsZShwcml2LT5jbGspOwo+ICsgICAgICAgaWYgKHJldCkKPiArICAg ICAgICAgICAgICAgcHJfZXJyKCJtZXJnZSBjbGsgcHJlcGFyZSBlbmFibGUgZmFpbGVkXG4iKTsK PiArCj4gKyAgICAgICBpZiAocHJpdi0+YXN5bmNfY2xrKSB7Cj4gKyAgICAgICAgICAgICAgIHJl dCA9IGNsa19wcmVwYXJlX2VuYWJsZShwcml2LT5hc3luY19jbGspOwo+ICsgICAgICAgICAgICAg ICBpZiAocmV0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHByX2VycigiYXN5bmMgY2xrIHBy ZXBhcmUgZW5hYmxlIGZhaWxlZFxuIik7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJu IHJldDsKPiArfQo+ICsKPiArdm9pZCBtdGtfbWVyZ2VfY2xrX2Rpc2FibGUoc3RydWN0IGRldmlj ZSAqZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rpc3BfbWVyZ2UgKnByaXYgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKPiArCj4gKyAgICAgICBpZiAocHJpdi0+YXN5bmNfY2xrKQo+ICsg ICAgICAgICAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+YXN5bmNfY2xrKTsKPiAr Cj4gKyAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+Y2xrKTsKPiArfQo+ICsKPiAr c3RhdGljIGludCBtdGtfZGlzcF9tZXJnZV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0 IGRldmljZSAqbWFzdGVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpk YXRhKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRr X2Rpc3BfbWVyZ2VfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFz dGVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKQo+ICt7 Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBtdGtfZGlzcF9t ZXJnZV9jb21wb25lbnRfb3BzID0gewo+ICsgICAgICAgLmJpbmQgICA9IG10a19kaXNwX21lcmdl X2JpbmQsCj4gKyAgICAgICAudW5iaW5kID0gbXRrX2Rpc3BfbWVyZ2VfdW5iaW5kLAo+ICt9Owo+ ICsKPiArc3RhdGljIGludCBtdGtfZGlzcF9tZXJnZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2 Owo+ICsgICAgICAgc3RydWN0IHJlc291cmNlICpyZXM7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rp c3BfbWVyZ2UgKnByaXY7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIHByaXYgPSBk ZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKPiArICAgICAgIGlm ICghcHJpdikKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgICAgICAg cmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiAr ICAgICAgIHByaXYtPnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+ICsg ICAgICAgaWYgKElTX0VSUihwcml2LT5yZWdzKSkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJy KGRldiwgImZhaWxlZCB0byBpb3JlbWFwIG1lcmdlXG4iKTsKPiArICAgICAgICAgICAgICAgcmV0 dXJuIFBUUl9FUlIocHJpdi0+cmVncyk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcHJpdi0+ Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgTlVMTCk7Cj4gKyAgICAgICBpZiAoSVNfRVJSKHByaXYt PmNsaykpIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IG1l cmdlIGNsa1xuIik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHByaXYtPmNsayk7 Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcHJpdi0+YXN5bmNfY2xrID0gb2ZfY2xrX2dldChk ZXYtPm9mX25vZGUsIDEpOwo+ICsgICAgICAgaWYgKElTX0VSUihwcml2LT5hc3luY19jbGspKSB7 Cj4gKyAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIocHJpdi0+YXN5bmNfY2xrKTsKPiArICAg ICAgICAgICAgICAgZGV2X2RiZyhkZXYsICJObyBtZXJnZSBhc3luYyBjbG9jazogJWRcbiIsIHJl dCk7Cj4gKyAgICAgICAgICAgICAgIHByaXYtPmFzeW5jX2NsayA9IE5VTEw7Cj4gKyAgICAgICB9 Cj4gKwo+ICsjaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19NVEtfQ01EUSkKPiArICAgICAgIHJldCA9 IGNtZHFfZGV2X2dldF9jbGllbnRfcmVnKGRldiwgJnByaXYtPmNtZHFfcmVnLCAwKTsKPiArICAg ICAgIGlmIChyZXQpCj4gKyAgICAgICAgICAgICAgIGRldl9kYmcoZGV2LCAiZ2V0IG1lZGlhdGVr LGdjZS1jbGllbnQtcmVnIGZhaWwhXG4iKTsKPiArI2VuZGlmCj4gKwo+ICsgICAgICAgcHJpdi0+ Zmlmb19lbiA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYtPm9mX25vZGUsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZWRpYXRlayxtZXJnZS1maWZv LWVuIik7Cj4gKwo+ICsgICAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7Cj4g Kwo+ICsgICAgICAgcmV0ID0gY29tcG9uZW50X2FkZChkZXYsICZtdGtfZGlzcF9tZXJnZV9jb21w b25lbnRfb3BzKTsKPiArICAgICAgIGlmIChyZXQgIT0gMCkKPiArICAgICAgICAgICAgICAgZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gYWRkIGNvbXBvbmVudDogJWRcbiIsIHJldCk7Cj4gKwo+ICsg ICAgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfZGlzcF9tZXJnZV9y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsgICAgICAgY29tcG9u ZW50X2RlbCgmcGRldi0+ZGV2LCAmbXRrX2Rpc3BfbWVyZ2VfY29tcG9uZW50X29wcyk7Cj4gKwo+ ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIG10a19kaXNwX21lcmdlX2RyaXZlcl9kdF9tYXRjaFtdID0gewo+ICsgICAgICAgeyAu Y29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxOTUtZGlzcC1tZXJnZSIsIH0sCj4gKyAgICAgICB7 fSwKPiArfTsKPiArCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10a19kaXNwX21lcmdlX2Ry aXZlcl9kdF9tYXRjaCk7Cj4gKwo+ICtzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kaXNwX21l cmdlX2RyaXZlciA9IHsKPiArICAgICAgIC5wcm9iZSA9IG10a19kaXNwX21lcmdlX3Byb2JlLAo+ ICsgICAgICAgLnJlbW92ZSA9IG10a19kaXNwX21lcmdlX3JlbW92ZSwKPiArICAgICAgIC5kcml2 ZXIgPSB7Cj4gKyAgICAgICAgICAgICAgIC5uYW1lID0gIm1lZGlhdGVrLWRpc3AtbWVyZ2UiLAo+ ICsgICAgICAgICAgICAgICAub3duZXIgPSBUSElTX01PRFVMRSwKPiArICAgICAgICAgICAgICAg Lm9mX21hdGNoX3RhYmxlID0gbXRrX2Rpc3BfbWVyZ2VfZHJpdmVyX2R0X21hdGNoLAo+ICsgICAg ICAgfSwKPiArfTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fZGRwX2NvbXAuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9jb21w LmgKPiBpbmRleCA1NjBiZTZiYzlkMGUuLmI0MmE0N2MwNjk1NiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuaAo+IEBAIC0yNSw2ICsyNSw3IEBAIGVu dW0gbXRrX2RkcF9jb21wX3R5cGUgewo+ICAgICAgICAgTVRLX0RJU1BfRElUSEVSLAo+ICAgICAg ICAgTVRLX0RJU1BfRFNDLAo+ICAgICAgICAgTVRLX0RJU1BfR0FNTUEsCj4gKyAgICAgICBNVEtf RElTUF9NRVJHRSwKPiAgICAgICAgIE1US19ESVNQX01VVEVYLAo+ICAgICAgICAgTVRLX0RJU1Bf T0QsCj4gICAgICAgICBNVEtfRElTUF9PVkwsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fZHJ2LmMKPiBpbmRleCBhOTVkYzEwMDZiODIuLjVlYjljMGEwNDQ0NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCj4gQEAgLTUzMiwxMyArNTMyLDE0IEBAIHN0 YXRpYyBpbnQgbXRrX2RybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAg ICAgICAgICAgICAgICBwcml2YXRlLT5jb21wX25vZGVbY29tcF9pZF0gPSBvZl9ub2RlX2dldChu b2RlKTsKPgo+ICAgICAgICAgICAgICAgICAvKgo+IC0gICAgICAgICAgICAgICAgKiBDdXJyZW50 bHkgb25seSB0aGUgQ0NPUlIsIENPTE9SLCBHQU1NQSwgT1ZMLCBSRE1BLCBEU0ksIGFuZCBEUEkK PiArICAgICAgICAgICAgICAgICogQ3VycmVudGx5IG9ubHkgdGhlIENDT1JSLCBDT0xPUiwgR0FN TUEsIE1FUkdFLCBPVkwsIFJETUEsIERTSSwgYW5kIERQSQo+ICAgICAgICAgICAgICAgICAgKiBi bG9ja3MgaGF2ZSBzZXBhcmF0ZSBjb21wb25lbnQgcGxhdGZvcm0gZHJpdmVycyBhbmQgaW5pdGlh bGl6ZSB0aGVpciBvd24KPiAgICAgICAgICAgICAgICAgICogRERQIGNvbXBvbmVudCBzdHJ1Y3R1 cmUuIFRoZSBvdGhlcnMgYXJlIGluaXRpYWxpemVkIGhlcmUuCj4gICAgICAgICAgICAgICAgICAq Lwo+ICAgICAgICAgICAgICAgICBpZiAoY29tcF90eXBlID09IE1US19ESVNQX0NDT1JSIHx8Cj4g ICAgICAgICAgICAgICAgICAgICBjb21wX3R5cGUgPT0gTVRLX0RJU1BfQ09MT1IgfHwKPiAgICAg ICAgICAgICAgICAgICAgIGNvbXBfdHlwZSA9PSBNVEtfRElTUF9HQU1NQSB8fAo+ICsgICAgICAg ICAgICAgICAgICAgY29tcF90eXBlID09IE1US19ESVNQX01FUkdFIHx8Cj4gICAgICAgICAgICAg ICAgICAgICBjb21wX3R5cGUgPT0gTVRLX0RJU1BfT1ZMIHx8Cj4gICAgICAgICAgICAgICAgICAg ICBjb21wX3R5cGUgPT0gTVRLX0RJU1BfT1ZMXzJMIHx8Cj4gICAgICAgICAgICAgICAgICAgICBj b21wX3R5cGUgPT0gTVRLX0RJU1BfUkRNQSB8fAo+IEBAIC02MzksNiArNjQwLDcgQEAgc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKiBjb25zdCBtdGtfZHJtX2RyaXZlcnNbXSA9IHsKPiAg ICAgICAgICZtdGtfZGlzcF9jY29ycl9kcml2ZXIsCj4gICAgICAgICAmbXRrX2Rpc3BfY29sb3Jf ZHJpdmVyLAo+ICAgICAgICAgJm10a19kaXNwX2dhbW1hX2RyaXZlciwKPiArICAgICAgICZtdGtf ZGlzcF9tZXJnZV9kcml2ZXIsCj4gICAgICAgICAmbXRrX2Rpc3Bfb3ZsX2RyaXZlciwKPiAgICAg ICAgICZtdGtfZGlzcF9yZG1hX2RyaXZlciwKPiAgICAgICAgICZtdGtfZHBpX2RyaXZlciwKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaAo+IGluZGV4IDYzN2Y1NjY5ZTg5NS4u MGZhNDE3MjE5YTY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmgK PiBAQCAtNDksNiArNDksNyBAQCBzdHJ1Y3QgbXRrX2RybV9wcml2YXRlIHsKPiAgZXh0ZXJuIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3BfY2NvcnJfZHJpdmVyOwo+ICBleHRlcm4gc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZGlzcF9jb2xvcl9kcml2ZXI7Cj4gIGV4dGVybiBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kaXNwX2dhbW1hX2RyaXZlcjsKPiArZXh0ZXJuIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3BfbWVyZ2VfZHJpdmVyOwo+ICBleHRlcm4gc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBtdGtfZGlzcF9vdmxfZHJpdmVyOwo+ICBleHRlcm4gc3RydWN0IHBs YXRmb3JtX2RyaXZlciBtdGtfZGlzcF9yZG1hX2RyaXZlcjsKPiAgZXh0ZXJuIHN0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgbXRrX2RwaV9kcml2ZXI7Cj4gLS0KPiAyLjE4LjAKPgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtbWVkaWF0ZWsgbWFpbGlu ZyBsaXN0CkxpbnV4LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tZWRpYXRlawo= 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=-14.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 8F296C4338F for ; Fri, 6 Aug 2021 17:13:09 +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 4519F611C6 for ; Fri, 6 Aug 2021 17:13:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 4519F611C6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org 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:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+Y6ZQrlB5wv+b0uIaMuSO/xKV9/Xn/Jl5BUI9WiVpsc=; b=a9VzSK/BlE8aYL M3LZLFP9wiQlzbJ/NpDhjAWTlNk0/OUdifUe/TosRUY87rFVVHasyeMfmReFtg1LE8aPQZ7WZCY0i PX2a+imldfPw94fQGTTnsU23rXpFuQFEyf7BBexYdZFkDU9p2+Jxy8eDM5HhZL1tE6ti3WyGw/mfe 8ADeVOhKEkP5d8k1Z114gT9XnG/LxVhCdy+aKN2rZVwelLtEwcOa1VOfAIvNX1wV0Z424a6iAehcr YfE1KpHDH3lHzIItgKkhIXqbywU0+nZrYd30flLT+r/IRv7qjTZKoRYSFczGXCOZ7s3ZJYONfDetQ SXuY2fKe5wVdQuHKyE2Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mC3NG-00D2A5-Qf; Fri, 06 Aug 2021 17:11:10 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mC3NC-00D29g-NS; Fri, 06 Aug 2021 17:11:09 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3875561205; Fri, 6 Aug 2021 17:11:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1628269866; bh=O0771EaCX+PHMTW//1AJu28HmkvGdYXV01bhOOIy/w4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=nQvGhbAE6S6AcXp3BPv3Ge5NltZrI1FAO5eO2ljqDrG3ZPb3OlmYikjvjqRTJKo9S OkmZ+JhYgB4/cToZUuU1Tt+cuus7pAojpKeQzz0aeQ74HhC4JE3DlXvheiDHF0u8Tj Q4D2mVT6CVEezbo8NSpJhEO3qTUz9Iccf7t4vIJPiT4SDFJnBQYvCPbju0226Hblld BnRw888UAe9SsJms1EZrNAXskT++DJPYeX615UQ1OqdJ6ih/qZr9gE2id9KHollVtC GjFiQJyES2HLuZp+rZ9NRQhuwJxXDClWz2yLCcb1oQWxCtfHUP71yMZw+ZTF2RYRLO 1oHOGb2U9DTCg== Received: by mail-ed1-f52.google.com with SMTP id y12so13981046edo.6; Fri, 06 Aug 2021 10:11:06 -0700 (PDT) X-Gm-Message-State: AOAM532+MBHW6Dw4wbD1LnBCZHQFbyqaSvBdUjxKfxd2c5Ju5yTo0v2P 8xT9A3GTwjHmMl0aDTR/9cbV5g5ytLcD2eNHnA== X-Google-Smtp-Source: ABdhPJzomInfpBZk1wb/IQTQmTY+/0lUdakWl5r8bwQcgCOCa/htcMif5CLvk5KeYercX9vZ6jD3/3zxX2lZ4vXUxJk= X-Received: by 2002:aa7:c6d3:: with SMTP id b19mr14378038eds.303.1628269864637; Fri, 06 Aug 2021 10:11:04 -0700 (PDT) MIME-Version: 1.0 References: <20210805205226.24880-1-jason-jh.lin@mediatek.com> <20210805205226.24880-7-jason-jh.lin@mediatek.com> In-Reply-To: <20210805205226.24880-7-jason-jh.lin@mediatek.com> From: Chun-Kuang Hu Date: Sat, 7 Aug 2021 01:10:53 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v6 6/7] drm/mediatek: add MERGE support for mediatek-drm To: "jason-jh.lin" Cc: Rob Herring , Matthias Brugger , Chun-Kuang Hu , Philipp Zabel , Enric Balletbo i Serra , fshao@chromium.org, David Airlie , Daniel Vetter , Fabien Parent , Hsin-Yi Wang , Yongqiang Niu , Nancy Lin , singo.chang@mediatek.com, DTML , Linux ARM , "moderated list:ARM/Mediatek SoC support" , linux-kernel , DRI Development X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210806_101106_857788_0F8B015D X-CRM114-Status: GOOD ( 27.28 ) 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="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksIEphc29uOgoKamFzb24tamgubGluIDxqYXNvbi1qaC5saW5AbWVkaWF0ZWsuY29tPiDmlrwg MjAyMeW5tDjmnIg25pelIOmAseS6lCDkuIrljYg0OjUy5a+r6YGT77yaCj4KPiBBZGQgTUVSR0Ug ZW5naW5lIGZpbGU6Cj4gTUVSR0UgbW9kdWxlIGlzIHVzZWQgdG8gbWVyZ2UgdHdvIHNsaWNlLXBl ci1saW5lIGlucHV0cwo+IGludG8gb25lIHNpZGUtYnktc2lkZSBvdXRwdXQuCj4KPiBTaWduZWQt b2ZmLWJ5OiBqYXNvbi1qaC5saW4gPGphc29uLWpoLmxpbkBtZWRpYXRlay5jb20+Cj4gLS0tCj4g VGhpcyBwYXRjaCBpcyBiYXNlIG9uIFsxXQo+Cj4gWzFdIGR0LWJpbmRpbmdzOiBtZWRpYXRlazog ZGlzcGxheTogYWRkIG10ODE5NSBTb0MgYmluZGluZwo+IGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5l bC5vcmcvcHJvamVjdC9saW51eC1tZWRpYXRlay9wYXRjaC8yMDIxMDgwNTE3MTM0Ni4yNDI0OS01 LWphc29uLWpoLmxpbkBtZWRpYXRlay5jb20vCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2Rpc3BfZHJ2LmggICAgIHwgICA4ICsKPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kaXNwX21lcmdlLmMgICB8IDI2MyArKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5oIHwgICAxICsKPiAgZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMgICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCAgICAgIHwgICAxICsKPiAgNiBmaWxlcyBjaGFu Z2VkLCAyNzcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX21lcmdlLmMKPgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvTWFrZWZpbGUKPiBpbmRleCBkYzU0YTdhNjkwMDUuLjUzOGUwMDg3YTQ0YyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiBAQCAtMyw2ICszLDcgQEAKPiAgbWVkaWF0 ZWstZHJtLXkgOj0gbXRrX2Rpc3BfY2NvcnIubyBcCj4gICAgICAgICAgICAgICAgICAgbXRrX2Rp c3BfY29sb3IubyBcCj4gICAgICAgICAgICAgICAgICAgbXRrX2Rpc3BfZ2FtbWEubyBcCj4gKyAg ICAgICAgICAgICAgICAgbXRrX2Rpc3BfbWVyZ2UubyBcCj4gICAgICAgICAgICAgICAgICAgbXRr X2Rpc3Bfb3ZsLm8gXAo+ICAgICAgICAgICAgICAgICAgIG10a19kaXNwX3JkbWEubyBcCj4gICAg ICAgICAgICAgICAgICAgbXRrX2RybV9jcnRjLm8gXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2Rpc3BfZHJ2LmgKPiBpbmRleCBjYWZkOWRmMmQ2M2IuLmY0MDdjZDlkODczZSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfZHJ2LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfZHJ2LmgKPiBAQCAtNDYsNiArNDYsMTQg QEAgdm9pZCBtdGtfZ2FtbWFfc2V0X2NvbW1vbih2b2lkIF9faW9tZW0gKnJlZ3MsIHN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqc3RhdGUpOwo+ICB2b2lkIG10a19nYW1tYV9zdGFydChzdHJ1Y3QgZGV2 aWNlICpkZXYpOwo+ICB2b2lkIG10a19nYW1tYV9zdG9wKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4K PiAraW50IG10a19tZXJnZV9jbGtfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gK3ZvaWQg bXRrX21lcmdlX2Nsa19kaXNhYmxlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gK3ZvaWQgbXRrX21l cmdlX2NvbmZpZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB3aWR0aCwKPiArICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwgdW5zaWduZWQgaW50IHZyZWZy ZXNoLAo+ICsgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnBjLCBzdHJ1Y3QgY21k cV9wa3QgKmNtZHFfcGt0KTsKPiArdm9pZCBtdGtfbWVyZ2Vfc3RhcnQoc3RydWN0IGRldmljZSAq ZGV2KTsKPiArdm9pZCBtdGtfbWVyZ2Vfc3RvcChzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ICsKPiAg dm9pZCBtdGtfb3ZsX2JnY2xyX2luX29uKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gIHZvaWQgbXRr X292bF9iZ2Nscl9pbl9vZmYoc3RydWN0IGRldmljZSAqZGV2KTsKPiAgdm9pZCBtdGtfb3ZsX2J5 cGFzc19zaGFkb3coc3RydWN0IGRldmljZSAqZGV2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kaXNwX21lcmdlLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2Rpc3BfbWVyZ2UuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MDAwMDAwLi5mM2QyNjI3OTIwNTQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kaXNwX21lcmdlLmMKPiBAQCAtMCwwICsxLDI2MyBAQAo+ICsvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMp IDIwMjEgTWVkaWFUZWsgSW5jLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4K PiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2 aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvc29jL21lZGlhdGVrL210ay1jbWRx Lmg+Cj4gKwo+ICsjaW5jbHVkZSAibXRrX2RybV9kZHBfY29tcC5oIgo+ICsjaW5jbHVkZSAibXRr X2RybV9kcnYuaCIKPiArI2luY2x1ZGUgIm10a19kaXNwX2Rydi5oIgo+ICsKPiArI2RlZmluZSBE SVNQX1JFR19NRVJHRV9DVFJMICAgICAgICAgICAgMHgwMDAKPiArI2RlZmluZSBNRVJHRV9FTiAg ICAgICAgICAgICAgICAgICAgICAgMQoKT25lIG1vcmUgaW5kZW50IGZvciB0aGUgYml0d2lzZSB2 YWx1ZS4KCj4gKyNkZWZpbmUgRElTUF9SRUdfTUVSR0VfQ0ZHXzAgICAgICAgICAgIDB4MDEwCj4g KyNkZWZpbmUgRElTUF9SRUdfTUVSR0VfQ0ZHXzQgICAgICAgICAgIDB4MDIwCj4gKyNkZWZpbmUg RElTUF9SRUdfTUVSR0VfQ0ZHXzEwICAgICAgICAgIDB4MDM4Cj4gKy8qIG5vIHN3YXAgKi8KPiAr I2RlZmluZSBTV0FQX01PREUgICAgICAgICAgICAgICAgICAgICAgMAo+ICsjZGVmaW5lIEZMRF9T V0FQX01PREUgICAgICAgICAgICAgICAgICBHRU5NQVNLKDQsIDApCj4gKyNkZWZpbmUgRElTUF9S RUdfTUVSR0VfQ0ZHXzEyICAgICAgICAgIDB4MDQwCj4gKyNkZWZpbmUgQ0ZHXzEwXzEwXzFQSV8y UE9fQlVGX01PREUgICAgIDYKPiArI2RlZmluZSBDRkdfMTBfMTBfMlBJXzJQT19CVUZfTU9ERSAg ICAgOAo+ICsjZGVmaW5lIEZMRF9DRkdfTUVSR0VfTU9ERSAgICAgICAgICAgICBHRU5NQVNLKDQs IDApCj4gKyNkZWZpbmUgRElTUF9SRUdfTUVSR0VfQ0ZHXzI0ICAgICAgICAgIDB4MDcwCj4gKyNk ZWZpbmUgRElTUF9SRUdfTUVSR0VfQ0ZHXzI1ICAgICAgICAgIDB4MDc0Cj4gKyNkZWZpbmUgRElT UF9SRUdfTUVSR0VfQ0ZHXzM2ICAgICAgICAgIDB4MGEwCj4gKyNkZWZpbmUgVUxUUkFfRU4gICAg ICAgICAgICAgICAgICAgICAgIDEKPiArI2RlZmluZSBQUkVVTFRSQV9FTiAgICAgICAgICAgICAg ICAgICAgMQo+ICsjZGVmaW5lIEhBTFRfRk9SX0RWRlNfRU4gICAgICAgICAgICAgICAwCj4gKyNk ZWZpbmUgRkxEX1VMVFJBX0VOICAgICAgICAgICAgICAgICAgIEdFTk1BU0soMCwgMCkKPiArI2Rl ZmluZSBGTERfUFJFVUxUUkFfRU4gICAgICAgICAgICAgICAgICAgICAgICBHRU5NQVNLKDQsIDQp Cj4gKyNkZWZpbmUgRkxEX0hBTFRfRk9SX0RWRlNfRU4gICAgICAgICAgIEdFTk1BU0soOCwgOCkK PiArI2RlZmluZSBESVNQX1JFR19NRVJHRV9DRkdfMzcgICAgICAgICAgMHgwYTQKPiArLyogMDog T2ZmLCAxOiBTUkFNMCwgMjogU1JBTTEsIDM6IFNSQU0wICsgU1JBTTEgKi8KPiArI2RlZmluZSBC VUZGRVJfTU9ERSAgICAgICAgICAgICAgICAgICAgMwo+ICsjZGVmaW5lIEZMRF9CVUZGRVJfTU9E RSAgICAgICAgICAgICAgICAgICAgICAgIEdFTk1BU0soMSwgMCkKPiArI2RlZmluZSBESVNQX1JF R19NRVJHRV9DRkdfMzggICAgICAgICAgMHgwYTgKPiArI2RlZmluZSBGTERfVkRFX0JMT0NLX1VM VFJBICAgICAgICAgICAgR0VOTUFTSygwLCAwKQo+ICsjZGVmaW5lIEZMRF9WQUxJRF9USF9CTE9D S19VTFRSQSAgICAgICBHRU5NQVNLKDQsIDQpCj4gKyNkZWZpbmUgRkxEX1VMVFJBX0ZJRk9fVkFM SURfVEggICAgICAgICAgICAgICAgR0VOTUFTSygzMSwgMTYpCj4gKyNkZWZpbmUgRElTUF9SRUdf TUVSR0VfQ0ZHXzM5ICAgICAgICAgIDB4MGFjCj4gKyNkZWZpbmUgRkxEX05WREVfRk9SQ0VfUFJF VUxUUkEgICAgICAgICAgICAgICAgR0VOTUFTSyg4LCA4KQo+ICsjZGVmaW5lIEZMRF9OVkFMSURf VEhfRk9SQ0VfUFJFVUxUUkEgICBHRU5NQVNLKDEyLCAxMikKPiArI2RlZmluZSBGTERfUFJFVUxU UkFfRklGT19WQUxJRF9USCAgICAgR0VOTUFTSygzMSwgMTYpCj4gKyNkZWZpbmUgRElTUF9SRUdf TUVSR0VfQ0ZHXzQwICAgICAgICAgIDB4MGIwCj4gKy8qIDYgdXMsIDYwME0gcGl4ZWwvc2VjICov Cj4gKyNkZWZpbmUgVUxUUkFfVEhfTE9XICAgICAgICAgICAgICAgICAgICg2ICogNjAwKQo+ICsv KiA4IHVzLCA2MDBNIHBpeGVsL3NlYyAqLwo+ICsjZGVmaW5lIFVMVFJBX1RIX0hJR0ggICAgICAg ICAgICAgICAgICAoOCAqIDYwMCkKPiArI2RlZmluZSBGTERfVUxUUkFfVEhfTE9XICAgICAgICAg ICAgICAgR0VOTUFTSygxNSwgMCkKPiArI2RlZmluZSBGTERfVUxUUkFfVEhfSElHSCAgICAgICAg ICAgICAgR0VOTUFTSygzMSwgMTYpCj4gKyNkZWZpbmUgRElTUF9SRUdfTUVSR0VfQ0ZHXzQxICAg ICAgICAgIDB4MGI0Cj4gKy8qIDggdXMsIDYwME0gcGl4ZWwvc2VjICovCj4gKyNkZWZpbmUgUFJF VUxUUkFfVEhfTE9XICAgICAgICAgICAgICAgICAgICAgICAgKDggKiA2MDApCj4gKy8qIDkgdXMs IDYwME0gcGl4ZWwvc2VjICovCgpBZGQgY29tbWVudCB0aGF0ICI2IHVzIH4gOXVzIGlzIGV4cGVy aWVuY2UgdmFsdWUgYW5kIG1heCBtbXN5cyBjbG9jawpmcmVxdWVuY3kgaXMgNTk0TUh6IiwgYW5k IEkgdGhpbmsgeW91IHNob3VsZCB1c2UgNTk0IGluc3RlYWQgb2YgNjAwLgoKUmVnYXJkcywKQ2h1 bi1LdWFuZy4KCj4gKyNkZWZpbmUgUFJFVUxUUkFfVEhfSElHSCAgICAgICAgICAgICAgICg5ICog NjAwKQo+ICsjZGVmaW5lIEZMRF9QUkVVTFRSQV9USF9MT1cgICAgICAgICAgICBHRU5NQVNLKDE1 LCAwKQo+ICsjZGVmaW5lIEZMRF9QUkVVTFRSQV9USF9ISUdIICAgICAgICAgICBHRU5NQVNLKDMx LCAxNikKPiArCj4gK3N0cnVjdCBtdGtfZGlzcF9tZXJnZSB7Cj4gKyAgICAgICB2b2lkIF9faW9t ZW0gKnJlZ3M7Cj4gKyAgICAgICBzdHJ1Y3QgY2xrICpjbGs7Cj4gKyAgICAgICBzdHJ1Y3QgY2xr ICphc3luY19jbGs7Cj4gKyAgICAgICBzdHJ1Y3QgY21kcV9jbGllbnRfcmVnICAgICAgICAgIGNt ZHFfcmVnOwo+ICsgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX2Vu Owo+ICt9Owo+ICsKPiArdm9pZCBtdGtfbWVyZ2Vfc3RhcnQoc3RydWN0IGRldmljZSAqZGV2KQo+ ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rpc3BfbWVyZ2UgKnByaXYgPSBkZXZfZ2V0X2RydmRh dGEoZGV2KTsKPiArCj4gKyAgICAgICB3cml0ZWwoTUVSR0VfRU4sIHByaXYtPnJlZ3MgKyBESVNQ X1JFR19NRVJHRV9DVFJMKTsKPiArfQo+ICsKPiArdm9pZCBtdGtfbWVyZ2Vfc3RvcChzdHJ1Y3Qg ZGV2aWNlICpkZXYpCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdGtfZGlzcF9tZXJnZSAqcHJpdiA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArICAgICAgIHdyaXRlbCgweDAsIHByaXYtPnJl Z3MgKyBESVNQX1JFR19NRVJHRV9DVFJMKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX21l cmdlX2ZpZm9fc2V0dGluZyhzdHJ1Y3QgbXRrX2Rpc3BfbWVyZ2UgKnByaXYsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21kcV9wa3QgKmhhbmRsZSkKPiArewo+ ICsgICAgICAgbXRrX2RkcF93cml0ZV9tYXNrKGhhbmRsZSwgVUxUUkFfRU4gfCBQUkVVTFRSQV9F TiA8PCA0IHwgSEFMVF9GT1JfRFZGU19FTiA8PCA4LAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICZwcml2LT5jbWRxX3JlZywgcHJpdi0+cmVncywgRElTUF9SRUdfTUVSR0VfQ0ZHXzM2LAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEZMRF9VTFRSQV9FTiB8IEZMRF9QUkVVTFRSQV9F TiB8IEZMRF9IQUxUX0ZPUl9EVkZTX0VOKTsKPiArCj4gKyAgICAgICBtdGtfZGRwX3dyaXRlX21h c2soaGFuZGxlLCBCVUZGRVJfTU9ERSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJp di0+Y21kcV9yZWcsIHByaXYtPnJlZ3MsIERJU1BfUkVHX01FUkdFX0NGR18zNywKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBGTERfQlVGRkVSX01PREUpOwo+ICsKPiArICAgICAgIG10a19k ZHBfd3JpdGVfbWFzayhoYW5kbGUsIDAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnBy aXYtPmNtZHFfcmVnLCBwcml2LT5yZWdzLCBESVNQX1JFR19NRVJHRV9DRkdfMzgsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgRkxEX1ZERV9CTE9DS19VTFRSQSB8IEZMRF9WQUxJRF9USF9C TE9DS19VTFRSQSB8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRkxEX1VMVFJBX0ZJRk9f VkFMSURfVEgpOwo+ICsKPiArICAgICAgIG10a19kZHBfd3JpdGVfbWFzayhoYW5kbGUsIDAsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgJnByaXYtPmNtZHFfcmVnLCBwcml2LT5yZWdzLCBE SVNQX1JFR19NRVJHRV9DRkdfMzksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRkxEX05W REVfRk9SQ0VfUFJFVUxUUkEgfCBGTERfTlZBTElEX1RIX0ZPUkNFX1BSRVVMVFJBIHwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBGTERfUFJFVUxUUkFfRklGT19WQUxJRF9USCk7Cj4gKwo+ ICsgICAgICAgbXRrX2RkcF93cml0ZV9tYXNrKGhhbmRsZSwgVUxUUkFfVEhfTE9XIHwgVUxUUkFf VEhfSElHSCA8PCAxNiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJpdi0+Y21kcV9y ZWcsIHByaXYtPnJlZ3MsIERJU1BfUkVHX01FUkdFX0NGR180MCwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICBGTERfVUxUUkFfVEhfTE9XIHwgRkxEX1VMVFJBX1RIX0hJR0gpOwo+ICsKPiAr ICAgICAgIG10a19kZHBfd3JpdGVfbWFzayhoYW5kbGUsIFBSRVVMVFJBX1RIX0xPVyB8IFBSRVVM VFJBX1RIX0hJR0ggPDwgMTYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnByaXYtPmNt ZHFfcmVnLCBwcml2LT5yZWdzLCBESVNQX1JFR19NRVJHRV9DRkdfNDEsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgRkxEX1BSRVVMVFJBX1RIX0xPVyB8IEZMRF9QUkVVTFRSQV9USF9ISUdI KTsKPiArfQo+ICsKPiArdm9pZCBtdGtfbWVyZ2VfY29uZmlnKHN0cnVjdCBkZXZpY2UgKmRldiwg dW5zaWduZWQgaW50IHcsCj4gKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoLCB1 bnNpZ25lZCBpbnQgdnJlZnJlc2gsCj4gKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBicGMsIHN0cnVjdCBjbWRxX3BrdCAqaGFuZGxlKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRr X2Rpc3BfbWVyZ2UgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArICAgICAgIHVuc2ln bmVkIGludCBtb2RlID0gQ0ZHXzEwXzEwXzFQSV8yUE9fQlVGX01PREU7Cj4gKwo+ICsgICAgICAg aWYgKCFoIHx8ICF3KSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiJXM6IGlucHV0 IHdpZHRoKCVkKSBvciBoZWlnaHQoJWQpIGlzIGludmFsaWRcbiIsIF9fZnVuY19fLCB3LCBoKTsK PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChw cml2LT5maWZvX2VuKSB7Cj4gKyAgICAgICAgICAgICAgIG10a19tZXJnZV9maWZvX3NldHRpbmco cHJpdiwgaGFuZGxlKTsKPiArICAgICAgICAgICAgICAgbW9kZSA9IENGR18xMF8xMF8yUElfMlBP X0JVRl9NT0RFOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG10a19kZHBfd3JpdGUoaGFuZGxl LCBoIDw8IDE2IHwgdywgJnByaXYtPmNtZHFfcmVnLCBwcml2LT5yZWdzLAo+ICsgICAgICAgICAg ICAgICAgICAgICBESVNQX1JFR19NRVJHRV9DRkdfMCk7Cj4gKyAgICAgICBtdGtfZGRwX3dyaXRl KGhhbmRsZSwgaCA8PCAxNiB8IHcsICZwcml2LT5jbWRxX3JlZywgcHJpdi0+cmVncywKPiArICAg ICAgICAgICAgICAgICAgICAgRElTUF9SRUdfTUVSR0VfQ0ZHXzQpOwo+ICsgICAgICAgbXRrX2Rk cF93cml0ZShoYW5kbGUsIGggPDwgMTYgfCB3LCAmcHJpdi0+Y21kcV9yZWcsIHByaXYtPnJlZ3Ms Cj4gKyAgICAgICAgICAgICAgICAgICAgIERJU1BfUkVHX01FUkdFX0NGR18yNCk7Cj4gKyAgICAg ICBtdGtfZGRwX3dyaXRlKGhhbmRsZSwgaCA8PCAxNiB8IHcsICZwcml2LT5jbWRxX3JlZywgcHJp di0+cmVncywKPiArICAgICAgICAgICAgICAgICAgICAgRElTUF9SRUdfTUVSR0VfQ0ZHXzI1KTsK PiArICAgICAgIG10a19kZHBfd3JpdGVfbWFzayhoYW5kbGUsIFNXQVBfTU9ERSwgJnByaXYtPmNt ZHFfcmVnLCBwcml2LT5yZWdzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIERJU1BfUkVH X01FUkdFX0NGR18xMCwgRkxEX1NXQVBfTU9ERSk7Cj4gKyAgICAgICBtdGtfZGRwX3dyaXRlX21h c2soaGFuZGxlLCBtb2RlLCAmcHJpdi0+Y21kcV9yZWcsIHByaXYtPnJlZ3MsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgRElTUF9SRUdfTUVSR0VfQ0ZHXzEyLCBGTERfQ0ZHX01FUkdFX01P REUpOwo+ICt9Cj4gKwo+ICtpbnQgbXRrX21lcmdlX2Nsa19lbmFibGUoc3RydWN0IGRldmljZSAq ZGV2KQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0ID0gMDsKPiArICAgICAgIHN0cnVjdCBtdGtfZGlz cF9tZXJnZSAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArICAgICAgIHJldCA9 IGNsa19wcmVwYXJlX2VuYWJsZShwcml2LT5jbGspOwo+ICsgICAgICAgaWYgKHJldCkKPiArICAg ICAgICAgICAgICAgcHJfZXJyKCJtZXJnZSBjbGsgcHJlcGFyZSBlbmFibGUgZmFpbGVkXG4iKTsK PiArCj4gKyAgICAgICBpZiAocHJpdi0+YXN5bmNfY2xrKSB7Cj4gKyAgICAgICAgICAgICAgIHJl dCA9IGNsa19wcmVwYXJlX2VuYWJsZShwcml2LT5hc3luY19jbGspOwo+ICsgICAgICAgICAgICAg ICBpZiAocmV0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHByX2VycigiYXN5bmMgY2xrIHBy ZXBhcmUgZW5hYmxlIGZhaWxlZFxuIik7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJu IHJldDsKPiArfQo+ICsKPiArdm9pZCBtdGtfbWVyZ2VfY2xrX2Rpc2FibGUoc3RydWN0IGRldmlj ZSAqZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rpc3BfbWVyZ2UgKnByaXYgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKPiArCj4gKyAgICAgICBpZiAocHJpdi0+YXN5bmNfY2xrKQo+ICsg ICAgICAgICAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+YXN5bmNfY2xrKTsKPiAr Cj4gKyAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+Y2xrKTsKPiArfQo+ICsKPiAr c3RhdGljIGludCBtdGtfZGlzcF9tZXJnZV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0 IGRldmljZSAqbWFzdGVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpk YXRhKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRr X2Rpc3BfbWVyZ2VfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFz dGVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKQo+ICt7 Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBtdGtfZGlzcF9t ZXJnZV9jb21wb25lbnRfb3BzID0gewo+ICsgICAgICAgLmJpbmQgICA9IG10a19kaXNwX21lcmdl X2JpbmQsCj4gKyAgICAgICAudW5iaW5kID0gbXRrX2Rpc3BfbWVyZ2VfdW5iaW5kLAo+ICt9Owo+ ICsKPiArc3RhdGljIGludCBtdGtfZGlzcF9tZXJnZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2 Owo+ICsgICAgICAgc3RydWN0IHJlc291cmNlICpyZXM7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rp c3BfbWVyZ2UgKnByaXY7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIHByaXYgPSBk ZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKPiArICAgICAgIGlm ICghcHJpdikKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgICAgICAg cmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiAr ICAgICAgIHByaXYtPnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+ICsg ICAgICAgaWYgKElTX0VSUihwcml2LT5yZWdzKSkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJy KGRldiwgImZhaWxlZCB0byBpb3JlbWFwIG1lcmdlXG4iKTsKPiArICAgICAgICAgICAgICAgcmV0 dXJuIFBUUl9FUlIocHJpdi0+cmVncyk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcHJpdi0+ Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgTlVMTCk7Cj4gKyAgICAgICBpZiAoSVNfRVJSKHByaXYt PmNsaykpIHsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IG1l cmdlIGNsa1xuIik7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHByaXYtPmNsayk7 Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcHJpdi0+YXN5bmNfY2xrID0gb2ZfY2xrX2dldChk ZXYtPm9mX25vZGUsIDEpOwo+ICsgICAgICAgaWYgKElTX0VSUihwcml2LT5hc3luY19jbGspKSB7 Cj4gKyAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIocHJpdi0+YXN5bmNfY2xrKTsKPiArICAg ICAgICAgICAgICAgZGV2X2RiZyhkZXYsICJObyBtZXJnZSBhc3luYyBjbG9jazogJWRcbiIsIHJl dCk7Cj4gKyAgICAgICAgICAgICAgIHByaXYtPmFzeW5jX2NsayA9IE5VTEw7Cj4gKyAgICAgICB9 Cj4gKwo+ICsjaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19NVEtfQ01EUSkKPiArICAgICAgIHJldCA9 IGNtZHFfZGV2X2dldF9jbGllbnRfcmVnKGRldiwgJnByaXYtPmNtZHFfcmVnLCAwKTsKPiArICAg ICAgIGlmIChyZXQpCj4gKyAgICAgICAgICAgICAgIGRldl9kYmcoZGV2LCAiZ2V0IG1lZGlhdGVr LGdjZS1jbGllbnQtcmVnIGZhaWwhXG4iKTsKPiArI2VuZGlmCj4gKwo+ICsgICAgICAgcHJpdi0+ Zmlmb19lbiA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYtPm9mX25vZGUsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZWRpYXRlayxtZXJnZS1maWZv LWVuIik7Cj4gKwo+ICsgICAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7Cj4g Kwo+ICsgICAgICAgcmV0ID0gY29tcG9uZW50X2FkZChkZXYsICZtdGtfZGlzcF9tZXJnZV9jb21w b25lbnRfb3BzKTsKPiArICAgICAgIGlmIChyZXQgIT0gMCkKPiArICAgICAgICAgICAgICAgZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gYWRkIGNvbXBvbmVudDogJWRcbiIsIHJldCk7Cj4gKwo+ICsg ICAgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfZGlzcF9tZXJnZV9y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsgICAgICAgY29tcG9u ZW50X2RlbCgmcGRldi0+ZGV2LCAmbXRrX2Rpc3BfbWVyZ2VfY29tcG9uZW50X29wcyk7Cj4gKwo+ ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIG10a19kaXNwX21lcmdlX2RyaXZlcl9kdF9tYXRjaFtdID0gewo+ICsgICAgICAgeyAu Y29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxOTUtZGlzcC1tZXJnZSIsIH0sCj4gKyAgICAgICB7 fSwKPiArfTsKPiArCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10a19kaXNwX21lcmdlX2Ry aXZlcl9kdF9tYXRjaCk7Cj4gKwo+ICtzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kaXNwX21l cmdlX2RyaXZlciA9IHsKPiArICAgICAgIC5wcm9iZSA9IG10a19kaXNwX21lcmdlX3Byb2JlLAo+ ICsgICAgICAgLnJlbW92ZSA9IG10a19kaXNwX21lcmdlX3JlbW92ZSwKPiArICAgICAgIC5kcml2 ZXIgPSB7Cj4gKyAgICAgICAgICAgICAgIC5uYW1lID0gIm1lZGlhdGVrLWRpc3AtbWVyZ2UiLAo+ ICsgICAgICAgICAgICAgICAub3duZXIgPSBUSElTX01PRFVMRSwKPiArICAgICAgICAgICAgICAg Lm9mX21hdGNoX3RhYmxlID0gbXRrX2Rpc3BfbWVyZ2VfZHJpdmVyX2R0X21hdGNoLAo+ICsgICAg ICAgfSwKPiArfTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fZGRwX2NvbXAuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9jb21w LmgKPiBpbmRleCA1NjBiZTZiYzlkMGUuLmI0MmE0N2MwNjk1NiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuaAo+IEBAIC0yNSw2ICsyNSw3IEBAIGVu dW0gbXRrX2RkcF9jb21wX3R5cGUgewo+ICAgICAgICAgTVRLX0RJU1BfRElUSEVSLAo+ICAgICAg ICAgTVRLX0RJU1BfRFNDLAo+ICAgICAgICAgTVRLX0RJU1BfR0FNTUEsCj4gKyAgICAgICBNVEtf RElTUF9NRVJHRSwKPiAgICAgICAgIE1US19ESVNQX01VVEVYLAo+ICAgICAgICAgTVRLX0RJU1Bf T0QsCj4gICAgICAgICBNVEtfRElTUF9PVkwsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fZHJ2LmMKPiBpbmRleCBhOTVkYzEwMDZiODIuLjVlYjljMGEwNDQ0NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCj4gQEAgLTUzMiwxMyArNTMyLDE0IEBAIHN0 YXRpYyBpbnQgbXRrX2RybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAg ICAgICAgICAgICAgICBwcml2YXRlLT5jb21wX25vZGVbY29tcF9pZF0gPSBvZl9ub2RlX2dldChu b2RlKTsKPgo+ICAgICAgICAgICAgICAgICAvKgo+IC0gICAgICAgICAgICAgICAgKiBDdXJyZW50 bHkgb25seSB0aGUgQ0NPUlIsIENPTE9SLCBHQU1NQSwgT1ZMLCBSRE1BLCBEU0ksIGFuZCBEUEkK PiArICAgICAgICAgICAgICAgICogQ3VycmVudGx5IG9ubHkgdGhlIENDT1JSLCBDT0xPUiwgR0FN TUEsIE1FUkdFLCBPVkwsIFJETUEsIERTSSwgYW5kIERQSQo+ICAgICAgICAgICAgICAgICAgKiBi bG9ja3MgaGF2ZSBzZXBhcmF0ZSBjb21wb25lbnQgcGxhdGZvcm0gZHJpdmVycyBhbmQgaW5pdGlh bGl6ZSB0aGVpciBvd24KPiAgICAgICAgICAgICAgICAgICogRERQIGNvbXBvbmVudCBzdHJ1Y3R1 cmUuIFRoZSBvdGhlcnMgYXJlIGluaXRpYWxpemVkIGhlcmUuCj4gICAgICAgICAgICAgICAgICAq Lwo+ICAgICAgICAgICAgICAgICBpZiAoY29tcF90eXBlID09IE1US19ESVNQX0NDT1JSIHx8Cj4g ICAgICAgICAgICAgICAgICAgICBjb21wX3R5cGUgPT0gTVRLX0RJU1BfQ09MT1IgfHwKPiAgICAg ICAgICAgICAgICAgICAgIGNvbXBfdHlwZSA9PSBNVEtfRElTUF9HQU1NQSB8fAo+ICsgICAgICAg ICAgICAgICAgICAgY29tcF90eXBlID09IE1US19ESVNQX01FUkdFIHx8Cj4gICAgICAgICAgICAg ICAgICAgICBjb21wX3R5cGUgPT0gTVRLX0RJU1BfT1ZMIHx8Cj4gICAgICAgICAgICAgICAgICAg ICBjb21wX3R5cGUgPT0gTVRLX0RJU1BfT1ZMXzJMIHx8Cj4gICAgICAgICAgICAgICAgICAgICBj b21wX3R5cGUgPT0gTVRLX0RJU1BfUkRNQSB8fAo+IEBAIC02MzksNiArNjQwLDcgQEAgc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKiBjb25zdCBtdGtfZHJtX2RyaXZlcnNbXSA9IHsKPiAg ICAgICAgICZtdGtfZGlzcF9jY29ycl9kcml2ZXIsCj4gICAgICAgICAmbXRrX2Rpc3BfY29sb3Jf ZHJpdmVyLAo+ICAgICAgICAgJm10a19kaXNwX2dhbW1hX2RyaXZlciwKPiArICAgICAgICZtdGtf ZGlzcF9tZXJnZV9kcml2ZXIsCj4gICAgICAgICAmbXRrX2Rpc3Bfb3ZsX2RyaXZlciwKPiAgICAg ICAgICZtdGtfZGlzcF9yZG1hX2RyaXZlciwKPiAgICAgICAgICZtdGtfZHBpX2RyaXZlciwKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaAo+IGluZGV4IDYzN2Y1NjY5ZTg5NS4u MGZhNDE3MjE5YTY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmgK PiBAQCAtNDksNiArNDksNyBAQCBzdHJ1Y3QgbXRrX2RybV9wcml2YXRlIHsKPiAgZXh0ZXJuIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3BfY2NvcnJfZHJpdmVyOwo+ICBleHRlcm4gc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZGlzcF9jb2xvcl9kcml2ZXI7Cj4gIGV4dGVybiBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kaXNwX2dhbW1hX2RyaXZlcjsKPiArZXh0ZXJuIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3BfbWVyZ2VfZHJpdmVyOwo+ICBleHRlcm4gc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBtdGtfZGlzcF9vdmxfZHJpdmVyOwo+ICBleHRlcm4gc3RydWN0IHBs YXRmb3JtX2RyaXZlciBtdGtfZGlzcF9yZG1hX2RyaXZlcjsKPiAgZXh0ZXJuIHN0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgbXRrX2RwaV9kcml2ZXI7Cj4gLS0KPiAyLjE4LjAKPgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo= 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=-16.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 C8BDFC4338F for ; Fri, 6 Aug 2021 17:11:09 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 7004D611CB for ; Fri, 6 Aug 2021 17:11:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 7004D611CB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3FCA36EBF6; Fri, 6 Aug 2021 17:11:08 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 56F4D6E106 for ; Fri, 6 Aug 2021 17:11:06 +0000 (UTC) Received: by mail.kernel.org (Postfix) with ESMTPSA id 205DA611CA for ; Fri, 6 Aug 2021 17:11:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1628269866; bh=O0771EaCX+PHMTW//1AJu28HmkvGdYXV01bhOOIy/w4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=nQvGhbAE6S6AcXp3BPv3Ge5NltZrI1FAO5eO2ljqDrG3ZPb3OlmYikjvjqRTJKo9S OkmZ+JhYgB4/cToZUuU1Tt+cuus7pAojpKeQzz0aeQ74HhC4JE3DlXvheiDHF0u8Tj Q4D2mVT6CVEezbo8NSpJhEO3qTUz9Iccf7t4vIJPiT4SDFJnBQYvCPbju0226Hblld BnRw888UAe9SsJms1EZrNAXskT++DJPYeX615UQ1OqdJ6ih/qZr9gE2id9KHollVtC GjFiQJyES2HLuZp+rZ9NRQhuwJxXDClWz2yLCcb1oQWxCtfHUP71yMZw+ZTF2RYRLO 1oHOGb2U9DTCg== Received: by mail-ed1-f42.google.com with SMTP id k9so13984955edr.10 for ; Fri, 06 Aug 2021 10:11:06 -0700 (PDT) X-Gm-Message-State: AOAM531wO1LiAQxiRRC2XOxI9JnQPeWuHF4zb1A7Ri14JpINozaCsDD3 77QjnYXbsoyuKun9uiIu+sXbWtfq54c5PLLKIg== X-Google-Smtp-Source: ABdhPJzomInfpBZk1wb/IQTQmTY+/0lUdakWl5r8bwQcgCOCa/htcMif5CLvk5KeYercX9vZ6jD3/3zxX2lZ4vXUxJk= X-Received: by 2002:aa7:c6d3:: with SMTP id b19mr14378038eds.303.1628269864637; Fri, 06 Aug 2021 10:11:04 -0700 (PDT) MIME-Version: 1.0 References: <20210805205226.24880-1-jason-jh.lin@mediatek.com> <20210805205226.24880-7-jason-jh.lin@mediatek.com> In-Reply-To: <20210805205226.24880-7-jason-jh.lin@mediatek.com> From: Chun-Kuang Hu Date: Sat, 7 Aug 2021 01:10:53 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v6 6/7] drm/mediatek: add MERGE support for mediatek-drm To: "jason-jh.lin" Cc: Rob Herring , Matthias Brugger , Chun-Kuang Hu , Philipp Zabel , Enric Balletbo i Serra , fshao@chromium.org, David Airlie , Daniel Vetter , Fabien Parent , Hsin-Yi Wang , Yongqiang Niu , Nancy Lin , singo.chang@mediatek.com, DTML , Linux ARM , "moderated list:ARM/Mediatek SoC support" , linux-kernel , DRI Development Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi, Jason: jason-jh.lin =E6=96=BC 2021=E5=B9=B48=E6=9C=886= =E6=97=A5 =E9=80=B1=E4=BA=94 =E4=B8=8A=E5=8D=884:52=E5=AF=AB=E9=81=93=EF=BC= =9A > > Add MERGE engine file: > MERGE module is used to merge two slice-per-line inputs > into one side-by-side output. > > Signed-off-by: jason-jh.lin > --- > This patch is base on [1] > > [1] dt-bindings: mediatek: display: add mt8195 SoC binding > https://patchwork.kernel.org/project/linux-mediatek/patch/20210805171346.= 24249-5-jason-jh.lin@mediatek.com/ > --- > drivers/gpu/drm/mediatek/Makefile | 1 + > drivers/gpu/drm/mediatek/mtk_disp_drv.h | 8 + > drivers/gpu/drm/mediatek/mtk_disp_merge.c | 263 ++++++++++++++++++++ > drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 1 + > drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_drv.h | 1 + > 6 files changed, 277 insertions(+), 1 deletion(-) > create mode 100644 drivers/gpu/drm/mediatek/mtk_disp_merge.c > > diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek= /Makefile > index dc54a7a69005..538e0087a44c 100644 > --- a/drivers/gpu/drm/mediatek/Makefile > +++ b/drivers/gpu/drm/mediatek/Makefile > @@ -3,6 +3,7 @@ > mediatek-drm-y :=3D mtk_disp_ccorr.o \ > mtk_disp_color.o \ > mtk_disp_gamma.o \ > + mtk_disp_merge.o \ > mtk_disp_ovl.o \ > mtk_disp_rdma.o \ > mtk_drm_crtc.o \ > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_drv.h b/drivers/gpu/drm/me= diatek/mtk_disp_drv.h > index cafd9df2d63b..f407cd9d873e 100644 > --- a/drivers/gpu/drm/mediatek/mtk_disp_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_disp_drv.h > @@ -46,6 +46,14 @@ void mtk_gamma_set_common(void __iomem *regs, struct d= rm_crtc_state *state); > void mtk_gamma_start(struct device *dev); > void mtk_gamma_stop(struct device *dev); > > +int mtk_merge_clk_enable(struct device *dev); > +void mtk_merge_clk_disable(struct device *dev); > +void mtk_merge_config(struct device *dev, unsigned int width, > + unsigned int height, unsigned int vrefresh, > + unsigned int bpc, struct cmdq_pkt *cmdq_pkt); > +void mtk_merge_start(struct device *dev); > +void mtk_merge_stop(struct device *dev); > + > void mtk_ovl_bgclr_in_on(struct device *dev); > void mtk_ovl_bgclr_in_off(struct device *dev); > void mtk_ovl_bypass_shadow(struct device *dev); > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_merge.c b/drivers/gpu/drm/= mediatek/mtk_disp_merge.c > new file mode 100644 > index 000000000000..f3d262792054 > --- /dev/null > +++ b/drivers/gpu/drm/mediatek/mtk_disp_merge.c > @@ -0,0 +1,263 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (c) 2021 MediaTek Inc. > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "mtk_drm_ddp_comp.h" > +#include "mtk_drm_drv.h" > +#include "mtk_disp_drv.h" > + > +#define DISP_REG_MERGE_CTRL 0x000 > +#define MERGE_EN 1 One more indent for the bitwise value. > +#define DISP_REG_MERGE_CFG_0 0x010 > +#define DISP_REG_MERGE_CFG_4 0x020 > +#define DISP_REG_MERGE_CFG_10 0x038 > +/* no swap */ > +#define SWAP_MODE 0 > +#define FLD_SWAP_MODE GENMASK(4, 0) > +#define DISP_REG_MERGE_CFG_12 0x040 > +#define CFG_10_10_1PI_2PO_BUF_MODE 6 > +#define CFG_10_10_2PI_2PO_BUF_MODE 8 > +#define FLD_CFG_MERGE_MODE GENMASK(4, 0) > +#define DISP_REG_MERGE_CFG_24 0x070 > +#define DISP_REG_MERGE_CFG_25 0x074 > +#define DISP_REG_MERGE_CFG_36 0x0a0 > +#define ULTRA_EN 1 > +#define PREULTRA_EN 1 > +#define HALT_FOR_DVFS_EN 0 > +#define FLD_ULTRA_EN GENMASK(0, 0) > +#define FLD_PREULTRA_EN GENMASK(4, 4) > +#define FLD_HALT_FOR_DVFS_EN GENMASK(8, 8) > +#define DISP_REG_MERGE_CFG_37 0x0a4 > +/* 0: Off, 1: SRAM0, 2: SRAM1, 3: SRAM0 + SRAM1 */ > +#define BUFFER_MODE 3 > +#define FLD_BUFFER_MODE GENMASK(1, 0) > +#define DISP_REG_MERGE_CFG_38 0x0a8 > +#define FLD_VDE_BLOCK_ULTRA GENMASK(0, 0) > +#define FLD_VALID_TH_BLOCK_ULTRA GENMASK(4, 4) > +#define FLD_ULTRA_FIFO_VALID_TH GENMASK(31, 16) > +#define DISP_REG_MERGE_CFG_39 0x0ac > +#define FLD_NVDE_FORCE_PREULTRA GENMASK(8, 8) > +#define FLD_NVALID_TH_FORCE_PREULTRA GENMASK(12, 12) > +#define FLD_PREULTRA_FIFO_VALID_TH GENMASK(31, 16) > +#define DISP_REG_MERGE_CFG_40 0x0b0 > +/* 6 us, 600M pixel/sec */ > +#define ULTRA_TH_LOW (6 * 600) > +/* 8 us, 600M pixel/sec */ > +#define ULTRA_TH_HIGH (8 * 600) > +#define FLD_ULTRA_TH_LOW GENMASK(15, 0) > +#define FLD_ULTRA_TH_HIGH GENMASK(31, 16) > +#define DISP_REG_MERGE_CFG_41 0x0b4 > +/* 8 us, 600M pixel/sec */ > +#define PREULTRA_TH_LOW (8 * 600) > +/* 9 us, 600M pixel/sec */ Add comment that "6 us ~ 9us is experience value and max mmsys clock frequency is 594MHz", and I think you should use 594 instead of 600. Regards, Chun-Kuang. > +#define PREULTRA_TH_HIGH (9 * 600) > +#define FLD_PREULTRA_TH_LOW GENMASK(15, 0) > +#define FLD_PREULTRA_TH_HIGH GENMASK(31, 16) > + > +struct mtk_disp_merge { > + void __iomem *regs; > + struct clk *clk; > + struct clk *async_clk; > + struct cmdq_client_reg cmdq_reg; > + bool fifo_en; > +}; > + > +void mtk_merge_start(struct device *dev) > +{ > + struct mtk_disp_merge *priv =3D dev_get_drvdata(dev); > + > + writel(MERGE_EN, priv->regs + DISP_REG_MERGE_CTRL); > +} > + > +void mtk_merge_stop(struct device *dev) > +{ > + struct mtk_disp_merge *priv =3D dev_get_drvdata(dev); > + > + writel(0x0, priv->regs + DISP_REG_MERGE_CTRL); > +} > + > +static void mtk_merge_fifo_setting(struct mtk_disp_merge *priv, > + struct cmdq_pkt *handle) > +{ > + mtk_ddp_write_mask(handle, ULTRA_EN | PREULTRA_EN << 4 | HALT_FOR= _DVFS_EN << 8, > + &priv->cmdq_reg, priv->regs, DISP_REG_MERGE_CF= G_36, > + FLD_ULTRA_EN | FLD_PREULTRA_EN | FLD_HALT_FOR_= DVFS_EN); > + > + mtk_ddp_write_mask(handle, BUFFER_MODE, > + &priv->cmdq_reg, priv->regs, DISP_REG_MERGE_CF= G_37, > + FLD_BUFFER_MODE); > + > + mtk_ddp_write_mask(handle, 0, > + &priv->cmdq_reg, priv->regs, DISP_REG_MERGE_CF= G_38, > + FLD_VDE_BLOCK_ULTRA | FLD_VALID_TH_BLOCK_ULTRA= | > + FLD_ULTRA_FIFO_VALID_TH); > + > + mtk_ddp_write_mask(handle, 0, > + &priv->cmdq_reg, priv->regs, DISP_REG_MERGE_CF= G_39, > + FLD_NVDE_FORCE_PREULTRA | FLD_NVALID_TH_FORCE_= PREULTRA | > + FLD_PREULTRA_FIFO_VALID_TH); > + > + mtk_ddp_write_mask(handle, ULTRA_TH_LOW | ULTRA_TH_HIGH << 16, > + &priv->cmdq_reg, priv->regs, DISP_REG_MERGE_CF= G_40, > + FLD_ULTRA_TH_LOW | FLD_ULTRA_TH_HIGH); > + > + mtk_ddp_write_mask(handle, PREULTRA_TH_LOW | PREULTRA_TH_HIGH << = 16, > + &priv->cmdq_reg, priv->regs, DISP_REG_MERGE_CF= G_41, > + FLD_PREULTRA_TH_LOW | FLD_PREULTRA_TH_HIGH); > +} > + > +void mtk_merge_config(struct device *dev, unsigned int w, > + unsigned int h, unsigned int vrefresh, > + unsigned int bpc, struct cmdq_pkt *handle) > +{ > + struct mtk_disp_merge *priv =3D dev_get_drvdata(dev); > + unsigned int mode =3D CFG_10_10_1PI_2PO_BUF_MODE; > + > + if (!h || !w) { > + dev_err(dev, "%s: input width(%d) or height(%d) is invali= d\n", __func__, w, h); > + return; > + } > + > + if (priv->fifo_en) { > + mtk_merge_fifo_setting(priv, handle); > + mode =3D CFG_10_10_2PI_2PO_BUF_MODE; > + } > + > + mtk_ddp_write(handle, h << 16 | w, &priv->cmdq_reg, priv->regs, > + DISP_REG_MERGE_CFG_0); > + mtk_ddp_write(handle, h << 16 | w, &priv->cmdq_reg, priv->regs, > + DISP_REG_MERGE_CFG_4); > + mtk_ddp_write(handle, h << 16 | w, &priv->cmdq_reg, priv->regs, > + DISP_REG_MERGE_CFG_24); > + mtk_ddp_write(handle, h << 16 | w, &priv->cmdq_reg, priv->regs, > + DISP_REG_MERGE_CFG_25); > + mtk_ddp_write_mask(handle, SWAP_MODE, &priv->cmdq_reg, priv->regs= , > + DISP_REG_MERGE_CFG_10, FLD_SWAP_MODE); > + mtk_ddp_write_mask(handle, mode, &priv->cmdq_reg, priv->regs, > + DISP_REG_MERGE_CFG_12, FLD_CFG_MERGE_MODE); > +} > + > +int mtk_merge_clk_enable(struct device *dev) > +{ > + int ret =3D 0; > + struct mtk_disp_merge *priv =3D dev_get_drvdata(dev); > + > + ret =3D clk_prepare_enable(priv->clk); > + if (ret) > + pr_err("merge clk prepare enable failed\n"); > + > + if (priv->async_clk) { > + ret =3D clk_prepare_enable(priv->async_clk); > + if (ret) > + pr_err("async clk prepare enable failed\n"); > + } > + > + return ret; > +} > + > +void mtk_merge_clk_disable(struct device *dev) > +{ > + struct mtk_disp_merge *priv =3D dev_get_drvdata(dev); > + > + if (priv->async_clk) > + clk_disable_unprepare(priv->async_clk); > + > + clk_disable_unprepare(priv->clk); > +} > + > +static int mtk_disp_merge_bind(struct device *dev, struct device *master= , > + void *data) > +{ > + return 0; > +} > + > +static void mtk_disp_merge_unbind(struct device *dev, struct device *mas= ter, > + void *data) > +{ > +} > + > +static const struct component_ops mtk_disp_merge_component_ops =3D { > + .bind =3D mtk_disp_merge_bind, > + .unbind =3D mtk_disp_merge_unbind, > +}; > + > +static int mtk_disp_merge_probe(struct platform_device *pdev) > +{ > + struct device *dev =3D &pdev->dev; > + struct resource *res; > + struct mtk_disp_merge *priv; > + int ret; > + > + priv =3D devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); > + if (!priv) > + return -ENOMEM; > + > + res =3D platform_get_resource(pdev, IORESOURCE_MEM, 0); > + priv->regs =3D devm_ioremap_resource(dev, res); > + if (IS_ERR(priv->regs)) { > + dev_err(dev, "failed to ioremap merge\n"); > + return PTR_ERR(priv->regs); > + } > + > + priv->clk =3D devm_clk_get(dev, NULL); > + if (IS_ERR(priv->clk)) { > + dev_err(dev, "failed to get merge clk\n"); > + return PTR_ERR(priv->clk); > + } > + > + priv->async_clk =3D of_clk_get(dev->of_node, 1); > + if (IS_ERR(priv->async_clk)) { > + ret =3D PTR_ERR(priv->async_clk); > + dev_dbg(dev, "No merge async clock: %d\n", ret); > + priv->async_clk =3D NULL; > + } > + > +#if IS_REACHABLE(CONFIG_MTK_CMDQ) > + ret =3D cmdq_dev_get_client_reg(dev, &priv->cmdq_reg, 0); > + if (ret) > + dev_dbg(dev, "get mediatek,gce-client-reg fail!\n"); > +#endif > + > + priv->fifo_en =3D of_property_read_bool(dev->of_node, > + "mediatek,merge-fifo-en"); > + > + platform_set_drvdata(pdev, priv); > + > + ret =3D component_add(dev, &mtk_disp_merge_component_ops); > + if (ret !=3D 0) > + dev_err(dev, "Failed to add component: %d\n", ret); > + > + return ret; > +} > + > +static int mtk_disp_merge_remove(struct platform_device *pdev) > +{ > + component_del(&pdev->dev, &mtk_disp_merge_component_ops); > + > + return 0; > +} > + > +static const struct of_device_id mtk_disp_merge_driver_dt_match[] =3D { > + { .compatible =3D "mediatek,mt8195-disp-merge", }, > + {}, > +}; > + > +MODULE_DEVICE_TABLE(of, mtk_disp_merge_driver_dt_match); > + > +struct platform_driver mtk_disp_merge_driver =3D { > + .probe =3D mtk_disp_merge_probe, > + .remove =3D mtk_disp_merge_remove, > + .driver =3D { > + .name =3D "mediatek-disp-merge", > + .owner =3D THIS_MODULE, > + .of_match_table =3D mtk_disp_merge_driver_dt_match, > + }, > +}; > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h b/drivers/gpu/dr= m/mediatek/mtk_drm_ddp_comp.h > index 560be6bc9d0e..b42a47c06956 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > @@ -25,6 +25,7 @@ enum mtk_ddp_comp_type { > MTK_DISP_DITHER, > MTK_DISP_DSC, > MTK_DISP_GAMMA, > + MTK_DISP_MERGE, > MTK_DISP_MUTEX, > MTK_DISP_OD, > MTK_DISP_OVL, > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/med= iatek/mtk_drm_drv.c > index a95dc1006b82..5eb9c0a04447 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > @@ -532,13 +532,14 @@ static int mtk_drm_probe(struct platform_device *pd= ev) > private->comp_node[comp_id] =3D of_node_get(node); > > /* > - * Currently only the CCORR, COLOR, GAMMA, OVL, RDMA, DSI= , and DPI > + * Currently only the CCORR, COLOR, GAMMA, MERGE, OVL, RD= MA, DSI, and DPI > * blocks have separate component platform drivers and in= itialize their own > * DDP component structure. The others are initialized he= re. > */ > if (comp_type =3D=3D MTK_DISP_CCORR || > comp_type =3D=3D MTK_DISP_COLOR || > comp_type =3D=3D MTK_DISP_GAMMA || > + comp_type =3D=3D MTK_DISP_MERGE || > comp_type =3D=3D MTK_DISP_OVL || > comp_type =3D=3D MTK_DISP_OVL_2L || > comp_type =3D=3D MTK_DISP_RDMA || > @@ -639,6 +640,7 @@ static struct platform_driver * const mtk_drm_drivers= [] =3D { > &mtk_disp_ccorr_driver, > &mtk_disp_color_driver, > &mtk_disp_gamma_driver, > + &mtk_disp_merge_driver, > &mtk_disp_ovl_driver, > &mtk_disp_rdma_driver, > &mtk_dpi_driver, > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/med= iatek/mtk_drm_drv.h > index 637f5669e895..0fa417219a69 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > @@ -49,6 +49,7 @@ struct mtk_drm_private { > extern struct platform_driver mtk_disp_ccorr_driver; > extern struct platform_driver mtk_disp_color_driver; > extern struct platform_driver mtk_disp_gamma_driver; > +extern struct platform_driver mtk_disp_merge_driver; > extern struct platform_driver mtk_disp_ovl_driver; > extern struct platform_driver mtk_disp_rdma_driver; > extern struct platform_driver mtk_dpi_driver; > -- > 2.18.0 >