From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CD088EB64DD for ; Thu, 15 Jun 2023 07:39:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=nQbZaNNv3goOvdxx62os6PEUaqHmXaC2Kx5+it5WzHA=; b=gu4VVqznf5OZSL cb7CgMmWBs0ZcMw5qa2sZ/dXYPGK11PpLVgFLfsHLKdWemjmcU4LuW0CNMLi45Twj9jqCG3OXGHxz GedUFSD5clG0rGEnRG4B6Y/6f25MDqGwV7UZL8igR2LixCe8qmhhIt3YscfglgtRa0e5faV62hZEH EXi0O8D73uu1aghLl1iOMsfTjOETxN7bJs3+lrnNwHKT6nki7CFZugiNWeMIjtwNg8sUIPyqk9tuU bSlAg7FR6vuznfZ/JZsBPM8Yh0S3KyKdh/XUUCG3n6/J2rrIUaNto6la9tZ1J27i/kOZG8QaK5UcR 1xEMU7suLQ9xmkpqxI4g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q9hZH-00E2rq-0Q; Thu, 15 Jun 2023 07:38:55 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q9hZA-00E2nL-1q; Thu, 15 Jun 2023 07:38:51 +0000 Received: from [IPV6:2001:b07:2ed:14ed:c5f8:7372:f042:90a2] (unknown [IPv6:2001:b07:2ed:14ed:c5f8:7372:f042:90a2]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id 7F6C46606F5A; Thu, 15 Jun 2023 08:38:46 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1686814727; bh=D8b9wEVkgMUHSTkiQNASkpLChgF1KeGetcBYupmfoxM=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=VtUmslzgCZFv/y2YwVwnFtUCGPOaLYr0/VX+uzWHuVHvf84rc5WnEZ7toQeW/1o8t q0YQTLrkHCP//nOSgwGLzXBmGeaKsKY7ZYGki/+cJVlPDp0Ghd0xGJjEOMVdD8S0Il Wy6OkAkWhUDUVkmNDbx4M0E8EzmCPiBRGaC0qldY4JjyzNzthfewYOtZ/v0AMTTth+ 5oJusFBKYZuSEmYzk6wCDLWBa8lHBPbSpurnUSgzAhX7g1B26lKwaKkvW/3l//FTGS HBBz1hAnXE1014rqnKYXUyaL3x5itTWeLPQgXkQFoFqZUey0RwZjIFIlJhWvhSRGeU zDIEOI3ePeT1w== Message-ID: Date: Thu, 15 Jun 2023 09:38:44 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.2 Subject: Re: [PATCH v2 08/15] soc: mediatek: Support MT8188 VDOSYS1 in mtk-mmsys Content-Language: en-US To: =?UTF-8?B?U2hhd24gU3VuZyAo5a6L5a2d6KyZKQ==?= , "p.zabel@pengutronix.de" , "matthias.bgg@gmail.com" , "chunkuang.hu@kernel.org" , "robh+dt@kernel.org" , "krzysztof.kozlowski+dt@linaro.org" Cc: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , =?UTF-8?B?U2luZ28gQ2hhbmcgKOW8teiIiOWciyk=?= , =?UTF-8?B?SmFzb24tSkggTGluICjmnpfnnb/npaUp?= , "devicetree@vger.kernel.org" , =?UTF-8?B?TmFuY3kgTGluICjmnpfmrKPonqIp?= , Project_Global_Chrome_Upstream_Group , "linux-arm-kernel@lists.infradead.org" References: <20230614073125.17958-1-shawn.sung@mediatek.com> <20230614073125.17958-9-shawn.sung@mediatek.com> From: AngeloGioacchino Del Regno In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230615_003848_897079_C967F59E X-CRM114-Status: GOOD ( 23.53 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SWwgMTUvMDYvMjMgMDg6MTAsIFNoYXduIFN1bmcgKOWui+WtneismSkgaGEgc2NyaXR0bzoKPiBU aGFuayB5b3UgZm9yIHNheWluZyB0aGF0LiBXaWxsIGRvIG1vcmUgaW4gdGhlIGZ1dHVyZS4KPiAg IAo+IEkgZm91bmQgdHdvIHR5cG9zIGluIHRoZSBkZXNjcmlwdGlvbi4KPiBXaWxsIGZpeCB0aGVt IGluIHRoZSBuZXh0IHZlcnNpb24gYXMgd2VsbC4KPiAoRVRESFIgLT4gRVRIRFIsIFZTTllDIC0+ IFZTWU5DKQo+IAoKSSBob25lc3RseSBkaWRuJ3QgaW1tZWRpYXRlbHkgbm90aWNlIHRoZSB0eXBv cy4gWWVzIHBsZWFzZSBmaXggdGhlbS4KCktlZXAgdXAgdGhlIGdvb2Qgd29yayEKClJlZ2FyZHMs CkFuZ2VsbwoKPiBPbiBXZWQsIDIwMjMtMDYtMTQgYXQgMTM6MjEgKzAyMDAsIEFuZ2Vsb0dpb2Fj Y2hpbm8gRGVsIFJlZ25vIHdyb3RlOgo+PiAgIAkKPj4gRXh0ZXJuYWwgZW1haWwgOiBQbGVhc2Ug ZG8gbm90IGNsaWNrIGxpbmtzIG9yIG9wZW4gYXR0YWNobWVudHMgdW50aWwKPj4geW91IGhhdmUg dmVyaWZpZWQgdGhlIHNlbmRlciBvciB0aGUgY29udGVudC4KPj4gICBJbCAxNC8wNi8yMyAwOToz MSwgSHNpYW8gQ2hpZW4gU3VuZyBoYSBzY3JpdHRvOgo+Pj4gLSBBZGQgcmVnaXN0ZXIgZGVmaW5p dGlvbnMgZm9yIE1UODE4OAo+Pj4gLSBBZGQgVkRPU1lTMSByb3V0aW5nIHRhYmxlCj4+PiAtIFVw ZGF0ZSBNVVRFWCBkZWZpbml0aW9ucyBhY2NvcmRpbmdseQo+Pj4gLSBTZXQgVlNZTkMgbGVuZ3Ro IGZyb20gMHg0MCAoZGVmYXVsdCkgdG8gMSBzaW5jZSBFVEhEUiBpcyBieXBhc3NlZAo+Pj4KPj4+ IFNpZ25lZC1vZmYtYnk6IEhzaWFvIENoaWVuIFN1bmcgPHNoYXduLnN1bmdAbWVkaWF0ZWsuY29t Pgo+Pgo+PiBJIGxvdmUgdGhhdCB5b3UgYWRkZWQgZG9jdW1lbnRhdGlvbiB0byBzdHJ1Y3QgbXRr X21tc3lzX2RyaXZlcl9kYXRhLgo+PiBHb29kIGpvYiEKPj4KPj4gUmV2aWV3ZWQtYnk6IEFuZ2Vs b0dpb2FjY2hpbm8gRGVsIFJlZ25vIDwKPj4gYW5nZWxvZ2lvYWNjaGluby5kZWxyZWdub0Bjb2xs YWJvcmEuY29tPgo+Pgo+Pj4gLS0tCj4+PiAgICBkcml2ZXJzL3NvYy9tZWRpYXRlay9tdDgxODgt bW1zeXMuaCB8IDEyNwo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+PiAgICBkcml2 ZXJzL3NvYy9tZWRpYXRlay9tdGstbW1zeXMuYyAgICB8ICAxMyArKysKPj4+ICAgIGRyaXZlcnMv c29jL21lZGlhdGVrL210ay1tbXN5cy5oICAgIHwgIDI5ICsrKysrKysKPj4+ICAgIGRyaXZlcnMv c29jL21lZGlhdGVrL210ay1tdXRleC5jICAgIHwgIDM1ICsrKysrKysrCj4+PiAgICA0IGZpbGVz IGNoYW5nZWQsIDIwNCBpbnNlcnRpb25zKCspCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv c29jL21lZGlhdGVrL210ODE4OC1tbXN5cy5oCj4+IGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXQ4 MTg4LW1tc3lzLmgKPj4+IGluZGV4IDQ0OGNjMzc2MWI0My4uNDQ3YWZiNzJkOTVmIDEwMDY0NAo+ Pj4gLS0tIGEvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXQ4MTg4LW1tc3lzLmgKPj4+ICsrKyBiL2Ry aXZlcnMvc29jL21lZGlhdGVrL210ODE4OC1tbXN5cy5oCj4+PiBAQCAtNjcsNiArNjcsNTcgQEAK Pj4+ICAgICNkZWZpbmUgTVQ4MTg4X1NPVVRfRFNDX1dSQVAwX09VVF9UT19WUFBfTUVSR0VCSVQo MTgpCj4+PiAgICAjZGVmaW5lIE1UODE4OF9TT1VUX0RTQ19XUkFQMF9PVVRfVE9fRElTUF9XRE1B MEJJVCgxOSkKPj4+Cj4+PiArI2RlZmluZSBNVDgxODhfVkRPMV9TVzBfUlNUX0IweDFkMAo+Pj4g KyNkZWZpbmUgTVQ4MTg4X1ZETzFfSERSX1RPUF9DRkcweGQwMAo+Pj4gKyNkZWZpbmUgTVQ4MTg4 X1ZETzFfTUlYRVJfSU4xX0FMUEhBMHhkMzAKPj4+ICsjZGVmaW5lIE1UODE4OF9WRE8xX01JWEVS X0lOMV9QQUQweGQ0MAo+Pj4gKyNkZWZpbmUgTVQ4MTg4X1ZETzFfTUVSR0UwX0FTWU5DX0NGR19X RDB4ZTMwCj4+PiArI2RlZmluZSBNVDgxODhfVkRPMV9IRFJCRV9BU1lOQ19DRkdfV0QweGU3MAo+ Pj4gKyNkZWZpbmUgTVQ4MTg4X1ZETzFfVlBQX01FUkdFMF9QMF9TRUxfSU4weGYwNAo+Pj4gKyNk ZWZpbmUgTVQ4MTg4X1ZQUF9NRVJHRTBfUDBfU0VMX0lOX0ZST01fTURQX1JETUEwMQo+Pj4gKyNk ZWZpbmUgTVQ4MTg4X1ZETzFfVlBQX01FUkdFMF9QMV9TRUxfSU4weGYwOAo+Pj4gKyNkZWZpbmUg TVQ4MTg4X1ZQUF9NRVJHRTBfUDFfU0VMX0lOX0ZST01fTURQX1JETUExMQo+Pj4gKyNkZWZpbmUg TVQ4MTg4X1ZETzFfRElTUF9EUEkxX1NFTF9JTjB4ZjEwCj4+PiArI2RlZmluZSBNVDgxODhfRElT UF9EUEkxX1NFTF9JTl9GUk9NX1ZQUF9NRVJHRTRfTU9VVDAKPj4+ICsjZGVmaW5lIE1UODE4OF9W RE8xX0RJU1BfRFBfSU5URjBfU0VMX0lOMHhmMTQKPj4+ICsjZGVmaW5lIE1UODE4OF9ESVNQX0RQ X0lOVEYwX1NFTF9JTl9GUk9NX1ZQUF9NRVJHRTRfTU9VVDAKPj4+ICsjZGVmaW5lIE1UODE4OF9W RE8xX01FUkdFNF9TT1VUX1NFTDB4ZjE4Cj4+PiArI2RlZmluZSBNVDgxODhfTUVSR0U0X1NPVVRf VE9fRFBJMV9TRUxCSVQoMikKPj4+ICsjZGVmaW5lIE1UODE4OF9NRVJHRTRfU09VVF9UT19EUF9J TlRGMF9TRUxCSVQoMykKPj4+ICsjZGVmaW5lIE1UODE4OF9WRE8xX01JWEVSX0lOMV9TRUxfSU4w eGYyNAo+Pj4gKyNkZWZpbmUgTVQ4MTg4X01JWEVSX0lOMV9TRUxfSU5fRlJPTV9NRVJHRTBfQVNZ TkNfU09VVDEKPj4+ICsjZGVmaW5lIE1UODE4OF9WRE8xX01JWEVSX0lOMl9TRUxfSU4weGYyOAo+ Pj4gKyNkZWZpbmUgTVQ4MTg4X01JWEVSX0lOMl9TRUxfSU5fRlJPTV9NRVJHRTFfQVNZTkNfU09V VDEKPj4+ICsjZGVmaW5lIE1UODE4OF9WRE8xX01JWEVSX0lOM19TRUxfSU4weGYyYwo+Pj4gKyNk ZWZpbmUgTVQ4MTg4X01JWEVSX0lOM19TRUxfSU5fRlJPTV9NRVJHRTJfQVNZTkNfU09VVDEKPj4+ ICsjZGVmaW5lIE1UODE4OF9WRE8xX01JWEVSX0lONF9TRUxfSU4weGYzMAo+Pj4gKyNkZWZpbmUg TVQ4MTg4X01JWEVSX0lONF9TRUxfSU5fRlJPTV9NRVJHRTNfQVNZTkNfU09VVDEKPj4+ICsjZGVm aW5lIE1UODE4OF9WRE8xX01JWEVSX09VVF9TT1VUX1NFTDB4ZjM0Cj4+PiArI2RlZmluZSBNVDgx ODhfTUlYRVJfU09VVF9UT19NRVJHRTRfQVNZTkNfU0VMMQo+Pj4gKyNkZWZpbmUgTVQ4MTg4X1ZE TzFfVlBQX01FUkdFMV9QMF9TRUxfSU4weGYzYwo+Pj4gKyNkZWZpbmUgTVQ4MTg4X1ZQUF9NRVJH RTFfUDBfU0VMX0lOX0ZST01fTURQX1JETUEyMQo+Pj4gKyNkZWZpbmUgTVQ4MTg4X1ZETzFfTUVS R0UwX0FTWU5DX1NPVVRfU0VMMHhmNDAKPj4+ICsjZGVmaW5lIE1UODE4OF9TT1VUX1RPX01JWEVS X0lOMV9TRUwxCj4+PiArI2RlZmluZSBNVDgxODhfVkRPMV9NRVJHRTFfQVNZTkNfU09VVF9TRUww eGY0NAo+Pj4gKyNkZWZpbmUgTVQ4MTg4X1NPVVRfVE9fTUlYRVJfSU4yX1NFTDEKPj4+ICsjZGVm aW5lIE1UODE4OF9WRE8xX01FUkdFMl9BU1lOQ19TT1VUX1NFTDB4ZjQ4Cj4+PiArI2RlZmluZSBN VDgxODhfU09VVF9UT19NSVhFUl9JTjNfU0VMMQo+Pj4gKyNkZWZpbmUgTVQ4MTg4X1ZETzFfTUVS R0UzX0FTWU5DX1NPVVRfU0VMMHhmNGMKPj4+ICsjZGVmaW5lIE1UODE4OF9TT1VUX1RPX01JWEVS X0lONF9TRUwxCj4+PiArI2RlZmluZSBNVDgxODhfVkRPMV9NRVJHRTRfQVNZTkNfU0VMX0lOMHhm NTAKPj4+ICsjZGVmaW5lIE1UODE4OF9NRVJHRTRfQVNZTkNfU0VMX0lOX0ZST01fTUlYRVJfT1VU X1NPVVQxCj4+PiArI2RlZmluZSBNVDgxODhfVkRPMV9NSVhFUl9JTjFfU09VVF9TRUwweGY1OAo+ Pj4gKyNkZWZpbmUgTVQ4MTg4X01JWEVSX0lOMV9TT1VUX1RPX0RJU1BfTUlYRVIwCj4+PiArI2Rl ZmluZSBNVDgxODhfVkRPMV9NSVhFUl9JTjJfU09VVF9TRUwweGY1Ywo+Pj4gKyNkZWZpbmUgTVQ4 MTg4X01JWEVSX0lOMl9TT1VUX1RPX0RJU1BfTUlYRVIwCj4+PiArI2RlZmluZSBNVDgxODhfVkRP MV9NSVhFUl9JTjNfU09VVF9TRUwweGY2MAo+Pj4gKyNkZWZpbmUgTVQ4MTg4X01JWEVSX0lOM19T T1VUX1RPX0RJU1BfTUlYRVIwCj4+PiArI2RlZmluZSBNVDgxODhfVkRPMV9NSVhFUl9JTjRfU09V VF9TRUwweGY2NAo+Pj4gKyNkZWZpbmUgTVQ4MTg4X01JWEVSX0lONF9TT1VUX1RPX0RJU1BfTUlY RVIwCj4+PiArI2RlZmluZSBNVDgxODhfVkRPMV9NSVhFUl9TT1VUX1NFTF9JTjB4ZjY4Cj4+PiAr I2RlZmluZSBNVDgxODhfTUlYRVJfU09VVF9TRUxfSU5fRlJPTV9ESVNQX01JWEVSMAo+Pj4gKyNk ZWZpbmUgTVQ4MTg4X1ZETzFfTUlYRVJfVlNZTkNfTEVOMHhkNWMKPj4+ICsKPj4+ICAgIHN0YXRp YyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX3JvdXRlcyBtbXN5c19tdDgxODhfcm91dGluZ190YWJs ZVtdCj4+ID0gewo+Pj4gICAgewo+Pj4gICAgRERQX0NPTVBPTkVOVF9PVkwwLCBERFBfQ09NUE9O RU5UX1JETUEwLAo+Pj4gQEAgLTE0Niw0ICsxOTcsODAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBt dGtfbW1zeXNfcm91dGVzCj4+IG1tc3lzX210ODE4OF9yb3V0aW5nX3RhYmxlW10gPSB7Cj4+PiAg ICB9LAo+Pj4gICAgfTsKPj4+Cj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfcm91 dGVzCj4+IG1tc3lzX210ODE4OF92ZG8xX3JvdXRpbmdfdGFibGVbXSA9IHsKPj4+ICt7Cj4+PiAr RERQX0NPTVBPTkVOVF9NRFBfUkRNQTAsIEREUF9DT01QT05FTlRfTUVSR0UxLAo+Pj4gK01UODE4 OF9WRE8xX1ZQUF9NRVJHRTBfUDBfU0VMX0lOLCBHRU5NQVNLKDAsIDApLAo+Pj4gK01UODE4OF9W UFBfTUVSR0UwX1AwX1NFTF9JTl9GUk9NX01EUF9SRE1BMAo+Pj4gK30sIHsKPj4+ICtERFBfQ09N UE9ORU5UX01EUF9SRE1BMSwgRERQX0NPTVBPTkVOVF9NRVJHRTEsCj4+PiArTVQ4MTg4X1ZETzFf VlBQX01FUkdFMF9QMV9TRUxfSU4sIEdFTk1BU0soMCwgMCksCj4+PiArTVQ4MTg4X1ZQUF9NRVJH RTBfUDFfU0VMX0lOX0ZST01fTURQX1JETUExCj4+PiArfSwgewo+Pj4gK0REUF9DT01QT05FTlRf TURQX1JETUEyLCBERFBfQ09NUE9ORU5UX01FUkdFMiwKPj4+ICtNVDgxODhfVkRPMV9WUFBfTUVS R0UxX1AwX1NFTF9JTiwgR0VOTUFTSygwLCAwKSwKPj4+ICtNVDgxODhfVlBQX01FUkdFMV9QMF9T RUxfSU5fRlJPTV9NRFBfUkRNQTIKPj4+ICt9LCB7Cj4+PiArRERQX0NPTVBPTkVOVF9NRVJHRTEs IEREUF9DT01QT05FTlRfRVRIRFJfTUlYRVIsCj4+PiArTVQ4MTg4X1ZETzFfTUVSR0UwX0FTWU5D X1NPVVRfU0VMLCBHRU5NQVNLKDEsIDApLAo+Pj4gK01UODE4OF9TT1VUX1RPX01JWEVSX0lOMV9T RUwKPj4+ICt9LCB7Cj4+PiArRERQX0NPTVBPTkVOVF9NRVJHRTIsIEREUF9DT01QT05FTlRfRVRI RFJfTUlYRVIsCj4+PiArTVQ4MTg4X1ZETzFfTUVSR0UxX0FTWU5DX1NPVVRfU0VMLCBHRU5NQVNL KDEsIDApLAo+Pj4gK01UODE4OF9TT1VUX1RPX01JWEVSX0lOMl9TRUwKPj4+ICt9LCB7Cj4+PiAr RERQX0NPTVBPTkVOVF9NRVJHRTMsIEREUF9DT01QT05FTlRfRVRIRFJfTUlYRVIsCj4+PiArTVQ4 MTg4X1ZETzFfTUVSR0UyX0FTWU5DX1NPVVRfU0VMLCBHRU5NQVNLKDEsIDApLAo+Pj4gK01UODE4 OF9TT1VUX1RPX01JWEVSX0lOM19TRUwKPj4+ICt9LCB7Cj4+PiArRERQX0NPTVBPTkVOVF9NRVJH RTQsIEREUF9DT01QT05FTlRfRVRIRFJfTUlYRVIsCj4+PiArTVQ4MTg4X1ZETzFfTUVSR0UzX0FT WU5DX1NPVVRfU0VMLCBHRU5NQVNLKDEsIDApLAo+Pj4gK01UODE4OF9TT1VUX1RPX01JWEVSX0lO NF9TRUwKPj4+ICt9LCB7Cj4+PiArRERQX0NPTVBPTkVOVF9FVEhEUl9NSVhFUiwgRERQX0NPTVBP TkVOVF9NRVJHRTUsCj4+PiArTVQ4MTg4X1ZETzFfTUlYRVJfT1VUX1NPVVRfU0VMLCBHRU5NQVNL KDAsIDApLAo+Pj4gK01UODE4OF9NSVhFUl9TT1VUX1RPX01FUkdFNF9BU1lOQ19TRUwKPj4+ICt9 LCB7Cj4+PiArRERQX0NPTVBPTkVOVF9NRVJHRTEsIEREUF9DT01QT05FTlRfRVRIRFJfTUlYRVIs Cj4+PiArTVQ4MTg4X1ZETzFfTUlYRVJfSU4xX1NFTF9JTiwgR0VOTUFTSygwLCAwKSwKPj4+ICtN VDgxODhfTUlYRVJfSU4xX1NFTF9JTl9GUk9NX01FUkdFMF9BU1lOQ19TT1VUCj4+PiArfSwgewo+ Pj4gK0REUF9DT01QT05FTlRfTUVSR0UyLCBERFBfQ09NUE9ORU5UX0VUSERSX01JWEVSLAo+Pj4g K01UODE4OF9WRE8xX01JWEVSX0lOMl9TRUxfSU4sIEdFTk1BU0soMCwgMCksCj4+PiArTVQ4MTg4 X01JWEVSX0lOMl9TRUxfSU5fRlJPTV9NRVJHRTFfQVNZTkNfU09VVAo+Pj4gK30sIHsKPj4+ICtE RFBfQ09NUE9ORU5UX01FUkdFMywgRERQX0NPTVBPTkVOVF9FVEhEUl9NSVhFUiwKPj4+ICtNVDgx ODhfVkRPMV9NSVhFUl9JTjNfU0VMX0lOLCBHRU5NQVNLKDAsIDApLAo+Pj4gK01UODE4OF9NSVhF Ul9JTjNfU0VMX0lOX0ZST01fTUVSR0UyX0FTWU5DX1NPVVQKPj4+ICt9LCB7Cj4+PiArRERQX0NP TVBPTkVOVF9NRVJHRTQsIEREUF9DT01QT05FTlRfRVRIRFJfTUlYRVIsCj4+PiArTVQ4MTg4X1ZE TzFfTUlYRVJfSU40X1NFTF9JTiwgR0VOTUFTSygwLCAwKSwKPj4+ICtNVDgxODhfTUlYRVJfSU40 X1NFTF9JTl9GUk9NX01FUkdFM19BU1lOQ19TT1VUCj4+PiArfSwgewo+Pj4gK0REUF9DT01QT05F TlRfRVRIRFJfTUlYRVIsIEREUF9DT01QT05FTlRfTUVSR0U1LAo+Pj4gK01UODE4OF9WRE8xX01J WEVSX1NPVVRfU0VMX0lOLCBHRU5NQVNLKDIsIDApLAo+Pj4gK01UODE4OF9NSVhFUl9TT1VUX1NF TF9JTl9GUk9NX0RJU1BfTUlYRVIKPj4+ICt9LCB7Cj4+PiArRERQX0NPTVBPTkVOVF9FVEhEUl9N SVhFUiwgRERQX0NPTVBPTkVOVF9NRVJHRTUsCj4+PiArTVQ4MTg4X1ZETzFfTUVSR0U0X0FTWU5D X1NFTF9JTiwgR0VOTUFTSygyLCAwKSwKPj4+ICtNVDgxODhfTUVSR0U0X0FTWU5DX1NFTF9JTl9G Uk9NX01JWEVSX09VVF9TT1VUCj4+PiArfSwgewo+Pj4gK0REUF9DT01QT05FTlRfTUVSR0U1LCBE RFBfQ09NUE9ORU5UX0RQSTEsCj4+PiArTVQ4MTg4X1ZETzFfRElTUF9EUEkxX1NFTF9JTiwgR0VO TUFTSygxLCAwKSwKPj4+ICtNVDgxODhfRElTUF9EUEkxX1NFTF9JTl9GUk9NX1ZQUF9NRVJHRTRf TU9VVAo+Pj4gK30sIHsKPj4+ICtERFBfQ09NUE9ORU5UX01FUkdFNSwgRERQX0NPTVBPTkVOVF9E UEkxLAo+Pj4gK01UODE4OF9WRE8xX01FUkdFNF9TT1VUX1NFTCwgR0VOTUFTSygxLCAwKSwKPj4+ ICtNVDgxODhfTUVSR0U0X1NPVVRfVE9fRFBJMV9TRUwKPj4+ICt9LCB7Cj4+PiArRERQX0NPTVBP TkVOVF9NRVJHRTUsIEREUF9DT01QT05FTlRfRFBfSU5URjEsCj4+PiArTVQ4MTg4X1ZETzFfRElT UF9EUF9JTlRGMF9TRUxfSU4sIEdFTk1BU0soMSwgMCksCj4+PiArTVQ4MTg4X0RJU1BfRFBfSU5U RjBfU0VMX0lOX0ZST01fVlBQX01FUkdFNF9NT1VUCj4+PiArfSwgewo+Pj4gK0REUF9DT01QT05F TlRfTUVSR0U1LCBERFBfQ09NUE9ORU5UX0RQX0lOVEYxLAo+Pj4gK01UODE4OF9WRE8xX01FUkdF NF9TT1VUX1NFTCwgR0VOTUFTSygzLCAwKSwKPj4+ICtNVDgxODhfTUVSR0U0X1NPVVRfVE9fRFBf SU5URjBfU0VMCj4+PiArfQo+Pj4gK307Cj4+PiArCj4+PiAgICAjZW5kaWYgLyogX19TT0NfTUVE SUFURUtfTVQ4MTg4X01NU1lTX0ggKi8KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9tZWRp YXRlay9tdGstbW1zeXMuYwo+PiBiL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5jCj4+ PiBpbmRleCA5NjE5ZmFhNzk2ZTguLjNhODFlZjJiY2MzYyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZl cnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5jCj4+PiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRl ay9tdGstbW1zeXMuYwo+Pj4gQEAgLTg5LDYgKzg5LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg bXRrX21tc3lzX2RyaXZlcl9kYXRhCj4+IG10ODE4OF92ZG9zeXMwX2RyaXZlcl9kYXRhID0gewo+ Pj4gICAgLm51bV9yb3V0ZXMgPSBBUlJBWV9TSVpFKG1tc3lzX210ODE4OF9yb3V0aW5nX3RhYmxl KSwKPj4+ICAgIH07Cj4+Pgo+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZl cl9kYXRhCj4+IG10ODE4OF92ZG9zeXMxX2RyaXZlcl9kYXRhID0gewo+Pj4gKy5jbGtfZHJpdmVy ID0gImNsay1tdDgxODgtdmRvMSIsCj4+PiArLnJvdXRlcyA9IG1tc3lzX210ODE4OF92ZG8xX3Jv dXRpbmdfdGFibGUsCj4+PiArLm51bV9yb3V0ZXMgPSBBUlJBWV9TSVpFKG1tc3lzX210ODE4OF92 ZG8xX3JvdXRpbmdfdGFibGUpLAo+Pj4gKy5zdzBfcnN0X29mZnNldCA9IE1UODE4OF9WRE8xX1NX MF9SU1RfQiwKPj4+ICsubnVtX3Jlc2V0cyA9IDk2LAo+Pj4gKy52c3luY19sZW4gPSAxLAo+Pj4g K307Cj4+PiArCj4+PiAgICBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0 YQo+PiBtdDgxOTJfbW1zeXNfZHJpdmVyX2RhdGEgPSB7Cj4+PiAgICAuY2xrX2RyaXZlciA9ICJj bGstbXQ4MTkyLW1tIiwKPj4+ICAgIC5yb3V0ZXMgPSBtbXN5c19tdDgxOTJfcm91dGluZ190YWJs ZSwKPj4+IEBAIC0yMTMsNiArMjIyLDkgQEAgdm9pZCBtdGtfbW1zeXNfbWl4ZXJfaW5fY29uZmln KHN0cnVjdCBkZXZpY2UKPj4gKmRldiwgaW50IGlkeCwgYm9vbCBhbHBoYV9zZWwsIHUxNgo+Pj4g ICAgICAgICAgYWxwaGFfc2VsIDw8ICgxOSArIGlkeCksIGNtZHFfcGt0KTsKPj4+ICAgIG10a19t bXN5c191cGRhdGVfYml0cyhtbXN5cywgTVQ4MTk1X1ZETzFfTUlYRVJfSU4xX1BBRCArIChpZHgg LQo+PiAxKSAqIDQsCj4+PiAgICAgICAgICBHRU5NQVNLKDMxLCAxNikgfCBHRU5NQVNLKDEsIDAp LCBiaXdpZHRoIDw8IDE2IHwgbW9kZSwKPj4gY21kcV9wa3QpOwo+Pj4gK2lmIChtbXN5cy0+ZGF0 YS0+dnN5bmNfbGVuKQo+Pj4gK210a19tbXN5c191cGRhdGVfYml0cyhtbXN5cywgTVQ4MTg4X1ZE TzFfTUlYRVJfVlNZTkNfTEVOLCB+MCwKPj4+ICsgICAgICBtbXN5cy0+ZGF0YS0+dnN5bmNfbGVu LCBjbWRxX3BrdCk7Cj4+PiAgICB9Cj4+PiAgICBFWFBPUlRfU1lNQk9MX0dQTChtdGtfbW1zeXNf bWl4ZXJfaW5fY29uZmlnKTsKPj4+Cj4+PiBAQCAtNDMxLDYgKzQ0Myw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkCj4+IG9mX21hdGNoX210a19tbXN5c1tdID0gewo+Pj4gICAg eyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxODMtbW1zeXMiLCAuZGF0YSA9Cj4+ICZtdDgx ODNfbW1zeXNfZHJpdmVyX2RhdGEgfSwKPj4+ICAgIHsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWss bXQ4MTg2LW1tc3lzIiwgLmRhdGEgPQo+PiAmbXQ4MTg2X21tc3lzX2RyaXZlcl9kYXRhIH0sCj4+ PiAgICB7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE4OC12ZG9zeXMwIiwgLmRhdGEgPQo+ PiAmbXQ4MTg4X3Zkb3N5czBfZHJpdmVyX2RhdGEgfSwKPj4+ICt7IC5jb21wYXRpYmxlID0gIm1l ZGlhdGVrLG10ODE4OC12ZG9zeXMxIiwgLmRhdGEgPQo+PiAmbXQ4MTg4X3Zkb3N5czFfZHJpdmVy X2RhdGEgfSwKPj4+ICAgIHsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTkyLW1tc3lzIiwg LmRhdGEgPQo+PiAmbXQ4MTkyX21tc3lzX2RyaXZlcl9kYXRhIH0sCj4+PiAgICAvKiAibWVkaWF0 ZWssbXQ4MTk1LW1tc3lzIiBjb21wYXRpYmxlIGlzIGRlcHJlY2F0ZWQgKi8KPj4+ICAgIHsgLmNv bXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTk1LW1tc3lzIiwgLmRhdGEgPQo+PiAmbXQ4MTk1X3Zk b3N5czBfZHJpdmVyX2RhdGEgfSwKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRl ay9tdGstbW1zeXMuaAo+PiBiL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5oCj4+PiBp bmRleCA2NzI1NDAzZDJlM2EuLmU0YWI0NjAxNzQzMCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMv c29jL21lZGlhdGVrL210ay1tbXN5cy5oCj4+PiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9t dGstbW1zeXMuaAo+Pj4gQEAgLTg2LDYgKzg2LDM0IEBAIHN0cnVjdCBtdGtfbW1zeXNfcm91dGVz IHsKPj4+ICAgIHUzMiB2YWw7Cj4+PiAgICB9Owo+Pj4KPj4+ICsvKioKPj4+ICsgKiBzdHJ1Y3Qg bXRrX21tc3lzX2RyaXZlcl9kYXRhIC0gc2V0dGluZ3MgZm9yIHRoZSBtbXN5cwo+Pj4gKyAqIEBj bGtfZHJpdmVyOiBDbG9jayBkcml2ZXIgbmFtZSB0aGF0IHRoZSBtbXN5cyBpcyB1c2luZwo+Pj4g KyAqICAgICAgICAgICAgICAoZGVmaW5lZCBpbiBkcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstKi5j KS4KPj4+ICsgKiBAcm91dGVzOiBSb3V0aW5nIHRhYmxlIG9mIHRoZSBtbXN5cy4KPj4+ICsgKiAg ICAgICAgICBJdCBwcm92aWRlcyBtdXggc2V0dGluZ3MgZnJvbSBvbmUgbW9kdWxlIHRvIGFub3Ro ZXIuCj4+PiArICogQG51bV9yb3V0ZXM6IEFycmF5IHNpemUgb2YgdGhlIHJvdXRlcy4KPj4+ICsg KiBAc3cwX3JzdF9vZmZzZXQ6IFJlZ2lzdGVyIG9mZnNldCBmb3IgdGhlIHJlc2V0IGNvbnRyb2wu Cj4+PiArICogQG51bV9yZXNldHM6IE51bWJlciBvZiByZXNldCBiaXRzIHRoYXQgYXJlIGRlZmlu ZWQKPj4+ICsgKiBAaXNfdnBwc3lzOiBXaGV0aGVyIHRoZSBtbXN5cyBpcyBWUFBTWVMgKFZpZGVv IFByb2Nlc3NpbmcgUGlwZSkKPj4+ICsgKiAgICAgICAgICAgICBvciBWRE9TWVMgKFZpZGVvKS4g T25seSBWRE9TWVMgbmVlZHMgdG8gYmUgYWRkZWQgdG8KPj4gZHJtIGRyaXZlci4KPj4+ICsgKiBA dnN5bmNfbGVuOiBWU1lOQyBsZW5ndGggb2YgdGhlIE1JWEVSLgo+Pj4gKyAqICAgICAgICAgICAg IFZTWU5DIGlzIHVzdWFsbHkgdHJpZ2dlcmVkIGJ5IHRoZSBjb25uZWN0b3IsIHNvIGl0cwo+PiBs ZW5ndGggaXMKPj4+ICsgKiAgICAgICAgICAgICBhIGZpeGVkIHZhbHVlIGFzIGxvbmcgYXMgdGhl IGZyYW1lIHJhdGUgaXMgZGVjaWRlZCwKPj4gYnV0IEVUREhSIGFuZAo+Pj4gKyAqICAgICAgICAg ICAgIE1JWEVSIGdlbmVyYXRlIHRoZWlyIG93biBWU1lOQyBkdWUgdG8gaGFyZHdhcmUKPj4gZGVz aWduLCB0aGVyZWZvcmUKPj4+ICsgKiAgICAgICAgICAgICBNSVhFUiBoYXMgdG8gc3luYyB3aXRo IEVUSERSIGJ5IGFkanVzdGluZyBWU1lOQwo+PiBsZW5ndGguCj4+PiArICogICAgICAgICAgICAg T24gTVQ4MTk1LCB0aGVyZSBpcyBubyBzdWNoIHNldHRpbmcgc28gd2UgdXNlIHRoZQo+PiBnYXAg YmV0d2Vlbgo+Pj4gKyAqICAgICAgICAgICAgIGZhbGxpbmcgZWRnZSBhbmQgcmlzaW5nIGVkZ2Ug b2YgU09GIChTdGFydCBvZgo+PiBGcmFtZSkgc2lnbmFsIHRvCj4+PiArICogICAgICAgICAgICAg ZG8gdGhlIGpvYiwgYnV0IHNpbmNlIE1UODE4OCwgVlNOWUNfTEVOIHNldHRpbmcgaXMKPj4gaW50 cm9kdWNlZCB0bwo+Pj4gKyAqICAgICAgICAgICAgIHNvbHZlIHRoZSBwcm9ibGVtIGFuZCBpcyBn aXZlbiAweDQwICh0aWNrcykgYXMgdGhlCj4+IGRlZmF1bHQgdmFsdWUuCj4+PiArICogICAgICAg ICAgICAgUGxlYXNlIG5vdGljZSB0aGF0IHRoaXMgdmFsdWUgaGFzIHRvIGJlIHNldCB0byAxCj4+ IChtaW5pbXVtKSBpZgo+Pj4gKyAqICAgICAgICAgICAgIEVUSERSIGlzIGJ5cGFzc2VkLCBvdGhl cndpc2UgTUlYRVIgY291bGQgd2FpdCB0b28KPj4gbG9uZyBhbmQgY2F1c2luZwo+Pj4gKyAqICAg ICAgICAgICAgIHVuZGVyZmxvdy4KPj4+ICsgKgo+Pj4gKyAqIEVhY2ggTU1TWVMgKG11bHRpLW1l ZGlhIHN5c3RlbSkgbWF5IGhhdmUgZGlmZmVyZW50IHNldHRpbmdzLAo+PiB0aGV5IG1heSB1c2UK Pj4+ICsgKiBkaWZmZXJlbnQgY2xvY2sgc291cmNlcywgbXV4IHNldHRpbmdzLCByZXNldCBjb250 cm9sIC4uLmV0Yy4sCj4+IGFuZCB0aGVzZQo+Pj4gKyAqIGRpZmZlcmVuY2VzIGFyZSBhbGwgc3Rv cmVkIGhlcmUuCj4+PiArICovCj4+PiAgICBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRhIHsK Pj4+ICAgIGNvbnN0IGNoYXIgKmNsa19kcml2ZXI7Cj4+PiAgICBjb25zdCBzdHJ1Y3QgbXRrX21t c3lzX3JvdXRlcyAqcm91dGVzOwo+Pj4gQEAgLTkzLDYgKzEyMSw3IEBAIHN0cnVjdCBtdGtfbW1z eXNfZHJpdmVyX2RhdGEgewo+Pj4gICAgY29uc3QgdTE2IHN3MF9yc3Rfb2Zmc2V0Owo+Pj4gICAg Y29uc3QgdTMyIG51bV9yZXNldHM7Cj4+PiAgICBjb25zdCBib29sIGlzX3ZwcHN5czsKPj4+ICtj b25zdCB1OCB2c3luY19sZW47Cj4+PiAgICB9Owo+Pj4KPj4+ICAgIC8qCj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRrLW11dGV4LmMKPj4gYi9kcml2ZXJzL3NvYy9tZWRp YXRlay9tdGstbXV0ZXguYwo+Pj4gaW5kZXggMjZmM2Q5YTQxNDk2Li4xMWRkYTIwZWI0NjIgMTAw NjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstbXV0ZXguYwo+Pj4gKysrIGIv ZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRrLW11dGV4LmMKPj4+IEBAIC0xMzQsNiArMTM0LDIyIEBA Cj4+PiAgICAjZGVmaW5lIE1UODE4OF9NVVRFWF9NT0RfRElTUF9QT1NUTUFTSzAyNAo+Pj4gICAg I2RlZmluZSBNVDgxODhfTVVURVhfTU9EMl9ESVNQX1BXTTAzMwo+Pj4KPj4+ICsjZGVmaW5lIE1U ODE4OF9NVVRFWF9NT0RfRElTUDFfTURQX1JETUEwMAo+Pj4gKyNkZWZpbmUgTVQ4MTg4X01VVEVY X01PRF9ESVNQMV9NRFBfUkRNQTExCj4+PiArI2RlZmluZSBNVDgxODhfTVVURVhfTU9EX0RJU1Ax X01EUF9SRE1BMjIKPj4+ICsjZGVmaW5lIE1UODE4OF9NVVRFWF9NT0RfRElTUDFfTURQX1JETUEz Mwo+Pj4gKyNkZWZpbmUgTVQ4MTg4X01VVEVYX01PRF9ESVNQMV9NRFBfUkRNQTQ0Cj4+PiArI2Rl ZmluZSBNVDgxODhfTVVURVhfTU9EX0RJU1AxX01EUF9SRE1BNTUKPj4+ICsjZGVmaW5lIE1UODE4 OF9NVVRFWF9NT0RfRElTUDFfTURQX1JETUE2Ngo+Pj4gKyNkZWZpbmUgTVQ4MTg4X01VVEVYX01P RF9ESVNQMV9NRFBfUkRNQTc3Cj4+PiArI2RlZmluZSBNVDgxODhfTVVURVhfTU9EX0RJU1AxX1ZQ UF9NRVJHRTAyMAo+Pj4gKyNkZWZpbmUgTVQ4MTg4X01VVEVYX01PRF9ESVNQMV9WUFBfTUVSR0Ux MjEKPj4+ICsjZGVmaW5lIE1UODE4OF9NVVRFWF9NT0RfRElTUDFfVlBQX01FUkdFMjIyCj4+PiAr I2RlZmluZSBNVDgxODhfTVVURVhfTU9EX0RJU1AxX1ZQUF9NRVJHRTMyMwo+Pj4gKyNkZWZpbmUg TVQ4MTg4X01VVEVYX01PRF9ESVNQMV9WUFBfTUVSR0U0MjQKPj4+ICsjZGVmaW5lIE1UODE4OF9N VVRFWF9NT0RfRElTUDFfRElTUF9NSVhFUjMwCj4+PiArI2RlZmluZSBNVDgxODhfTVVURVhfTU9E X0RJU1AxX0RQX0lOVEYxMzkKPj4+ICsKPj4+ICAgICNkZWZpbmUgTVQ4MTk1X01VVEVYX01PRF9E SVNQX09WTDAwCj4+PiAgICAjZGVmaW5lIE1UODE5NV9NVVRFWF9NT0RfRElTUF9XRE1BMDEKPj4+ ICAgICNkZWZpbmUgTVQ4MTk1X01VVEVYX01PRF9ESVNQX1JETUEwMgo+Pj4gQEAgLTI2NSw2ICsy ODEsNyBAQAo+Pj4gICAgI2RlZmluZSBNVDgxODNfTVVURVhfU09GX0RQSTAyCj4+PiAgICAjZGVm aW5lIE1UODE4OF9NVVRFWF9TT0ZfRFNJMDEKPj4+ICAgICNkZWZpbmUgTVQ4MTg4X01VVEVYX1NP Rl9EUF9JTlRGMDMKPj4+ICsjZGVmaW5lIE1UODE4OF9NVVRFWF9TT0ZfRFBfSU5URjE0Cj4+PiAg ICAjZGVmaW5lIE1UODE5NV9NVVRFWF9TT0ZfRFNJMDEKPj4+ICAgICNkZWZpbmUgTVQ4MTk1X01V VEVYX1NPRl9EU0kxMgo+Pj4gICAgI2RlZmluZSBNVDgxOTVfTVVURVhfU09GX0RQX0lOVEYwMwo+ Pj4gQEAgLTI3Niw2ICsyOTMsNyBAQAo+Pj4gICAgI2RlZmluZSBNVDgxODNfTVVURVhfRU9GX0RQ STAoTVQ4MTgzX01VVEVYX1NPRl9EUEkwIDw8IDYpCj4+PiAgICAjZGVmaW5lIE1UODE4OF9NVVRF WF9FT0ZfRFNJMChNVDgxODhfTVVURVhfU09GX0RTSTAgPDwgNykKPj4+ICAgICNkZWZpbmUgTVQ4 MTg4X01VVEVYX0VPRl9EUF9JTlRGMChNVDgxODhfTVVURVhfU09GX0RQX0lOVEYwIDw8IDcpCj4+ PiArI2RlZmluZSBNVDgxODhfTVVURVhfRU9GX0RQX0lOVEYxKE1UODE4OF9NVVRFWF9TT0ZfRFBf SU5URjEgPDwgNykKPj4+ICAgICNkZWZpbmUgTVQ4MTk1X01VVEVYX0VPRl9EU0kwKE1UODE5NV9N VVRFWF9TT0ZfRFNJMCA8PCA3KQo+Pj4gICAgI2RlZmluZSBNVDgxOTVfTVVURVhfRU9GX0RTSTEo TVQ4MTk1X01VVEVYX1NPRl9EU0kxIDw8IDcpCj4+PiAgICAjZGVmaW5lIE1UODE5NV9NVVRFWF9F T0ZfRFBfSU5URjAoTVQ4MTk1X01VVEVYX1NPRl9EUF9JTlRGMCA8PCA3KQo+Pj4gQEAgLTQ0Niw2 ICs0NjQsMjEgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludAo+PiBtdDgxODhfbXV0ZXhfbW9k W0REUF9DT01QT05FTlRfSURfTUFYXSA9IHsKPj4+ICAgIFtERFBfQ09NUE9ORU5UX0RTSTBdID0g TVQ4MTg4X01VVEVYX01PRF9ESVNQX0RTSTAsCj4+PiAgICBbRERQX0NPTVBPTkVOVF9QV00wXSA9 IE1UODE4OF9NVVRFWF9NT0QyX0RJU1BfUFdNMCwKPj4+ICAgIFtERFBfQ09NUE9ORU5UX0RQX0lO VEYwXSA9IE1UODE4OF9NVVRFWF9NT0RfRElTUF9EUF9JTlRGMCwKPj4+ICtbRERQX0NPTVBPTkVO VF9NRFBfUkRNQTBdID0gTVQ4MTg4X01VVEVYX01PRF9ESVNQMV9NRFBfUkRNQTAsCj4+PiArW0RE UF9DT01QT05FTlRfTURQX1JETUExXSA9IE1UODE4OF9NVVRFWF9NT0RfRElTUDFfTURQX1JETUEx LAo+Pj4gK1tERFBfQ09NUE9ORU5UX01EUF9SRE1BMl0gPSBNVDgxODhfTVVURVhfTU9EX0RJU1Ax X01EUF9SRE1BMiwKPj4+ICtbRERQX0NPTVBPTkVOVF9NRFBfUkRNQTNdID0gTVQ4MTg4X01VVEVY X01PRF9ESVNQMV9NRFBfUkRNQTMsCj4+PiArW0REUF9DT01QT05FTlRfTURQX1JETUE0XSA9IE1U ODE4OF9NVVRFWF9NT0RfRElTUDFfTURQX1JETUE0LAo+Pj4gK1tERFBfQ09NUE9ORU5UX01EUF9S RE1BNV0gPSBNVDgxODhfTVVURVhfTU9EX0RJU1AxX01EUF9SRE1BNSwKPj4+ICtbRERQX0NPTVBP TkVOVF9NRFBfUkRNQTZdID0gTVQ4MTg4X01VVEVYX01PRF9ESVNQMV9NRFBfUkRNQTYsCj4+PiAr W0REUF9DT01QT05FTlRfTURQX1JETUE3XSA9IE1UODE4OF9NVVRFWF9NT0RfRElTUDFfTURQX1JE TUE3LAo+Pj4gK1tERFBfQ09NUE9ORU5UX01FUkdFMV0gPSBNVDgxODhfTVVURVhfTU9EX0RJU1Ax X1ZQUF9NRVJHRTAsCj4+PiArW0REUF9DT01QT05FTlRfTUVSR0UyXSA9IE1UODE4OF9NVVRFWF9N T0RfRElTUDFfVlBQX01FUkdFMSwKPj4+ICtbRERQX0NPTVBPTkVOVF9NRVJHRTNdID0gTVQ4MTg4 X01VVEVYX01PRF9ESVNQMV9WUFBfTUVSR0UyLAo+Pj4gK1tERFBfQ09NUE9ORU5UX01FUkdFNF0g PSBNVDgxODhfTVVURVhfTU9EX0RJU1AxX1ZQUF9NRVJHRTMsCj4+PiArW0REUF9DT01QT05FTlRf RVRIRFJfTUlYRVJdID0gTVQ4MTg4X01VVEVYX01PRF9ESVNQMV9ESVNQX01JWEVSLAo+Pj4gK1tE RFBfQ09NUE9ORU5UX01FUkdFNV0gPSBNVDgxODhfTVVURVhfTU9EX0RJU1AxX1ZQUF9NRVJHRTQs Cj4+PiArW0REUF9DT01QT05FTlRfRFBfSU5URjFdID0gTVQ4MTg4X01VVEVYX01PRF9ESVNQMV9E UF9JTlRGMSwKPj4+ICAgIH07Cj4+Pgo+Pj4gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBt dDgxOTJfbXV0ZXhfbW9kW0REUF9DT01QT05FTlRfSURfTUFYXQo+PiA9IHsKPj4+IEBAIC02MDYs NiArNjM5LDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludAo+PiBtdDgxODhfbXV0ZXhfc29m W0REUF9NVVRFWF9TT0ZfTUFYXSA9IHsKPj4+ICAgIE1UODE4OF9NVVRFWF9TT0ZfRFNJMCB8IE1U ODE4OF9NVVRFWF9FT0ZfRFNJMCwKPj4+ICAgIFtNVVRFWF9TT0ZfRFBfSU5URjBdID0KPj4+ICAg IE1UODE4OF9NVVRFWF9TT0ZfRFBfSU5URjAgfCBNVDgxODhfTVVURVhfRU9GX0RQX0lOVEYwLAo+ Pj4gK1tNVVRFWF9TT0ZfRFBfSU5URjFdID0KPj4+ICtNVDgxODhfTVVURVhfU09GX0RQX0lOVEYx IHwgTVQ4MTg4X01VVEVYX0VPRl9EUF9JTlRGMSwKPj4+ICAgIH07Cj4+Pgo+Pj4gICAgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGludCBtdDgxOTVfbXV0ZXhfc29mW0REUF9NVVRFWF9TT0ZfTUFYXSA9 IHsKPj4+IC0tCj4+PiAyLjE4LjAKPj4+Cj4+CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D4A6EB64DC for ; Thu, 15 Jun 2023 07:41:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238681AbjFOHlV (ORCPT ); Thu, 15 Jun 2023 03:41:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245266AbjFOHj5 (ORCPT ); Thu, 15 Jun 2023 03:39:57 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 108902961; Thu, 15 Jun 2023 00:39:29 -0700 (PDT) Received: from [IPV6:2001:b07:2ed:14ed:c5f8:7372:f042:90a2] (unknown [IPv6:2001:b07:2ed:14ed:c5f8:7372:f042:90a2]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id 7F6C46606F5A; Thu, 15 Jun 2023 08:38:46 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1686814727; bh=D8b9wEVkgMUHSTkiQNASkpLChgF1KeGetcBYupmfoxM=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=VtUmslzgCZFv/y2YwVwnFtUCGPOaLYr0/VX+uzWHuVHvf84rc5WnEZ7toQeW/1o8t q0YQTLrkHCP//nOSgwGLzXBmGeaKsKY7ZYGki/+cJVlPDp0Ghd0xGJjEOMVdD8S0Il Wy6OkAkWhUDUVkmNDbx4M0E8EzmCPiBRGaC0qldY4JjyzNzthfewYOtZ/v0AMTTth+ 5oJusFBKYZuSEmYzk6wCDLWBa8lHBPbSpurnUSgzAhX7g1B26lKwaKkvW/3l//FTGS HBBz1hAnXE1014rqnKYXUyaL3x5itTWeLPQgXkQFoFqZUey0RwZjIFIlJhWvhSRGeU zDIEOI3ePeT1w== Message-ID: Date: Thu, 15 Jun 2023 09:38:44 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.2 Subject: Re: [PATCH v2 08/15] soc: mediatek: Support MT8188 VDOSYS1 in mtk-mmsys Content-Language: en-US To: =?UTF-8?B?U2hhd24gU3VuZyAo5a6L5a2d6KyZKQ==?= , "p.zabel@pengutronix.de" , "matthias.bgg@gmail.com" , "chunkuang.hu@kernel.org" , "robh+dt@kernel.org" , "krzysztof.kozlowski+dt@linaro.org" Cc: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , =?UTF-8?B?U2luZ28gQ2hhbmcgKOW8teiIiOWciyk=?= , =?UTF-8?B?SmFzb24tSkggTGluICjmnpfnnb/npaUp?= , "devicetree@vger.kernel.org" , =?UTF-8?B?TmFuY3kgTGluICjmnpfmrKPonqIp?= , Project_Global_Chrome_Upstream_Group , "linux-arm-kernel@lists.infradead.org" References: <20230614073125.17958-1-shawn.sung@mediatek.com> <20230614073125.17958-9-shawn.sung@mediatek.com> From: AngeloGioacchino Del Regno In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Il 15/06/23 08:10, Shawn Sung (宋孝謙) ha scritto: > Thank you for saying that. Will do more in the future. > > I found two typos in the description. > Will fix them in the next version as well. > (ETDHR -> ETHDR, VSNYC -> VSYNC) > I honestly didn't immediately notice the typos. Yes please fix them. Keep up the good work! Regards, Angelo > On Wed, 2023-06-14 at 13:21 +0200, AngeloGioacchino Del Regno wrote: >> >> External email : Please do not click links or open attachments until >> you have verified the sender or the content. >> Il 14/06/23 09:31, Hsiao Chien Sung ha scritto: >>> - Add register definitions for MT8188 >>> - Add VDOSYS1 routing table >>> - Update MUTEX definitions accordingly >>> - Set VSYNC length from 0x40 (default) to 1 since ETHDR is bypassed >>> >>> Signed-off-by: Hsiao Chien Sung >> >> I love that you added documentation to struct mtk_mmsys_driver_data. >> Good job! >> >> Reviewed-by: AngeloGioacchino Del Regno < >> angelogioacchino.delregno@collabora.com> >> >>> --- >>> drivers/soc/mediatek/mt8188-mmsys.h | 127 >> ++++++++++++++++++++++++++++ >>> drivers/soc/mediatek/mtk-mmsys.c | 13 +++ >>> drivers/soc/mediatek/mtk-mmsys.h | 29 +++++++ >>> drivers/soc/mediatek/mtk-mutex.c | 35 ++++++++ >>> 4 files changed, 204 insertions(+) >>> >>> diff --git a/drivers/soc/mediatek/mt8188-mmsys.h >> b/drivers/soc/mediatek/mt8188-mmsys.h >>> index 448cc3761b43..447afb72d95f 100644 >>> --- a/drivers/soc/mediatek/mt8188-mmsys.h >>> +++ b/drivers/soc/mediatek/mt8188-mmsys.h >>> @@ -67,6 +67,57 @@ >>> #define MT8188_SOUT_DSC_WRAP0_OUT_TO_VPP_MERGEBIT(18) >>> #define MT8188_SOUT_DSC_WRAP0_OUT_TO_DISP_WDMA0BIT(19) >>> >>> +#define MT8188_VDO1_SW0_RST_B0x1d0 >>> +#define MT8188_VDO1_HDR_TOP_CFG0xd00 >>> +#define MT8188_VDO1_MIXER_IN1_ALPHA0xd30 >>> +#define MT8188_VDO1_MIXER_IN1_PAD0xd40 >>> +#define MT8188_VDO1_MERGE0_ASYNC_CFG_WD0xe30 >>> +#define MT8188_VDO1_HDRBE_ASYNC_CFG_WD0xe70 >>> +#define MT8188_VDO1_VPP_MERGE0_P0_SEL_IN0xf04 >>> +#define MT8188_VPP_MERGE0_P0_SEL_IN_FROM_MDP_RDMA01 >>> +#define MT8188_VDO1_VPP_MERGE0_P1_SEL_IN0xf08 >>> +#define MT8188_VPP_MERGE0_P1_SEL_IN_FROM_MDP_RDMA11 >>> +#define MT8188_VDO1_DISP_DPI1_SEL_IN0xf10 >>> +#define MT8188_DISP_DPI1_SEL_IN_FROM_VPP_MERGE4_MOUT0 >>> +#define MT8188_VDO1_DISP_DP_INTF0_SEL_IN0xf14 >>> +#define MT8188_DISP_DP_INTF0_SEL_IN_FROM_VPP_MERGE4_MOUT0 >>> +#define MT8188_VDO1_MERGE4_SOUT_SEL0xf18 >>> +#define MT8188_MERGE4_SOUT_TO_DPI1_SELBIT(2) >>> +#define MT8188_MERGE4_SOUT_TO_DP_INTF0_SELBIT(3) >>> +#define MT8188_VDO1_MIXER_IN1_SEL_IN0xf24 >>> +#define MT8188_MIXER_IN1_SEL_IN_FROM_MERGE0_ASYNC_SOUT1 >>> +#define MT8188_VDO1_MIXER_IN2_SEL_IN0xf28 >>> +#define MT8188_MIXER_IN2_SEL_IN_FROM_MERGE1_ASYNC_SOUT1 >>> +#define MT8188_VDO1_MIXER_IN3_SEL_IN0xf2c >>> +#define MT8188_MIXER_IN3_SEL_IN_FROM_MERGE2_ASYNC_SOUT1 >>> +#define MT8188_VDO1_MIXER_IN4_SEL_IN0xf30 >>> +#define MT8188_MIXER_IN4_SEL_IN_FROM_MERGE3_ASYNC_SOUT1 >>> +#define MT8188_VDO1_MIXER_OUT_SOUT_SEL0xf34 >>> +#define MT8188_MIXER_SOUT_TO_MERGE4_ASYNC_SEL1 >>> +#define MT8188_VDO1_VPP_MERGE1_P0_SEL_IN0xf3c >>> +#define MT8188_VPP_MERGE1_P0_SEL_IN_FROM_MDP_RDMA21 >>> +#define MT8188_VDO1_MERGE0_ASYNC_SOUT_SEL0xf40 >>> +#define MT8188_SOUT_TO_MIXER_IN1_SEL1 >>> +#define MT8188_VDO1_MERGE1_ASYNC_SOUT_SEL0xf44 >>> +#define MT8188_SOUT_TO_MIXER_IN2_SEL1 >>> +#define MT8188_VDO1_MERGE2_ASYNC_SOUT_SEL0xf48 >>> +#define MT8188_SOUT_TO_MIXER_IN3_SEL1 >>> +#define MT8188_VDO1_MERGE3_ASYNC_SOUT_SEL0xf4c >>> +#define MT8188_SOUT_TO_MIXER_IN4_SEL1 >>> +#define MT8188_VDO1_MERGE4_ASYNC_SEL_IN0xf50 >>> +#define MT8188_MERGE4_ASYNC_SEL_IN_FROM_MIXER_OUT_SOUT1 >>> +#define MT8188_VDO1_MIXER_IN1_SOUT_SEL0xf58 >>> +#define MT8188_MIXER_IN1_SOUT_TO_DISP_MIXER0 >>> +#define MT8188_VDO1_MIXER_IN2_SOUT_SEL0xf5c >>> +#define MT8188_MIXER_IN2_SOUT_TO_DISP_MIXER0 >>> +#define MT8188_VDO1_MIXER_IN3_SOUT_SEL0xf60 >>> +#define MT8188_MIXER_IN3_SOUT_TO_DISP_MIXER0 >>> +#define MT8188_VDO1_MIXER_IN4_SOUT_SEL0xf64 >>> +#define MT8188_MIXER_IN4_SOUT_TO_DISP_MIXER0 >>> +#define MT8188_VDO1_MIXER_SOUT_SEL_IN0xf68 >>> +#define MT8188_MIXER_SOUT_SEL_IN_FROM_DISP_MIXER0 >>> +#define MT8188_VDO1_MIXER_VSYNC_LEN0xd5c >>> + >>> static const struct mtk_mmsys_routes mmsys_mt8188_routing_table[] >> = { >>> { >>> DDP_COMPONENT_OVL0, DDP_COMPONENT_RDMA0, >>> @@ -146,4 +197,80 @@ static const struct mtk_mmsys_routes >> mmsys_mt8188_routing_table[] = { >>> }, >>> }; >>> >>> +static const struct mtk_mmsys_routes >> mmsys_mt8188_vdo1_routing_table[] = { >>> +{ >>> +DDP_COMPONENT_MDP_RDMA0, DDP_COMPONENT_MERGE1, >>> +MT8188_VDO1_VPP_MERGE0_P0_SEL_IN, GENMASK(0, 0), >>> +MT8188_VPP_MERGE0_P0_SEL_IN_FROM_MDP_RDMA0 >>> +}, { >>> +DDP_COMPONENT_MDP_RDMA1, DDP_COMPONENT_MERGE1, >>> +MT8188_VDO1_VPP_MERGE0_P1_SEL_IN, GENMASK(0, 0), >>> +MT8188_VPP_MERGE0_P1_SEL_IN_FROM_MDP_RDMA1 >>> +}, { >>> +DDP_COMPONENT_MDP_RDMA2, DDP_COMPONENT_MERGE2, >>> +MT8188_VDO1_VPP_MERGE1_P0_SEL_IN, GENMASK(0, 0), >>> +MT8188_VPP_MERGE1_P0_SEL_IN_FROM_MDP_RDMA2 >>> +}, { >>> +DDP_COMPONENT_MERGE1, DDP_COMPONENT_ETHDR_MIXER, >>> +MT8188_VDO1_MERGE0_ASYNC_SOUT_SEL, GENMASK(1, 0), >>> +MT8188_SOUT_TO_MIXER_IN1_SEL >>> +}, { >>> +DDP_COMPONENT_MERGE2, DDP_COMPONENT_ETHDR_MIXER, >>> +MT8188_VDO1_MERGE1_ASYNC_SOUT_SEL, GENMASK(1, 0), >>> +MT8188_SOUT_TO_MIXER_IN2_SEL >>> +}, { >>> +DDP_COMPONENT_MERGE3, DDP_COMPONENT_ETHDR_MIXER, >>> +MT8188_VDO1_MERGE2_ASYNC_SOUT_SEL, GENMASK(1, 0), >>> +MT8188_SOUT_TO_MIXER_IN3_SEL >>> +}, { >>> +DDP_COMPONENT_MERGE4, DDP_COMPONENT_ETHDR_MIXER, >>> +MT8188_VDO1_MERGE3_ASYNC_SOUT_SEL, GENMASK(1, 0), >>> +MT8188_SOUT_TO_MIXER_IN4_SEL >>> +}, { >>> +DDP_COMPONENT_ETHDR_MIXER, DDP_COMPONENT_MERGE5, >>> +MT8188_VDO1_MIXER_OUT_SOUT_SEL, GENMASK(0, 0), >>> +MT8188_MIXER_SOUT_TO_MERGE4_ASYNC_SEL >>> +}, { >>> +DDP_COMPONENT_MERGE1, DDP_COMPONENT_ETHDR_MIXER, >>> +MT8188_VDO1_MIXER_IN1_SEL_IN, GENMASK(0, 0), >>> +MT8188_MIXER_IN1_SEL_IN_FROM_MERGE0_ASYNC_SOUT >>> +}, { >>> +DDP_COMPONENT_MERGE2, DDP_COMPONENT_ETHDR_MIXER, >>> +MT8188_VDO1_MIXER_IN2_SEL_IN, GENMASK(0, 0), >>> +MT8188_MIXER_IN2_SEL_IN_FROM_MERGE1_ASYNC_SOUT >>> +}, { >>> +DDP_COMPONENT_MERGE3, DDP_COMPONENT_ETHDR_MIXER, >>> +MT8188_VDO1_MIXER_IN3_SEL_IN, GENMASK(0, 0), >>> +MT8188_MIXER_IN3_SEL_IN_FROM_MERGE2_ASYNC_SOUT >>> +}, { >>> +DDP_COMPONENT_MERGE4, DDP_COMPONENT_ETHDR_MIXER, >>> +MT8188_VDO1_MIXER_IN4_SEL_IN, GENMASK(0, 0), >>> +MT8188_MIXER_IN4_SEL_IN_FROM_MERGE3_ASYNC_SOUT >>> +}, { >>> +DDP_COMPONENT_ETHDR_MIXER, DDP_COMPONENT_MERGE5, >>> +MT8188_VDO1_MIXER_SOUT_SEL_IN, GENMASK(2, 0), >>> +MT8188_MIXER_SOUT_SEL_IN_FROM_DISP_MIXER >>> +}, { >>> +DDP_COMPONENT_ETHDR_MIXER, DDP_COMPONENT_MERGE5, >>> +MT8188_VDO1_MERGE4_ASYNC_SEL_IN, GENMASK(2, 0), >>> +MT8188_MERGE4_ASYNC_SEL_IN_FROM_MIXER_OUT_SOUT >>> +}, { >>> +DDP_COMPONENT_MERGE5, DDP_COMPONENT_DPI1, >>> +MT8188_VDO1_DISP_DPI1_SEL_IN, GENMASK(1, 0), >>> +MT8188_DISP_DPI1_SEL_IN_FROM_VPP_MERGE4_MOUT >>> +}, { >>> +DDP_COMPONENT_MERGE5, DDP_COMPONENT_DPI1, >>> +MT8188_VDO1_MERGE4_SOUT_SEL, GENMASK(1, 0), >>> +MT8188_MERGE4_SOUT_TO_DPI1_SEL >>> +}, { >>> +DDP_COMPONENT_MERGE5, DDP_COMPONENT_DP_INTF1, >>> +MT8188_VDO1_DISP_DP_INTF0_SEL_IN, GENMASK(1, 0), >>> +MT8188_DISP_DP_INTF0_SEL_IN_FROM_VPP_MERGE4_MOUT >>> +}, { >>> +DDP_COMPONENT_MERGE5, DDP_COMPONENT_DP_INTF1, >>> +MT8188_VDO1_MERGE4_SOUT_SEL, GENMASK(3, 0), >>> +MT8188_MERGE4_SOUT_TO_DP_INTF0_SEL >>> +} >>> +}; >>> + >>> #endif /* __SOC_MEDIATEK_MT8188_MMSYS_H */ >>> diff --git a/drivers/soc/mediatek/mtk-mmsys.c >> b/drivers/soc/mediatek/mtk-mmsys.c >>> index 9619faa796e8..3a81ef2bcc3c 100644 >>> --- a/drivers/soc/mediatek/mtk-mmsys.c >>> +++ b/drivers/soc/mediatek/mtk-mmsys.c >>> @@ -89,6 +89,15 @@ static const struct mtk_mmsys_driver_data >> mt8188_vdosys0_driver_data = { >>> .num_routes = ARRAY_SIZE(mmsys_mt8188_routing_table), >>> }; >>> >>> +static const struct mtk_mmsys_driver_data >> mt8188_vdosys1_driver_data = { >>> +.clk_driver = "clk-mt8188-vdo1", >>> +.routes = mmsys_mt8188_vdo1_routing_table, >>> +.num_routes = ARRAY_SIZE(mmsys_mt8188_vdo1_routing_table), >>> +.sw0_rst_offset = MT8188_VDO1_SW0_RST_B, >>> +.num_resets = 96, >>> +.vsync_len = 1, >>> +}; >>> + >>> static const struct mtk_mmsys_driver_data >> mt8192_mmsys_driver_data = { >>> .clk_driver = "clk-mt8192-mm", >>> .routes = mmsys_mt8192_routing_table, >>> @@ -213,6 +222,9 @@ void mtk_mmsys_mixer_in_config(struct device >> *dev, int idx, bool alpha_sel, u16 >>> alpha_sel << (19 + idx), cmdq_pkt); >>> mtk_mmsys_update_bits(mmsys, MT8195_VDO1_MIXER_IN1_PAD + (idx - >> 1) * 4, >>> GENMASK(31, 16) | GENMASK(1, 0), biwidth << 16 | mode, >> cmdq_pkt); >>> +if (mmsys->data->vsync_len) >>> +mtk_mmsys_update_bits(mmsys, MT8188_VDO1_MIXER_VSYNC_LEN, ~0, >>> + mmsys->data->vsync_len, cmdq_pkt); >>> } >>> EXPORT_SYMBOL_GPL(mtk_mmsys_mixer_in_config); >>> >>> @@ -431,6 +443,7 @@ static const struct of_device_id >> of_match_mtk_mmsys[] = { >>> { .compatible = "mediatek,mt8183-mmsys", .data = >> &mt8183_mmsys_driver_data }, >>> { .compatible = "mediatek,mt8186-mmsys", .data = >> &mt8186_mmsys_driver_data }, >>> { .compatible = "mediatek,mt8188-vdosys0", .data = >> &mt8188_vdosys0_driver_data }, >>> +{ .compatible = "mediatek,mt8188-vdosys1", .data = >> &mt8188_vdosys1_driver_data }, >>> { .compatible = "mediatek,mt8192-mmsys", .data = >> &mt8192_mmsys_driver_data }, >>> /* "mediatek,mt8195-mmsys" compatible is deprecated */ >>> { .compatible = "mediatek,mt8195-mmsys", .data = >> &mt8195_vdosys0_driver_data }, >>> diff --git a/drivers/soc/mediatek/mtk-mmsys.h >> b/drivers/soc/mediatek/mtk-mmsys.h >>> index 6725403d2e3a..e4ab46017430 100644 >>> --- a/drivers/soc/mediatek/mtk-mmsys.h >>> +++ b/drivers/soc/mediatek/mtk-mmsys.h >>> @@ -86,6 +86,34 @@ struct mtk_mmsys_routes { >>> u32 val; >>> }; >>> >>> +/** >>> + * struct mtk_mmsys_driver_data - settings for the mmsys >>> + * @clk_driver: Clock driver name that the mmsys is using >>> + * (defined in drivers/clk/mediatek/clk-*.c). >>> + * @routes: Routing table of the mmsys. >>> + * It provides mux settings from one module to another. >>> + * @num_routes: Array size of the routes. >>> + * @sw0_rst_offset: Register offset for the reset control. >>> + * @num_resets: Number of reset bits that are defined >>> + * @is_vppsys: Whether the mmsys is VPPSYS (Video Processing Pipe) >>> + * or VDOSYS (Video). Only VDOSYS needs to be added to >> drm driver. >>> + * @vsync_len: VSYNC length of the MIXER. >>> + * VSYNC is usually triggered by the connector, so its >> length is >>> + * a fixed value as long as the frame rate is decided, >> but ETDHR and >>> + * MIXER generate their own VSYNC due to hardware >> design, therefore >>> + * MIXER has to sync with ETHDR by adjusting VSYNC >> length. >>> + * On MT8195, there is no such setting so we use the >> gap between >>> + * falling edge and rising edge of SOF (Start of >> Frame) signal to >>> + * do the job, but since MT8188, VSNYC_LEN setting is >> introduced to >>> + * solve the problem and is given 0x40 (ticks) as the >> default value. >>> + * Please notice that this value has to be set to 1 >> (minimum) if >>> + * ETHDR is bypassed, otherwise MIXER could wait too >> long and causing >>> + * underflow. >>> + * >>> + * Each MMSYS (multi-media system) may have different settings, >> they may use >>> + * different clock sources, mux settings, reset control ...etc., >> and these >>> + * differences are all stored here. >>> + */ >>> struct mtk_mmsys_driver_data { >>> const char *clk_driver; >>> const struct mtk_mmsys_routes *routes; >>> @@ -93,6 +121,7 @@ struct mtk_mmsys_driver_data { >>> const u16 sw0_rst_offset; >>> const u32 num_resets; >>> const bool is_vppsys; >>> +const u8 vsync_len; >>> }; >>> >>> /* >>> diff --git a/drivers/soc/mediatek/mtk-mutex.c >> b/drivers/soc/mediatek/mtk-mutex.c >>> index 26f3d9a41496..11dda20eb462 100644 >>> --- a/drivers/soc/mediatek/mtk-mutex.c >>> +++ b/drivers/soc/mediatek/mtk-mutex.c >>> @@ -134,6 +134,22 @@ >>> #define MT8188_MUTEX_MOD_DISP_POSTMASK024 >>> #define MT8188_MUTEX_MOD2_DISP_PWM033 >>> >>> +#define MT8188_MUTEX_MOD_DISP1_MDP_RDMA00 >>> +#define MT8188_MUTEX_MOD_DISP1_MDP_RDMA11 >>> +#define MT8188_MUTEX_MOD_DISP1_MDP_RDMA22 >>> +#define MT8188_MUTEX_MOD_DISP1_MDP_RDMA33 >>> +#define MT8188_MUTEX_MOD_DISP1_MDP_RDMA44 >>> +#define MT8188_MUTEX_MOD_DISP1_MDP_RDMA55 >>> +#define MT8188_MUTEX_MOD_DISP1_MDP_RDMA66 >>> +#define MT8188_MUTEX_MOD_DISP1_MDP_RDMA77 >>> +#define MT8188_MUTEX_MOD_DISP1_VPP_MERGE020 >>> +#define MT8188_MUTEX_MOD_DISP1_VPP_MERGE121 >>> +#define MT8188_MUTEX_MOD_DISP1_VPP_MERGE222 >>> +#define MT8188_MUTEX_MOD_DISP1_VPP_MERGE323 >>> +#define MT8188_MUTEX_MOD_DISP1_VPP_MERGE424 >>> +#define MT8188_MUTEX_MOD_DISP1_DISP_MIXER30 >>> +#define MT8188_MUTEX_MOD_DISP1_DP_INTF139 >>> + >>> #define MT8195_MUTEX_MOD_DISP_OVL00 >>> #define MT8195_MUTEX_MOD_DISP_WDMA01 >>> #define MT8195_MUTEX_MOD_DISP_RDMA02 >>> @@ -265,6 +281,7 @@ >>> #define MT8183_MUTEX_SOF_DPI02 >>> #define MT8188_MUTEX_SOF_DSI01 >>> #define MT8188_MUTEX_SOF_DP_INTF03 >>> +#define MT8188_MUTEX_SOF_DP_INTF14 >>> #define MT8195_MUTEX_SOF_DSI01 >>> #define MT8195_MUTEX_SOF_DSI12 >>> #define MT8195_MUTEX_SOF_DP_INTF03 >>> @@ -276,6 +293,7 @@ >>> #define MT8183_MUTEX_EOF_DPI0(MT8183_MUTEX_SOF_DPI0 << 6) >>> #define MT8188_MUTEX_EOF_DSI0(MT8188_MUTEX_SOF_DSI0 << 7) >>> #define MT8188_MUTEX_EOF_DP_INTF0(MT8188_MUTEX_SOF_DP_INTF0 << 7) >>> +#define MT8188_MUTEX_EOF_DP_INTF1(MT8188_MUTEX_SOF_DP_INTF1 << 7) >>> #define MT8195_MUTEX_EOF_DSI0(MT8195_MUTEX_SOF_DSI0 << 7) >>> #define MT8195_MUTEX_EOF_DSI1(MT8195_MUTEX_SOF_DSI1 << 7) >>> #define MT8195_MUTEX_EOF_DP_INTF0(MT8195_MUTEX_SOF_DP_INTF0 << 7) >>> @@ -446,6 +464,21 @@ static const unsigned int >> mt8188_mutex_mod[DDP_COMPONENT_ID_MAX] = { >>> [DDP_COMPONENT_DSI0] = MT8188_MUTEX_MOD_DISP_DSI0, >>> [DDP_COMPONENT_PWM0] = MT8188_MUTEX_MOD2_DISP_PWM0, >>> [DDP_COMPONENT_DP_INTF0] = MT8188_MUTEX_MOD_DISP_DP_INTF0, >>> +[DDP_COMPONENT_MDP_RDMA0] = MT8188_MUTEX_MOD_DISP1_MDP_RDMA0, >>> +[DDP_COMPONENT_MDP_RDMA1] = MT8188_MUTEX_MOD_DISP1_MDP_RDMA1, >>> +[DDP_COMPONENT_MDP_RDMA2] = MT8188_MUTEX_MOD_DISP1_MDP_RDMA2, >>> +[DDP_COMPONENT_MDP_RDMA3] = MT8188_MUTEX_MOD_DISP1_MDP_RDMA3, >>> +[DDP_COMPONENT_MDP_RDMA4] = MT8188_MUTEX_MOD_DISP1_MDP_RDMA4, >>> +[DDP_COMPONENT_MDP_RDMA5] = MT8188_MUTEX_MOD_DISP1_MDP_RDMA5, >>> +[DDP_COMPONENT_MDP_RDMA6] = MT8188_MUTEX_MOD_DISP1_MDP_RDMA6, >>> +[DDP_COMPONENT_MDP_RDMA7] = MT8188_MUTEX_MOD_DISP1_MDP_RDMA7, >>> +[DDP_COMPONENT_MERGE1] = MT8188_MUTEX_MOD_DISP1_VPP_MERGE0, >>> +[DDP_COMPONENT_MERGE2] = MT8188_MUTEX_MOD_DISP1_VPP_MERGE1, >>> +[DDP_COMPONENT_MERGE3] = MT8188_MUTEX_MOD_DISP1_VPP_MERGE2, >>> +[DDP_COMPONENT_MERGE4] = MT8188_MUTEX_MOD_DISP1_VPP_MERGE3, >>> +[DDP_COMPONENT_ETHDR_MIXER] = MT8188_MUTEX_MOD_DISP1_DISP_MIXER, >>> +[DDP_COMPONENT_MERGE5] = MT8188_MUTEX_MOD_DISP1_VPP_MERGE4, >>> +[DDP_COMPONENT_DP_INTF1] = MT8188_MUTEX_MOD_DISP1_DP_INTF1, >>> }; >>> >>> static const unsigned int mt8192_mutex_mod[DDP_COMPONENT_ID_MAX] >> = { >>> @@ -606,6 +639,8 @@ static const unsigned int >> mt8188_mutex_sof[DDP_MUTEX_SOF_MAX] = { >>> MT8188_MUTEX_SOF_DSI0 | MT8188_MUTEX_EOF_DSI0, >>> [MUTEX_SOF_DP_INTF0] = >>> MT8188_MUTEX_SOF_DP_INTF0 | MT8188_MUTEX_EOF_DP_INTF0, >>> +[MUTEX_SOF_DP_INTF1] = >>> +MT8188_MUTEX_SOF_DP_INTF1 | MT8188_MUTEX_EOF_DP_INTF1, >>> }; >>> >>> static const unsigned int mt8195_mutex_sof[DDP_MUTEX_SOF_MAX] = { >>> -- >>> 2.18.0 >>> >>