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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id A7A93C001DB for ; Tue, 8 Aug 2023 09:07:51 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 10821832; Tue, 8 Aug 2023 11:06:59 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 10821832 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1691485669; bh=OvdF5z6WuPl1P5QAod+2PgSczL5ie2gRUQU8jlDIft0=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=mfZBCYUiJUtsCrN584XUsyH9KDvACxy10gVkuMvgpejcbtzTwoJ0rq3AEZdlYOAmI 71A1ZtvgW9rp3LTDGS5duZPwKFGB/v1QnSUvrd77NZ7OyT5A8T35TRSPgFPUTR8SSD rdFTc5XLqNqj1rs1RQOyYFDdEWlhXzvY8c3pbmYY= Received: by alsa1.perex.cz (Postfix, from userid 50401) id D2752F80538; Tue, 8 Aug 2023 11:06:30 +0200 (CEST) Received: from mailman-core.alsa-project.org (mailman-core.alsa-project.org [10.254.200.10]) by alsa1.perex.cz (Postfix) with ESMTP id 1E74CF800FE; Tue, 8 Aug 2023 11:06:30 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 82C97F80534; Tue, 8 Aug 2023 11:06:25 +0200 (CEST) Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::225]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 936C5F800FE for ; Tue, 8 Aug 2023 11:06:19 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 936C5F800FE Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key, unprotected) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256 header.s=gm1 header.b=flZfpRXq Received: by mail.gandi.net (Postfix) with ESMTPSA id 167A31C000E; Tue, 8 Aug 2023 09:06:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1691485578; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yV4jZ6QrskrDU/HVotl7NEUNo5CW4ftnk7BIqgEB1+w=; b=flZfpRXqaC4cOa0lUVXQGmj6OEssvWZubCe2w5MHqI8U2vWQwtOj0FQFAqgAJBxJ8I75XZ I0TZlmNSRmqSWR5xLTIKJ/1FDCZ4stZY0pIriPzLH17o1+eZR+fqsAFgkHhfKw1IeHA6F/ BRImFTSpS5Rv0R1y0afDagZYKTek8UGg0TZs9w8hjDyqKGA3Umv42FjNTa+dNkNUSu3Gue Tx2D6FfesdOvac81rHxEHFQ6xKJfocvJHBN0OnBZAPqs83Owy9ptNTQG7K7UjxPB67/rcA 8c/v/aUZh+TVfJDMed/1Ph30nJadiv+LXoAjitpDUEWw4zjs+hG26YAH/4HjPQ== Date: Tue, 8 Aug 2023 11:06:13 +0200 From: Herve Codina To: Christophe Leroy Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Lee Jones , Linus Walleij , Qiang Zhao , Li Yang , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shengjiu Wang , Xiubo Li , Fabio Estevam , Nicolin Chen , Randy Dunlap , "netdev@vger.kernel.org" , "linuxppc-dev@lists.ozlabs.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-gpio@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "alsa-devel@alsa-project.org" , Thomas Petazzoni Subject: Re: [PATCH v2 26/28] ASoC: codecs: Add support for the framer codec Message-ID: <20230808110613.07e222a3@bootlin.com> In-Reply-To: References: <20230726150225.483464-1-herve.codina@bootlin.com> <20230726150225.483464-27-herve.codina@bootlin.com> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: herve.codina@bootlin.com Message-ID-Hash: EVYSCQGB2PDBCWL7OE4HXASI6NDCIMAB X-Message-ID-Hash: EVYSCQGB2PDBCWL7OE4HXASI6NDCIMAB X-MailFrom: herve.codina@bootlin.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-alsa-devel.alsa-project.org-0; header-match-alsa-devel.alsa-project.org-1; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: On Tue, 8 Aug 2023 08:26:16 +0000 Christophe Leroy wrote: > Le 26/07/2023 à 17:02, Herve Codina a écrit : > > The framer codec interracts with a framer. > > It allows to use some of the framer timeslots as audio channels to > > transport audio data over the framer E1/T1/J1 lines. > > It also reports line carrier detection events through the ALSA jack > > detection feature. > > > > Signed-off-by: Herve Codina > > Reviewed-by: Christophe Leroy > > See below > > > +static int framer_dai_hw_rule_channels_by_format(struct snd_soc_dai *dai, > > + struct snd_pcm_hw_params *params, > > + unsigned int nb_ts) > > +{ > > + struct snd_interval *c = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); > > + snd_pcm_format_t format = params_format(params); > > + struct snd_interval ch = {0}; > > + > > + switch (snd_pcm_format_physical_width(format)) { > > + case 8: > > + ch.max = nb_ts; > > + break; > > + case 16: > > + ch.max = nb_ts / 2; > > + break; > > + case 32: > > + ch.max = nb_ts / 4; > > + break; > > + case 64: > > + ch.max = nb_ts / 8; > > + break; > > + default: > > + dev_err(dai->dev, "format physical width %u not supported\n", > > + snd_pcm_format_physical_width(format)); > > + return -EINVAL; > > + } > > What about > > width = snd_pcm_format_physical_width(format); > > if (width == 8 || width == 16 || width == 32 || width == 64) { > ch.max = nb_ts * 8 / width; > } else { > dev_err(dai->dev, "format physical width %u not supported\n", width); > return -EINVAL; > } > Yes, indeed. Will be changed in the next iteration. Regards, Hervé 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 lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (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 85398C001DB for ; Tue, 8 Aug 2023 09:07:19 +0000 (UTC) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256 header.s=gm1 header.b=flZfpRXq; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4RKnPy0qSkz3c3N for ; Tue, 8 Aug 2023 19:07:18 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256 header.s=gm1 header.b=flZfpRXq; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=bootlin.com (client-ip=217.70.183.197; helo=relay5-d.mail.gandi.net; envelope-from=herve.codina@bootlin.com; receiver=lists.ozlabs.org) Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4RKnNv58QSz2yst for ; Tue, 8 Aug 2023 19:06:22 +1000 (AEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id 167A31C000E; Tue, 8 Aug 2023 09:06:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1691485578; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yV4jZ6QrskrDU/HVotl7NEUNo5CW4ftnk7BIqgEB1+w=; b=flZfpRXqaC4cOa0lUVXQGmj6OEssvWZubCe2w5MHqI8U2vWQwtOj0FQFAqgAJBxJ8I75XZ I0TZlmNSRmqSWR5xLTIKJ/1FDCZ4stZY0pIriPzLH17o1+eZR+fqsAFgkHhfKw1IeHA6F/ BRImFTSpS5Rv0R1y0afDagZYKTek8UGg0TZs9w8hjDyqKGA3Umv42FjNTa+dNkNUSu3Gue Tx2D6FfesdOvac81rHxEHFQ6xKJfocvJHBN0OnBZAPqs83Owy9ptNTQG7K7UjxPB67/rcA 8c/v/aUZh+TVfJDMed/1Ph30nJadiv+LXoAjitpDUEWw4zjs+hG26YAH/4HjPQ== Date: Tue, 8 Aug 2023 11:06:13 +0200 From: Herve Codina To: Christophe Leroy Subject: Re: [PATCH v2 26/28] ASoC: codecs: Add support for the framer codec Message-ID: <20230808110613.07e222a3@bootlin.com> In-Reply-To: References: <20230726150225.483464-1-herve.codina@bootlin.com> <20230726150225.483464-27-herve.codina@bootlin.com> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: herve.codina@bootlin.com X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Lunn , "alsa-devel@alsa-project.org" , Thomas Petazzoni , Xiubo Li , Linus Walleij , Jaroslav Kysela , Eric Dumazet , Krzysztof Kozlowski , Fabio Estevam , Qiang Zhao , Shengjiu Wang , Lee Jones , Jakub Kicinski , Paolo Abeni , "devicetree@vger.kernel.org" , Conor Dooley , "linux-kernel@vger.kernel.org" , Nicolin Chen , "linux-gpio@vger.kernel.org" , Rob Herring , Takashi Iwai , "linux-arm-kernel@lists.infradead.org" , "netdev@vger.kernel.org" , Randy Dunlap , Liam Girdwood , Li Yang , Mark Brown , "linuxppc-dev@lists.ozlabs.org" , "David S. Miller" Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On Tue, 8 Aug 2023 08:26:16 +0000 Christophe Leroy wrote: > Le 26/07/2023 à 17:02, Herve Codina a écrit : > > The framer codec interracts with a framer. > > It allows to use some of the framer timeslots as audio channels to > > transport audio data over the framer E1/T1/J1 lines. > > It also reports line carrier detection events through the ALSA jack > > detection feature. > > > > Signed-off-by: Herve Codina > > Reviewed-by: Christophe Leroy > > See below > > > +static int framer_dai_hw_rule_channels_by_format(struct snd_soc_dai *dai, > > + struct snd_pcm_hw_params *params, > > + unsigned int nb_ts) > > +{ > > + struct snd_interval *c = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); > > + snd_pcm_format_t format = params_format(params); > > + struct snd_interval ch = {0}; > > + > > + switch (snd_pcm_format_physical_width(format)) { > > + case 8: > > + ch.max = nb_ts; > > + break; > > + case 16: > > + ch.max = nb_ts / 2; > > + break; > > + case 32: > > + ch.max = nb_ts / 4; > > + break; > > + case 64: > > + ch.max = nb_ts / 8; > > + break; > > + default: > > + dev_err(dai->dev, "format physical width %u not supported\n", > > + snd_pcm_format_physical_width(format)); > > + return -EINVAL; > > + } > > What about > > width = snd_pcm_format_physical_width(format); > > if (width == 8 || width == 16 || width == 32 || width == 64) { > ch.max = nb_ts * 8 / width; > } else { > dev_err(dai->dev, "format physical width %u not supported\n", width); > return -EINVAL; > } > Yes, indeed. Will be changed in the next iteration. Regards, Hervé 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 73387C001DB for ; Tue, 8 Aug 2023 09:06:49 +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:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=0RoHr0O6oA2myu3ib8RRt43CNaZxYkATLx+ZNc3kETs=; b=mMGLn4Pt5bV4xF O95Nyb/YqitfqjMAVLN/Iw2mTxaniqtS1dApInK6GljTk78homruQhb0FCjXyKZug/1JCeHv3FMB6 IZaunZACFvGk6eaOv+j3Z/a8j3BkcfmZ3823cE9ozvyMyuTKN5UerJABxbbywNf8rN4UGXC3r8/gE of9bswdHbcd51pWnrwL8KHonENjRZDY3Zz+mnSCTaCF2CBridGodol8U2DiAQRaJF1PVWVSqmwvSu Grl4iyZvmNq8dZ2ORGNdMI1R8dqK9Nr8jJUhWda+lCJTHFzrsqlgUBC1oZAPIpsA5IoJo7XStr9wy /U59fNxvDIfXci6OMiyQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qTIfZ-0026SM-2q; Tue, 08 Aug 2023 09:06:25 +0000 Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qTIfX-0026RG-20 for linux-arm-kernel@lists.infradead.org; Tue, 08 Aug 2023 09:06:25 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 167A31C000E; Tue, 8 Aug 2023 09:06:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1691485578; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yV4jZ6QrskrDU/HVotl7NEUNo5CW4ftnk7BIqgEB1+w=; b=flZfpRXqaC4cOa0lUVXQGmj6OEssvWZubCe2w5MHqI8U2vWQwtOj0FQFAqgAJBxJ8I75XZ I0TZlmNSRmqSWR5xLTIKJ/1FDCZ4stZY0pIriPzLH17o1+eZR+fqsAFgkHhfKw1IeHA6F/ BRImFTSpS5Rv0R1y0afDagZYKTek8UGg0TZs9w8hjDyqKGA3Umv42FjNTa+dNkNUSu3Gue Tx2D6FfesdOvac81rHxEHFQ6xKJfocvJHBN0OnBZAPqs83Owy9ptNTQG7K7UjxPB67/rcA 8c/v/aUZh+TVfJDMed/1Ph30nJadiv+LXoAjitpDUEWw4zjs+hG26YAH/4HjPQ== Date: Tue, 8 Aug 2023 11:06:13 +0200 From: Herve Codina To: Christophe Leroy Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Lee Jones , Linus Walleij , Qiang Zhao , Li Yang , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shengjiu Wang , Xiubo Li , Fabio Estevam , Nicolin Chen , Randy Dunlap , "netdev@vger.kernel.org" , "linuxppc-dev@lists.ozlabs.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-gpio@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "alsa-devel@alsa-project.org" , Thomas Petazzoni Subject: Re: [PATCH v2 26/28] ASoC: codecs: Add support for the framer codec Message-ID: <20230808110613.07e222a3@bootlin.com> In-Reply-To: References: <20230726150225.483464-1-herve.codina@bootlin.com> <20230726150225.483464-27-herve.codina@bootlin.com> Organization: Bootlin X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-GND-Sasl: herve.codina@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230808_020623_918034_10F1B717 X-CRM114-Status: GOOD ( 15.94 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCA4IEF1ZyAyMDIzIDA4OjI2OjE2ICswMDAwCkNocmlzdG9waGUgTGVyb3kgPGNocmlz dG9waGUubGVyb3lAY3Nncm91cC5ldT4gd3JvdGU6Cgo+IExlIDI2LzA3LzIwMjMgw6AgMTc6MDIs IEhlcnZlIENvZGluYSBhIMOpY3JpdMKgOgo+ID4gVGhlIGZyYW1lciBjb2RlYyBpbnRlcnJhY3Rz IHdpdGggYSBmcmFtZXIuCj4gPiBJdCBhbGxvd3MgdG8gdXNlIHNvbWUgb2YgdGhlIGZyYW1lciB0 aW1lc2xvdHMgYXMgYXVkaW8gY2hhbm5lbHMgdG8KPiA+IHRyYW5zcG9ydCBhdWRpbyBkYXRhIG92 ZXIgdGhlIGZyYW1lciBFMS9UMS9KMSBsaW5lcy4KPiA+IEl0IGFsc28gcmVwb3J0cyBsaW5lIGNh cnJpZXIgZGV0ZWN0aW9uIGV2ZW50cyB0aHJvdWdoIHRoZSBBTFNBIGphY2sKPiA+IGRldGVjdGlv biBmZWF0dXJlLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBIZXJ2ZSBDb2RpbmEgPGhlcnZlLmNv ZGluYUBib290bGluLmNvbT4gIAo+IAo+IFJldmlld2VkLWJ5OiBDaHJpc3RvcGhlIExlcm95IDxj aHJpc3RvcGhlLmxlcm95QGNzZ3JvdXAuZXU+Cj4gCj4gU2VlIGJlbG93Cj4gCj4gPiArc3RhdGlj IGludCBmcmFtZXJfZGFpX2h3X3J1bGVfY2hhbm5lbHNfYnlfZm9ybWF0KHN0cnVjdCBzbmRfc29j X2RhaSAqZGFpLAo+ID4gKwkJCQkJCSBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywK PiA+ICsJCQkJCQkgdW5zaWduZWQgaW50IG5iX3RzKQo+ID4gK3sKPiA+ICsJc3RydWN0IHNuZF9p bnRlcnZhbCAqYyA9IGh3X3BhcmFtX2ludGVydmFsKHBhcmFtcywgU05EUlZfUENNX0hXX1BBUkFN X0NIQU5ORUxTKTsKPiA+ICsJc25kX3BjbV9mb3JtYXRfdCBmb3JtYXQgPSBwYXJhbXNfZm9ybWF0 KHBhcmFtcyk7Cj4gPiArCXN0cnVjdCBzbmRfaW50ZXJ2YWwgY2ggPSB7MH07Cj4gPiArCj4gPiAr CXN3aXRjaCAoc25kX3BjbV9mb3JtYXRfcGh5c2ljYWxfd2lkdGgoZm9ybWF0KSkgewo+ID4gKwlj YXNlIDg6Cj4gPiArCQljaC5tYXggPSBuYl90czsKPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNlIDE2 Ogo+ID4gKwkJY2gubWF4ID0gbmJfdHMgLyAyOwo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2UgMzI6 Cj4gPiArCQljaC5tYXggPSBuYl90cyAvIDQ7Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSA2NDoK PiA+ICsJCWNoLm1heCA9IG5iX3RzIC8gODsKPiA+ICsJCWJyZWFrOwo+ID4gKwlkZWZhdWx0Ogo+ ID4gKwkJZGV2X2VycihkYWktPmRldiwgImZvcm1hdCBwaHlzaWNhbCB3aWR0aCAldSBub3Qgc3Vw cG9ydGVkXG4iLAo+ID4gKwkJCXNuZF9wY21fZm9ybWF0X3BoeXNpY2FsX3dpZHRoKGZvcm1hdCkp Owo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCX0gIAo+IAo+IFdoYXQgYWJvdXQKPiAKPiAJ d2lkdGggPSBzbmRfcGNtX2Zvcm1hdF9waHlzaWNhbF93aWR0aChmb3JtYXQpOwo+IAo+IAlpZiAo d2lkdGggPT0gOCB8fCB3aWR0aCA9PSAxNiB8fCB3aWR0aCA9PSAzMiB8fCB3aWR0aCA9PSA2NCkg ewo+IAkJY2gubWF4ID0gbmJfdHMgKiA4IC8gd2lkdGg7Cj4gCX0gZWxzZSB7Cj4gCQlkZXZfZXJy KGRhaS0+ZGV2LCAiZm9ybWF0IHBoeXNpY2FsIHdpZHRoICV1IG5vdCBzdXBwb3J0ZWRcbiIsIHdp ZHRoKTsKPiAJCXJldHVybiAtRUlOVkFMOwo+IAl9Cj4gCgpZZXMsIGluZGVlZC4KV2lsbCBiZSBj aGFuZ2VkIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KClJlZ2FyZHMsCkhlcnbDqQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=