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 EA3C8C021B1 for ; Thu, 20 Feb 2025 17:05:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type: Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date :Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=w2pzTobpi9TjSTtQRUPn0hmQfMoOEaBAec03sFh2SIY=; b=O5WrFZV9VTrCKd1omZeNy+bW/8 f3PnJCn9+Xk1rZ5ruijtFwC8ytsxWVAZQRHQv02hG5b0YkFUUGIE0krb8B9Cl9VrD1tVvGjYh2Q3c ePJq3ULLzAN7wWAyWjVSBL24TVVB2JqsZj+ekfc1e5HUAfGcRn6LKDbYMD0NGzkYEPb30Df2SlKZ6 AxMoyi+0u3Taa+Ft/1VO6eiylDyatdlFUpJA+sEamjbEbjrT5ev7SfOXsI0lkzo4aYXG1HatYPBWH rB1N3fPLjSunl9opez8ADQ10rkHLR65uXcFlGee//MZhcjiG37kEcA2V8SoUA13gkCRHrLdj8E/kF KmmORE9A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tl9za-000000022Io-0FIs; Thu, 20 Feb 2025 17:05:42 +0000 Received: from sender4-pp-f112.zoho.com ([136.143.188.112]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tl9y4-000000021wD-2v5f; Thu, 20 Feb 2025 17:04:10 +0000 ARC-Seal: i=1; a=rsa-sha256; t=1740070995; cv=none; d=zohomail.com; s=zohoarc; b=H89tZtPw7hGWA9a6QAt88m0WFcYXkG5Shk09kN07BWC4axWYt9GNDZVOo9cm8gqKdIuyxlp+eTDURTlCIanQuanEpv+yche0oDkjwz5c6eP0IQgbahG4lJxd694XY98EFGKvJchBOPyvsHbveZCZFX5JEsc7jNsldWYVrK/dYyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740070995; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=w2pzTobpi9TjSTtQRUPn0hmQfMoOEaBAec03sFh2SIY=; b=M3OpeGvfafnAuq6NV8y0Hhz6ZUI1aOEGkTngOe0sXIMQ4y7O4i5GresbkUnyO35KEt+eduI3r1HyHjKANSuBnn/8+PeY5v6fes2GuWOk7M1O59qsBIOnZdI6h7/2rssPSLwql77vZ0ao5qMazDEgfTS76c1UCIsRUbRLMiX2ty0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=detlev.casanova@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1740070995; s=zohomail; d=collabora.com; i=detlev.casanova@collabora.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type:Message-Id:Reply-To; bh=w2pzTobpi9TjSTtQRUPn0hmQfMoOEaBAec03sFh2SIY=; b=NELb89ZNA/vXF0KU9d+s8iAZUlWP1ItsG7o0stqFKUD5nWiCOsTLt9XovGPpdD/h S+UrbkLBOPJawvm7CbURNWQk5ZNHga+QTdqIjkp7h5Pju5Se+rXy9RG6I0SY7wkyWIi jxGaj47YWQDXlIlaxnKbaa63k5yd81xmDyncUIs4= Received: by mx.zohomail.com with SMTPS id 1740070993591486.8817863804003; Thu, 20 Feb 2025 09:03:13 -0800 (PST) From: Detlev Casanova To: Piotr Oniszczuk Cc: linux-kernel@vger.kernel.org, Algea Cao , Heiko Stuebner , Geert Uytterhoeven , dri-devel@lists.freedesktop.org, Niklas Cassel , Laurent Pinchart , Andrzej Hajda , kernel@collabora.com, David Airlie , Dragan Simic , Simona Vetter , Rob Herring , Robert Foss , Sebastian Reichel , Jernej Skrabec , Sugar Zhang , linux-rockchip@lists.infradead.org, Chen-Yu Tsai , FUKAUMI Naoki , devicetree@vger.kernel.org, Conor Dooley , Jonas Karlman , Maarten Lankhorst , Maxime Ripard , Dmitry Baryshkov , Johan Jonker , linux-arm-kernel@lists.infradead.org, Neil Armstrong , Alexey Charkov , Thomas Zimmermann , Krzysztof Kozlowski Subject: Re: [PATCH v7 0/3] Add HDMI audio on the rk3588 SoC Date: Thu, 20 Feb 2025 12:03:09 -0500 Message-ID: <2357838.ElGaqSPkdT@earth> In-Reply-To: References: <20250217215641.372723-1-detlev.casanova@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-ZohoMailClient: External X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250220_090408_791792_6DE478B8 X-CRM114-Status: GOOD ( 37.30 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Piotr, On Thursday, 20 February 2025 06:16:20 EST Piotr Oniszczuk wrote: > > Wiadomo=C5=9B=C4=87 napisana przez Detlev Casanova w > > dniu 17 lut 2025, o godz. 22:47: > >=20 > > To support HDMI audio on the rk3588 based devices, the generic HDMI > > Codec framework is used in the dw-hdmi-qp DRM bridge driver. > >=20 > > The implementation is mainly based on the downstream driver, ported to = the > > generic HDMI Codec framework [1] recently merged in the master branch. > > The parameters computation has been kept as is and the data stored in t= he > > dw_hdmi_qp struct as been cleaned up. > >=20 > > The table for the N values has been edited to reflect N recommended val= ues > > as well as CTS recommended values. > >=20 > > The downstream kernel also implements a machine driver for HDMI audio b= ut > > it is doing exactly what the simple-audio-card driver does, so use that > > instead in the RK3588 SoC device tree. > >=20 > > This adds HDMI audio support for both HDMI TX ports. > >=20 > > *** Dependencies *** > >=20 > > Based on Linus' master branch, but also needs Cristian's dts patches for > > HDMI1 support [2], which depends on Heiko's patchset for > > phy-rockchip-samsung-hdptx [3]. Patches will apply without [3], but HDMI > > will not work (at all). > >=20 > > [1]: > > https://lore.kernel.org/all/20241224-drm-bridge-hdmi-connector-v10-0-dc= 89 > > 577cd438@linaro.org [2]: > > https://lore.kernel.org/linux-rockchip/20241211-rk3588-hdmi1-v2-0-02cdc= a2 > > 2ff68@collabora.com [3]: > > https://lore.kernel.org/lkml/20241206103401.1780416-3-heiko@sntech.de/ > >=20 > > Changes since v6: > > - Fix arguments alignement (checkpatch --strict warnings) > > - Add hdmi1 audio support too > > - Move hdmi0_sound node under hdmi0_out_con > >=20 > > Changes since v5: > > - Simplify audio math computation for N > > - Move hdmi0-sound node up with other address-less nodes > >=20 > > Changes since v4: > > - Moved hdmi0_audio node the rk3588-base.dtsi > > - Enable hdmi0_audio in rk3588-rock-5b.dts > >=20 > > Changes since v3: > > - Renamed function to start with dw_hdmi_qp > >=20 > > Changes since v2: > > - Also clear the audio infoframe > > - Write AUDI_CONTENTS0 to its default value in case it gets overwritten. > > - Store tmds_char_rate in the dw_hdmi_qp struct in atomic_enable > > - Clear tmds_char_rate in atomic_disable and only write registers when > >=20 > > tmds_char_rate is not 0. > >=20 > > - Do not use connector_state duplicates > >=20 > > Changes since v1: > > - Remove useless audio_mutex (was used downstream for multiple drivers > > access>=20 > > to audio functions) > >=20 > > - Let hdmi_codec build and setup audio infoframes > > - Only access audio registers when connector is connected > > - Rebased on master branch > >=20 > > Detlev Casanova (2): > > arm64: dts: rockchip: Add HDMI audio outputs for rk3588 SoC > > arm64: dts: rockchip: Enable HDMI audio outputs for Rock 5B > >=20 > > Sugar Zhang (1): > > drm/bridge: synopsys: Add audio support for dw-hdmi-qp > >=20 > > arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 17 + > > .../arm64/boot/dts/rockchip/rk3588-extra.dtsi | 17 + > > .../boot/dts/rockchip/rk3588-rock-5b.dts | 16 + > > drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 489 ++++++++++++++++++ > > 4 files changed, 539 insertions(+) >=20 > Detelv, >=20 > Just curious of your opinion: >=20 > I=E2=80=99m on 6.14-rc3 and using > https://gitlab.collabora.com/cristicc/linux-next/-/commits/rk3588-hdmi-br= id > ge + this v7 series. Do you have the branch available somewhere ? > On mine rock5b all works nicely but - at boot time - i=E2=80=99m getting = some oops > in kernel like this: > https://gist.github.com/warpme/e1668acbef7817e5d2a88a6840328722 I did notice that at one point but it disappeard after a rebase on the the= =20 latest master so I didn't look further into that. Could it be related to 2518a0e1b878042f9afa45ae063e544a16efc1a3 "ASoC: simp= le- card: use __free(device_node) for device node" ? I'm not exactly sure how __free(device_node) works though, but reverting th= at=20 commit could fix the issue. > I=E2=80=99m not sure where issue is but it looks to me like kind of inter= ference > between analog audio and hdmi audio as commenting analog audio in dts ( > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arc= h/ > arm64/boot/dts/rockchip/rk3588-rock-5b.dts?h=3Dv6.14-rc3#n24 ) stops kern= el > from oops=E2=80=99ing=E2=80=A6. I cannot reproduce anymore, so if you have a branch/config that you use, I= =20 could try, looking into that. I don't see any relevant commits that would change this behavior on master= =20 since v6.14-rc3, so I'm not sure what is going on. > rock5b dts i=E2=80=99m using is like this: > https://gist.github.com/warpme/a8a32afd4a05d4b7f25d2808984b05ac Regards, Detlev. 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 A6FC2C021B1 for ; Thu, 20 Feb 2025 17:04:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=hY6J6sPMAusn3z1+MCPxpfnecTk3/OstbK8Q3yN5iqE=; b=XqOWXTg5ZoRRaO 3MN8XARPPSPqwsERulmmfUpEiABP2fyDq85ipP9ZZnuwe6pXFLxU24pw0sBJfDrOmDgIPgKWZdw/T 2WNG4R4YljT2czV3q/FK3JKwqBJjqn+M0xTlVTvKpMdmnV0IPBHCR7tkyglXsVUu2o4WJKF0iZRz4 v6qhJUgXPdKj/mZncJO2d6IlBHnIUnlfQiPsUroWRVk5eEQrxEC2RJI8iQCft09pGrmp6fz1RdFsZ FZZgvKTlBn53MejZ6/AiPja8yxUDTu/byHgqpBGub0fzlOV1h2OWDJNLr4r0MF/ikfWeZKqrXeN/l dYfo9GMr4HnxO/lTZq2g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tl9y7-000000021wu-28id; Thu, 20 Feb 2025 17:04:11 +0000 Received: from sender4-pp-f112.zoho.com ([136.143.188.112]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tl9y4-000000021wD-2v5f; Thu, 20 Feb 2025 17:04:10 +0000 ARC-Seal: i=1; a=rsa-sha256; t=1740070995; cv=none; d=zohomail.com; s=zohoarc; b=H89tZtPw7hGWA9a6QAt88m0WFcYXkG5Shk09kN07BWC4axWYt9GNDZVOo9cm8gqKdIuyxlp+eTDURTlCIanQuanEpv+yche0oDkjwz5c6eP0IQgbahG4lJxd694XY98EFGKvJchBOPyvsHbveZCZFX5JEsc7jNsldWYVrK/dYyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740070995; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=w2pzTobpi9TjSTtQRUPn0hmQfMoOEaBAec03sFh2SIY=; b=M3OpeGvfafnAuq6NV8y0Hhz6ZUI1aOEGkTngOe0sXIMQ4y7O4i5GresbkUnyO35KEt+eduI3r1HyHjKANSuBnn/8+PeY5v6fes2GuWOk7M1O59qsBIOnZdI6h7/2rssPSLwql77vZ0ao5qMazDEgfTS76c1UCIsRUbRLMiX2ty0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=detlev.casanova@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1740070995; s=zohomail; d=collabora.com; i=detlev.casanova@collabora.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type:Message-Id:Reply-To; bh=w2pzTobpi9TjSTtQRUPn0hmQfMoOEaBAec03sFh2SIY=; b=NELb89ZNA/vXF0KU9d+s8iAZUlWP1ItsG7o0stqFKUD5nWiCOsTLt9XovGPpdD/h S+UrbkLBOPJawvm7CbURNWQk5ZNHga+QTdqIjkp7h5Pju5Se+rXy9RG6I0SY7wkyWIi jxGaj47YWQDXlIlaxnKbaa63k5yd81xmDyncUIs4= Received: by mx.zohomail.com with SMTPS id 1740070993591486.8817863804003; Thu, 20 Feb 2025 09:03:13 -0800 (PST) From: Detlev Casanova To: Piotr Oniszczuk Cc: linux-kernel@vger.kernel.org, Algea Cao , Heiko Stuebner , Geert Uytterhoeven , dri-devel@lists.freedesktop.org, Niklas Cassel , Laurent Pinchart , Andrzej Hajda , kernel@collabora.com, David Airlie , Dragan Simic , Simona Vetter , Rob Herring , Robert Foss , Sebastian Reichel , Jernej Skrabec , Sugar Zhang , linux-rockchip@lists.infradead.org, Chen-Yu Tsai , FUKAUMI Naoki , devicetree@vger.kernel.org, Conor Dooley , Jonas Karlman , Maarten Lankhorst , Maxime Ripard , Dmitry Baryshkov , Johan Jonker , linux-arm-kernel@lists.infradead.org, Neil Armstrong , Alexey Charkov , Thomas Zimmermann , Krzysztof Kozlowski Subject: Re: [PATCH v7 0/3] Add HDMI audio on the rk3588 SoC Date: Thu, 20 Feb 2025 12:03:09 -0500 Message-ID: <2357838.ElGaqSPkdT@earth> In-Reply-To: References: <20250217215641.372723-1-detlev.casanova@collabora.com> MIME-Version: 1.0 X-ZohoMailClient: External X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250220_090408_791792_6DE478B8 X-CRM114-Status: GOOD ( 37.30 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGkgUGlvdHIsCgpPbiBUaHVyc2RheSwgMjAgRmVicnVhcnkgMjAyNSAwNjoxNjoyMCBFU1QgUGlv dHIgT25pc3pjenVrIHdyb3RlOgo+ID4gV2lhZG9tb8WbxIcgbmFwaXNhbmEgcHJ6ZXogRGV0bGV2 IENhc2Fub3ZhIDxkZXRsZXYuY2FzYW5vdmFAY29sbGFib3JhLmNvbT4gdwo+ID4gZG5pdSAxNyBs dXQgMjAyNSwgbyBnb2R6LiAyMjo0NzoKPiA+IAo+ID4gVG8gc3VwcG9ydCBIRE1JIGF1ZGlvIG9u IHRoZSByazM1ODggYmFzZWQgZGV2aWNlcywgdGhlIGdlbmVyaWMgSERNSQo+ID4gQ29kZWMgZnJh bWV3b3JrIGlzIHVzZWQgaW4gdGhlIGR3LWhkbWktcXAgRFJNIGJyaWRnZSBkcml2ZXIuCj4gPiAK PiA+IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBtYWlubHkgYmFzZWQgb24gdGhlIGRvd25zdHJlYW0g ZHJpdmVyLCBwb3J0ZWQgdG8gdGhlCj4gPiBnZW5lcmljIEhETUkgQ29kZWMgZnJhbWV3b3JrIFsx XSByZWNlbnRseSBtZXJnZWQgaW4gdGhlIG1hc3RlciBicmFuY2guCj4gPiBUaGUgcGFyYW1ldGVy cyBjb21wdXRhdGlvbiBoYXMgYmVlbiBrZXB0IGFzIGlzIGFuZCB0aGUgZGF0YSBzdG9yZWQgaW4g dGhlCj4gPiBkd19oZG1pX3FwIHN0cnVjdCBhcyBiZWVuIGNsZWFuZWQgdXAuCj4gPiAKPiA+IFRo ZSB0YWJsZSBmb3IgdGhlIE4gdmFsdWVzIGhhcyBiZWVuIGVkaXRlZCB0byByZWZsZWN0IE4gcmVj b21tZW5kZWQgdmFsdWVzCj4gPiBhcyB3ZWxsIGFzIENUUyByZWNvbW1lbmRlZCB2YWx1ZXMuCj4g PiAKPiA+IFRoZSBkb3duc3RyZWFtIGtlcm5lbCBhbHNvIGltcGxlbWVudHMgYSBtYWNoaW5lIGRy aXZlciBmb3IgSERNSSBhdWRpbyBidXQKPiA+IGl0IGlzIGRvaW5nIGV4YWN0bHkgd2hhdCB0aGUg c2ltcGxlLWF1ZGlvLWNhcmQgZHJpdmVyIGRvZXMsIHNvIHVzZSB0aGF0Cj4gPiBpbnN0ZWFkIGlu IHRoZSBSSzM1ODggU29DIGRldmljZSB0cmVlLgo+ID4gCj4gPiBUaGlzIGFkZHMgSERNSSBhdWRp byBzdXBwb3J0IGZvciBib3RoIEhETUkgVFggcG9ydHMuCj4gPiAKPiA+ICoqKiBEZXBlbmRlbmNp ZXMgKioqCj4gPiAKPiA+IEJhc2VkIG9uIExpbnVzJyBtYXN0ZXIgYnJhbmNoLCBidXQgYWxzbyBu ZWVkcyBDcmlzdGlhbidzIGR0cyBwYXRjaGVzIGZvcgo+ID4gSERNSTEgc3VwcG9ydCBbMl0sIHdo aWNoIGRlcGVuZHMgb24gSGVpa28ncyBwYXRjaHNldCBmb3IKPiA+IHBoeS1yb2NrY2hpcC1zYW1z dW5nLWhkcHR4IFszXS4gUGF0Y2hlcyB3aWxsIGFwcGx5IHdpdGhvdXQgWzNdLCBidXQgSERNSQo+ ID4gd2lsbCBub3Qgd29yayAoYXQgYWxsKS4KPiA+IAo+ID4gWzFdOgo+ID4gaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvYWxsLzIwMjQxMjI0LWRybS1icmlkZ2UtaGRtaS1jb25uZWN0b3ItdjEwLTAt ZGM4OQo+ID4gNTc3Y2Q0MzhAbGluYXJvLm9yZyBbMl06Cj4gPiBodHRwczovL2xvcmUua2VybmVs Lm9yZy9saW51eC1yb2NrY2hpcC8yMDI0MTIxMS1yazM1ODgtaGRtaTEtdjItMC0wMmNkY2EyCj4g PiAyZmY2OEBjb2xsYWJvcmEuY29tIFszXToKPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xr bWwvMjAyNDEyMDYxMDM0MDEuMTc4MDQxNi0zLWhlaWtvQHNudGVjaC5kZS8KPiA+IAo+ID4gQ2hh bmdlcyBzaW5jZSB2NjoKPiA+IC0gRml4IGFyZ3VtZW50cyBhbGlnbmVtZW50IChjaGVja3BhdGNo IC0tc3RyaWN0IHdhcm5pbmdzKQo+ID4gLSBBZGQgaGRtaTEgYXVkaW8gc3VwcG9ydCB0b28KPiA+ IC0gTW92ZSBoZG1pMF9zb3VuZCBub2RlIHVuZGVyIGhkbWkwX291dF9jb24KPiA+IAo+ID4gQ2hh bmdlcyBzaW5jZSB2NToKPiA+IC0gU2ltcGxpZnkgYXVkaW8gbWF0aCBjb21wdXRhdGlvbiBmb3Ig Tgo+ID4gLSBNb3ZlIGhkbWkwLXNvdW5kIG5vZGUgdXAgd2l0aCBvdGhlciBhZGRyZXNzLWxlc3Mg bm9kZXMKPiA+IAo+ID4gQ2hhbmdlcyBzaW5jZSB2NDoKPiA+IC0gTW92ZWQgaGRtaTBfYXVkaW8g bm9kZSB0aGUgcmszNTg4LWJhc2UuZHRzaQo+ID4gLSBFbmFibGUgaGRtaTBfYXVkaW8gaW4gcmsz NTg4LXJvY2stNWIuZHRzCj4gPiAKPiA+IENoYW5nZXMgc2luY2UgdjM6Cj4gPiAtIFJlbmFtZWQg ZnVuY3Rpb24gdG8gc3RhcnQgd2l0aCBkd19oZG1pX3FwCj4gPiAKPiA+IENoYW5nZXMgc2luY2Ug djI6Cj4gPiAtIEFsc28gY2xlYXIgdGhlIGF1ZGlvIGluZm9mcmFtZQo+ID4gLSBXcml0ZSBBVURJ X0NPTlRFTlRTMCB0byBpdHMgZGVmYXVsdCB2YWx1ZSBpbiBjYXNlIGl0IGdldHMgb3ZlcndyaXR0 ZW4uCj4gPiAtIFN0b3JlIHRtZHNfY2hhcl9yYXRlIGluIHRoZSBkd19oZG1pX3FwIHN0cnVjdCBp biBhdG9taWNfZW5hYmxlCj4gPiAtIENsZWFyIHRtZHNfY2hhcl9yYXRlIGluIGF0b21pY19kaXNh YmxlIGFuZCBvbmx5IHdyaXRlIHJlZ2lzdGVycyB3aGVuCj4gPiAKPiA+ICAgdG1kc19jaGFyX3Jh dGUgaXMgbm90IDAuCj4gPiAKPiA+IC0gRG8gbm90IHVzZSBjb25uZWN0b3Jfc3RhdGUgZHVwbGlj YXRlcwo+ID4gCj4gPiBDaGFuZ2VzIHNpbmNlIHYxOgo+ID4gLSBSZW1vdmUgdXNlbGVzcyBhdWRp b19tdXRleCAod2FzIHVzZWQgZG93bnN0cmVhbSBmb3IgbXVsdGlwbGUgZHJpdmVycwo+ID4gYWNj ZXNzPiAKPiA+ICAgdG8gYXVkaW8gZnVuY3Rpb25zKQo+ID4gCj4gPiAtIExldCBoZG1pX2NvZGVj IGJ1aWxkIGFuZCBzZXR1cCBhdWRpbyBpbmZvZnJhbWVzCj4gPiAtIE9ubHkgYWNjZXNzIGF1ZGlv IHJlZ2lzdGVycyB3aGVuIGNvbm5lY3RvciBpcyBjb25uZWN0ZWQKPiA+IC0gUmViYXNlZCBvbiBt YXN0ZXIgYnJhbmNoCj4gPiAKPiA+IERldGxldiBDYXNhbm92YSAoMik6Cj4gPiAgYXJtNjQ6IGR0 czogcm9ja2NoaXA6IEFkZCBIRE1JIGF1ZGlvIG91dHB1dHMgZm9yIHJrMzU4OCBTb0MKPiA+ICBh cm02NDogZHRzOiByb2NrY2hpcDogRW5hYmxlIEhETUkgYXVkaW8gb3V0cHV0cyBmb3IgUm9jayA1 Qgo+ID4gCj4gPiBTdWdhciBaaGFuZyAoMSk6Cj4gPiAgZHJtL2JyaWRnZTogc3lub3BzeXM6IEFk ZCBhdWRpbyBzdXBwb3J0IGZvciBkdy1oZG1pLXFwCj4gPiAKPiA+IGFyY2gvYXJtNjQvYm9vdC9k dHMvcm9ja2NoaXAvcmszNTg4LWJhc2UuZHRzaSB8ICAxNyArCj4gPiAuLi4vYXJtNjQvYm9vdC9k dHMvcm9ja2NoaXAvcmszNTg4LWV4dHJhLmR0c2kgfCAgMTcgKwo+ID4gLi4uL2Jvb3QvZHRzL3Jv Y2tjaGlwL3JrMzU4OC1yb2NrLTViLmR0cyAgICAgIHwgIDE2ICsKPiA+IGRyaXZlcnMvZ3B1L2Ry bS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS1xcC5jICB8IDQ4OSArKysrKysrKysrKysrKysrKysK PiA+IDQgZmlsZXMgY2hhbmdlZCwgNTM5IGluc2VydGlvbnMoKykKPiAKPiBEZXRlbHYsCj4gCj4g SnVzdCBjdXJpb3VzIG9mIHlvdXIgb3BpbmlvbjoKPiAKPiBJ4oCZbSBvbiA2LjE0LXJjMyBhbmQg dXNpbmcKPiBodHRwczovL2dpdGxhYi5jb2xsYWJvcmEuY29tL2NyaXN0aWNjL2xpbnV4LW5leHQv LS9jb21taXRzL3JrMzU4OC1oZG1pLWJyaWQKPiBnZSArIHRoaXMgdjcgc2VyaWVzLgoKRG8geW91 IGhhdmUgdGhlIGJyYW5jaCBhdmFpbGFibGUgc29tZXdoZXJlID8KCj4gT24gbWluZSByb2NrNWIg YWxsIHdvcmtzIG5pY2VseSBidXQgLSBhdCBib290IHRpbWUgLSBp4oCZbSBnZXR0aW5nIHNvbWUg b29wcwo+IGluIGtlcm5lbCBsaWtlIHRoaXM6Cj4gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vd2Fy cG1lL2UxNjY4YWNiZWY3ODE3ZTVkMmE4OGE2ODQwMzI4NzIyCgpJIGRpZCBub3RpY2UgdGhhdCBh dCBvbmUgcG9pbnQgYnV0IGl0IGRpc2FwcGVhcmQgYWZ0ZXIgYSByZWJhc2Ugb24gdGhlIHRoZSAK bGF0ZXN0IG1hc3RlciBzbyBJIGRpZG4ndCBsb29rIGZ1cnRoZXIgaW50byB0aGF0LgpDb3VsZCBp dCBiZSByZWxhdGVkIHRvIDI1MThhMGUxYjg3ODA0MmY5YWZhNDVhZTA2M2U1NDRhMTZlZmMxYTMg IkFTb0M6IHNpbXBsZS0KY2FyZDogdXNlIF9fZnJlZShkZXZpY2Vfbm9kZSkgZm9yIGRldmljZSBu b2RlIiA/CgpJJ20gbm90IGV4YWN0bHkgc3VyZSBob3cgX19mcmVlKGRldmljZV9ub2RlKSB3b3Jr cyB0aG91Z2gsIGJ1dCByZXZlcnRpbmcgdGhhdCAKY29tbWl0IGNvdWxkIGZpeCB0aGUgaXNzdWUu Cgo+IEnigJltIG5vdCBzdXJlIHdoZXJlIGlzc3VlIGlzIGJ1dCBpdCBsb29rcyB0byBtZSBsaWtl IGtpbmQgb2YgaW50ZXJmZXJlbmNlCj4gYmV0d2VlbiBhbmFsb2cgYXVkaW8gYW5kIGhkbWkgYXVk aW8gYXMgY29tbWVudGluZyBhbmFsb2cgYXVkaW8gaW4gZHRzICgKPiBodHRwczovL2dpdC5rZXJu ZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9zdGFibGUvbGludXguZ2l0L3RyZWUvYXJj aC8KPiBhcm02NC9ib290L2R0cy9yb2NrY2hpcC9yazM1ODgtcm9jay01Yi5kdHM/aD12Ni4xNC1y YzMjbjI0ICkgc3RvcHMga2VybmVsCj4gZnJvbSBvb3Bz4oCZaW5n4oCmLgoKSSBjYW5ub3QgcmVw cm9kdWNlIGFueW1vcmUsIHNvIGlmIHlvdSBoYXZlIGEgYnJhbmNoL2NvbmZpZyB0aGF0IHlvdSB1 c2UsIEkgCmNvdWxkIHRyeSwgbG9va2luZyBpbnRvIHRoYXQuCkkgZG9uJ3Qgc2VlIGFueSByZWxl dmFudCBjb21taXRzIHRoYXQgd291bGQgY2hhbmdlIHRoaXMgYmVoYXZpb3Igb24gbWFzdGVyIApz aW5jZSB2Ni4xNC1yYzMsIHNvIEknbSBub3Qgc3VyZSB3aGF0IGlzIGdvaW5nIG9uLgoKPiAgcm9j azViIGR0cyBp4oCZbSB1c2luZyBpcyBsaWtlIHRoaXM6Cj4gaHR0cHM6Ly9naXN0LmdpdGh1Yi5j b20vd2FycG1lL2E4YTMyYWZkNGEwNWQ0YjdmMjVkMjgwODk4NGIwNWFjCgpSZWdhcmRzLApEZXRs ZXYuCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxp bnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9j a2NoaXAK