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=-11.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,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 8A276C3A5A7 for ; Wed, 4 Sep 2019 09:36:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 50C5221670 for ; Wed, 4 Sep 2019 09:36:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="RUqHkSmy" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729590AbfIDJgZ (ORCPT ); Wed, 4 Sep 2019 05:36:25 -0400 Received: from mail-vs1-f68.google.com ([209.85.217.68]:32962 "EHLO mail-vs1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726304AbfIDJgY (ORCPT ); Wed, 4 Sep 2019 05:36:24 -0400 Received: by mail-vs1-f68.google.com with SMTP id s18so6275181vsa.0 for ; Wed, 04 Sep 2019 02:36:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=+o+ErCjuT5qX6PyUMFETCMRQPrMpr1ayP1BJFKFPXQY=; b=RUqHkSmy9lAe6HlMGvJ2AeO7vvfTM/8ipY2yHVIo0GAAHyrGu1dtp2hncgfldaDL19 0HgFoiRdCBjS33NXxSzdy9Igs4pUaLthBfVUFDpkYJTVRuQjYcc3oPcrvfUkCnx2TpO7 Hyv+CTguGHsymOnLw2Vy2oDEPaCwxDbVwVANA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=+o+ErCjuT5qX6PyUMFETCMRQPrMpr1ayP1BJFKFPXQY=; b=FzdQTM1ClrA9tows3k65Y8NfvQb0PprnapvP7y3gTiuiRzLRsltTf4ZbFLdnnwBm2a Btuxp612jNKfr0pjK+Bmh5W25vNshfk27ZutRR7DAoTv/7skl3mBD761hU293SN6io12 Q3b2B3Wh3ob3fUGGHNwOozMfIyV5nAzMCO9PMA7W+lfqm6OS1Fk95jnm6RsD+pGLraMh PtIOos/GMgK6JeXRk59ADN28pwROBJij2s65OgXhxZkK8Kmn1aIu0QXor7nF76YtVhFt ZoRQuGmocQkP2bm4c2XRAFre1FyI0ahETGWja8NBd1rTn3jC/sBEZ3TQKBcbJ7OfSYli L/6Q== X-Gm-Message-State: APjAAAXD3nBSVuLTt4dMf9BdCNGZ3kTTUSXB5GasrTj0VOC/7wADBl+t B2W30Y5tfpFRpRGbTPpLAKrQL/pvj8ZvgAtMm6Q41A== X-Google-Smtp-Source: APXvYqz7zQLlv7fkn9VJhICKcEdJo5UbgsU5W16+fLJAaZnX0P6LdvN3fnQs0PNd8MeWH4ar/6qO0Hc/ewmG8+HR4UE= X-Received: by 2002:a67:ab0b:: with SMTP id u11mr5576460vse.163.1567589782809; Wed, 04 Sep 2019 02:36:22 -0700 (PDT) MIME-Version: 1.0 References: <20190903055103.134764-1-cychiang@chromium.org> <19353031.SdOy5F5fmg@jernej-laptop> In-Reply-To: From: Cheng-yi Chiang Date: Wed, 4 Sep 2019 17:35:56 +0800 Message-ID: Subject: Re: [PATCH] drm: bridge/dw_hdmi: add audio sample channel status setting To: Jonas Karlman Cc: =?UTF-8?Q?Jernej_=C5=A0krabec?= , Neil Armstrong , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "alsa-devel@alsa-project.org" , "tzungbi@chromium.org" , "zhengxing@rock-chips.com" , "kuninori.morimoto.gx@renesas.com" , "a.hajda@samsung.com" , "airlied@linux.ie" , "kuankuan.y@gmail.com" , "jeffy.chen@rock-chips.com" , "dianders@chromium.org" , "cain.cai@rock-chips.com" , "linux-rockchip@lists.infradead.org" , "eddie.cai@rock-chips.com" , "Laurent.pinchart@ideasonboard.com" , "daniel@ffwll.ch" , "enric.balletbo@collabora.com" , "dgreid@chromium.org" , "sam@ravnborg.org" , "linux-arm-kernel@lists.infradead.org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Sep 4, 2019 at 4:33 AM Jonas Karlman wrote: > > On 2019-09-03 20:08, Jernej =C5=A0krabec wrote: > > Hi! > > > > Dne torek, 03. september 2019 ob 20:00:33 CEST je Neil Armstrong napisa= l(a): > >> Hi, > >> > >> Le 03/09/2019 =C3=A0 11:53, Neil Armstrong a =C3=A9crit : > >>> Hi, > >>> > >>> On 03/09/2019 07:51, Cheng-Yi Chiang wrote: > >>>> From: Yakir Yang > >>>> > >>>> When transmitting IEC60985 linear PCM audio, we configure the > >>>> Audio Sample Channel Status information of all the channel > >>>> status bits in the IEC60958 frame. > >>>> Refer to 60958-3 page 10 for frequency, original frequency, and > >>>> wordlength setting. > >>>> > >>>> This fix the issue that audio does not come out on some monitors > >>>> (e.g. LG 22CV241) > >>>> > >>>> Signed-off-by: Yakir Yang > >>>> Signed-off-by: Cheng-Yi Chiang > >>>> --- > >>>> > >>>> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 59 ++++++++++++++++++++= +++ > >>>> drivers/gpu/drm/bridge/synopsys/dw-hdmi.h | 20 ++++++++ > >>>> 2 files changed, 79 insertions(+) > >>>> > >>>> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > >>>> b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index > >>>> bd65d0479683..34d46e25d610 100644 > >>>> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > >>>> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > >>>> @@ -582,6 +582,63 @@ static unsigned int hdmi_compute_n(unsigned int > >>>> freq, unsigned long pixel_clk)>> > >>>> return n; > >>>> > >>>> } > >>>> > >>>> +static void hdmi_set_schnl(struct dw_hdmi *hdmi) > >>>> +{ > >>>> + u8 aud_schnl_samplerate; > >>>> + u8 aud_schnl_8; > >>>> + > >>>> + /* These registers are on RK3288 using version 2.0a. */ > >>>> + if (hdmi->version !=3D 0x200a) > >>>> + return; > >>> Are these limited to the 2.0a version *in* RK3288, or 2.0a version on= all > >>> SoCs ? > >> After investigations, Amlogic sets these registers on their 2.0a versi= on > >> aswell, and Jernej (added in Cc) reported me Allwinner sets them on th= eir > >> < 2.0a and > 2.0a IPs versions. > >> > >> Can you check on the Rockchip IP versions in RK3399 ? > >> > >> For reference, the HDMI 1.4a IP version allwinner setups is: > >> https://github.com/Allwinner-Homlet/H3-BSP4.4-linux/blob/master/driver= s/vide > >> o/fbdev/sunxi/disp2/hdmi/hdmi_bsp_sun8iw7.c#L531-L539 (registers a > >> "scrambled" but a custom bit can reset to the original mapping, 0x1066= ... > >> 0x106f) > > For easier reading, here is similar, but annotated version: http://ix.i= o/1Ub6 > > Check function bsp_hdmi_audio(). > > > > Unless there is a special reason, you can just remove that check. > > Agree, this check should not be needed, AUDSCHNLS7 used to be configured = in my old > multi-channel patches that have seen lot of testing on Amlogic, Allwinner= and Rockchip SoCs. > As stated in previous mail, I will modify the check for version >=3D1.4 since I know that 1.3 does not have such register, at least on iMX6. > > > > Best regards, > > Jernej > > > >> Neil > >> > >>>> + > >>>> + switch (hdmi->sample_rate) { > >>>> + case 32000: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_32K; > >>>> + break; > >>>> + case 44100: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_44K1; > >>>> + break; > >>>> + case 48000: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_48K; > >>>> + break; > >>>> + case 88200: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_88K2; > >>>> + break; > >>>> + case 96000: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_96K; > >>>> + break; > >>>> + case 176400: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_176K4= ; > >>>> + break; > >>>> + case 192000: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_192K; > >>>> + break; > >>>> + case 768000: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_768K; > >>>> + break; > >>>> + default: > >>>> + dev_warn(hdmi->dev, "Unsupported audio sample rate (%u)\n= ", > >>>> + hdmi->sample_rate); > >>>> + return; > >>>> + } > >>>> + > >>>> + /* set channel status register */ > >>>> + hdmi_modb(hdmi, aud_schnl_samplerate, HDMI_FC_AUDSCHNLS7_SMPRATE_= MASK, > >>>> + HDMI_FC_AUDSCHNLS7); > >>>> + > >>>> + /* > >>>> + * Set original frequency to be the same as frequency. > >>>> + * Use one-complement value as stated in IEC60958-3 page 13. > >>>> + */ > >>>> + aud_schnl_8 =3D (~aud_schnl_samplerate) << > >>>> + HDMI_FC_AUDSCHNLS8_ORIGSAMPFREQ_OFFSET; > >>>> + > >>>> + /* This means word length is 16 bit. Refer to IEC60958-3 page 12.= */ > >>>> + aud_schnl_8 |=3D 2 << HDMI_FC_AUDSCHNLS8_WORDLEGNTH_OFFSET; > > This looks wrong, user can use 16 and 24 bit wide audio streams. > Thanks for spotting this issue. I will fix it in v2 (following how http://ix.io/1Ub6 set it for 16 and 24 b= it) > >>>> + > >>>> + hdmi_writeb(hdmi, aud_schnl_8, HDMI_FC_AUDSCHNLS8); > >>>> +} > >>>> + > >>>> > >>>> static void hdmi_set_clk_regenerator(struct dw_hdmi *hdmi, > >>>> > >>>> unsigned long pixel_clk, unsigned int sample_rate) > >>>> > >>>> { > >>>> > >>>> @@ -620,6 +677,8 @@ static void hdmi_set_clk_regenerator(struct dw_h= dmi > >>>> *hdmi,>> > >>>> hdmi->audio_cts =3D cts; > >>>> hdmi_set_cts_n(hdmi, cts, hdmi->audio_enable ? n : 0); > >>>> spin_unlock_irq(&hdmi->audio_lock); > >>>> > >>>> + > >>>> + hdmi_set_schnl(hdmi); > > I will suggest this function is called from or merged with dw_hdmi_set_sa= mple_rate(). > Similar to how AUDSCONF and AUDICONF0 is configured from dw_hdmi_set_chan= nel_count(). > I see. I think it will make sense to add a function set_channel_status() for dw-hdmi-i2s-audio.c to call, since this function is more than just setting rate. Will fix in v2. Thanks! > Regards, > Jonas > > >>>> > >>>> } > >>>> > >>>> static void hdmi_init_clk_regenerator(struct dw_hdmi *hdmi) > >>>> > >>>> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h > >>>> b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h index > >>>> 6988f12d89d9..619ebc1c8354 100644 > >>>> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h > >>>> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h > >>>> @@ -158,6 +158,17 @@ > >>>> > >>>> #define HDMI_FC_SPDDEVICEINF 0x1062 > >>>> #define HDMI_FC_AUDSCONF 0x1063 > >>>> #define HDMI_FC_AUDSSTAT 0x1064 > >>>> > >>>> +#define HDMI_FC_AUDSV 0x1065 > >>>> +#define HDMI_FC_AUDSU 0x1066 > >>>> +#define HDMI_FC_AUDSCHNLS0 0x1067 > >>>> +#define HDMI_FC_AUDSCHNLS1 0x1068 > >>>> +#define HDMI_FC_AUDSCHNLS2 0x1069 > >>>> +#define HDMI_FC_AUDSCHNLS3 0x106a > >>>> +#define HDMI_FC_AUDSCHNLS4 0x106b > >>>> +#define HDMI_FC_AUDSCHNLS5 0x106c > >>>> +#define HDMI_FC_AUDSCHNLS6 0x106d > >>>> +#define HDMI_FC_AUDSCHNLS7 0x106e > >>>> +#define HDMI_FC_AUDSCHNLS8 0x106f > >>>> > >>>> #define HDMI_FC_DATACH0FILL 0x1070 > >>>> #define HDMI_FC_DATACH1FILL 0x1071 > >>>> #define HDMI_FC_DATACH2FILL 0x1072 > >>>> > >>>> @@ -706,6 +717,15 @@ enum { > >>>> > >>>> /* HDMI_FC_AUDSCHNLS7 field values */ > >>>> > >>>> HDMI_FC_AUDSCHNLS7_ACCURACY_OFFSET =3D 4, > >>>> HDMI_FC_AUDSCHNLS7_ACCURACY_MASK =3D 0x30, > >>>> > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_MASK =3D 0x0f, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_192K =3D 0xe, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_176K4 =3D 0xc, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_96K =3D 0xa, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_768K =3D 0x9, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_88K2 =3D 0x8, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_32K =3D 0x3, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_48K =3D 0x2, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_44K1 =3D 0x0, > >>>> > >>>> /* HDMI_FC_AUDSCHNLS8 field values */ > >>>> > >>>> HDMI_FC_AUDSCHNLS8_ORIGSAMPFREQ_MASK =3D 0xf0, 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=-11.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,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 3BD0FC3A5A7 for ; Wed, 4 Sep 2019 09:37:24 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (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 B7C6922CF7 for ; Wed, 4 Sep 2019 09:37:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="Yl98gOUT"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="RUqHkSmy" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B7C6922CF7 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id D07691693; Wed, 4 Sep 2019 11:36:31 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz D07691693 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1567589841; bh=tfM8EcFfXxWFLL7VQzV4j38kZTFjNP+9cdue4XydT+c=; h=References:In-Reply-To:From:Date:To:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=Yl98gOUTIce52xGBYAhBsndy/3LmxwlYzPOJ5ERUXg4bRlgWccHF62Xb9F4xEIiW6 ARteVWWQohNxdGWNfUQP5tio4mIe+zS/cAhtniTtI6d32Mn+hwktQEMSggBbloRqE6 uA7lf6OmcE/nDCvIofyzbu/gTa/W8WOiO4whIIH8= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id EC846F80228; Wed, 4 Sep 2019 11:36:30 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 01415F803A6; Wed, 4 Sep 2019 11:36:28 +0200 (CEST) Received: from mail-vs1-xe43.google.com (mail-vs1-xe43.google.com [IPv6:2607:f8b0:4864:20::e43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 1B292F8011E for ; Wed, 4 Sep 2019 11:36:24 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 1B292F8011E Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="RUqHkSmy" Received: by mail-vs1-xe43.google.com with SMTP id q9so7221372vsl.4 for ; Wed, 04 Sep 2019 02:36:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=+o+ErCjuT5qX6PyUMFETCMRQPrMpr1ayP1BJFKFPXQY=; b=RUqHkSmy9lAe6HlMGvJ2AeO7vvfTM/8ipY2yHVIo0GAAHyrGu1dtp2hncgfldaDL19 0HgFoiRdCBjS33NXxSzdy9Igs4pUaLthBfVUFDpkYJTVRuQjYcc3oPcrvfUkCnx2TpO7 Hyv+CTguGHsymOnLw2Vy2oDEPaCwxDbVwVANA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=+o+ErCjuT5qX6PyUMFETCMRQPrMpr1ayP1BJFKFPXQY=; b=cLS7PV5scla6ds3gxdOEPNRHeTdd371ccC1ylHtZKeL+uV250vARFEMoYV6mCk8HwQ 1i1Ma3Ayg9m1ISEZ3vVoWmc9O7dP78b//pzfRl3yIUoR9h8fNvi+W7/NdDv2VfG3FhUQ AA6nNL5moWvWcp0HWdaS7NFJ80CzM209xvDigObQL8RJuQfPUjQaBhLsbNWZa8yBsJ5j RnwAhl3gQtZv9bXRxsjWfpXU4EaBjvtg1XJVDTBP420oc2LEKpWaicObBWkZmqbdxbWk aC5VwQ3Z0aSb5GmCzaoQ3W8oF1yUV6d8vIyjxk7VMAx50fGO0veDauxO6l9pRiGox0QN r0ow== X-Gm-Message-State: APjAAAUKJnzEvdQiEZtSoo77vVT5ZLevh1we8MnhP43UbyeAazgc6y6H DnbFWZqxt3HQ4NIlBRy3k6B2NRpevz68AtIg30K7bA== X-Google-Smtp-Source: APXvYqz7zQLlv7fkn9VJhICKcEdJo5UbgsU5W16+fLJAaZnX0P6LdvN3fnQs0PNd8MeWH4ar/6qO0Hc/ewmG8+HR4UE= X-Received: by 2002:a67:ab0b:: with SMTP id u11mr5576460vse.163.1567589782809; Wed, 04 Sep 2019 02:36:22 -0700 (PDT) MIME-Version: 1.0 References: <20190903055103.134764-1-cychiang@chromium.org> <19353031.SdOy5F5fmg@jernej-laptop> In-Reply-To: From: Cheng-yi Chiang Date: Wed, 4 Sep 2019 17:35:56 +0800 Message-ID: To: Jonas Karlman Cc: "alsa-devel@alsa-project.org" , "kuninori.morimoto.gx@renesas.com" , Neil Armstrong , "airlied@linux.ie" , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "a.hajda@samsung.com" , "Laurent.pinchart@ideasonboard.com" , "sam@ravnborg.org" , "cain.cai@rock-chips.com" , "zhengxing@rock-chips.com" , "linux-rockchip@lists.infradead.org" , "dgreid@chromium.org" , "tzungbi@chromium.org" , "jeffy.chen@rock-chips.com" , "eddie.cai@rock-chips.com" , "linux-arm-kernel@lists.infradead.org" , =?UTF-8?Q?Jernej_=C5=A0krabec?= , "dianders@chromium.org" , "daniel@ffwll.ch" , "enric.balletbo@collabora.com" , "kuankuan.y@gmail.com" Subject: Re: [alsa-devel] [PATCH] drm: bridge/dw_hdmi: add audio sample channel status setting X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" T24gV2VkLCBTZXAgNCwgMjAxOSBhdCA0OjMzIEFNIEpvbmFzIEthcmxtYW4gPGpvbmFzQGt3aWJv by5zZT4gd3JvdGU6Cj4KPiBPbiAyMDE5LTA5LTAzIDIwOjA4LCBKZXJuZWogxaBrcmFiZWMgd3Jv dGU6Cj4gPiBIaSEKPiA+Cj4gPiBEbmUgdG9yZWssIDAzLiBzZXB0ZW1iZXIgMjAxOSBvYiAyMDow MDozMyBDRVNUIGplIE5laWwgQXJtc3Ryb25nIG5hcGlzYWwoYSk6Cj4gPj4gSGksCj4gPj4KPiA+ PiBMZSAwMy8wOS8yMDE5IMOgIDExOjUzLCBOZWlsIEFybXN0cm9uZyBhIMOpY3JpdCA6Cj4gPj4+ IEhpLAo+ID4+Pgo+ID4+PiBPbiAwMy8wOS8yMDE5IDA3OjUxLCBDaGVuZy1ZaSBDaGlhbmcgd3Jv dGU6Cj4gPj4+PiBGcm9tOiBZYWtpciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+Cj4gPj4+Pgo+ ID4+Pj4gV2hlbiB0cmFuc21pdHRpbmcgSUVDNjA5ODUgbGluZWFyIFBDTSBhdWRpbywgd2UgY29u ZmlndXJlIHRoZQo+ID4+Pj4gQXVkaW8gU2FtcGxlIENoYW5uZWwgU3RhdHVzIGluZm9ybWF0aW9u IG9mIGFsbCB0aGUgY2hhbm5lbAo+ID4+Pj4gc3RhdHVzIGJpdHMgaW4gdGhlIElFQzYwOTU4IGZy YW1lLgo+ID4+Pj4gUmVmZXIgdG8gNjA5NTgtMyBwYWdlIDEwIGZvciBmcmVxdWVuY3ksIG9yaWdp bmFsIGZyZXF1ZW5jeSwgYW5kCj4gPj4+PiB3b3JkbGVuZ3RoIHNldHRpbmcuCj4gPj4+Pgo+ID4+ Pj4gVGhpcyBmaXggdGhlIGlzc3VlIHRoYXQgYXVkaW8gZG9lcyBub3QgY29tZSBvdXQgb24gc29t ZSBtb25pdG9ycwo+ID4+Pj4gKGUuZy4gTEcgMjJDVjI0MSkKPiA+Pj4+Cj4gPj4+PiBTaWduZWQt b2ZmLWJ5OiBZYWtpciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+Cj4gPj4+PiBTaWduZWQtb2Zm LWJ5OiBDaGVuZy1ZaSBDaGlhbmcgPGN5Y2hpYW5nQGNocm9taXVtLm9yZz4KPiA+Pj4+IC0tLQo+ ID4+Pj4KPiA+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYyB8 IDU5ICsrKysrKysrKysrKysrKysrKysrKysrCj4gPj4+PiAgZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9zeW5vcHN5cy9kdy1oZG1pLmggfCAyMCArKysrKysrKwo+ID4+Pj4gIDIgZmlsZXMgY2hhbmdl ZCwgNzkgaW5zZXJ0aW9ucygrKQo+ID4+Pj4KPiA+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYwo+ID4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYyBpbmRleAo+ID4+Pj4gYmQ2NWQwNDc5NjgzLi4zNGQ0 NmUyNWQ2MTAgMTAwNjQ0Cj4gPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9w c3lzL2R3LWhkbWkuYwo+ID4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5 cy9kdy1oZG1pLmMKPiA+Pj4+IEBAIC01ODIsNiArNTgyLDYzIEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgaGRtaV9jb21wdXRlX24odW5zaWduZWQgaW50Cj4gPj4+PiBmcmVxLCB1bnNpZ25lZCBsb25n IHBpeGVsX2Nsayk+Pgo+ID4+Pj4gICAgcmV0dXJuIG47Cj4gPj4+Pgo+ID4+Pj4gIH0KPiA+Pj4+ Cj4gPj4+PiArc3RhdGljIHZvaWQgaGRtaV9zZXRfc2Nobmwoc3RydWN0IGR3X2hkbWkgKmhkbWkp Cj4gPj4+PiArewo+ID4+Pj4gKyAgdTggYXVkX3NjaG5sX3NhbXBsZXJhdGU7Cj4gPj4+PiArICB1 OCBhdWRfc2NobmxfODsKPiA+Pj4+ICsKPiA+Pj4+ICsgIC8qIFRoZXNlIHJlZ2lzdGVycyBhcmUg b24gUkszMjg4IHVzaW5nIHZlcnNpb24gMi4wYS4gKi8KPiA+Pj4+ICsgIGlmIChoZG1pLT52ZXJz aW9uICE9IDB4MjAwYSkKPiA+Pj4+ICsgICAgICAgICAgcmV0dXJuOwo+ID4+PiBBcmUgdGhlc2Ug bGltaXRlZCB0byB0aGUgMi4wYSB2ZXJzaW9uICppbiogUkszMjg4LCBvciAyLjBhIHZlcnNpb24g b24gYWxsCj4gPj4+IFNvQ3MgPwo+ID4+IEFmdGVyIGludmVzdGlnYXRpb25zLCBBbWxvZ2ljIHNl dHMgdGhlc2UgcmVnaXN0ZXJzIG9uIHRoZWlyIDIuMGEgdmVyc2lvbgo+ID4+IGFzd2VsbCwgYW5k IEplcm5laiAoYWRkZWQgaW4gQ2MpIHJlcG9ydGVkIG1lIEFsbHdpbm5lciBzZXRzIHRoZW0gb24g dGhlaXIKPiA+PiA8IDIuMGEgYW5kID4gMi4wYSBJUHMgdmVyc2lvbnMuCj4gPj4KPiA+PiBDYW4g eW91IGNoZWNrIG9uIHRoZSBSb2NrY2hpcCBJUCB2ZXJzaW9ucyBpbiBSSzMzOTkgPwo+ID4+Cj4g Pj4gRm9yIHJlZmVyZW5jZSwgdGhlIEhETUkgMS40YSBJUCB2ZXJzaW9uIGFsbHdpbm5lciBzZXR1 cHMgaXM6Cj4gPj4gaHR0cHM6Ly9naXRodWIuY29tL0FsbHdpbm5lci1Ib21sZXQvSDMtQlNQNC40 LWxpbnV4L2Jsb2IvbWFzdGVyL2RyaXZlcnMvdmlkZQo+ID4+IG8vZmJkZXYvc3VueGkvZGlzcDIv aGRtaS9oZG1pX2JzcF9zdW44aXc3LmMjTDUzMS1MNTM5IChyZWdpc3RlcnMgYQo+ID4+ICJzY3Jh bWJsZWQiIGJ1dCBhIGN1c3RvbSBiaXQgY2FuIHJlc2V0IHRvIHRoZSBvcmlnaW5hbCBtYXBwaW5n LCAweDEwNjYgLi4uCj4gPj4gMHgxMDZmKQo+ID4gRm9yIGVhc2llciByZWFkaW5nLCBoZXJlIGlz IHNpbWlsYXIsIGJ1dCBhbm5vdGF0ZWQgdmVyc2lvbjogaHR0cDovL2l4LmlvLzFVYjYKPiA+IENo ZWNrIGZ1bmN0aW9uIGJzcF9oZG1pX2F1ZGlvKCkuCj4gPgo+ID4gVW5sZXNzIHRoZXJlIGlzIGEg c3BlY2lhbCByZWFzb24sIHlvdSBjYW4ganVzdCByZW1vdmUgdGhhdCBjaGVjay4KPgo+IEFncmVl LCB0aGlzIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkLCBBVURTQ0hOTFM3IHVzZWQgdG8gYmUg Y29uZmlndXJlZCBpbiBteSBvbGQKPiBtdWx0aS1jaGFubmVsIHBhdGNoZXMgdGhhdCBoYXZlIHNl ZW4gbG90IG9mIHRlc3Rpbmcgb24gQW1sb2dpYywgQWxsd2lubmVyIGFuZCBSb2NrY2hpcCBTb0Nz Lgo+CgpBcyBzdGF0ZWQgaW4gcHJldmlvdXMgbWFpbCwgSSB3aWxsIG1vZGlmeSB0aGUgY2hlY2sg Zm9yIHZlcnNpb24gPj0xLjQKc2luY2UgSSBrbm93IHRoYXQgMS4zIGRvZXMgbm90IGhhdmUgc3Vj aCByZWdpc3RlciwgYXQgbGVhc3Qgb24gaU1YNi4KCj4gPgo+ID4gQmVzdCByZWdhcmRzLAo+ID4g SmVybmVqCj4gPgo+ID4+IE5laWwKPiA+Pgo+ID4+Pj4gKwo+ID4+Pj4gKyAgc3dpdGNoIChoZG1p LT5zYW1wbGVfcmF0ZSkgewo+ID4+Pj4gKyAgY2FzZSAzMjAwMDoKPiA+Pj4+ICsgICAgICAgICAg YXVkX3NjaG5sX3NhbXBsZXJhdGUgPSBIRE1JX0ZDX0FVRFNDSE5MUzdfU01QUkFURV8zMks7Cj4g Pj4+PiArICAgICAgICAgIGJyZWFrOwo+ID4+Pj4gKyAgY2FzZSA0NDEwMDoKPiA+Pj4+ICsgICAg ICAgICAgYXVkX3NjaG5sX3NhbXBsZXJhdGUgPSBIRE1JX0ZDX0FVRFNDSE5MUzdfU01QUkFURV80 NEsxOwo+ID4+Pj4gKyAgICAgICAgICBicmVhazsKPiA+Pj4+ICsgIGNhc2UgNDgwMDA6Cj4gPj4+ PiArICAgICAgICAgIGF1ZF9zY2hubF9zYW1wbGVyYXRlID0gSERNSV9GQ19BVURTQ0hOTFM3X1NN UFJBVEVfNDhLOwo+ID4+Pj4gKyAgICAgICAgICBicmVhazsKPiA+Pj4+ICsgIGNhc2UgODgyMDA6 Cj4gPj4+PiArICAgICAgICAgIGF1ZF9zY2hubF9zYW1wbGVyYXRlID0gSERNSV9GQ19BVURTQ0hO TFM3X1NNUFJBVEVfODhLMjsKPiA+Pj4+ICsgICAgICAgICAgYnJlYWs7Cj4gPj4+PiArICBjYXNl IDk2MDAwOgo+ID4+Pj4gKyAgICAgICAgICBhdWRfc2Nobmxfc2FtcGxlcmF0ZSA9IEhETUlfRkNf QVVEU0NITkxTN19TTVBSQVRFXzk2SzsKPiA+Pj4+ICsgICAgICAgICAgYnJlYWs7Cj4gPj4+PiAr ICBjYXNlIDE3NjQwMDoKPiA+Pj4+ICsgICAgICAgICAgYXVkX3NjaG5sX3NhbXBsZXJhdGUgPSBI RE1JX0ZDX0FVRFNDSE5MUzdfU01QUkFURV8xNzZLNDsKPiA+Pj4+ICsgICAgICAgICAgYnJlYWs7 Cj4gPj4+PiArICBjYXNlIDE5MjAwMDoKPiA+Pj4+ICsgICAgICAgICAgYXVkX3NjaG5sX3NhbXBs ZXJhdGUgPSBIRE1JX0ZDX0FVRFNDSE5MUzdfU01QUkFURV8xOTJLOwo+ID4+Pj4gKyAgICAgICAg ICBicmVhazsKPiA+Pj4+ICsgIGNhc2UgNzY4MDAwOgo+ID4+Pj4gKyAgICAgICAgICBhdWRfc2No bmxfc2FtcGxlcmF0ZSA9IEhETUlfRkNfQVVEU0NITkxTN19TTVBSQVRFXzc2OEs7Cj4gPj4+PiAr ICAgICAgICAgIGJyZWFrOwo+ID4+Pj4gKyAgZGVmYXVsdDoKPiA+Pj4+ICsgICAgICAgICAgZGV2 X3dhcm4oaGRtaS0+ZGV2LCAiVW5zdXBwb3J0ZWQgYXVkaW8gc2FtcGxlIHJhdGUgKCV1KVxuIiwK PiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgaGRtaS0+c2FtcGxlX3JhdGUpOwo+ID4+Pj4gKyAg ICAgICAgICByZXR1cm47Cj4gPj4+PiArICB9Cj4gPj4+PiArCj4gPj4+PiArICAvKiBzZXQgY2hh bm5lbCBzdGF0dXMgcmVnaXN0ZXIgKi8KPiA+Pj4+ICsgIGhkbWlfbW9kYihoZG1pLCBhdWRfc2No bmxfc2FtcGxlcmF0ZSwgSERNSV9GQ19BVURTQ0hOTFM3X1NNUFJBVEVfTUFTSywKPiA+Pj4+ICsg ICAgICAgICAgICBIRE1JX0ZDX0FVRFNDSE5MUzcpOwo+ID4+Pj4gKwo+ID4+Pj4gKyAgLyoKPiA+ Pj4+ICsgICAqIFNldCBvcmlnaW5hbCBmcmVxdWVuY3kgdG8gYmUgdGhlIHNhbWUgYXMgZnJlcXVl bmN5Lgo+ID4+Pj4gKyAgICogVXNlIG9uZS1jb21wbGVtZW50IHZhbHVlIGFzIHN0YXRlZCBpbiBJ RUM2MDk1OC0zIHBhZ2UgMTMuCj4gPj4+PiArICAgKi8KPiA+Pj4+ICsgIGF1ZF9zY2hubF84ID0g KH5hdWRfc2Nobmxfc2FtcGxlcmF0ZSkgPDwKPiA+Pj4+ICsgICAgICAgICAgICAgICAgICBIRE1J X0ZDX0FVRFNDSE5MUzhfT1JJR1NBTVBGUkVRX09GRlNFVDsKPiA+Pj4+ICsKPiA+Pj4+ICsgIC8q IFRoaXMgbWVhbnMgd29yZCBsZW5ndGggaXMgMTYgYml0LiBSZWZlciB0byBJRUM2MDk1OC0zIHBh Z2UgMTIuICovCj4gPj4+PiArICBhdWRfc2NobmxfOCB8PSAyIDw8IEhETUlfRkNfQVVEU0NITkxT OF9XT1JETEVHTlRIX09GRlNFVDsKPgo+IFRoaXMgbG9va3Mgd3JvbmcsIHVzZXIgY2FuIHVzZSAx NiBhbmQgMjQgYml0IHdpZGUgYXVkaW8gc3RyZWFtcy4KPgoKVGhhbmtzIGZvciBzcG90dGluZyB0 aGlzIGlzc3VlLgpJIHdpbGwgZml4IGl0IGluIHYyIChmb2xsb3dpbmcgaG93IGh0dHA6Ly9peC5p by8xVWI2IHNldCBpdCBmb3IgMTYgYW5kIDI0IGJpdCkKCj4gPj4+PiArCj4gPj4+PiArICBoZG1p X3dyaXRlYihoZG1pLCBhdWRfc2NobmxfOCwgSERNSV9GQ19BVURTQ0hOTFM4KTsKPiA+Pj4+ICt9 Cj4gPj4+PiArCj4gPj4+Pgo+ID4+Pj4gIHN0YXRpYyB2b2lkIGhkbWlfc2V0X2Nsa19yZWdlbmVy YXRvcihzdHJ1Y3QgZHdfaGRtaSAqaGRtaSwKPiA+Pj4+Cj4gPj4+PiAgICB1bnNpZ25lZCBsb25n IHBpeGVsX2NsaywgdW5zaWduZWQgaW50IHNhbXBsZV9yYXRlKQo+ID4+Pj4KPiA+Pj4+ICB7Cj4g Pj4+Pgo+ID4+Pj4gQEAgLTYyMCw2ICs2NzcsOCBAQCBzdGF0aWMgdm9pZCBoZG1pX3NldF9jbGtf cmVnZW5lcmF0b3Ioc3RydWN0IGR3X2hkbWkKPiA+Pj4+ICpoZG1pLD4+Cj4gPj4+PiAgICBoZG1p LT5hdWRpb19jdHMgPSBjdHM7Cj4gPj4+PiAgICBoZG1pX3NldF9jdHNfbihoZG1pLCBjdHMsIGhk bWktPmF1ZGlvX2VuYWJsZSA/IG4gOiAwKTsKPiA+Pj4+ICAgIHNwaW5fdW5sb2NrX2lycSgmaGRt aS0+YXVkaW9fbG9jayk7Cj4gPj4+Pgo+ID4+Pj4gKwo+ID4+Pj4gKyAgaGRtaV9zZXRfc2Nobmwo aGRtaSk7Cj4KPiBJIHdpbGwgc3VnZ2VzdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIG9y IG1lcmdlZCB3aXRoIGR3X2hkbWlfc2V0X3NhbXBsZV9yYXRlKCkuCj4gU2ltaWxhciB0byBob3cg QVVEU0NPTkYgYW5kIEFVRElDT05GMCBpcyBjb25maWd1cmVkIGZyb20gZHdfaGRtaV9zZXRfY2hh bm5lbF9jb3VudCgpLgo+CgpJIHNlZS4gSSB0aGluayBpdCB3aWxsIG1ha2Ugc2Vuc2UgdG8gYWRk IGEgZnVuY3Rpb24Kc2V0X2NoYW5uZWxfc3RhdHVzKCkgZm9yIGR3LWhkbWktaTJzLWF1ZGlvLmMg dG8gY2FsbCwKc2luY2UgdGhpcyBmdW5jdGlvbiBpcyBtb3JlIHRoYW4ganVzdCBzZXR0aW5nIHJh dGUuCldpbGwgZml4IGluIHYyLgoKVGhhbmtzIQoKPiBSZWdhcmRzLAo+IEpvbmFzCj4KPiA+Pj4+ Cj4gPj4+PiAgfQo+ID4+Pj4KPiA+Pj4+ICBzdGF0aWMgdm9pZCBoZG1pX2luaXRfY2xrX3JlZ2Vu ZXJhdG9yKHN0cnVjdCBkd19oZG1pICpoZG1pKQo+ID4+Pj4KPiA+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuaAo+ID4+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuaCBpbmRleAo+ID4+Pj4gNjk4OGYxMmQ4 OWQ5Li42MTllYmMxYzgzNTQgMTAwNjQ0Cj4gPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL3N5bm9wc3lzL2R3LWhkbWkuaAo+ID4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9zeW5vcHN5cy9kdy1oZG1pLmgKPiA+Pj4+IEBAIC0xNTgsNiArMTU4LDE3IEBACj4gPj4+Pgo+ ID4+Pj4gICNkZWZpbmUgSERNSV9GQ19TUERERVZJQ0VJTkYgICAgICAgICAgICAgICAgICAgIDB4 MTA2Mgo+ID4+Pj4gICNkZWZpbmUgSERNSV9GQ19BVURTQ09ORiAgICAgICAgICAgICAgICAgICAg ICAgIDB4MTA2Mwo+ID4+Pj4gICNkZWZpbmUgSERNSV9GQ19BVURTU1RBVCAgICAgICAgICAgICAg ICAgICAgICAgIDB4MTA2NAo+ID4+Pj4KPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU1YgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDEwNjUKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVE U1UgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwNjYKPiA+Pj4+ICsjZGVmaW5lIEhETUlf RkNfQVVEU0NITkxTMCAgICAgICAgICAgICAgICAgICAgICAweDEwNjcKPiA+Pj4+ICsjZGVmaW5l IEhETUlfRkNfQVVEU0NITkxTMSAgICAgICAgICAgICAgICAgICAgICAweDEwNjgKPiA+Pj4+ICsj ZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTMiAgICAgICAgICAgICAgICAgICAgICAweDEwNjkKPiA+ Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTMyAgICAgICAgICAgICAgICAgICAgICAweDEw NmEKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTNCAgICAgICAgICAgICAgICAgICAg ICAweDEwNmIKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTNSAgICAgICAgICAgICAg ICAgICAgICAweDEwNmMKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTNiAgICAgICAg ICAgICAgICAgICAgICAweDEwNmQKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTNyAg ICAgICAgICAgICAgICAgICAgICAweDEwNmUKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NI TkxTOCAgICAgICAgICAgICAgICAgICAgICAweDEwNmYKPiA+Pj4+Cj4gPj4+PiAgI2RlZmluZSBI RE1JX0ZDX0RBVEFDSDBGSUxMICAgICAgICAgICAgICAgICAgICAgMHgxMDcwCj4gPj4+PiAgI2Rl ZmluZSBIRE1JX0ZDX0RBVEFDSDFGSUxMICAgICAgICAgICAgICAgICAgICAgMHgxMDcxCj4gPj4+ PiAgI2RlZmluZSBIRE1JX0ZDX0RBVEFDSDJGSUxMICAgICAgICAgICAgICAgICAgICAgMHgxMDcy Cj4gPj4+Pgo+ID4+Pj4gQEAgLTcwNiw2ICs3MTcsMTUgQEAgZW51bSB7Cj4gPj4+Pgo+ID4+Pj4g IC8qIEhETUlfRkNfQVVEU0NITkxTNyBmaWVsZCB2YWx1ZXMgKi8KPiA+Pj4+Cj4gPj4+PiAgICBI RE1JX0ZDX0FVRFNDSE5MUzdfQUNDVVJBQ1lfT0ZGU0VUID0gNCwKPiA+Pj4+ICAgIEhETUlfRkNf QVVEU0NITkxTN19BQ0NVUkFDWV9NQVNLID0gMHgzMCwKPiA+Pj4+Cj4gPj4+PiArICBIRE1JX0ZD X0FVRFNDSE5MUzdfU01QUkFURV9NQVNLID0gMHgwZiwKPiA+Pj4+ICsgIEhETUlfRkNfQVVEU0NI TkxTN19TTVBSQVRFXzE5MksgPSAweGUsCj4gPj4+PiArICBIRE1JX0ZDX0FVRFNDSE5MUzdfU01Q UkFURV8xNzZLNCA9IDB4YywKPiA+Pj4+ICsgIEhETUlfRkNfQVVEU0NITkxTN19TTVBSQVRFXzk2 SyA9IDB4YSwKPiA+Pj4+ICsgIEhETUlfRkNfQVVEU0NITkxTN19TTVBSQVRFXzc2OEsgPSAweDks Cj4gPj4+PiArICBIRE1JX0ZDX0FVRFNDSE5MUzdfU01QUkFURV84OEsyID0gMHg4LAo+ID4+Pj4g KyAgSERNSV9GQ19BVURTQ0hOTFM3X1NNUFJBVEVfMzJLID0gMHgzLAo+ID4+Pj4gKyAgSERNSV9G Q19BVURTQ0hOTFM3X1NNUFJBVEVfNDhLID0gMHgyLAo+ID4+Pj4gKyAgSERNSV9GQ19BVURTQ0hO TFM3X1NNUFJBVEVfNDRLMSA9IDB4MCwKPiA+Pj4+Cj4gPj4+PiAgLyogSERNSV9GQ19BVURTQ0hO TFM4IGZpZWxkIHZhbHVlcyAqLwo+ID4+Pj4KPiA+Pj4+ICAgIEhETUlfRkNfQVVEU0NITkxTOF9P UklHU0FNUEZSRVFfTUFTSyA9IDB4ZjAsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0CkFsc2EtZGV2ZWxAYWxzYS1w cm9qZWN0Lm9yZwpodHRwczovL21haWxtYW4uYWxzYS1wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2Fsc2EtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cheng-yi Chiang Subject: Re: [PATCH] drm: bridge/dw_hdmi: add audio sample channel status setting Date: Wed, 4 Sep 2019 17:35:56 +0800 Message-ID: References: <20190903055103.134764-1-cychiang@chromium.org> <19353031.SdOy5F5fmg@jernej-laptop> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: Jonas Karlman Cc: =?UTF-8?Q?Jernej_=C5=A0krabec?= , Neil Armstrong , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "alsa-devel@alsa-project.org" , "tzungbi@chromium.org" , "zhengxing@rock-chips.com" , "kuninori.morimoto.gx@renesas.com" , "a.hajda@samsung.com" , "airlied@linux.ie" , "kuankuan.y@gmail.com" , "jeffy.chen@rock-chips.com" , "dianders@chromium.org" , "cain.cai@rock-chips.com" , linux-rockchip@lists.infra List-Id: linux-rockchip.vger.kernel.org On Wed, Sep 4, 2019 at 4:33 AM Jonas Karlman wrote: > > On 2019-09-03 20:08, Jernej =C5=A0krabec wrote: > > Hi! > > > > Dne torek, 03. september 2019 ob 20:00:33 CEST je Neil Armstrong napisa= l(a): > >> Hi, > >> > >> Le 03/09/2019 =C3=A0 11:53, Neil Armstrong a =C3=A9crit : > >>> Hi, > >>> > >>> On 03/09/2019 07:51, Cheng-Yi Chiang wrote: > >>>> From: Yakir Yang > >>>> > >>>> When transmitting IEC60985 linear PCM audio, we configure the > >>>> Audio Sample Channel Status information of all the channel > >>>> status bits in the IEC60958 frame. > >>>> Refer to 60958-3 page 10 for frequency, original frequency, and > >>>> wordlength setting. > >>>> > >>>> This fix the issue that audio does not come out on some monitors > >>>> (e.g. LG 22CV241) > >>>> > >>>> Signed-off-by: Yakir Yang > >>>> Signed-off-by: Cheng-Yi Chiang > >>>> --- > >>>> > >>>> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 59 ++++++++++++++++++++= +++ > >>>> drivers/gpu/drm/bridge/synopsys/dw-hdmi.h | 20 ++++++++ > >>>> 2 files changed, 79 insertions(+) > >>>> > >>>> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > >>>> b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index > >>>> bd65d0479683..34d46e25d610 100644 > >>>> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > >>>> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > >>>> @@ -582,6 +582,63 @@ static unsigned int hdmi_compute_n(unsigned int > >>>> freq, unsigned long pixel_clk)>> > >>>> return n; > >>>> > >>>> } > >>>> > >>>> +static void hdmi_set_schnl(struct dw_hdmi *hdmi) > >>>> +{ > >>>> + u8 aud_schnl_samplerate; > >>>> + u8 aud_schnl_8; > >>>> + > >>>> + /* These registers are on RK3288 using version 2.0a. */ > >>>> + if (hdmi->version !=3D 0x200a) > >>>> + return; > >>> Are these limited to the 2.0a version *in* RK3288, or 2.0a version on= all > >>> SoCs ? > >> After investigations, Amlogic sets these registers on their 2.0a versi= on > >> aswell, and Jernej (added in Cc) reported me Allwinner sets them on th= eir > >> < 2.0a and > 2.0a IPs versions. > >> > >> Can you check on the Rockchip IP versions in RK3399 ? > >> > >> For reference, the HDMI 1.4a IP version allwinner setups is: > >> https://github.com/Allwinner-Homlet/H3-BSP4.4-linux/blob/master/driver= s/vide > >> o/fbdev/sunxi/disp2/hdmi/hdmi_bsp_sun8iw7.c#L531-L539 (registers a > >> "scrambled" but a custom bit can reset to the original mapping, 0x1066= ... > >> 0x106f) > > For easier reading, here is similar, but annotated version: http://ix.i= o/1Ub6 > > Check function bsp_hdmi_audio(). > > > > Unless there is a special reason, you can just remove that check. > > Agree, this check should not be needed, AUDSCHNLS7 used to be configured = in my old > multi-channel patches that have seen lot of testing on Amlogic, Allwinner= and Rockchip SoCs. > As stated in previous mail, I will modify the check for version >=3D1.4 since I know that 1.3 does not have such register, at least on iMX6. > > > > Best regards, > > Jernej > > > >> Neil > >> > >>>> + > >>>> + switch (hdmi->sample_rate) { > >>>> + case 32000: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_32K; > >>>> + break; > >>>> + case 44100: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_44K1; > >>>> + break; > >>>> + case 48000: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_48K; > >>>> + break; > >>>> + case 88200: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_88K2; > >>>> + break; > >>>> + case 96000: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_96K; > >>>> + break; > >>>> + case 176400: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_176K4= ; > >>>> + break; > >>>> + case 192000: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_192K; > >>>> + break; > >>>> + case 768000: > >>>> + aud_schnl_samplerate =3D HDMI_FC_AUDSCHNLS7_SMPRATE_768K; > >>>> + break; > >>>> + default: > >>>> + dev_warn(hdmi->dev, "Unsupported audio sample rate (%u)\n= ", > >>>> + hdmi->sample_rate); > >>>> + return; > >>>> + } > >>>> + > >>>> + /* set channel status register */ > >>>> + hdmi_modb(hdmi, aud_schnl_samplerate, HDMI_FC_AUDSCHNLS7_SMPRATE_= MASK, > >>>> + HDMI_FC_AUDSCHNLS7); > >>>> + > >>>> + /* > >>>> + * Set original frequency to be the same as frequency. > >>>> + * Use one-complement value as stated in IEC60958-3 page 13. > >>>> + */ > >>>> + aud_schnl_8 =3D (~aud_schnl_samplerate) << > >>>> + HDMI_FC_AUDSCHNLS8_ORIGSAMPFREQ_OFFSET; > >>>> + > >>>> + /* This means word length is 16 bit. Refer to IEC60958-3 page 12.= */ > >>>> + aud_schnl_8 |=3D 2 << HDMI_FC_AUDSCHNLS8_WORDLEGNTH_OFFSET; > > This looks wrong, user can use 16 and 24 bit wide audio streams. > Thanks for spotting this issue. I will fix it in v2 (following how http://ix.io/1Ub6 set it for 16 and 24 b= it) > >>>> + > >>>> + hdmi_writeb(hdmi, aud_schnl_8, HDMI_FC_AUDSCHNLS8); > >>>> +} > >>>> + > >>>> > >>>> static void hdmi_set_clk_regenerator(struct dw_hdmi *hdmi, > >>>> > >>>> unsigned long pixel_clk, unsigned int sample_rate) > >>>> > >>>> { > >>>> > >>>> @@ -620,6 +677,8 @@ static void hdmi_set_clk_regenerator(struct dw_h= dmi > >>>> *hdmi,>> > >>>> hdmi->audio_cts =3D cts; > >>>> hdmi_set_cts_n(hdmi, cts, hdmi->audio_enable ? n : 0); > >>>> spin_unlock_irq(&hdmi->audio_lock); > >>>> > >>>> + > >>>> + hdmi_set_schnl(hdmi); > > I will suggest this function is called from or merged with dw_hdmi_set_sa= mple_rate(). > Similar to how AUDSCONF and AUDICONF0 is configured from dw_hdmi_set_chan= nel_count(). > I see. I think it will make sense to add a function set_channel_status() for dw-hdmi-i2s-audio.c to call, since this function is more than just setting rate. Will fix in v2. Thanks! > Regards, > Jonas > > >>>> > >>>> } > >>>> > >>>> static void hdmi_init_clk_regenerator(struct dw_hdmi *hdmi) > >>>> > >>>> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h > >>>> b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h index > >>>> 6988f12d89d9..619ebc1c8354 100644 > >>>> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h > >>>> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h > >>>> @@ -158,6 +158,17 @@ > >>>> > >>>> #define HDMI_FC_SPDDEVICEINF 0x1062 > >>>> #define HDMI_FC_AUDSCONF 0x1063 > >>>> #define HDMI_FC_AUDSSTAT 0x1064 > >>>> > >>>> +#define HDMI_FC_AUDSV 0x1065 > >>>> +#define HDMI_FC_AUDSU 0x1066 > >>>> +#define HDMI_FC_AUDSCHNLS0 0x1067 > >>>> +#define HDMI_FC_AUDSCHNLS1 0x1068 > >>>> +#define HDMI_FC_AUDSCHNLS2 0x1069 > >>>> +#define HDMI_FC_AUDSCHNLS3 0x106a > >>>> +#define HDMI_FC_AUDSCHNLS4 0x106b > >>>> +#define HDMI_FC_AUDSCHNLS5 0x106c > >>>> +#define HDMI_FC_AUDSCHNLS6 0x106d > >>>> +#define HDMI_FC_AUDSCHNLS7 0x106e > >>>> +#define HDMI_FC_AUDSCHNLS8 0x106f > >>>> > >>>> #define HDMI_FC_DATACH0FILL 0x1070 > >>>> #define HDMI_FC_DATACH1FILL 0x1071 > >>>> #define HDMI_FC_DATACH2FILL 0x1072 > >>>> > >>>> @@ -706,6 +717,15 @@ enum { > >>>> > >>>> /* HDMI_FC_AUDSCHNLS7 field values */ > >>>> > >>>> HDMI_FC_AUDSCHNLS7_ACCURACY_OFFSET =3D 4, > >>>> HDMI_FC_AUDSCHNLS7_ACCURACY_MASK =3D 0x30, > >>>> > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_MASK =3D 0x0f, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_192K =3D 0xe, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_176K4 =3D 0xc, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_96K =3D 0xa, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_768K =3D 0x9, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_88K2 =3D 0x8, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_32K =3D 0x3, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_48K =3D 0x2, > >>>> + HDMI_FC_AUDSCHNLS7_SMPRATE_44K1 =3D 0x0, > >>>> > >>>> /* HDMI_FC_AUDSCHNLS8 field values */ > >>>> > >>>> HDMI_FC_AUDSCHNLS8_ORIGSAMPFREQ_MASK =3D 0xf0, 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=-11.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,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 60269C3A5A7 for ; Wed, 4 Sep 2019 09:36: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 31BD821670 for ; Wed, 4 Sep 2019 09:36:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="fHC1blMY"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="RUqHkSmy" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 31BD821670 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id: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=nrhtyAAGTAL/RynhH4Y7o2M2ZtDHC8AFmwbnE5d95Do=; b=fHC1blMYzBDYPj 3MbHdON4pB1LF+rWzITTFYYCWW4I3Q470St20gC7epzM3zM1sfudpAjkCxjY+2bhIXfsViQk+Xhd4 6adnpskyCnn5C0yoI5horSjq2H4UA4vLLzD6AVtGmYMr72BD8aBsaS/tJpnxBTMhf8lPp8FmTg2Tq ozvZibKdxGKKaaEJQDuYwkmb4WU/BEyK0YMpM0LPF9I8RA3pBpmb7LWQh2ZgsoOV5qxtsGi3XXDUj uiWZF5xutmqhIofHT3fKN3qtHCtLqOdiSh8lpBnTTjcWKsNZBPlIAQX3K7FgMUF2obgMWMyS9v1U/ IqfwCxPPO3nzAUjr09cQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i5RiJ-0008Eu-J5; Wed, 04 Sep 2019 09:36:31 +0000 Received: from mail-vs1-xe43.google.com ([2607:f8b0:4864:20::e43]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1i5RiF-0008DD-Aw for linux-arm-kernel@lists.infradead.org; Wed, 04 Sep 2019 09:36:29 +0000 Received: by mail-vs1-xe43.google.com with SMTP id b11so7802476vsq.2 for ; Wed, 04 Sep 2019 02:36:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=+o+ErCjuT5qX6PyUMFETCMRQPrMpr1ayP1BJFKFPXQY=; b=RUqHkSmy9lAe6HlMGvJ2AeO7vvfTM/8ipY2yHVIo0GAAHyrGu1dtp2hncgfldaDL19 0HgFoiRdCBjS33NXxSzdy9Igs4pUaLthBfVUFDpkYJTVRuQjYcc3oPcrvfUkCnx2TpO7 Hyv+CTguGHsymOnLw2Vy2oDEPaCwxDbVwVANA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=+o+ErCjuT5qX6PyUMFETCMRQPrMpr1ayP1BJFKFPXQY=; b=PdP4/ngVf7/QX28Budlf2yRps7GoG5VlQmT6t5H26kDKkdxlIhLQ4ASbEClw9afxhF 9gc3Gmbvaf/+KOfDAvkOHrIBKFXLiXQH1eTYG/tBxa+219I00/FOHX+Xlmn9Eb/1tOva q1Gr3wbeB+LcRiP3/sdqedcCqfm9oW98T7UNCXViab4RG6ipm2QdvP3r+iY9u4Gp+kP1 lEZn2CFG+YiA3f4G2SDmwoV6oAGDG1DEc0lXufClz/mSgiYk85utrT1CzS6D8A5PGfA6 8lYSgnxqHPfL9D9QJcvbuFb4gNF8ZAnFRs3Z4DZR8alXlEqUSCEh32CsFf336yOqkRiy 0ygg== X-Gm-Message-State: APjAAAW80O5PXEVoK3nl2usEV3BB1O3uBIWNZJYEJwOUwnLxhTC1Frnd YTNOM6zhOnQgUFULA7KzU2B7h9wUcuQn+HtNYBdKTQ== X-Google-Smtp-Source: APXvYqz7zQLlv7fkn9VJhICKcEdJo5UbgsU5W16+fLJAaZnX0P6LdvN3fnQs0PNd8MeWH4ar/6qO0Hc/ewmG8+HR4UE= X-Received: by 2002:a67:ab0b:: with SMTP id u11mr5576460vse.163.1567589782809; Wed, 04 Sep 2019 02:36:22 -0700 (PDT) MIME-Version: 1.0 References: <20190903055103.134764-1-cychiang@chromium.org> <19353031.SdOy5F5fmg@jernej-laptop> In-Reply-To: From: Cheng-yi Chiang Date: Wed, 4 Sep 2019 17:35:56 +0800 Message-ID: Subject: Re: [PATCH] drm: bridge/dw_hdmi: add audio sample channel status setting To: Jonas Karlman X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190904_023627_948264_31339CE5 X-CRM114-Status: GOOD ( 26.83 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "alsa-devel@alsa-project.org" , "kuninori.morimoto.gx@renesas.com" , Neil Armstrong , "airlied@linux.ie" , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "a.hajda@samsung.com" , "Laurent.pinchart@ideasonboard.com" , "sam@ravnborg.org" , "cain.cai@rock-chips.com" , "zhengxing@rock-chips.com" , "linux-rockchip@lists.infradead.org" , "dgreid@chromium.org" , "tzungbi@chromium.org" , "jeffy.chen@rock-chips.com" , "eddie.cai@rock-chips.com" , "linux-arm-kernel@lists.infradead.org" , =?UTF-8?Q?Jernej_=C5=A0krabec?= , "dianders@chromium.org" , "daniel@ffwll.ch" , "enric.balletbo@collabora.com" , "kuankuan.y@gmail.com" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gV2VkLCBTZXAgNCwgMjAxOSBhdCA0OjMzIEFNIEpvbmFzIEthcmxtYW4gPGpvbmFzQGt3aWJv by5zZT4gd3JvdGU6Cj4KPiBPbiAyMDE5LTA5LTAzIDIwOjA4LCBKZXJuZWogxaBrcmFiZWMgd3Jv dGU6Cj4gPiBIaSEKPiA+Cj4gPiBEbmUgdG9yZWssIDAzLiBzZXB0ZW1iZXIgMjAxOSBvYiAyMDow MDozMyBDRVNUIGplIE5laWwgQXJtc3Ryb25nIG5hcGlzYWwoYSk6Cj4gPj4gSGksCj4gPj4KPiA+ PiBMZSAwMy8wOS8yMDE5IMOgIDExOjUzLCBOZWlsIEFybXN0cm9uZyBhIMOpY3JpdCA6Cj4gPj4+ IEhpLAo+ID4+Pgo+ID4+PiBPbiAwMy8wOS8yMDE5IDA3OjUxLCBDaGVuZy1ZaSBDaGlhbmcgd3Jv dGU6Cj4gPj4+PiBGcm9tOiBZYWtpciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+Cj4gPj4+Pgo+ ID4+Pj4gV2hlbiB0cmFuc21pdHRpbmcgSUVDNjA5ODUgbGluZWFyIFBDTSBhdWRpbywgd2UgY29u ZmlndXJlIHRoZQo+ID4+Pj4gQXVkaW8gU2FtcGxlIENoYW5uZWwgU3RhdHVzIGluZm9ybWF0aW9u IG9mIGFsbCB0aGUgY2hhbm5lbAo+ID4+Pj4gc3RhdHVzIGJpdHMgaW4gdGhlIElFQzYwOTU4IGZy YW1lLgo+ID4+Pj4gUmVmZXIgdG8gNjA5NTgtMyBwYWdlIDEwIGZvciBmcmVxdWVuY3ksIG9yaWdp bmFsIGZyZXF1ZW5jeSwgYW5kCj4gPj4+PiB3b3JkbGVuZ3RoIHNldHRpbmcuCj4gPj4+Pgo+ID4+ Pj4gVGhpcyBmaXggdGhlIGlzc3VlIHRoYXQgYXVkaW8gZG9lcyBub3QgY29tZSBvdXQgb24gc29t ZSBtb25pdG9ycwo+ID4+Pj4gKGUuZy4gTEcgMjJDVjI0MSkKPiA+Pj4+Cj4gPj4+PiBTaWduZWQt b2ZmLWJ5OiBZYWtpciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+Cj4gPj4+PiBTaWduZWQtb2Zm LWJ5OiBDaGVuZy1ZaSBDaGlhbmcgPGN5Y2hpYW5nQGNocm9taXVtLm9yZz4KPiA+Pj4+IC0tLQo+ ID4+Pj4KPiA+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYyB8 IDU5ICsrKysrKysrKysrKysrKysrKysrKysrCj4gPj4+PiAgZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9zeW5vcHN5cy9kdy1oZG1pLmggfCAyMCArKysrKysrKwo+ID4+Pj4gIDIgZmlsZXMgY2hhbmdl ZCwgNzkgaW5zZXJ0aW9ucygrKQo+ID4+Pj4KPiA+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYwo+ID4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYyBpbmRleAo+ID4+Pj4gYmQ2NWQwNDc5NjgzLi4zNGQ0 NmUyNWQ2MTAgMTAwNjQ0Cj4gPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9w c3lzL2R3LWhkbWkuYwo+ID4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zeW5vcHN5 cy9kdy1oZG1pLmMKPiA+Pj4+IEBAIC01ODIsNiArNTgyLDYzIEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgaGRtaV9jb21wdXRlX24odW5zaWduZWQgaW50Cj4gPj4+PiBmcmVxLCB1bnNpZ25lZCBsb25n IHBpeGVsX2Nsayk+Pgo+ID4+Pj4gICAgcmV0dXJuIG47Cj4gPj4+Pgo+ID4+Pj4gIH0KPiA+Pj4+ Cj4gPj4+PiArc3RhdGljIHZvaWQgaGRtaV9zZXRfc2Nobmwoc3RydWN0IGR3X2hkbWkgKmhkbWkp Cj4gPj4+PiArewo+ID4+Pj4gKyAgdTggYXVkX3NjaG5sX3NhbXBsZXJhdGU7Cj4gPj4+PiArICB1 OCBhdWRfc2NobmxfODsKPiA+Pj4+ICsKPiA+Pj4+ICsgIC8qIFRoZXNlIHJlZ2lzdGVycyBhcmUg b24gUkszMjg4IHVzaW5nIHZlcnNpb24gMi4wYS4gKi8KPiA+Pj4+ICsgIGlmIChoZG1pLT52ZXJz aW9uICE9IDB4MjAwYSkKPiA+Pj4+ICsgICAgICAgICAgcmV0dXJuOwo+ID4+PiBBcmUgdGhlc2Ug bGltaXRlZCB0byB0aGUgMi4wYSB2ZXJzaW9uICppbiogUkszMjg4LCBvciAyLjBhIHZlcnNpb24g b24gYWxsCj4gPj4+IFNvQ3MgPwo+ID4+IEFmdGVyIGludmVzdGlnYXRpb25zLCBBbWxvZ2ljIHNl dHMgdGhlc2UgcmVnaXN0ZXJzIG9uIHRoZWlyIDIuMGEgdmVyc2lvbgo+ID4+IGFzd2VsbCwgYW5k IEplcm5laiAoYWRkZWQgaW4gQ2MpIHJlcG9ydGVkIG1lIEFsbHdpbm5lciBzZXRzIHRoZW0gb24g dGhlaXIKPiA+PiA8IDIuMGEgYW5kID4gMi4wYSBJUHMgdmVyc2lvbnMuCj4gPj4KPiA+PiBDYW4g eW91IGNoZWNrIG9uIHRoZSBSb2NrY2hpcCBJUCB2ZXJzaW9ucyBpbiBSSzMzOTkgPwo+ID4+Cj4g Pj4gRm9yIHJlZmVyZW5jZSwgdGhlIEhETUkgMS40YSBJUCB2ZXJzaW9uIGFsbHdpbm5lciBzZXR1 cHMgaXM6Cj4gPj4gaHR0cHM6Ly9naXRodWIuY29tL0FsbHdpbm5lci1Ib21sZXQvSDMtQlNQNC40 LWxpbnV4L2Jsb2IvbWFzdGVyL2RyaXZlcnMvdmlkZQo+ID4+IG8vZmJkZXYvc3VueGkvZGlzcDIv aGRtaS9oZG1pX2JzcF9zdW44aXc3LmMjTDUzMS1MNTM5IChyZWdpc3RlcnMgYQo+ID4+ICJzY3Jh bWJsZWQiIGJ1dCBhIGN1c3RvbSBiaXQgY2FuIHJlc2V0IHRvIHRoZSBvcmlnaW5hbCBtYXBwaW5n LCAweDEwNjYgLi4uCj4gPj4gMHgxMDZmKQo+ID4gRm9yIGVhc2llciByZWFkaW5nLCBoZXJlIGlz IHNpbWlsYXIsIGJ1dCBhbm5vdGF0ZWQgdmVyc2lvbjogaHR0cDovL2l4LmlvLzFVYjYKPiA+IENo ZWNrIGZ1bmN0aW9uIGJzcF9oZG1pX2F1ZGlvKCkuCj4gPgo+ID4gVW5sZXNzIHRoZXJlIGlzIGEg c3BlY2lhbCByZWFzb24sIHlvdSBjYW4ganVzdCByZW1vdmUgdGhhdCBjaGVjay4KPgo+IEFncmVl LCB0aGlzIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkLCBBVURTQ0hOTFM3IHVzZWQgdG8gYmUg Y29uZmlndXJlZCBpbiBteSBvbGQKPiBtdWx0aS1jaGFubmVsIHBhdGNoZXMgdGhhdCBoYXZlIHNl ZW4gbG90IG9mIHRlc3Rpbmcgb24gQW1sb2dpYywgQWxsd2lubmVyIGFuZCBSb2NrY2hpcCBTb0Nz Lgo+CgpBcyBzdGF0ZWQgaW4gcHJldmlvdXMgbWFpbCwgSSB3aWxsIG1vZGlmeSB0aGUgY2hlY2sg Zm9yIHZlcnNpb24gPj0xLjQKc2luY2UgSSBrbm93IHRoYXQgMS4zIGRvZXMgbm90IGhhdmUgc3Vj aCByZWdpc3RlciwgYXQgbGVhc3Qgb24gaU1YNi4KCj4gPgo+ID4gQmVzdCByZWdhcmRzLAo+ID4g SmVybmVqCj4gPgo+ID4+IE5laWwKPiA+Pgo+ID4+Pj4gKwo+ID4+Pj4gKyAgc3dpdGNoIChoZG1p LT5zYW1wbGVfcmF0ZSkgewo+ID4+Pj4gKyAgY2FzZSAzMjAwMDoKPiA+Pj4+ICsgICAgICAgICAg YXVkX3NjaG5sX3NhbXBsZXJhdGUgPSBIRE1JX0ZDX0FVRFNDSE5MUzdfU01QUkFURV8zMks7Cj4g Pj4+PiArICAgICAgICAgIGJyZWFrOwo+ID4+Pj4gKyAgY2FzZSA0NDEwMDoKPiA+Pj4+ICsgICAg ICAgICAgYXVkX3NjaG5sX3NhbXBsZXJhdGUgPSBIRE1JX0ZDX0FVRFNDSE5MUzdfU01QUkFURV80 NEsxOwo+ID4+Pj4gKyAgICAgICAgICBicmVhazsKPiA+Pj4+ICsgIGNhc2UgNDgwMDA6Cj4gPj4+ PiArICAgICAgICAgIGF1ZF9zY2hubF9zYW1wbGVyYXRlID0gSERNSV9GQ19BVURTQ0hOTFM3X1NN UFJBVEVfNDhLOwo+ID4+Pj4gKyAgICAgICAgICBicmVhazsKPiA+Pj4+ICsgIGNhc2UgODgyMDA6 Cj4gPj4+PiArICAgICAgICAgIGF1ZF9zY2hubF9zYW1wbGVyYXRlID0gSERNSV9GQ19BVURTQ0hO TFM3X1NNUFJBVEVfODhLMjsKPiA+Pj4+ICsgICAgICAgICAgYnJlYWs7Cj4gPj4+PiArICBjYXNl IDk2MDAwOgo+ID4+Pj4gKyAgICAgICAgICBhdWRfc2Nobmxfc2FtcGxlcmF0ZSA9IEhETUlfRkNf QVVEU0NITkxTN19TTVBSQVRFXzk2SzsKPiA+Pj4+ICsgICAgICAgICAgYnJlYWs7Cj4gPj4+PiAr ICBjYXNlIDE3NjQwMDoKPiA+Pj4+ICsgICAgICAgICAgYXVkX3NjaG5sX3NhbXBsZXJhdGUgPSBI RE1JX0ZDX0FVRFNDSE5MUzdfU01QUkFURV8xNzZLNDsKPiA+Pj4+ICsgICAgICAgICAgYnJlYWs7 Cj4gPj4+PiArICBjYXNlIDE5MjAwMDoKPiA+Pj4+ICsgICAgICAgICAgYXVkX3NjaG5sX3NhbXBs ZXJhdGUgPSBIRE1JX0ZDX0FVRFNDSE5MUzdfU01QUkFURV8xOTJLOwo+ID4+Pj4gKyAgICAgICAg ICBicmVhazsKPiA+Pj4+ICsgIGNhc2UgNzY4MDAwOgo+ID4+Pj4gKyAgICAgICAgICBhdWRfc2No bmxfc2FtcGxlcmF0ZSA9IEhETUlfRkNfQVVEU0NITkxTN19TTVBSQVRFXzc2OEs7Cj4gPj4+PiAr ICAgICAgICAgIGJyZWFrOwo+ID4+Pj4gKyAgZGVmYXVsdDoKPiA+Pj4+ICsgICAgICAgICAgZGV2 X3dhcm4oaGRtaS0+ZGV2LCAiVW5zdXBwb3J0ZWQgYXVkaW8gc2FtcGxlIHJhdGUgKCV1KVxuIiwK PiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgaGRtaS0+c2FtcGxlX3JhdGUpOwo+ID4+Pj4gKyAg ICAgICAgICByZXR1cm47Cj4gPj4+PiArICB9Cj4gPj4+PiArCj4gPj4+PiArICAvKiBzZXQgY2hh bm5lbCBzdGF0dXMgcmVnaXN0ZXIgKi8KPiA+Pj4+ICsgIGhkbWlfbW9kYihoZG1pLCBhdWRfc2No bmxfc2FtcGxlcmF0ZSwgSERNSV9GQ19BVURTQ0hOTFM3X1NNUFJBVEVfTUFTSywKPiA+Pj4+ICsg ICAgICAgICAgICBIRE1JX0ZDX0FVRFNDSE5MUzcpOwo+ID4+Pj4gKwo+ID4+Pj4gKyAgLyoKPiA+ Pj4+ICsgICAqIFNldCBvcmlnaW5hbCBmcmVxdWVuY3kgdG8gYmUgdGhlIHNhbWUgYXMgZnJlcXVl bmN5Lgo+ID4+Pj4gKyAgICogVXNlIG9uZS1jb21wbGVtZW50IHZhbHVlIGFzIHN0YXRlZCBpbiBJ RUM2MDk1OC0zIHBhZ2UgMTMuCj4gPj4+PiArICAgKi8KPiA+Pj4+ICsgIGF1ZF9zY2hubF84ID0g KH5hdWRfc2Nobmxfc2FtcGxlcmF0ZSkgPDwKPiA+Pj4+ICsgICAgICAgICAgICAgICAgICBIRE1J X0ZDX0FVRFNDSE5MUzhfT1JJR1NBTVBGUkVRX09GRlNFVDsKPiA+Pj4+ICsKPiA+Pj4+ICsgIC8q IFRoaXMgbWVhbnMgd29yZCBsZW5ndGggaXMgMTYgYml0LiBSZWZlciB0byBJRUM2MDk1OC0zIHBh Z2UgMTIuICovCj4gPj4+PiArICBhdWRfc2NobmxfOCB8PSAyIDw8IEhETUlfRkNfQVVEU0NITkxT OF9XT1JETEVHTlRIX09GRlNFVDsKPgo+IFRoaXMgbG9va3Mgd3JvbmcsIHVzZXIgY2FuIHVzZSAx NiBhbmQgMjQgYml0IHdpZGUgYXVkaW8gc3RyZWFtcy4KPgoKVGhhbmtzIGZvciBzcG90dGluZyB0 aGlzIGlzc3VlLgpJIHdpbGwgZml4IGl0IGluIHYyIChmb2xsb3dpbmcgaG93IGh0dHA6Ly9peC5p by8xVWI2IHNldCBpdCBmb3IgMTYgYW5kIDI0IGJpdCkKCj4gPj4+PiArCj4gPj4+PiArICBoZG1p X3dyaXRlYihoZG1pLCBhdWRfc2NobmxfOCwgSERNSV9GQ19BVURTQ0hOTFM4KTsKPiA+Pj4+ICt9 Cj4gPj4+PiArCj4gPj4+Pgo+ID4+Pj4gIHN0YXRpYyB2b2lkIGhkbWlfc2V0X2Nsa19yZWdlbmVy YXRvcihzdHJ1Y3QgZHdfaGRtaSAqaGRtaSwKPiA+Pj4+Cj4gPj4+PiAgICB1bnNpZ25lZCBsb25n IHBpeGVsX2NsaywgdW5zaWduZWQgaW50IHNhbXBsZV9yYXRlKQo+ID4+Pj4KPiA+Pj4+ICB7Cj4g Pj4+Pgo+ID4+Pj4gQEAgLTYyMCw2ICs2NzcsOCBAQCBzdGF0aWMgdm9pZCBoZG1pX3NldF9jbGtf cmVnZW5lcmF0b3Ioc3RydWN0IGR3X2hkbWkKPiA+Pj4+ICpoZG1pLD4+Cj4gPj4+PiAgICBoZG1p LT5hdWRpb19jdHMgPSBjdHM7Cj4gPj4+PiAgICBoZG1pX3NldF9jdHNfbihoZG1pLCBjdHMsIGhk bWktPmF1ZGlvX2VuYWJsZSA/IG4gOiAwKTsKPiA+Pj4+ICAgIHNwaW5fdW5sb2NrX2lycSgmaGRt aS0+YXVkaW9fbG9jayk7Cj4gPj4+Pgo+ID4+Pj4gKwo+ID4+Pj4gKyAgaGRtaV9zZXRfc2Nobmwo aGRtaSk7Cj4KPiBJIHdpbGwgc3VnZ2VzdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIG9y IG1lcmdlZCB3aXRoIGR3X2hkbWlfc2V0X3NhbXBsZV9yYXRlKCkuCj4gU2ltaWxhciB0byBob3cg QVVEU0NPTkYgYW5kIEFVRElDT05GMCBpcyBjb25maWd1cmVkIGZyb20gZHdfaGRtaV9zZXRfY2hh bm5lbF9jb3VudCgpLgo+CgpJIHNlZS4gSSB0aGluayBpdCB3aWxsIG1ha2Ugc2Vuc2UgdG8gYWRk IGEgZnVuY3Rpb24Kc2V0X2NoYW5uZWxfc3RhdHVzKCkgZm9yIGR3LWhkbWktaTJzLWF1ZGlvLmMg dG8gY2FsbCwKc2luY2UgdGhpcyBmdW5jdGlvbiBpcyBtb3JlIHRoYW4ganVzdCBzZXR0aW5nIHJh dGUuCldpbGwgZml4IGluIHYyLgoKVGhhbmtzIQoKPiBSZWdhcmRzLAo+IEpvbmFzCj4KPiA+Pj4+ Cj4gPj4+PiAgfQo+ID4+Pj4KPiA+Pj4+ICBzdGF0aWMgdm9pZCBoZG1pX2luaXRfY2xrX3JlZ2Vu ZXJhdG9yKHN0cnVjdCBkd19oZG1pICpoZG1pKQo+ID4+Pj4KPiA+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuaAo+ID4+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuaCBpbmRleAo+ID4+Pj4gNjk4OGYxMmQ4 OWQ5Li42MTllYmMxYzgzNTQgMTAwNjQ0Cj4gPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL3N5bm9wc3lzL2R3LWhkbWkuaAo+ID4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9zeW5vcHN5cy9kdy1oZG1pLmgKPiA+Pj4+IEBAIC0xNTgsNiArMTU4LDE3IEBACj4gPj4+Pgo+ ID4+Pj4gICNkZWZpbmUgSERNSV9GQ19TUERERVZJQ0VJTkYgICAgICAgICAgICAgICAgICAgIDB4 MTA2Mgo+ID4+Pj4gICNkZWZpbmUgSERNSV9GQ19BVURTQ09ORiAgICAgICAgICAgICAgICAgICAg ICAgIDB4MTA2Mwo+ID4+Pj4gICNkZWZpbmUgSERNSV9GQ19BVURTU1RBVCAgICAgICAgICAgICAg ICAgICAgICAgIDB4MTA2NAo+ID4+Pj4KPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU1YgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDEwNjUKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVE U1UgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwNjYKPiA+Pj4+ICsjZGVmaW5lIEhETUlf RkNfQVVEU0NITkxTMCAgICAgICAgICAgICAgICAgICAgICAweDEwNjcKPiA+Pj4+ICsjZGVmaW5l IEhETUlfRkNfQVVEU0NITkxTMSAgICAgICAgICAgICAgICAgICAgICAweDEwNjgKPiA+Pj4+ICsj ZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTMiAgICAgICAgICAgICAgICAgICAgICAweDEwNjkKPiA+ Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTMyAgICAgICAgICAgICAgICAgICAgICAweDEw NmEKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTNCAgICAgICAgICAgICAgICAgICAg ICAweDEwNmIKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTNSAgICAgICAgICAgICAg ICAgICAgICAweDEwNmMKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTNiAgICAgICAg ICAgICAgICAgICAgICAweDEwNmQKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NITkxTNyAg ICAgICAgICAgICAgICAgICAgICAweDEwNmUKPiA+Pj4+ICsjZGVmaW5lIEhETUlfRkNfQVVEU0NI TkxTOCAgICAgICAgICAgICAgICAgICAgICAweDEwNmYKPiA+Pj4+Cj4gPj4+PiAgI2RlZmluZSBI RE1JX0ZDX0RBVEFDSDBGSUxMICAgICAgICAgICAgICAgICAgICAgMHgxMDcwCj4gPj4+PiAgI2Rl ZmluZSBIRE1JX0ZDX0RBVEFDSDFGSUxMICAgICAgICAgICAgICAgICAgICAgMHgxMDcxCj4gPj4+ PiAgI2RlZmluZSBIRE1JX0ZDX0RBVEFDSDJGSUxMICAgICAgICAgICAgICAgICAgICAgMHgxMDcy Cj4gPj4+Pgo+ID4+Pj4gQEAgLTcwNiw2ICs3MTcsMTUgQEAgZW51bSB7Cj4gPj4+Pgo+ID4+Pj4g IC8qIEhETUlfRkNfQVVEU0NITkxTNyBmaWVsZCB2YWx1ZXMgKi8KPiA+Pj4+Cj4gPj4+PiAgICBI RE1JX0ZDX0FVRFNDSE5MUzdfQUNDVVJBQ1lfT0ZGU0VUID0gNCwKPiA+Pj4+ICAgIEhETUlfRkNf QVVEU0NITkxTN19BQ0NVUkFDWV9NQVNLID0gMHgzMCwKPiA+Pj4+Cj4gPj4+PiArICBIRE1JX0ZD X0FVRFNDSE5MUzdfU01QUkFURV9NQVNLID0gMHgwZiwKPiA+Pj4+ICsgIEhETUlfRkNfQVVEU0NI TkxTN19TTVBSQVRFXzE5MksgPSAweGUsCj4gPj4+PiArICBIRE1JX0ZDX0FVRFNDSE5MUzdfU01Q UkFURV8xNzZLNCA9IDB4YywKPiA+Pj4+ICsgIEhETUlfRkNfQVVEU0NITkxTN19TTVBSQVRFXzk2 SyA9IDB4YSwKPiA+Pj4+ICsgIEhETUlfRkNfQVVEU0NITkxTN19TTVBSQVRFXzc2OEsgPSAweDks Cj4gPj4+PiArICBIRE1JX0ZDX0FVRFNDSE5MUzdfU01QUkFURV84OEsyID0gMHg4LAo+ID4+Pj4g KyAgSERNSV9GQ19BVURTQ0hOTFM3X1NNUFJBVEVfMzJLID0gMHgzLAo+ID4+Pj4gKyAgSERNSV9G Q19BVURTQ0hOTFM3X1NNUFJBVEVfNDhLID0gMHgyLAo+ID4+Pj4gKyAgSERNSV9GQ19BVURTQ0hO TFM3X1NNUFJBVEVfNDRLMSA9IDB4MCwKPiA+Pj4+Cj4gPj4+PiAgLyogSERNSV9GQ19BVURTQ0hO TFM4IGZpZWxkIHZhbHVlcyAqLwo+ID4+Pj4KPiA+Pj4+ICAgIEhETUlfRkNfQVVEU0NITkxTOF9P UklHU0FNUEZSRVFfTUFTSyA9IDB4ZjAsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==