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=-9.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,UPPERCASE_50_75, USER_AGENT_GIT 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 5923DC3F2CE for ; Fri, 6 Mar 2020 03:34:21 +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 DDD8920848 for ; Fri, 6 Mar 2020 03:34:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="FILQRouP"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Apu6Zm91" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DDD8920848 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=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:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+zUYRdEswWofmvnTS479TIm+JbG/Rbee8oIkGMlX8Ps=; b=FILQRouPhLwodg Dx/DscjqLfNv16bCTE1OltXiiXGc0eTVIMbgJ5AIA/U+yYHAgp1QIhR5l+9fw2bCnEFJvDHedcdqW 0BSMM5UMQ+fJ2h9V0osH7NAkPzpmd1/QhuRorZGvrjgeq9JFS9d2hxMYkXfL34FoPbr6ipqTeZiRo rDODO3peciL3ZGZbDh+O6VFkTTztjnF7+wmZl6+sRKZHS3ThbZGNzkLkra82fJhiE1YaR5fP2iXNG Qu13F/EigmKK8HZQdL8QMnBzVIdEWj8k/RQoHJ9Y6kyKFpdQJYKaSCau3IYcec5uftlL34ta0J/+B qQZSFEiM1fVvjSzWZB+g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jA3kW-0000dZ-4s; Fri, 06 Mar 2020 03:34:08 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jA3kQ-0000b0-H0 for linux-mediatek@lists.infradead.org; Fri, 06 Mar 2020 03:34:06 +0000 X-UUID: d9d3ae3f1080462d908b33090335f1db-20200305 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=hLc2+xjINbO8wojgBZ2ySqlH9CLWkV4QmBkz3m9O/tY=; b=Apu6Zm91xe+N4kqZtLtsZTWW2s3/dyylk9lOTf0ehgYlGz7rMFrMtRvpNbnAG9IVb7klAYIzKo0cUXVnSrcb1+xZNsKhTl0c8sLaaypNW437VXD+di7Vpv2pNfba4Duf+viq0d2RIazRXKz57gJjlx4wlS7459zqOcIv4gdhNbE=; X-UUID: d9d3ae3f1080462d908b33090335f1db-20200305 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1544587307; Thu, 05 Mar 2020 19:33:59 -0800 Received: from MTKMBS02N2.mediatek.inc (172.21.101.101) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 5 Mar 2020 19:34:18 -0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 6 Mar 2020 11:31:12 +0800 Received: from mtksdaap41.mediatek.inc (172.21.77.4) by mtkcas09.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Fri, 6 Mar 2020 11:33:55 +0800 From: Eason Yen To: Matthias Brugger , Mark Brown Subject: [PATCH 2/2] ASoC: codec: mediatek: add mt6359 codec driver Date: Fri, 6 Mar 2020 11:33:42 +0800 Message-ID: <1583465622-16628-3-git-send-email-eason.yen@mediatek.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1583465622-16628-1-git-send-email-eason.yen@mediatek.com> References: <1583465622-16628-1-git-send-email-eason.yen@mediatek.com> MIME-Version: 1.0 X-TM-SNTS-SMTP: 29BC24707111F40CD0C70860686FB26D24EEDB8961775097A156B4DCEF7C36E62000:8 X-MTK: N X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, wsd_upstream@mediatek.com, linux-kernel@vger.kernel.org, jiaxin.yu@mediatek.com, linux-mediatek@lists.infradead.org, eason.yen@mediatek.com Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Add mt6359 codec driver Signed-off-by: Eason Yen --- sound/soc/codecs/Kconfig | 9 + sound/soc/codecs/Makefile | 2 + sound/soc/codecs/mt6359.c | 4217 +++++++++++++++++++++++++++++++++++++++++++++ sound/soc/codecs/mt6359.h | 3212 ++++++++++++++++++++++++++++++++++ 4 files changed, 7440 insertions(+) create mode 100644 sound/soc/codecs/mt6359.c create mode 100644 sound/soc/codecs/mt6359.h diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index 6aee70e..6d71267 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -125,6 +125,7 @@ config SND_SOC_ALL_CODECS imply SND_SOC_ML26124 imply SND_SOC_MT6351 imply SND_SOC_MT6358 + imply SND_SOC_MT6359 imply SND_SOC_MT6660 imply SND_SOC_NAU8540 imply SND_SOC_NAU8810 @@ -1681,6 +1682,14 @@ config SND_SOC_MT6358 Enable support for the platform which uses MT6358 as external codec device. +config SND_SOC_MT6359 + tristate "MediaTek MT6359 Codec driver" + help + MediaTek MT6359 is a codec which contain + three ADC for uplink path(MICs), and + three DAC for downlink path(handset, + headset, lineout). + config SND_SOC_MT6660 tristate "Mediatek MT6660 Speaker Amplifier" depends on I2C diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile index 03533157..0c7f84e 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile @@ -123,6 +123,7 @@ snd-soc-msm8916-analog-objs := msm8916-wcd-analog.o snd-soc-msm8916-digital-objs := msm8916-wcd-digital.o snd-soc-mt6351-objs := mt6351.o snd-soc-mt6358-objs := mt6358.o +snd-soc-mt6359-objs := mt6359.o snd-soc-mt6660-objs := mt6660.o snd-soc-nau8540-objs := nau8540.o snd-soc-nau8810-objs := nau8810.o @@ -423,6 +424,7 @@ obj-$(CONFIG_SND_SOC_MSM8916_WCD_ANALOG) +=snd-soc-msm8916-analog.o obj-$(CONFIG_SND_SOC_MSM8916_WCD_DIGITAL) +=snd-soc-msm8916-digital.o obj-$(CONFIG_SND_SOC_MT6351) += snd-soc-mt6351.o obj-$(CONFIG_SND_SOC_MT6358) += snd-soc-mt6358.o +obj-$(CONFIG_SND_SOC_MT6359) += snd-soc-mt6359.o obj-$(CONFIG_SND_SOC_MT6660) += snd-soc-mt6660.o obj-$(CONFIG_SND_SOC_NAU8540) += snd-soc-nau8540.o obj-$(CONFIG_SND_SOC_NAU8810) += snd-soc-nau8810.o diff --git a/sound/soc/codecs/mt6359.c b/sound/soc/codecs/mt6359.c new file mode 100644 index 0000000..383efbf --- /dev/null +++ b/sound/soc/codecs/mt6359.c @@ -0,0 +1,4217 @@ +// SPDX-License-Identifier: GPL-2.0 +// +// mt6359.c -- mt6359 ALSA SoC audio codec driver +// +// Copyright (c) 2018 MediaTek Inc. +// Author: KaiChieh Chuang +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "mt6359.h" + +enum { + MT6359_AIF_1 = 0, /* dl: hp, rcv, hp+lo */ + MT6359_AIF_2, /* dl: lo only */ + MT6359_AIF_VOW, + MT6359_AIF_NUM, +}; + +enum { + AUDIO_ANALOG_VOLUME_HSOUTL, + AUDIO_ANALOG_VOLUME_HSOUTR, + AUDIO_ANALOG_VOLUME_HPOUTL, + AUDIO_ANALOG_VOLUME_HPOUTR, + AUDIO_ANALOG_VOLUME_LINEOUTL, + AUDIO_ANALOG_VOLUME_LINEOUTR, + AUDIO_ANALOG_VOLUME_MICAMP1, + AUDIO_ANALOG_VOLUME_MICAMP2, + AUDIO_ANALOG_VOLUME_MICAMP3, + AUDIO_ANALOG_VOLUME_TYPE_MAX +}; + +enum { + MUX_MIC_TYPE_0, /* ain0, micbias 0 */ + MUX_MIC_TYPE_1, /* ain1, micbias 1 */ + MUX_MIC_TYPE_2, /* ain2/3, micbias 2 */ + MUX_PGA_L, + MUX_PGA_R, + MUX_PGA_3, + MUX_HP_L, + MUX_HP_R, + MUX_NUM, +}; + +enum { + DEVICE_HP, + DEVICE_LO, + DEVICE_RCV, + DEVICE_MIC1, + DEVICE_MIC2, + DEVICE_NUM +}; + +enum { + HP_GAIN_CTL_ZCD = 0, + HP_GAIN_CTL_NLE, + HP_GAIN_CTL_NUM, +}; + +/* Supply widget subseq */ +enum { + /* common */ + SUPPLY_SEQ_CLK_BUF, + SUPPLY_SEQ_LDO_VAUD18, + SUPPLY_SEQ_AUD_GLB, + SUPPLY_SEQ_AUD_GLB_VOW, + SUPPLY_SEQ_DL_GPIO, + SUPPLY_SEQ_UL_GPIO, + SUPPLY_SEQ_HP_PULL_DOWN, + SUPPLY_SEQ_CLKSQ, + SUPPLY_SEQ_ADC_CLKGEN, + SUPPLY_SEQ_VOW_AUD_LPW, + SUPPLY_SEQ_AUD_VOW, + SUPPLY_SEQ_VOW_CLK, + SUPPLY_SEQ_VOW_LDO, + SUPPLY_SEQ_TOP_CK, + SUPPLY_SEQ_TOP_CK_LAST, + SUPPLY_SEQ_DCC_CLK, + SUPPLY_SEQ_MIC_BIAS, + SUPPLY_SEQ_DMIC, + SUPPLY_SEQ_VOW_DIG_CFG, + SUPPLY_SEQ_VOW_PERIODIC_CFG, + SUPPLY_SEQ_AUD_TOP, + SUPPLY_SEQ_AUD_TOP_LAST, + SUPPLY_SEQ_DL_SDM_FIFO_CLK, + SUPPLY_SEQ_DL_SDM, + SUPPLY_SEQ_DL_NCP, + SUPPLY_SEQ_AFE, + /* playback */ + SUPPLY_SEQ_DL_SRC, + SUPPLY_SEQ_DL_ESD_RESIST, + SUPPLY_SEQ_HP_DAMPING_OFF_RESET_CMFB, + SUPPLY_SEQ_HP_MUTE, + SUPPLY_SEQ_DL_LDO_REMOTE_SENSE, + SUPPLY_SEQ_DL_LDO, + SUPPLY_SEQ_DL_NV, + SUPPLY_SEQ_HP_ANA_TRIM, + SUPPLY_SEQ_DL_IBIST, + /* capture */ + SUPPLY_SEQ_UL_PGA, + SUPPLY_SEQ_UL_ADC, + SUPPLY_SEQ_UL_MTKAIF, + SUPPLY_SEQ_UL_SRC_DMIC, + SUPPLY_SEQ_UL_SRC, +}; + +enum { + CH_L = 0, + CH_R, + NUM_CH, +}; + +/* dl bias */ +#define DRBIAS_MASK 0x7 +#define DRBIAS_HP_SFT (RG_AUDBIASADJ_0_VAUDP32_SFT + 0) +#define DRBIAS_HP_MASK_SFT (DRBIAS_MASK << DRBIAS_HP_SFT) +#define DRBIAS_HS_SFT (RG_AUDBIASADJ_0_VAUDP32_SFT + 3) +#define DRBIAS_HS_MASK_SFT (DRBIAS_MASK << DRBIAS_HS_SFT) +#define DRBIAS_LO_SFT (RG_AUDBIASADJ_0_VAUDP32_SFT + 6) +#define DRBIAS_LO_MASK_SFT (DRBIAS_MASK << DRBIAS_LO_SFT) + +enum { + DRBIAS_4UA = 0, + DRBIAS_5UA, + DRBIAS_6UA, + DRBIAS_7UA, + DRBIAS_8UA, + DRBIAS_9UA, + DRBIAS_10UA, + DRBIAS_11UA, +}; + +#define IBIAS_MASK 0x3 +#define IBIAS_HP_SFT (RG_AUDBIASADJ_1_VAUDP32_SFT + 0) +#define IBIAS_HP_MASK_SFT (IBIAS_MASK << IBIAS_HP_SFT) +#define IBIAS_HS_SFT (RG_AUDBIASADJ_1_VAUDP32_SFT + 2) +#define IBIAS_HS_MASK_SFT (IBIAS_MASK << IBIAS_HS_SFT) +#define IBIAS_LO_SFT (RG_AUDBIASADJ_1_VAUDP32_SFT + 4) +#define IBIAS_LO_MASK_SFT (IBIAS_MASK << IBIAS_LO_SFT) +#define IBIAS_ZCD_SFT (RG_AUDBIASADJ_1_VAUDP32_SFT + 6) +#define IBIAS_ZCD_MASK_SFT (IBIAS_MASK << IBIAS_ZCD_SFT) + +enum { + IBIAS_4UA = 0, + IBIAS_5UA, + IBIAS_6UA, + IBIAS_7UA, +}; + +enum { + IBIAS_ZCD_3UA = 0, + IBIAS_ZCD_4UA, + IBIAS_ZCD_5UA, + IBIAS_ZCD_6UA, +}; + +enum { + MIC_BIAS_1P7 = 0, + MIC_BIAS_1P8, + MIC_BIAS_1P9, + MIC_BIAS_2P0, + MIC_BIAS_2P1, + MIC_BIAS_2P5, + MIC_BIAS_2P6, + MIC_BIAS_2P7, +}; + +struct mt6359_vow_periodic_on_off_data { + unsigned long long pga_on; + unsigned long long precg_on; + unsigned long long adc_on; + unsigned long long micbias0_on; + unsigned long long micbias1_on; + unsigned long long dcxo_on; + unsigned long long audglb_on; + unsigned long long vow_on; + unsigned long long pga_off; + unsigned long long precg_off; + unsigned long long adc_off; + unsigned long long micbias0_off; + unsigned long long micbias1_off; + unsigned long long dcxo_off; + unsigned long long audglb_off; + unsigned long long vow_off; +}; + +struct mt6359_priv { + struct device *dev; + struct regmap *regmap; + unsigned int dl_rate[MT6359_AIF_NUM]; + unsigned int ul_rate[MT6359_AIF_NUM]; + int ana_gain[AUDIO_ANALOG_VOLUME_TYPE_MAX]; + unsigned int mux_select[MUX_NUM]; + int dev_counter[DEVICE_NUM]; + int hp_gain_ctl; + int hp_hifi_mode; + int mtkaif_protocol; + struct regulator *avdd_reg; + + /* vow control */ + int vow_enable; + int reg_afe_vow_vad_cfg0; + int reg_afe_vow_vad_cfg1; + int reg_afe_vow_vad_cfg2; + int reg_afe_vow_vad_cfg3; + int reg_afe_vow_vad_cfg4; + int reg_afe_vow_vad_cfg5; + int reg_afe_vow_periodic; + unsigned int vow_channel; + struct mt6359_vow_periodic_on_off_data vow_periodic_param; +}; + +/* static function declaration */ +int mt6359_set_mtkaif_protocol(struct snd_soc_component *cmpnt, + int mtkaif_protocol) +{ + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + priv->mtkaif_protocol = mtkaif_protocol; + return 0; +} +EXPORT_SYMBOL_GPL(mt6359_set_mtkaif_protocol); + +static void playback_gpio_set(struct mt6359_priv *priv) +{ + /* set gpio mosi mode, clk / data mosi */ + regmap_write(priv->regmap, MT6359_GPIO_MODE2_CLR, 0x0ffe); + regmap_write(priv->regmap, MT6359_GPIO_MODE2_SET, 0x0249); + regmap_write(priv->regmap, MT6359_GPIO_MODE2, 0x0249); + + /* sync mosi */ + regmap_write(priv->regmap, MT6359_GPIO_MODE3_CLR, 0x6); + regmap_write(priv->regmap, MT6359_GPIO_MODE3_SET, 0x1); + regmap_update_bits(priv->regmap, MT6359_GPIO_MODE3, + 0x7, 0x1); +} + +static void playback_gpio_reset(struct mt6359_priv *priv) +{ + /* set pad_aud_*_mosi to GPIO mode and dir input + * reason: + * pad_aud_dat_mosi*, because the pin is used as boot strap + * don't clean clk/sync, for mtkaif protocol 2 + */ + regmap_write(priv->regmap, MT6359_GPIO_MODE2_CLR, 0x0ff8); + regmap_update_bits(priv->regmap, MT6359_GPIO_MODE2, + 0x0ff8, 0x0000); + regmap_update_bits(priv->regmap, MT6359_GPIO_DIR0, + 0x7 << 9, 0x0); +} + +static void capture_gpio_set(struct mt6359_priv *priv) +{ + /* set gpio miso mode */ + regmap_write(priv->regmap, MT6359_GPIO_MODE3_CLR, 0x0e00); + regmap_write(priv->regmap, MT6359_GPIO_MODE3_SET, 0x0200); + regmap_update_bits(priv->regmap, MT6359_GPIO_MODE3, + 0x0e00, 0x0200); + + regmap_write(priv->regmap, MT6359_GPIO_MODE4_CLR, 0x003f); + regmap_write(priv->regmap, MT6359_GPIO_MODE4_SET, 0x0009); + regmap_update_bits(priv->regmap, MT6359_GPIO_MODE4, + 0x03f, 0x0009); +} + +static void capture_gpio_reset(struct mt6359_priv *priv) +{ + /* set pad_aud_*_miso to GPIO mode and dir input + * reason: + * pad_aud_clk_miso, because when playback only the miso_clk + * will also have 26m, so will have power leak + * pad_aud_dat_miso*, because the pin is used as boot strap + */ + regmap_write(priv->regmap, MT6359_GPIO_MODE3_CLR, 0x0e00); + regmap_update_bits(priv->regmap, MT6359_GPIO_MODE3, + 0x0e00, 0x0000); + + regmap_write(priv->regmap, MT6359_GPIO_MODE4_CLR, 0x003f); + regmap_update_bits(priv->regmap, MT6359_GPIO_MODE4, + 0x003f, 0x0000); + + regmap_update_bits(priv->regmap, MT6359_GPIO_DIR0, + 0x7 << 13, 0x0); + regmap_update_bits(priv->regmap, MT6359_GPIO_DIR1, + 0x3 << 0, 0x0); +} + +static void vow_gpio_set(struct mt6359_priv *priv) +{ + /* vow gpio set (data) */ + regmap_write(priv->regmap, MT6359_GPIO_MODE3_CLR, 0x0e00); + regmap_write(priv->regmap, MT6359_GPIO_MODE3_SET, 0x0800); + regmap_update_bits(priv->regmap, MT6359_GPIO_MODE3, + 0x0e00, 0x0800); + /* vow gpio set (clock) */ + regmap_write(priv->regmap, MT6359_GPIO_MODE4_CLR, 0x0007); + regmap_write(priv->regmap, MT6359_GPIO_MODE4_SET, 0x0004); + regmap_update_bits(priv->regmap, MT6359_GPIO_MODE4, + 0x0007, 0x0004); +} + +static void vow_gpio_reset(struct mt6359_priv *priv) +{ + /* set pad_aud_*_miso to GPIO mode and dir input + * reason: + * pad_aud_clk_miso, because when playback only the miso_clk + * will also have 26m, so will have power leak + * pad_aud_dat_miso*, because the pin is used as boot strap + */ + /* vow gpio clear (data) */ + regmap_write(priv->regmap, MT6359_GPIO_MODE3_CLR, 0x0e00); + regmap_update_bits(priv->regmap, MT6359_GPIO_MODE3, + 0x0e00, 0x0000); + /* vow gpio clear (clock) */ + regmap_write(priv->regmap, MT6359_GPIO_MODE4_CLR, 0x0007); + regmap_update_bits(priv->regmap, MT6359_GPIO_MODE4, + 0x0007, 0x0000); + regmap_update_bits(priv->regmap, MT6359_GPIO_DIR0, + 0x1 << 15, 0x0); + regmap_update_bits(priv->regmap, MT6359_GPIO_DIR1, + 0x1 << 0, 0x0); +} + +/* use only when not govern by DAPM */ +static int mt6359_set_dcxo(struct mt6359_priv *priv, bool enable) +{ + regmap_update_bits(priv->regmap, MT6359_DCXO_CW12, + 0x1 << RG_XO_AUDIO_EN_M_SFT, + (enable ? 1 : 0) << RG_XO_AUDIO_EN_M_SFT); + return 0; +} + +/* use only when not govern by DAPM */ +static int mt6359_set_clksq(struct mt6359_priv *priv, bool enable) +{ + /* audio clk source from internal dcxo */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON23, + RG_CLKSQ_IN_SEL_TEST_MASK_SFT, + 0x0); + + /* Enable/disable CLKSQ 26MHz */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON23, + RG_CLKSQ_EN_MASK_SFT, + (enable ? 1 : 0) << RG_CLKSQ_EN_SFT); + return 0; +} + +/* use only when not govern by DAPM */ +static int mt6359_set_aud_global_bias(struct mt6359_priv *priv, bool enable) +{ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON13, + RG_AUDGLB_PWRDN_VA32_MASK_SFT, + (enable ? 0 : 1) << RG_AUDGLB_PWRDN_VA32_SFT); + return 0; +} + +/* use only when not govern by DAPM */ +static int mt6359_set_topck(struct mt6359_priv *priv, bool enable) +{ + regmap_update_bits(priv->regmap, MT6359_AUD_TOP_CKPDN_CON0, + 0x0066, enable ? 0x0 : 0x66); + return 0; +} + +static int mt6359_set_decoder_clk(struct mt6359_priv *priv, bool enable) +{ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON13, + RG_RSTB_DECODER_VA32_MASK_SFT, + (enable ? 1 : 0) << RG_RSTB_DECODER_VA32_SFT); + return 0; +} + +static int mt6359_mtkaif_tx_enable(struct mt6359_priv *priv) +{ + switch (priv->mtkaif_protocol) { + case MT6359_MTKAIF_PROTOCOL_2_CLK_P2: + /* MTKAIF TX format setting */ + regmap_update_bits(priv->regmap, + MT6359_AFE_ADDA_MTKAIF_CFG0, + 0xffff, 0x0210); + /* enable aud_pad TX fifos */ + regmap_update_bits(priv->regmap, + MT6359_AFE_AUD_PAD_TOP, + 0xff00, 0x3800); + regmap_update_bits(priv->regmap, + MT6359_AFE_AUD_PAD_TOP, + 0xff00, 0x3900); + break; + case MT6359_MTKAIF_PROTOCOL_2: + /* MTKAIF TX format setting */ + regmap_update_bits(priv->regmap, + MT6359_AFE_ADDA_MTKAIF_CFG0, + 0xffff, 0x0210); + /* enable aud_pad TX fifos */ + regmap_update_bits(priv->regmap, + MT6359_AFE_AUD_PAD_TOP, + 0xff00, 0x3100); + break; + case MT6359_MTKAIF_PROTOCOL_1: + default: + /* MTKAIF TX format setting */ + regmap_update_bits(priv->regmap, + MT6359_AFE_ADDA_MTKAIF_CFG0, + 0xffff, 0x0000); + /* enable aud_pad TX fifos */ + regmap_update_bits(priv->regmap, + MT6359_AFE_AUD_PAD_TOP, + 0xff00, 0x3100); + break; + } + return 0; +} + +static int mt6359_mtkaif_tx_disable(struct mt6359_priv *priv) +{ + /* disable aud_pad TX fifos */ + regmap_update_bits(priv->regmap, MT6359_AFE_AUD_PAD_TOP, + 0xff00, 0x3000); + return 0; +} + +int mt6359_mtkaif_calibration_enable(struct snd_soc_component *cmpnt) +{ + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + playback_gpio_set(priv); + capture_gpio_set(priv); + mt6359_mtkaif_tx_enable(priv); + + mt6359_set_dcxo(priv, true); + mt6359_set_aud_global_bias(priv, true); + mt6359_set_clksq(priv, true); + mt6359_set_topck(priv, true); + + /* set dat_miso_loopback on */ + regmap_update_bits(priv->regmap, MT6359_AUDIO_DIG_CFG, + RG_AUD_PAD_TOP_DAT_MISO2_LOOPBACK_MASK_SFT, + 1 << RG_AUD_PAD_TOP_DAT_MISO2_LOOPBACK_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDIO_DIG_CFG, + RG_AUD_PAD_TOP_DAT_MISO_LOOPBACK_MASK_SFT, + 1 << RG_AUD_PAD_TOP_DAT_MISO_LOOPBACK_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDIO_DIG_CFG1, + RG_AUD_PAD_TOP_DAT_MISO3_LOOPBACK_MASK_SFT, + 1 << RG_AUD_PAD_TOP_DAT_MISO3_LOOPBACK_SFT); + return 0; +} +EXPORT_SYMBOL_GPL(mt6359_mtkaif_calibration_enable); + +int mt6359_mtkaif_calibration_disable(struct snd_soc_component *cmpnt) +{ + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + /* set dat_miso_loopback off */ + regmap_update_bits(priv->regmap, MT6359_AUDIO_DIG_CFG, + RG_AUD_PAD_TOP_DAT_MISO2_LOOPBACK_MASK_SFT, + 0 << RG_AUD_PAD_TOP_DAT_MISO2_LOOPBACK_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDIO_DIG_CFG, + RG_AUD_PAD_TOP_DAT_MISO_LOOPBACK_MASK_SFT, + 0 << RG_AUD_PAD_TOP_DAT_MISO_LOOPBACK_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDIO_DIG_CFG1, + RG_AUD_PAD_TOP_DAT_MISO3_LOOPBACK_MASK_SFT, + 0 << RG_AUD_PAD_TOP_DAT_MISO3_LOOPBACK_SFT); + + mt6359_set_topck(priv, false); + mt6359_set_clksq(priv, false); + mt6359_set_aud_global_bias(priv, false); + mt6359_set_dcxo(priv, false); + + mt6359_mtkaif_tx_disable(priv); + playback_gpio_reset(priv); + capture_gpio_reset(priv); + return 0; +} +EXPORT_SYMBOL_GPL(mt6359_mtkaif_calibration_disable); + +int mt6359_set_mtkaif_calibration_phase(struct snd_soc_component *cmpnt, + int phase_1, int phase_2, int phase_3) +{ + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + regmap_update_bits(priv->regmap, MT6359_AUDIO_DIG_CFG, + RG_AUD_PAD_TOP_PHASE_MODE_MASK_SFT, + phase_1 << RG_AUD_PAD_TOP_PHASE_MODE_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDIO_DIG_CFG, + RG_AUD_PAD_TOP_PHASE_MODE2_MASK_SFT, + phase_2 << RG_AUD_PAD_TOP_PHASE_MODE2_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDIO_DIG_CFG1, + RG_AUD_PAD_TOP_PHASE_MODE3_MASK_SFT, + phase_3 << RG_AUD_PAD_TOP_PHASE_MODE3_SFT); + return 0; +} +EXPORT_SYMBOL_GPL(mt6359_set_mtkaif_calibration_phase); + +/* dl pga gain */ +enum { + DL_GAIN_8DB = 0, + DL_GAIN_0DB = 8, + DL_GAIN_N_1DB = 9, + DL_GAIN_N_10DB = 18, + DL_GAIN_N_22DB = 30, + DL_GAIN_N_40DB = 0x1f, +}; + +#define DL_GAIN_N_10DB_REG (DL_GAIN_N_10DB << 7 | DL_GAIN_N_10DB) +#define DL_GAIN_N_22DB_REG (DL_GAIN_N_22DB << 7 | DL_GAIN_N_22DB) +#define DL_GAIN_N_40DB_REG (DL_GAIN_N_40DB << 7 | DL_GAIN_N_40DB) +#define DL_GAIN_REG_MASK 0x0f9f + +/* reg idx for -40dB*/ +#define PGA_MINUS_40_DB_REG_VAL 0x1f +#define HP_PGA_MINUS_40_DB_REG_VAL 0x3f +static const char *const dl_pga_gain[] = { + "8Db", "7Db", "6Db", "5Db", "4Db", + "3Db", "2Db", "1Db", "0Db", "-1Db", + "-2Db", "-3Db", "-4Db", "-5Db", "-6Db", + "-7Db", "-8Db", "-9Db", "-10Db", "-40Db" +}; + +static const char *const hp_dl_pga_gain[] = { + "8Db", "7Db", "6Db", "5Db", "4Db", + "3Db", "2Db", "1Db", "0Db", "-1Db", + "-2Db", "-3Db", "-4Db", "-5Db", "-6Db", + "-7Db", "-8Db", "-9Db", "-10Db", "-11Db", + "-12Db", "-13Db", "-14Db", "-15Db", "-16Db", + "-17Db", "-18Db", "-19Db", "-20Db", "-21Db", + "-22Db", "-40Db" +}; + +static void zcd_disable(struct mt6359_priv *priv) +{ + regmap_write(priv->regmap, MT6359_ZCD_CON0, 0x0000); +} + +static void hp_main_output_ramp(struct mt6359_priv *priv, bool up) +{ + int i = 0, stage = 0; + int target = 7; + + /* Enable/Reduce HPL/R main output stage step by step */ + for (i = 0; i <= target; i++) { + stage = up ? i : target - i; + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON1, + RG_HPLOUTSTGCTRL_VAUDP32_MASK_SFT, + stage << RG_HPLOUTSTGCTRL_VAUDP32_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON1, + RG_HPROUTSTGCTRL_VAUDP32_MASK_SFT, + stage << RG_HPROUTSTGCTRL_VAUDP32_SFT); + usleep_range(600, 650); + } +} + +static void hp_aux_feedback_loop_gain_ramp(struct mt6359_priv *priv, bool up) +{ + int i = 0, stage = 0; + + /* Reduce HP aux feedback loop gain step by step */ + for (i = 0; i <= 0xf; i++) { + stage = up ? i : 0xf - i; + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON9, + 0xf << 12, stage << 12); + usleep_range(600, 650); + } +} + +static void hp_in_pair_current(struct mt6359_priv *priv, bool increase) +{ + int i = 0, stage = 0; + int target = 0x3; + + /* Set input diff pair bias select (Hi-Fi mode) */ + if (priv->hp_hifi_mode) { + /* Reduce HP aux feedback loop gain step by step */ + for (i = 0; i <= target; i++) { + stage = increase ? i : target - i; + regmap_update_bits(priv->regmap, + MT6359_AUDDEC_ANA_CON10, + 0x3 << 3, stage << 3); + usleep_range(100, 150); + } + } +} + +static void hp_pull_down(struct mt6359_priv *priv, bool enable) +{ + int i; + + if (enable) { + for (i = 0x0; i <= 0x7; i++) { + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON2, + RG_HPPSHORT2VCM_VAUDP32_MASK_SFT, + i << RG_HPPSHORT2VCM_VAUDP32_SFT); + usleep_range(100, 150); + } + } else { + for (i = 0x7; i >= 0x0; i--) { + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON2, + RG_HPPSHORT2VCM_VAUDP32_MASK_SFT, + i << RG_HPPSHORT2VCM_VAUDP32_SFT); + usleep_range(100, 150); + } + } +} + +static int hp_gain_ctl_select(struct mt6359_priv *priv, + unsigned int hp_gain_ctl) +{ + if (hp_gain_ctl >= HP_GAIN_CTL_NUM) { + dev_warn(priv->dev, "%s(), hp_gain_ctl %d invalid\n", + __func__, hp_gain_ctl); + return -EINVAL; + } + + priv->hp_gain_ctl = hp_gain_ctl; + regmap_update_bits(priv->regmap, MT6359_AFE_DL_NLE_CFG, + NLE_LCH_HPGAIN_SEL_MASK_SFT, + hp_gain_ctl << NLE_LCH_HPGAIN_SEL_SFT); + regmap_update_bits(priv->regmap, MT6359_AFE_DL_NLE_CFG, + NLE_RCH_HPGAIN_SEL_MASK_SFT, + hp_gain_ctl << NLE_RCH_HPGAIN_SEL_SFT); + + return 0; +} + +static bool is_valid_hp_pga_idx(int reg_idx) +{ + return (reg_idx >= DL_GAIN_8DB && reg_idx <= DL_GAIN_N_22DB) || + reg_idx == DL_GAIN_N_40DB; +} + +static void headset_volume_ramp(struct mt6359_priv *priv, + int from, int to) +{ + int offset = 0, count = 1, reg_idx; + + if (!is_valid_hp_pga_idx(from) || !is_valid_hp_pga_idx(to)) + dev_warn(priv->dev, "%s(), volume index is not valid, from %d, to %d\n", + __func__, from, to); + + dev_info(priv->dev, "%s(), from %d, to %d\n", + __func__, from, to); + + if (to > from) + offset = to - from; + else + offset = from - to; + + while (offset > 0) { + if (to > from) + reg_idx = from + count; + else + reg_idx = from - count; + + if (is_valid_hp_pga_idx(reg_idx)) { + regmap_update_bits(priv->regmap, + MT6359_ZCD_CON2, + DL_GAIN_REG_MASK, + (reg_idx << 7) | reg_idx); + usleep_range(600, 650); + } + offset--; + count++; + } +} + +#define MT_SOC_ENUM_EXT_ID(xname, xenum, xhandler_get, xhandler_put, id) \ +{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .device = id,\ + .info = snd_soc_info_enum_double, \ + .get = xhandler_get, .put = xhandler_put, \ + .private_value = (unsigned long)&(xenum) } + +/* Mic Type MUX */ +enum { + MIC_TYPE_MUX_IDLE = 0, + MIC_TYPE_MUX_ACC, + MIC_TYPE_MUX_DMIC, + MIC_TYPE_MUX_DCC, + MIC_TYPE_MUX_DCC_ECM_DIFF, + MIC_TYPE_MUX_DCC_ECM_SINGLE, + MIC_TYPE_MUX_VOW_ACC, + MIC_TYPE_MUX_VOW_DMIC, + MIC_TYPE_MUX_VOW_DMIC_LP, + MIC_TYPE_MUX_VOW_DCC, + MIC_TYPE_MUX_VOW_DCC_ECM_DIFF, + MIC_TYPE_MUX_VOW_DCC_ECM_SINGLE, +}; + +#define IS_VOW_DCC_BASE(type) ((type) == MIC_TYPE_MUX_VOW_DCC || \ + (type) == MIC_TYPE_MUX_VOW_DCC_ECM_DIFF || \ + (type) == MIC_TYPE_MUX_VOW_DCC_ECM_SINGLE) + +#define IS_DCC_BASE(type) ((type) == MIC_TYPE_MUX_DCC || \ + (type) == MIC_TYPE_MUX_DCC_ECM_DIFF || \ + (type) == MIC_TYPE_MUX_DCC_ECM_SINGLE || \ + IS_VOW_DCC_BASE((type))) + +#define IS_VOW_AMIC_BASE(type) ((type) == MIC_TYPE_MUX_VOW_ACC || \ + IS_VOW_DCC_BASE((type))) + +#define IS_VOW_BASE(type) ((type) == MIC_TYPE_MUX_VOW_DMIC || \ + (type) == MIC_TYPE_MUX_VOW_DMIC_LP || \ + IS_VOW_AMIC_BASE((type))) + +static const char *const mic_type_mux_map[] = { + "Idle", + "ACC", + "DMIC", + "DCC", + "DCC_ECM_DIFF", + "DCC_ECM_SINGLE", + "VOW_ACC", + "VOW_DMIC", + "VOW_DMIC_LP", + "VOW_DCC", + "VOW_DCC_ECM_DIFF", + "VOW_DCC_ECM_SINGLE" +}; + +static const struct soc_enum mic_type_mux_enum[] = { + SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(mic_type_mux_map), mic_type_mux_map), +}; + +static int mic_type_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_component *cmpnt = snd_soc_kcontrol_component(kcontrol); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + ucontrol->value.integer.value[0] = + priv->mux_select[kcontrol->id.device]; + return 0; +} + +static int mic_type_set(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_component *cmpnt = snd_soc_kcontrol_component(kcontrol); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; + int index = ucontrol->value.integer.value[0]; + unsigned int id = kcontrol->id.device; + + if (ucontrol->value.enumerated.item[0] >= e->items) + return -EINVAL; + + priv->mux_select[id] = index; + return 0; +} + +static int mt6359_put_volsw(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_component *component = + snd_soc_kcontrol_component(kcontrol); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(component); + struct soc_mixer_control *mc = + (struct soc_mixer_control *)kcontrol->private_value; + unsigned int reg; + int index = ucontrol->value.integer.value[0]; + int ret; + + ret = snd_soc_put_volsw(kcontrol, ucontrol); + if (ret < 0) + return ret; + + switch (mc->reg) { + case MT6359_ZCD_CON2: + regmap_read(priv->regmap, MT6359_ZCD_CON2, ®); + priv->ana_gain[AUDIO_ANALOG_VOLUME_HPOUTL] = + (reg >> RG_AUDHPLGAIN_SFT) & RG_AUDHPLGAIN_MASK; + priv->ana_gain[AUDIO_ANALOG_VOLUME_HPOUTR] = + (reg >> RG_AUDHPRGAIN_SFT) & RG_AUDHPRGAIN_MASK; + break; + case MT6359_ZCD_CON1: + regmap_read(priv->regmap, MT6359_ZCD_CON1, ®); + priv->ana_gain[AUDIO_ANALOG_VOLUME_LINEOUTL] = + (reg >> RG_AUDLOLGAIN_SFT) & RG_AUDLOLGAIN_MASK; + priv->ana_gain[AUDIO_ANALOG_VOLUME_LINEOUTR] = + (reg >> RG_AUDLORGAIN_SFT) & RG_AUDLORGAIN_MASK; + break; + case MT6359_ZCD_CON3: + regmap_read(priv->regmap, MT6359_ZCD_CON3, ®); + priv->ana_gain[AUDIO_ANALOG_VOLUME_HSOUTL] = + (reg >> RG_AUDHSGAIN_SFT) & RG_AUDHSGAIN_MASK; + break; + case MT6359_AUDENC_ANA_CON0: + regmap_read(priv->regmap, MT6359_AUDENC_ANA_CON0, ®); + priv->ana_gain[AUDIO_ANALOG_VOLUME_MICAMP1] = + (reg >> RG_AUDPREAMPLGAIN_SFT) & RG_AUDPREAMPLGAIN_MASK; + break; + case MT6359_AUDENC_ANA_CON1: + regmap_read(priv->regmap, MT6359_AUDENC_ANA_CON1, ®); + priv->ana_gain[AUDIO_ANALOG_VOLUME_MICAMP2] = + (reg >> RG_AUDPREAMPRGAIN_SFT) & RG_AUDPREAMPRGAIN_MASK; + break; + case MT6359_AUDENC_ANA_CON2: + regmap_read(priv->regmap, MT6359_AUDENC_ANA_CON2, ®); + priv->ana_gain[AUDIO_ANALOG_VOLUME_MICAMP3] = + (reg >> RG_AUDPREAMP3GAIN_SFT) & RG_AUDPREAMP3GAIN_MASK; + + break; + } + + dev_info(priv->dev, "%s(), name %s, reg(0x%x) = 0x%x, set index = %x\n", + __func__, kcontrol->id.name, mc->reg, reg, index); + + return ret; +} + +static const DECLARE_TLV_DB_SCALE(hp_playback_tlv, -2200, 100, 0); +static const DECLARE_TLV_DB_SCALE(playback_tlv, -1000, 100, 0); +static const DECLARE_TLV_DB_SCALE(capture_tlv, 0, 600, 0); + +static const struct snd_kcontrol_new mt6359_snd_controls[] = { + /* dl pga gain */ + SOC_SINGLE_EXT_TLV("HeadsetL Volume", + MT6359_ZCD_CON2, 0, 0x1E, 0, + snd_soc_get_volsw, mt6359_put_volsw, + hp_playback_tlv), + SOC_SINGLE_EXT_TLV("HeadsetR Volume", + MT6359_ZCD_CON2, 7, 0x1E, 0, + snd_soc_get_volsw, mt6359_put_volsw, + hp_playback_tlv), + SOC_SINGLE_EXT_TLV("LineoutL Volume", + MT6359_ZCD_CON1, 0, 0x12, 0, + snd_soc_get_volsw, mt6359_put_volsw, playback_tlv), + SOC_SINGLE_EXT_TLV("LineoutR Volume", + MT6359_ZCD_CON1, 7, 0x12, 0, + snd_soc_get_volsw, mt6359_put_volsw, playback_tlv), + SOC_SINGLE_EXT_TLV("Handset Volume", + MT6359_ZCD_CON3, 0, 0x12, 0, + snd_soc_get_volsw, mt6359_put_volsw, playback_tlv), + + /* ul pga gain */ + SOC_SINGLE_EXT_TLV("PGAL Volume", + MT6359_AUDENC_ANA_CON0, RG_AUDPREAMPLGAIN_SFT, 4, 0, + snd_soc_get_volsw, mt6359_put_volsw, capture_tlv), + SOC_SINGLE_EXT_TLV("PGAR Volume", + MT6359_AUDENC_ANA_CON1, RG_AUDPREAMPRGAIN_SFT, 4, 0, + snd_soc_get_volsw, mt6359_put_volsw, capture_tlv), + SOC_SINGLE_EXT_TLV("PGA3 Volume", + MT6359_AUDENC_ANA_CON2, RG_AUDPREAMP3GAIN_SFT, 4, 0, + snd_soc_get_volsw, mt6359_put_volsw, capture_tlv), + + /* mix type mux */ + MT_SOC_ENUM_EXT_ID("Mic_Type_Mux_0", mic_type_mux_enum[0], + mic_type_get, mic_type_set, + MUX_MIC_TYPE_0), + MT_SOC_ENUM_EXT_ID("Mic_Type_Mux_1", mic_type_mux_enum[0], + mic_type_get, mic_type_set, + MUX_MIC_TYPE_1), + MT_SOC_ENUM_EXT_ID("Mic_Type_Mux_2", mic_type_mux_enum[0], + mic_type_get, mic_type_set, + MUX_MIC_TYPE_2), +}; + +/* MUX */ + +/* LOL MUX */ +enum { + LO_MUX_OPEN = 0, + LO_MUX_L_DAC, + LO_MUX_3RD_DAC, + LO_MUX_TEST_MODE, + LO_MUX_MASK = 0x3, +}; + +static const char * const lo_in_mux_map[] = { + "Open", "Playback_L_DAC", "Playback", "Test Mode" +}; + +static int lo_in_mux_map_value[] = { + 0x0, 0x1, 0x2, 0x3, +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(lo_in_mux_map_enum, + SND_SOC_NOPM, + 0, + LO_MUX_MASK, + lo_in_mux_map, + lo_in_mux_map_value); + +static const struct snd_kcontrol_new lo_in_mux_control = + SOC_DAPM_ENUM("LO Select", lo_in_mux_map_enum); + +/*HP MUX */ +enum { + HP_MUX_OPEN = 0, + HP_MUX_HPSPK, + HP_MUX_HP, + HP_MUX_TEST_MODE, + HP_MUX_HP_IMPEDANCE, + HP_MUX_MASK = 0x7, +}; + +static const char * const hp_in_mux_map[] = { + "Open", + "LoudSPK Playback", + "Audio Playback", + "Test Mode", + "HP Impedance", + "undefined1", + "undefined2", + "undefined3", +}; + +static int hp_in_mux_map_value[] = { + HP_MUX_OPEN, + HP_MUX_HPSPK, + HP_MUX_HP, + HP_MUX_TEST_MODE, + HP_MUX_HP_IMPEDANCE, + HP_MUX_OPEN, + HP_MUX_OPEN, + HP_MUX_OPEN, +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(hpl_in_mux_map_enum, + SND_SOC_NOPM, + 0, + HP_MUX_MASK, + hp_in_mux_map, + hp_in_mux_map_value); + +static const struct snd_kcontrol_new hpl_in_mux_control = + SOC_DAPM_ENUM("HPL Select", hpl_in_mux_map_enum); + +static SOC_VALUE_ENUM_SINGLE_DECL(hpr_in_mux_map_enum, + SND_SOC_NOPM, + 0, + HP_MUX_MASK, + hp_in_mux_map, + hp_in_mux_map_value); + +static const struct snd_kcontrol_new hpr_in_mux_control = + SOC_DAPM_ENUM("HPR Select", hpr_in_mux_map_enum); + +/* RCV MUX */ +enum { + RCV_MUX_OPEN = 0, + RCV_MUX_MUTE, + RCV_MUX_VOICE_PLAYBACK, + RCV_MUX_TEST_MODE, + RCV_MUX_MASK = 0x3, +}; + +static const char * const rcv_in_mux_map[] = { + "Open", "Mute", "Voice Playback", "Test Mode" +}; + +static int rcv_in_mux_map_value[] = { + RCV_MUX_OPEN, + RCV_MUX_MUTE, + RCV_MUX_VOICE_PLAYBACK, + RCV_MUX_TEST_MODE, +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(rcv_in_mux_map_enum, + SND_SOC_NOPM, + 0, + RCV_MUX_MASK, + rcv_in_mux_map, + rcv_in_mux_map_value); + +static const struct snd_kcontrol_new rcv_in_mux_control = + SOC_DAPM_ENUM("RCV Select", rcv_in_mux_map_enum); + +/* DAC In MUX */ +static const char * const dac_in_mux_map[] = { + "Normal Path", "Sgen" +}; + +static int dac_in_mux_map_value[] = { + 0x0, 0x1, +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(dac_in_mux_map_enum, + MT6359_AFE_TOP_CON0, + DL_SINE_ON_SFT, + DL_SINE_ON_MASK, + dac_in_mux_map, + dac_in_mux_map_value); + +static const struct snd_kcontrol_new dac_in_mux_control = + SOC_DAPM_ENUM("DAC Select", dac_in_mux_map_enum); + +/* AIF Out MUX */ +static SOC_VALUE_ENUM_SINGLE_DECL(aif_out_mux_map_enum, + MT6359_AFE_TOP_CON0, + UL_SINE_ON_SFT, + UL_SINE_ON_MASK, + dac_in_mux_map, + dac_in_mux_map_value); + +static const struct snd_kcontrol_new aif_out_mux_control = + SOC_DAPM_ENUM("AIF Out Select", aif_out_mux_map_enum); + +static SOC_VALUE_ENUM_SINGLE_DECL(aif2_out_mux_map_enum, + MT6359_AFE_TOP_CON0, + ADDA6_UL_SINE_ON_SFT, + ADDA6_UL_SINE_ON_MASK, + dac_in_mux_map, + dac_in_mux_map_value); + +static const struct snd_kcontrol_new aif2_out_mux_control = + SOC_DAPM_ENUM("AIF Out Select", aif2_out_mux_map_enum); + +/* UL SRC MUX */ +enum { + UL_SRC_MUX_AMIC = 0, + UL_SRC_MUX_DMIC, +}; + +static const char * const ul_src_mux_map[] = { + "AMIC", + "DMIC", +}; + +static int ul_src_mux_map_value[] = { + UL_SRC_MUX_AMIC, + UL_SRC_MUX_DMIC, +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(ul_src_mux_map_enum, + MT6359_AFE_UL_SRC_CON0_L, + UL_SDM_3_LEVEL_CTL_SFT, + UL_SDM_3_LEVEL_CTL_MASK, + ul_src_mux_map, + ul_src_mux_map_value); + +static const struct snd_kcontrol_new ul_src_mux_control = + SOC_DAPM_ENUM("UL_SRC_MUX Select", ul_src_mux_map_enum); + +static SOC_VALUE_ENUM_SINGLE_DECL(ul2_src_mux_map_enum, + MT6359_AFE_ADDA6_UL_SRC_CON0_L, + ADDA6_UL_SDM_3_LEVEL_CTL_SFT, + ADDA6_UL_SDM_3_LEVEL_CTL_MASK, + ul_src_mux_map, + ul_src_mux_map_value); + +static const struct snd_kcontrol_new ul2_src_mux_control = + SOC_DAPM_ENUM("UL_SRC_MUX Select", ul2_src_mux_map_enum); + +/* VOW UL SRC MUX */ +static SOC_VALUE_ENUM_SINGLE_DECL(vow_ul_src_mux_map_enum, + MT6359_AFE_VOW_TOP_CON0, + VOW_SDM_3_LEVEL_SFT, + VOW_SDM_3_LEVEL_MASK, + ul_src_mux_map, + ul_src_mux_map_value); + +static const struct snd_kcontrol_new vow_ul_src_mux_control = + SOC_DAPM_ENUM("VOW_UL_SRC_MUX Select", vow_ul_src_mux_map_enum); + +/* MISO MUX */ +enum { + MISO_MUX_UL1_CH1 = 0, + MISO_MUX_UL1_CH2, + MISO_MUX_UL2_CH1, + MISO_MUX_UL2_CH2, +}; + +static const char * const miso_mux_map[] = { + "UL1_CH1", + "UL1_CH2", + "UL2_CH1", + "UL2_CH2", +}; + +static int miso_mux_map_value[] = { + MISO_MUX_UL1_CH1, + MISO_MUX_UL1_CH2, + MISO_MUX_UL2_CH1, + MISO_MUX_UL2_CH2, +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(miso0_mux_map_enum, + MT6359_AFE_MTKAIF_MUX_CFG, + RG_ADDA_CH1_SEL_SFT, + RG_ADDA_CH1_SEL_MASK, + miso_mux_map, + miso_mux_map_value); + +static const struct snd_kcontrol_new miso0_mux_control = + SOC_DAPM_ENUM("MISO_MUX Select", miso0_mux_map_enum); + +static SOC_VALUE_ENUM_SINGLE_DECL(miso1_mux_map_enum, + MT6359_AFE_MTKAIF_MUX_CFG, + RG_ADDA_CH2_SEL_SFT, + RG_ADDA_CH2_SEL_MASK, + miso_mux_map, + miso_mux_map_value); + +static const struct snd_kcontrol_new miso1_mux_control = + SOC_DAPM_ENUM("MISO_MUX Select", miso1_mux_map_enum); + +static SOC_VALUE_ENUM_SINGLE_DECL(miso2_mux_map_enum, + MT6359_AFE_MTKAIF_MUX_CFG, + RG_ADDA6_CH1_SEL_SFT, + RG_ADDA6_CH1_SEL_MASK, + miso_mux_map, + miso_mux_map_value); + +static const struct snd_kcontrol_new miso2_mux_control = + SOC_DAPM_ENUM("MISO_MUX Select", miso2_mux_map_enum); + +/* VOW AMIC MUX */ +enum { + VOW_AMIC_MUX_ADC_L = 0, + VOW_AMIC_MUX_ADC_R, + VOW_AMIC_MUX_ADC_T, +}; + +static const char * const vow_amic_mux_map[] = { + "ADC_L", + "ADC_R", + "ADC_T", +}; + +static int vow_amic_mux_map_value[] = { + VOW_AMIC_MUX_ADC_L, + VOW_AMIC_MUX_ADC_R, + VOW_AMIC_MUX_ADC_T, +}; + +/* VOW AMIC MUX */ +static SOC_VALUE_ENUM_SINGLE_DECL(vow_amic0_mux_map_enum, + MT6359_AFE_VOW_TOP_CON4, + RG_VOW_AMIC_ADC1_SOURCE_SEL_SFT, + RG_VOW_AMIC_ADC1_SOURCE_SEL_MASK, + vow_amic_mux_map, + vow_amic_mux_map_value); + +static const struct snd_kcontrol_new vow_amic0_mux_control = + SOC_DAPM_ENUM("VOW_AMIC_MUX Select", vow_amic0_mux_map_enum); + +static SOC_VALUE_ENUM_SINGLE_DECL(vow_amic1_mux_map_enum, + MT6359_AFE_VOW_TOP_CON4, + RG_VOW_AMIC_ADC2_SOURCE_SEL_SFT, + RG_VOW_AMIC_ADC2_SOURCE_SEL_MASK, + vow_amic_mux_map, + vow_amic_mux_map_value); + +static const struct snd_kcontrol_new vow_amic1_mux_control = + SOC_DAPM_ENUM("VOW_AMIC_MUX Select", vow_amic1_mux_map_enum); + +/* DMIC MUX */ +enum { + DMIC_MUX_DMIC_DATA0 = 0, + DMIC_MUX_DMIC_DATA1_L, + DMIC_MUX_DMIC_DATA1_L_1, + DMIC_MUX_DMIC_DATA1_R, +}; + +static const char * const dmic_mux_map[] = { + "DMIC_DATA0", + "DMIC_DATA1_L", + "DMIC_DATA1_L_1", + "DMIC_DATA1_R", +}; + +static int dmic_mux_map_value[] = { + DMIC_MUX_DMIC_DATA0, + DMIC_MUX_DMIC_DATA1_L, + DMIC_MUX_DMIC_DATA1_L_1, + DMIC_MUX_DMIC_DATA1_R, +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(dmic0_mux_map_enum, + MT6359_AFE_MIC_ARRAY_CFG, + RG_DMIC_ADC1_SOURCE_SEL_SFT, + RG_DMIC_ADC1_SOURCE_SEL_MASK, + dmic_mux_map, + dmic_mux_map_value); + +static const struct snd_kcontrol_new dmic0_mux_control = + SOC_DAPM_ENUM("DMIC_MUX Select", dmic0_mux_map_enum); + +/* ul1 ch2 use RG_DMIC_ADC3_SOURCE_SEL */ +static SOC_VALUE_ENUM_SINGLE_DECL(dmic1_mux_map_enum, + MT6359_AFE_MIC_ARRAY_CFG, + RG_DMIC_ADC3_SOURCE_SEL_SFT, + RG_DMIC_ADC3_SOURCE_SEL_MASK, + dmic_mux_map, + dmic_mux_map_value); + +static const struct snd_kcontrol_new dmic1_mux_control = + SOC_DAPM_ENUM("DMIC_MUX Select", dmic1_mux_map_enum); + +/* ul2 ch1 use RG_DMIC_ADC2_SOURCE_SEL */ +static SOC_VALUE_ENUM_SINGLE_DECL(dmic2_mux_map_enum, + MT6359_AFE_MIC_ARRAY_CFG, + RG_DMIC_ADC2_SOURCE_SEL_SFT, + RG_DMIC_ADC2_SOURCE_SEL_MASK, + dmic_mux_map, + dmic_mux_map_value); + +static const struct snd_kcontrol_new dmic2_mux_control = + SOC_DAPM_ENUM("DMIC_MUX Select", dmic2_mux_map_enum); + +/* ADC L MUX */ +enum { + ADC_MUX_IDLE = 0, + ADC_MUX_AIN0, + ADC_MUX_PREAMPLIFIER, + ADC_MUX_IDLE1, +}; + +static const char * const adc_left_mux_map[] = { + "Idle", "AIN0", "Left Preamplifier", "Idle_1" +}; + +static int adc_mux_map_value[] = { + ADC_MUX_IDLE, + ADC_MUX_AIN0, + ADC_MUX_PREAMPLIFIER, + ADC_MUX_IDLE1, +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(adc_left_mux_map_enum, + MT6359_AUDENC_ANA_CON0, + RG_AUDADCLINPUTSEL_SFT, + RG_AUDADCLINPUTSEL_MASK, + adc_left_mux_map, + adc_mux_map_value); + +static const struct snd_kcontrol_new adc_left_mux_control = + SOC_DAPM_ENUM("ADC L Select", adc_left_mux_map_enum); + +/* ADC R MUX */ +static const char * const adc_right_mux_map[] = { + "Idle", "AIN0", "Right Preamplifier", "Idle_1" +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(adc_right_mux_map_enum, + MT6359_AUDENC_ANA_CON1, + RG_AUDADCRINPUTSEL_SFT, + RG_AUDADCRINPUTSEL_MASK, + adc_right_mux_map, + adc_mux_map_value); + +static const struct snd_kcontrol_new adc_right_mux_control = + SOC_DAPM_ENUM("ADC R Select", adc_right_mux_map_enum); + +/* ADC 3 MUX */ +static const char * const adc_3_mux_map[] = { + "Idle", "AIN0", "Preamplifier", "Idle_1" +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(adc_3_mux_map_enum, + MT6359_AUDENC_ANA_CON2, + RG_AUDADC3INPUTSEL_SFT, + RG_AUDADC3INPUTSEL_MASK, + adc_3_mux_map, + adc_mux_map_value); + +static const struct snd_kcontrol_new adc_3_mux_control = + SOC_DAPM_ENUM("ADC 3 Select", adc_3_mux_map_enum); + +/* PGA L MUX */ +enum { + PGA_L_MUX_NONE = 0, + PGA_L_MUX_AIN0, + PGA_L_MUX_AIN1, +}; + +static const char * const pga_l_mux_map[] = { + "None", "AIN0", "AIN1" +}; + +static int pga_l_mux_map_value[] = { + PGA_L_MUX_NONE, + PGA_L_MUX_AIN0, + PGA_L_MUX_AIN1 +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(pga_left_mux_map_enum, + MT6359_AUDENC_ANA_CON0, + RG_AUDPREAMPLINPUTSEL_SFT, + RG_AUDPREAMPLINPUTSEL_MASK, + pga_l_mux_map, + pga_l_mux_map_value); + +static const struct snd_kcontrol_new pga_left_mux_control = + SOC_DAPM_ENUM("PGA L Select", pga_left_mux_map_enum); + +/* PGA R MUX */ +enum { + PGA_R_MUX_NONE = 0, + PGA_R_MUX_AIN2, + PGA_R_MUX_AIN3, + PGA_R_MUX_AIN0, +}; + +static const char * const pga_r_mux_map[] = { + "None", "AIN2", "AIN3", "AIN0" +}; + +static int pga_r_mux_map_value[] = { + PGA_R_MUX_NONE, + PGA_R_MUX_AIN2, + PGA_R_MUX_AIN3, + PGA_R_MUX_AIN0 +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(pga_right_mux_map_enum, + MT6359_AUDENC_ANA_CON1, + RG_AUDPREAMPRINPUTSEL_SFT, + RG_AUDPREAMPRINPUTSEL_MASK, + pga_r_mux_map, + pga_r_mux_map_value); + +static const struct snd_kcontrol_new pga_right_mux_control = + SOC_DAPM_ENUM("PGA R Select", pga_right_mux_map_enum); + +/* PGA 3 MUX */ +enum { + PGA_3_MUX_NONE = 0, + PGA_3_MUX_AIN3, + PGA_3_MUX_AIN2, +}; + +static const char * const pga_3_mux_map[] = { + "None", "AIN3", "AIN2" +}; + +static int pga_3_mux_map_value[] = { + PGA_3_MUX_NONE, + PGA_3_MUX_AIN3, + PGA_3_MUX_AIN2 +}; + +static SOC_VALUE_ENUM_SINGLE_DECL(pga_3_mux_map_enum, + MT6359_AUDENC_ANA_CON2, + RG_AUDPREAMP3INPUTSEL_SFT, + RG_AUDPREAMP3INPUTSEL_MASK, + pga_3_mux_map, + pga_3_mux_map_value); + +static const struct snd_kcontrol_new pga_3_mux_control = + SOC_DAPM_ENUM("PGA 3 Select", pga_3_mux_map_enum); + +static int mt_clksq_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_dbg(priv->dev, "%s(), event = 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* audio clk source from internal dcxo */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON23, + RG_CLKSQ_IN_SEL_TEST_MASK_SFT, + 0x0); + break; + default: + break; + } + + return 0; +} + +static int mt_sgen_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_dbg(priv->dev, "%s(), event = 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* sdm audio fifo clock power on */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON2, 0x0006); + /* scrambler clock on enable */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON0, 0xCBA1); + /* sdm power on */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON2, 0x0003); + /* sdm fifo enable */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON2, 0x000B); + + regmap_update_bits(priv->regmap, MT6359_AFE_SGEN_CFG0, + 0xff3f, + 0x0000); + regmap_update_bits(priv->regmap, MT6359_AFE_SGEN_CFG1, + 0xffff, + 0x0001); + break; + case SND_SOC_DAPM_POST_PMD: + /* DL scrambler disabling sequence */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON2, 0x0000); + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON0, 0xcba0); + break; + default: + break; + } + + return 0; +} + +static int mtk_hp_enable(struct mt6359_priv *priv) +{ + if (priv->hp_hifi_mode) { + /* Set HP DR bias current optimization, 010: 6uA */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON11, + DRBIAS_HP_MASK_SFT, + DRBIAS_6UA << DRBIAS_HP_SFT); + /* Set HP & ZCD bias current optimization */ + /* 01: ZCD: 4uA, HP/HS/LO: 5uA */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON12, + IBIAS_ZCD_MASK_SFT, + IBIAS_ZCD_4UA << IBIAS_ZCD_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON12, + IBIAS_HP_MASK_SFT, + IBIAS_5UA << IBIAS_HP_SFT); + } else { + /* Set HP DR bias current optimization, 001: 5uA */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON11, + DRBIAS_HP_MASK_SFT, + DRBIAS_5UA << DRBIAS_HP_SFT); + /* Set HP & ZCD bias current optimization */ + /* 00: ZCD: 3uA, HP/HS/LO: 4uA */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON12, + IBIAS_ZCD_MASK_SFT, + IBIAS_ZCD_3UA << IBIAS_ZCD_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON12, + IBIAS_HP_MASK_SFT, + IBIAS_4UA << IBIAS_HP_SFT); + } + + /* HP damp circuit enable */ + /*Enable HPRN/HPLN output 4K to VCM */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON10, 0x0087); + + /* HP Feedback Cap select 2'b00: 15pF */ + /* for >= 96KHz sampling rate: 2'b01: 10.5pF */ + if (priv->dl_rate[MT6359_AIF_1] >= 96000) + regmap_update_bits(priv->regmap, + MT6359_AUDDEC_ANA_CON4, + RG_AUDHPHFCOMPBUFGAINSEL_VAUDP32_MASK_SFT, + 0x1 << RG_AUDHPHFCOMPBUFGAINSEL_VAUDP32_SFT); + else + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON4, 0x0000); + + /* Set HPP/N STB enhance circuits */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON2, 0xf133); + + /* Enable HP aux output stage */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x000c); + /* Enable HP aux feedback loop */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x003c); + /* Enable HP aux CMFB loop */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON9, 0x0c00); + /* Enable HP driver bias circuits */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON0, 0x30c0); + /* Enable HP driver core circuits */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON0, 0x30f0); + /* Short HP main output to HP aux output stage */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x00fc); + + /* Increase HP input pair current to HPM step by step */ + hp_in_pair_current(priv, true); + + /* Enable HP main CMFB loop */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON9, 0x0e00); + /* Disable HP aux CMFB loop */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON9, 0x0200); + + /* Enable HP main output stage */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x00ff); + /* Enable HPR/L main output stage step by step */ + hp_main_output_ramp(priv, true); + + /* Reduce HP aux feedback loop gain */ + hp_aux_feedback_loop_gain_ramp(priv, true); + /* Disable HP aux feedback loop */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x77cf); + + /* apply volume setting */ + headset_volume_ramp(priv, + DL_GAIN_N_22DB, + priv->ana_gain[AUDIO_ANALOG_VOLUME_HPOUTL]); + + /* Disable HP aux output stage */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x77c3); + /* Unshort HP main output to HP aux output stage */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x7703); + usleep_range(100, 120); + + /* Enable AUD_CLK */ + mt6359_set_decoder_clk(priv, true); + + /* Enable Audio DAC */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON0, 0x30ff); + if (priv->hp_hifi_mode) { + /* Enable low-noise mode of DAC */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON9, 0xf201); + } else { + /* Disable low-noise mode of DAC */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON9, 0xf200); + } + usleep_range(100, 120); + + /* Switch HPL MUX to audio DAC */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON0, 0x32ff); + /* Switch HPR MUX to audio DAC */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON0, 0x3aff); + + /* Disable Pull-down HPL/R to AVSS28_AUD */ + hp_pull_down(priv, false); + + return 0; +} + +static int mtk_hp_disable(struct mt6359_priv *priv) +{ + /* Pull-down HPL/R to AVSS28_AUD */ + hp_pull_down(priv, true); + + /* HPR/HPL mux to open */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON0, + 0x0f00, 0x0000); + + /* Disable low-noise mode of DAC */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON9, + 0x0001, 0x0000); + + /* Disable Audio DAC */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON0, + 0x000f, 0x0000); + + /* Disable AUD_CLK */ + mt6359_set_decoder_clk(priv, false); + + /* Short HP main output to HP aux output stage */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x77c3); + /* Enable HP aux output stage */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x77cf); + + /* decrease HPL/R gain to normal gain step by step */ + headset_volume_ramp(priv, + priv->ana_gain[AUDIO_ANALOG_VOLUME_HPOUTL], + DL_GAIN_N_22DB); + + /* Enable HP aux feedback loop */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x77ff); + + /* Reduce HP aux feedback loop gain */ + hp_aux_feedback_loop_gain_ramp(priv, false); + + /* decrease HPR/L main output stage step by step */ + hp_main_output_ramp(priv, false); + + /* Disable HP main output stage */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON1, 0x3, 0x0); + + /* Enable HP aux CMFB loop */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON9, 0x0e01); + + /* Disable HP main CMFB loop */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON9, 0x0c01); + + /* Decrease HP input pair current to 2'b00 step by step */ + hp_in_pair_current(priv, false); + + /* Unshort HP main output to HP aux output stage */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON1, + 0x3 << 6, 0x0); + + /* Disable HP driver core circuits */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON0, + 0x3 << 4, 0x0); + + /* Disable HP driver bias circuits */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON0, + 0x3 << 6, 0x0); + + /* Disable HP aux CMFB loop */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON9, 0x201); + + /* Disable HP aux feedback loop */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON1, + 0x3 << 4, 0x0); + + /* Disable HP aux output stage */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON1, + 0x3 << 2, 0x0); + return 0; +} + +static int mt_hp_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int mux = dapm_kcontrol_get_value(w->kcontrols[0]); + int device = DEVICE_HP; + + dev_info(priv->dev, "%s(), event 0x%x, dev_counter[DEV_HP] %d, mux %u\n", + __func__, + event, + priv->dev_counter[device], + mux); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + priv->dev_counter[device]++; + if (priv->dev_counter[device] > 1) + break; /* already enabled, do nothing */ + else if (priv->dev_counter[device] <= 0) + dev_warn(priv->dev, "%s(), dev_counter[DEV_HP] %d <= 0\n", + __func__, + priv->dev_counter[device]); + + priv->mux_select[MUX_HP_L] = mux; + + if (mux == HP_MUX_HP) + mtk_hp_enable(priv); + break; + case SND_SOC_DAPM_PRE_PMD: + priv->dev_counter[device]--; + if (priv->dev_counter[device] > 0) + break; /* still being used, don't close */ + else if (priv->dev_counter[device] < 0) { + dev_warn(priv->dev, "%s(), dev_counter[DEV_HP] %d < 0\n", + __func__, + priv->dev_counter[device]); + priv->dev_counter[device] = 0; + break; + } + + if (priv->mux_select[MUX_HP_L] == HP_MUX_HP) + mtk_hp_disable(priv); + + priv->mux_select[MUX_HP_L] = mux; + break; + default: + break; + } + + return 0; +} + +static int mt_rcv_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event 0x%x, mux %u\n", + __func__, + event, + dapm_kcontrol_get_value(w->kcontrols[0])); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* Disable handset short-circuit protection */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON6, 0x0010); + + /* Set RCV DR bias current optimization, 010: 6uA */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON11, + DRBIAS_HS_MASK_SFT, + DRBIAS_6UA << DRBIAS_HS_SFT); + /* Set RCV & ZCD bias current optimization */ + /* 01: ZCD: 4uA, HP/HS/LO: 5uA */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON12, + IBIAS_ZCD_MASK_SFT, + IBIAS_ZCD_4UA << IBIAS_ZCD_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON12, + IBIAS_HS_MASK_SFT, + IBIAS_5UA << IBIAS_HS_SFT); + + /* Set HS STB enhance circuits */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON6, 0x0090); + + /* Set HS output stage (3'b111 = 8x) */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON10, 0x7000); + + /* Enable HS driver bias circuits */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON6, 0x0092); + /* Enable HS driver core circuits */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON6, 0x0093); + + /* Set HS gain to normal gain step by step */ + regmap_write(priv->regmap, MT6359_ZCD_CON3, + priv->ana_gain[AUDIO_ANALOG_VOLUME_HSOUTL]); + + /* Enable AUD_CLK */ + mt6359_set_decoder_clk(priv, true); + + /* Enable Audio DAC */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON0, 0x0009); + /* Enable low-noise mode of DAC */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON9, 0x0001); + /* Switch HS MUX to audio DAC */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON6, 0x009b); + break; + case SND_SOC_DAPM_PRE_PMD: + /* HS mux to open */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON6, + RG_AUDHSMUXINPUTSEL_VAUDP32_MASK_SFT, + RCV_MUX_OPEN); + + /* Disable Audio DAC */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON0, + 0x000f, 0x0000); + + /* Disable AUD_CLK */ + mt6359_set_decoder_clk(priv, false); + + /* decrease HS gain to minimum gain step by step */ + regmap_write(priv->regmap, MT6359_ZCD_CON3, DL_GAIN_N_40DB); + + /* Disable HS driver core circuits */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON6, + RG_AUDHSPWRUP_VAUDP32_MASK_SFT, 0x0); + + /* Disable HS driver bias circuits */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON6, + RG_AUDHSPWRUP_IBIAS_VAUDP32_MASK_SFT, 0x0); + break; + default: + break; + } + + return 0; +} + +static int mt_lo_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event 0x%x, mux %u\n", + __func__, + event, + dapm_kcontrol_get_value(w->kcontrols[0])); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* Disable handset short-circuit protection */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON7, 0x0010); + + /* Set LO DR bias current optimization, 010: 6uA */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON11, + DRBIAS_LO_MASK_SFT, + DRBIAS_6UA << DRBIAS_LO_SFT); + /* Set LO & ZCD bias current optimization */ + /* 01: ZCD: 4uA, HP/HS/LO: 5uA */ + if (priv->dev_counter[DEVICE_HP] == 0) + regmap_update_bits(priv->regmap, + MT6359_AUDDEC_ANA_CON12, + IBIAS_ZCD_MASK_SFT, + IBIAS_ZCD_4UA << IBIAS_ZCD_SFT); + + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON12, + IBIAS_LO_MASK_SFT, + IBIAS_5UA << IBIAS_LO_SFT); + + /* Set LO STB enhance circuits */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON7, 0x0110); + + /* Enable LO driver bias circuits */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON7, 0x0112); + /* Enable LO driver core circuits */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON7, 0x0113); + + /* Set LO gain to normal gain step by step */ + regmap_write(priv->regmap, MT6359_ZCD_CON1, + priv->ana_gain[AUDIO_ANALOG_VOLUME_LINEOUTL]); + + /* Enable AUD_CLK */ + mt6359_set_decoder_clk(priv, true); + + /* Enable Audio DAC (3rd DAC) */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON7, 0x3113); + /* Enable low-noise mode of DAC */ + if (priv->dev_counter[DEVICE_HP] == 0) + regmap_write(priv->regmap, + MT6359_AUDDEC_ANA_CON9, 0x0001); + /* Switch LOL MUX to audio 3rd DAC */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON7, 0x311b); + break; + case SND_SOC_DAPM_PRE_PMD: + /* Switch LOL MUX to open */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON7, + RG_AUDLOLMUXINPUTSEL_VAUDP32_MASK_SFT, + LO_MUX_OPEN); + + /* Disable Audio DAC */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON0, + 0x000f, 0x0000); + + /* Disable AUD_CLK */ + mt6359_set_decoder_clk(priv, false); + + /* decrease LO gain to minimum gain step by step */ + regmap_write(priv->regmap, MT6359_ZCD_CON1, DL_GAIN_N_40DB); + + /* Disable LO driver core circuits */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON7, + RG_AUDLOLPWRUP_VAUDP32_MASK_SFT, 0x0); + + /* Disable LO driver bias circuits */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON7, + RG_AUDLOLPWRUP_IBIAS_VAUDP32_MASK_SFT, 0x0); + break; + default: + break; + } + + return 0; +} + +static int mt_adc_clk_gen_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event 0x%x, vow_enable %d\n", + __func__, event, priv->vow_enable); + + switch (event) { + case SND_SOC_DAPM_POST_PMU: + if (priv->vow_enable) { + /* ADC CLK from CLKGEN (3.25MHz) */ + dev_info(priv->dev, "%s(), vow mode\n", __func__); + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKRSTB_MASK_SFT, 0x0); + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKSOURCE_MASK_SFT, + 0x1 << RG_AUDADCCLKSOURCE_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKSEL_MASK_SFT, + 0x1 << RG_AUDADCCLKSEL_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKGENMODE_MASK_SFT, 0x0); + } else { + /* ADC CLK from CLKGEN (6.5MHz) */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKRSTB_MASK_SFT, + 0x1 << RG_AUDADCCLKRSTB_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKSOURCE_MASK_SFT, 0x0); + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKSEL_MASK_SFT, 0x0); + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKGENMODE_MASK_SFT, + 0x1 << RG_AUDADCCLKGENMODE_SFT); + } + break; + case SND_SOC_DAPM_PRE_PMD: + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKSOURCE_MASK_SFT, 0x0); + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKSEL_MASK_SFT, 0x0); + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKGENMODE_MASK_SFT, 0x0); + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON5, + RG_AUDADCCLKRSTB_MASK_SFT, 0x0); + break; + default: + break; + } + + return 0; +} + +static int mt_dcc_clk_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* DCC 50k CLK (from 26M) */ + /* MT6359_AFE_DCCLK_CFG0, bit 3 for dm ck swap */ + regmap_update_bits(priv->regmap, MT6359_AFE_DCCLK_CFG0, + 0xfff7, 0x2062); + regmap_update_bits(priv->regmap, MT6359_AFE_DCCLK_CFG0, + 0xfff7, 0x2060); + if (priv->vow_enable) + regmap_update_bits(priv->regmap, MT6359_AFE_DCCLK_CFG0, + 0xfff7, 0x2065); + else + regmap_update_bits(priv->regmap, MT6359_AFE_DCCLK_CFG0, + 0xfff7, 0x2061); + + regmap_write(priv->regmap, MT6359_AFE_DCCLK_CFG1, 0x0100); + break; + case SND_SOC_DAPM_POST_PMD: + regmap_update_bits(priv->regmap, MT6359_AFE_DCCLK_CFG0, + 0xfff7, 0x2060); + regmap_update_bits(priv->regmap, MT6359_AFE_DCCLK_CFG0, + 0xfff7, 0x2062); + break; + default: + break; + } + + return 0; +} + +static int mt_mic_bias_0_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int mic_type = priv->mux_select[MUX_MIC_TYPE_0]; + + dev_info(priv->dev, "%s(), event 0x%x, mic_type %d\n", + __func__, event, mic_type); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + switch (mic_type) { + case MIC_TYPE_MUX_DCC_ECM_DIFF: + case MIC_TYPE_MUX_VOW_DCC_ECM_DIFF: + regmap_update_bits(priv->regmap, + MT6359_AUDENC_ANA_CON15, + 0xff00, 0x7700); + break; + case MIC_TYPE_MUX_DCC_ECM_SINGLE: + case MIC_TYPE_MUX_VOW_DCC_ECM_SINGLE: + regmap_update_bits(priv->regmap, + MT6359_AUDENC_ANA_CON15, + 0xff00, 0x1100); + break; + default: + regmap_update_bits(priv->regmap, + MT6359_AUDENC_ANA_CON15, + 0xff00, 0x0000); + break; + } + + /* MISBIAS0 = 1P9V */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON15, + RG_AUDMICBIAS0VREF_MASK_SFT, + MIC_BIAS_1P9 << RG_AUDMICBIAS0VREF_SFT); + /* vow low power select */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON15, + RG_AUDMICBIAS0LOWPEN_MASK_SFT, + (IS_VOW_AMIC_BASE(mic_type) ? 1 : 0) << + RG_AUDMICBIAS0LOWPEN_SFT); + break; + case SND_SOC_DAPM_POST_PMD: + /* Disable MICBIAS0, MISBIAS0 = 1P7V */ + regmap_write(priv->regmap, MT6359_AUDENC_ANA_CON15, 0x0000); + break; + default: + break; + } + + return 0; +} + +static int mt_mic_bias_1_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int mic_type = priv->mux_select[MUX_MIC_TYPE_1]; + + dev_info(priv->dev, "%s(), event 0x%x, mic_type %d\n", + __func__, event, mic_type); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* MISBIAS1 = 2P6V */ + if (mic_type == MIC_TYPE_MUX_DCC_ECM_SINGLE) + regmap_write(priv->regmap, + MT6359_AUDENC_ANA_CON16, 0x0160); + else + regmap_write(priv->regmap, + MT6359_AUDENC_ANA_CON16, 0x0060); + + /* vow low power select */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON16, + RG_AUDMICBIAS1LOWPEN_MASK_SFT, + (IS_VOW_AMIC_BASE(mic_type) ? 1 : 0) << + RG_AUDMICBIAS1LOWPEN_SFT); + break; + default: + break; + } + + return 0; +} + +static int mt_mic_bias_2_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int mic_type = priv->mux_select[MUX_MIC_TYPE_2]; + + dev_info(priv->dev, "%s(), event 0x%x, mic_type %d\n", + __func__, event, mic_type); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + switch (mic_type) { + case MIC_TYPE_MUX_DCC_ECM_DIFF: + case MIC_TYPE_MUX_VOW_DCC_ECM_DIFF: + regmap_update_bits(priv->regmap, + MT6359_AUDENC_ANA_CON17, + 0xff00, 0x7700); + break; + case MIC_TYPE_MUX_DCC_ECM_SINGLE: + case MIC_TYPE_MUX_VOW_DCC_ECM_SINGLE: + regmap_update_bits(priv->regmap, + MT6359_AUDENC_ANA_CON17, + 0xff00, 0x1100); + break; + default: + regmap_update_bits(priv->regmap, + MT6359_AUDENC_ANA_CON17, + 0xff00, 0x0000); + break; + } + + /* MISBIAS2 = 1P9V */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON17, + RG_AUDMICBIAS2VREF_MASK_SFT, + MIC_BIAS_1P9 << RG_AUDMICBIAS2VREF_SFT); + /* vow low power select */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON17, + RG_AUDMICBIAS2LOWPEN_MASK_SFT, + (IS_VOW_BASE(mic_type) ? 1 : 0) << + RG_AUDMICBIAS2LOWPEN_SFT); + break; + case SND_SOC_DAPM_POST_PMD: + /* Disable MICBIAS2, MISBIAS0 = 1P7V */ + regmap_write(priv->regmap, MT6359_AUDENC_ANA_CON17, 0x0000); + break; + default: + break; + } + + return 0; +} + +static int mt_vow_aud_lpw_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* Enable audio uplink LPW mode */ + /* Enable Audio ADC 1st Stage LPW */ + /* Enable Audio ADC 2nd & 3rd LPW */ + /* Enable Audio ADC flash Audio ADC flash */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON3, + 0x0039, 0x0039); + if (priv->vow_channel == 2) + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON4, + 0x0039, 0x0039); + break; + case SND_SOC_DAPM_POST_PMD: + /* Disable audio uplink LPW mode */ + /* Disable Audio ADC 1st Stage LPW */ + /* Disable Audio ADC 2nd & 3rd LPW */ + /* Disable Audio ADC flash Audio ADC flash */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON3, + 0x0039, 0x0000); + if (priv->vow_channel == 2) + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON4, + 0x0039, 0x0000); + break; + default: + break; + } + return 0; +} + +static void vow_periodic_on_off_set(struct mt6359_priv *priv) +{ + regmap_update_bits(priv->regmap, + MT6359_AUD_TOP_CKPDN_CON0, + RG_VOW32K_CK_PDN_MASK_SFT, + 0x0); + /* Pre On */ + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG2, + priv->vow_periodic_param.pga_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG3, + priv->vow_periodic_param.precg_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG4, + priv->vow_periodic_param.adc_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG7, + priv->vow_periodic_param.micbias0_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG8, + priv->vow_periodic_param.micbias1_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG9, + priv->vow_periodic_param.dcxo_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG10, + priv->vow_periodic_param.audglb_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG11, + priv->vow_periodic_param.vow_on); + /* Delay Off */ + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG13, + priv->vow_periodic_param.pga_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG14, + priv->vow_periodic_param.precg_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG15, + priv->vow_periodic_param.adc_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG18, + priv->vow_periodic_param.micbias0_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG19, + priv->vow_periodic_param.micbias1_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG20, + priv->vow_periodic_param.dcxo_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG21, + priv->vow_periodic_param.audglb_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG22, + priv->vow_periodic_param.vow_off); + + if (priv->vow_channel == 2) { + /* Pre On */ + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG24, + priv->vow_periodic_param.pga_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG25, + priv->vow_periodic_param.precg_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG26, + priv->vow_periodic_param.adc_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG29, + priv->vow_periodic_param.micbias1_on); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG30, + priv->vow_periodic_param.vow_on); + /* Delay Off */ + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG32, + priv->vow_periodic_param.pga_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG33, + priv->vow_periodic_param.precg_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG34, + priv->vow_periodic_param.adc_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG37, + priv->vow_periodic_param.micbias1_off); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG38, + priv->vow_periodic_param.vow_off); + } + /* vow periodic enable */ + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG0, 0x999A); +} + +static void vow_periodic_on_off_reset(struct mt6359_priv *priv) +{ + regmap_update_bits(priv->regmap, + MT6359_AUD_TOP_CKPDN_CON0, + RG_VOW32K_CK_PDN_MASK_SFT, + 0x1 << RG_VOW32K_CK_PDN_SFT); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG0, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG1, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG2, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG3, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG4, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG5, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG6, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG7, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG8, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG9, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG10, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG11, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG12, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG13, 0x8000); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG14, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG15, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG16, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG17, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG18, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG19, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG20, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG21, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG22, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG23, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG24, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG25, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG26, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG27, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG28, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG29, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG30, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG31, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG32, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG33, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG34, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG35, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG36, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG37, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG38, 0x0); + regmap_write(priv->regmap, MT6359_AFE_VOW_PERIODIC_CFG39, 0x0); +} + +static int mt_vow_periodic_cfg_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event 0x%x\n", __func__, event); + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* Periodic On/Off */ + if (priv->reg_afe_vow_periodic == 0) + vow_periodic_on_off_reset(priv); + else + vow_periodic_on_off_set(priv); + break; + case SND_SOC_DAPM_POST_PMD: + vow_periodic_on_off_reset(priv); + break; + default: + break; + } + return 0; +} + +/* VOW MTKIF TX setting */ +enum { + VOW_MTKIF_TX_SET_MONO = 1, + VOW_MTKIF_TX_SET_STEREO = 0, +}; + +#define VOW_MCLK 13000 +#define VOW_MTKIF_TX_MONO_CLK 650 +#define VOW_MTKIF_TX_STEREO_CLK 1083 + +static int mt_vow_digital_cfg_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int mic_type0 = priv->mux_select[MUX_MIC_TYPE_0]; + unsigned int mic_type2 = priv->mux_select[MUX_MIC_TYPE_2]; + unsigned int vow_ch = 0; + unsigned int vow_mtkif_tx_div = 0; + unsigned int vow_top_con3 = 0x0000; + unsigned int is_dmic = 0; + + dev_info(priv->dev, "%s(), event 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_POST_PMU: + /* AMIC/DMIC VOW Config Setting */ + if (mic_type0 == MIC_TYPE_MUX_VOW_DMIC_LP || + mic_type2 == MIC_TYPE_MUX_VOW_DMIC_LP) { + /* LP DMIC settings : 812.5k */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON0, + 0x7C00, 0x3800); + is_dmic = 1; + } else if ((mic_type0 == MIC_TYPE_MUX_VOW_DMIC) || + (mic_type2 == MIC_TYPE_MUX_VOW_DMIC)) { + /* DMIC settings : 1600k */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON0, + 0x7C00, 0x1000); + is_dmic = 1; + } else { + /* AMIC settings */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON0, + 0x7C00, 0x0000); + is_dmic = 0; + } + + /* Enable vow cfg setting */ + /* VOW CH1 Config */ + regmap_write(priv->regmap, MT6359_AFE_VOW_VAD_CFG0, + priv->reg_afe_vow_vad_cfg0); + regmap_write(priv->regmap, MT6359_AFE_VOW_VAD_CFG2, + priv->reg_afe_vow_vad_cfg1); + regmap_write(priv->regmap, MT6359_AFE_VOW_VAD_CFG4, + priv->reg_afe_vow_vad_cfg2); + regmap_write(priv->regmap, MT6359_AFE_VOW_VAD_CFG6, + priv->reg_afe_vow_vad_cfg3); + regmap_update_bits(priv->regmap, MT6359_AFE_VOW_VAD_CFG12, + K_GAMMA_CH1_MASK_SFT, + priv->reg_afe_vow_vad_cfg4 << + K_GAMMA_CH1_SFT); + regmap_write(priv->regmap, MT6359_AFE_VOW_VAD_CFG8, + priv->reg_afe_vow_vad_cfg5); + if (is_dmic) { + /* VOW CH1 */ + /* VOW ADC clk gate power off */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON1, + VOW_ADC_CK_PDN_CH1_MASK_SFT, + 0x1 << VOW_ADC_CK_PDN_CH1_SFT); + /* VOW clk gate power on */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON1, + VOW_CK_PDN_CH1_MASK_SFT, + 0x0); + /* DMIC power on */ + /* DMIC select: dmic */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON1, + 0x3 << VOW_DIGMIC_ON_CH1_SFT, + 0x1 << VOW_DIGMIC_ON_CH1_SFT); + } else { + /* VOW CH1 */ + /* VOW ADC clk gate power on */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON1, + VOW_ADC_CK_PDN_CH1_MASK_SFT, + 0x0); + /* VOW clk gate power on */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON1, + VOW_CK_PDN_CH1_MASK_SFT, + 0x0); + /* DMIC power off */ + /* DMIC select: amic */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON1, + 0x3 << VOW_DIGMIC_ON_CH1_SFT, + 0x2 << VOW_DIGMIC_ON_CH1_SFT); + } + /* MTKIF TX Setting */ + vow_ch = VOW_MTKIF_TX_SET_MONO; /* mono */ + vow_mtkif_tx_div = VOW_MCLK / (VOW_MTKIF_TX_MONO_CLK * 2); + + /* VOW CH2 Config */ + if (priv->vow_channel == 2) { + regmap_write(priv->regmap, MT6359_AFE_VOW_VAD_CFG1, + priv->reg_afe_vow_vad_cfg0); + regmap_write(priv->regmap, MT6359_AFE_VOW_VAD_CFG3, + priv->reg_afe_vow_vad_cfg1); + regmap_write(priv->regmap, MT6359_AFE_VOW_VAD_CFG5, + priv->reg_afe_vow_vad_cfg2); + regmap_write(priv->regmap, MT6359_AFE_VOW_VAD_CFG7, + priv->reg_afe_vow_vad_cfg3); + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_VAD_CFG12, + K_GAMMA_CH2_MASK_SFT, + priv->reg_afe_vow_vad_cfg4 << + K_GAMMA_CH2_SFT); + regmap_write(priv->regmap, MT6359_AFE_VOW_VAD_CFG9, + priv->reg_afe_vow_vad_cfg5); + if (is_dmic) { + /* VOW CH2 */ + /* VOW ADC clk gate power off */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON2, + VOW_ADC_CK_PDN_CH2_MASK_SFT, + 0x1 << + VOW_ADC_CK_PDN_CH2_SFT); + /* VOW clk gate power on */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON2, + VOW_CK_PDN_CH2_MASK_SFT, + 0x0); + /* DMIC power on */ + /* DMIC select: dmic */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON2, + 0x3 << VOW_DIGMIC_ON_CH2_SFT, + 0x1 << + VOW_DIGMIC_ON_CH2_SFT); + } else { + /* VOW CH2 */ + /* VOW ADC clk gate power on */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON2, + VOW_ADC_CK_PDN_CH2_MASK_SFT, + 0x0); + /* VOW clk gate power on */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON2, + VOW_CK_PDN_CH2_MASK_SFT, + 0x0); + /* DMIC power off */ + /* DMIC select: amic */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON2, + 0x3 << VOW_DIGMIC_ON_CH2_SFT, + 0x2 << + VOW_DIGMIC_ON_CH2_SFT); + } + /* MTKIF TX Setting */ + vow_ch = VOW_MTKIF_TX_SET_STEREO; /* stereo */ + /* MTKIF TX DIV */ + vow_mtkif_tx_div = VOW_MCLK / + (VOW_MTKIF_TX_STEREO_CLK * 2); + } + vow_top_con3 = 0x0000; + /* disable SNRDET Auto power down */ + vow_top_con3 |= (1 << VOW_P2_SNRDET_AUTO_PDN_SFT); + vow_top_con3 |= (vow_ch << VOW_TXIF_MONO_SFT); + vow_top_con3 |= (vow_mtkif_tx_div << VOW_TXIF_SCK_DIV_SFT); + regmap_write(priv->regmap, MT6359_AFE_VOW_TOP_CON3, + vow_top_con3); + break; + case SND_SOC_DAPM_PRE_PMD: + /* AMIC/DMIC VOW Config Setting */ + /* AMIC settings */ + regmap_update_bits(priv->regmap, MT6359_AFE_VOW_TOP_CON0, + 0x7C00, 0x0000); + /* VOW CH1 */ + /* VOW ADC clk gate power off */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON1, + VOW_ADC_CK_PDN_CH1_MASK_SFT, + 0x1 << VOW_ADC_CK_PDN_CH1_SFT); + /* VOW clk gate power off */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON1, + VOW_CK_PDN_CH1_MASK_SFT, + 0x1 << VOW_CK_PDN_CH1_SFT); + /* DMIC power off */ + /* DMIC select: amic */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON1, + 0x3 << VOW_DIGMIC_ON_CH1_SFT, + 0x2 << VOW_DIGMIC_ON_CH1_SFT); + /* VOW CH2 */ + /* VOW ADC clk gate power off */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON2, + VOW_ADC_CK_PDN_CH2_MASK_SFT, + 0x1 << VOW_ADC_CK_PDN_CH2_SFT); + /* VOW clk gate power off */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON2, + VOW_CK_PDN_CH2_MASK_SFT, + 0x1 << VOW_CK_PDN_CH2_SFT); + /* DMIC power off */ + /* DMIC select: amic */ + regmap_update_bits(priv->regmap, + MT6359_AFE_VOW_TOP_CON2, + 0x3 << VOW_DIGMIC_ON_CH2_SFT, + 0x2 << VOW_DIGMIC_ON_CH2_SFT); + break; + default: + break; + } + return 0; +} + +static int mt_vow_out_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_WILL_PMU: + priv->vow_enable = 1; + break; + case SND_SOC_DAPM_PRE_PMU: + vow_gpio_set(priv); + break; + case SND_SOC_DAPM_POST_PMD: + vow_gpio_reset(priv); + priv->vow_enable = 0; + break; + default: + break; + } + + return 0; +} + +static int mt_mtkaif_tx_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event = 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + mt6359_mtkaif_tx_enable(priv); + break; + case SND_SOC_DAPM_POST_PMD: + mt6359_mtkaif_tx_disable(priv); + break; + default: + break; + } + + return 0; +} + +static int mt_ul_src_dmic_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event = 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* default two wire, 3.25M */ + regmap_write(priv->regmap, MT6359_AFE_UL_SRC_CON0_H, 0x0080); + regmap_update_bits(priv->regmap, MT6359_AFE_UL_SRC_CON0_L, + 0xfffc, 0x0000); + break; + case SND_SOC_DAPM_POST_PMD: + regmap_write(priv->regmap, + MT6359_AFE_UL_SRC_CON0_H, 0x0000); + break; + default: + break; + } + + return 0; +} + +static int mt_ul_src_34_dmic_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event = 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* default two wire, 3.25M */ + regmap_write(priv->regmap, + MT6359_AFE_ADDA6_L_SRC_CON0_H, 0x0080); + regmap_update_bits(priv->regmap, MT6359_AFE_ADDA6_UL_SRC_CON0_L, + 0xfffc, 0x0000); + break; + case SND_SOC_DAPM_POST_PMD: + regmap_write(priv->regmap, + MT6359_AFE_ADDA6_L_SRC_CON0_H, 0x0000); + break; + default: + break; + } + + return 0; +} + +static int mt_adc_l_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event = 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_POST_PMU: + usleep_range(100, 120); + /* Audio L preamplifier DCC precharge off */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON0, + RG_AUDPREAMPLDCPRECHARGE_MASK_SFT, + 0x0); + break; + default: + break; + } + + return 0; +} + +static int mt_adc_r_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event = 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_POST_PMU: + usleep_range(100, 120); + /* Audio R preamplifier DCC precharge off */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON1, + RG_AUDPREAMPRDCPRECHARGE_MASK_SFT, + 0x0); + break; + default: + break; + } + + return 0; +} + +static int mt_adc_3_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + dev_info(priv->dev, "%s(), event = 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_POST_PMU: + usleep_range(100, 120); + /* Audio R preamplifier DCC precharge off */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON2, + RG_AUDPREAMP3DCPRECHARGE_MASK_SFT, + 0x0); + break; + default: + break; + } + + return 0; +} + +static int mt_pga_l_mux_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int mux = dapm_kcontrol_get_value(w->kcontrols[0]); + + dev_info(priv->dev, "%s(), mux %d\n", __func__, mux); + priv->mux_select[MUX_PGA_L] = mux >> RG_AUDPREAMPLINPUTSEL_SFT; + return 0; +} + +static int mt_pga_r_mux_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int mux = dapm_kcontrol_get_value(w->kcontrols[0]); + + dev_info(priv->dev, "%s(), mux %d\n", __func__, mux); + priv->mux_select[MUX_PGA_R] = mux >> RG_AUDPREAMPRINPUTSEL_SFT; + return 0; +} + +static int mt_pga_3_mux_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int mux = dapm_kcontrol_get_value(w->kcontrols[0]); + + dev_info(priv->dev, "%s(), mux %d\n", __func__, mux); + priv->mux_select[MUX_PGA_3] = mux >> RG_AUDPREAMP3INPUTSEL_SFT; + return 0; +} + +static int mt_pga_l_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + int mic_gain_l = priv->ana_gain[AUDIO_ANALOG_VOLUME_MICAMP1]; + unsigned int mux_pga = priv->mux_select[MUX_PGA_L]; + unsigned int mic_type; + + switch (mux_pga) { + case PGA_L_MUX_AIN0: + mic_type = priv->mux_select[MUX_MIC_TYPE_0]; + break; + case PGA_L_MUX_AIN1: + mic_type = priv->mux_select[MUX_MIC_TYPE_1]; + break; + default: + dev_err(priv->dev, "%s(), invalid pga mux %d\n", + __func__, mux_pga); + return -EINVAL; + } + /* if is VOW, then force 24dB */ + if (IS_VOW_BASE(mic_type)) + mic_gain_l = 4; + dev_dbg(priv->dev, "%s(), event = 0x%x, mic_type %d, mic_gain_l %d, mux_pga %d\n", + __func__, event, mic_type, mic_gain_l, mux_pga); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + if (IS_DCC_BASE(mic_type)) { + /* Audio L preamplifier DCC precharge */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON0, + RG_AUDPREAMPLDCPRECHARGE_MASK_SFT, + 0x1 << RG_AUDPREAMPLDCPRECHARGE_SFT); + } + break; + case SND_SOC_DAPM_POST_PMU: + /* set mic pga gain */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON0, + RG_AUDPREAMPLGAIN_MASK_SFT, + mic_gain_l << RG_AUDPREAMPLGAIN_SFT); + + if (IS_DCC_BASE(mic_type)) { + /* L preamplifier DCCEN */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON0, + RG_AUDPREAMPLDCCEN_MASK_SFT, + 0x1 << RG_AUDPREAMPLDCCEN_SFT); + } + break; + case SND_SOC_DAPM_POST_PMD: + /* L preamplifier DCCEN */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON0, + RG_AUDPREAMPLDCCEN_MASK_SFT, + 0x0 << RG_AUDPREAMPLDCCEN_SFT); + break; + default: + break; + } + + return 0; +} + +static int mt_pga_r_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + int mic_gain_r = priv->ana_gain[AUDIO_ANALOG_VOLUME_MICAMP2]; + unsigned int mux_pga = priv->mux_select[MUX_PGA_R]; + unsigned int mic_type; + + switch (mux_pga) { + case PGA_R_MUX_AIN0: + mic_type = priv->mux_select[MUX_MIC_TYPE_0]; + break; + case PGA_R_MUX_AIN2: + case PGA_R_MUX_AIN3: + mic_type = priv->mux_select[MUX_MIC_TYPE_2]; + break; + default: + dev_err(priv->dev, "%s(), invalid pga mux %d\n", + __func__, mux_pga); + return -EINVAL; + } + /* if is VOW, then force 24dB */ + if (IS_VOW_BASE(mic_type)) + mic_gain_r = 4; + dev_dbg(priv->dev, "%s(), event = 0x%x, mic_type %d, mic_gain_r %d, mux_pga %d\n", + __func__, event, mic_type, mic_gain_r, mux_pga); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + if (IS_DCC_BASE(mic_type)) { + /* Audio R preamplifier DCC precharge */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON1, + RG_AUDPREAMPRDCPRECHARGE_MASK_SFT, + 0x1 << RG_AUDPREAMPRDCPRECHARGE_SFT); + } + break; + case SND_SOC_DAPM_POST_PMU: + /* set mic pga gain */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON1, + RG_AUDPREAMPRGAIN_MASK_SFT, + mic_gain_r << RG_AUDPREAMPRGAIN_SFT); + + if (IS_DCC_BASE(mic_type)) { + /* R preamplifier DCCEN */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON1, + RG_AUDPREAMPRDCCEN_MASK_SFT, + 0x1 << RG_AUDPREAMPRDCCEN_SFT); + } + break; + case SND_SOC_DAPM_POST_PMD: + /* R preamplifier DCCEN */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON1, + RG_AUDPREAMPRDCCEN_MASK_SFT, + 0x0 << RG_AUDPREAMPRDCCEN_SFT); + break; + default: + break; + } + + return 0; +} + +static int mt_pga_3_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + int mic_gain_3 = priv->ana_gain[AUDIO_ANALOG_VOLUME_MICAMP3]; + unsigned int mux_pga = priv->mux_select[MUX_PGA_3]; + unsigned int mic_type; + + switch (mux_pga) { + case PGA_3_MUX_AIN2: + case PGA_3_MUX_AIN3: + mic_type = priv->mux_select[MUX_MIC_TYPE_2]; + break; + default: + dev_err(priv->dev, "%s(), invalid pga mux %d\n", + __func__, mux_pga); + return -EINVAL; + } + /* if is VOW, then force 24dB */ + if (IS_VOW_BASE(mic_type)) + mic_gain_3 = 4; + dev_dbg(priv->dev, "%s(), event = 0x%x, mic_type %d, mic_gain_3 %d, mux_pga %d\n", + __func__, event, mic_type, mic_gain_3, mux_pga); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + if (IS_DCC_BASE(mic_type)) { + /* Audio 3 preamplifier DCC precharge */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON2, + RG_AUDPREAMP3DCPRECHARGE_MASK_SFT, + 0x1 << RG_AUDPREAMP3DCPRECHARGE_SFT); + } + break; + case SND_SOC_DAPM_POST_PMU: + /* set mic pga gain */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON2, + RG_AUDPREAMP3GAIN_MASK_SFT, + mic_gain_3 << RG_AUDPREAMP3GAIN_SFT); + + if (IS_DCC_BASE(mic_type)) { + /* 3 preamplifier DCCEN */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON2, + RG_AUDPREAMP3DCCEN_MASK_SFT, + 0x1 << RG_AUDPREAMP3DCCEN_SFT); + } + break; + case SND_SOC_DAPM_POST_PMD: + /* 3 preamplifier DCCEN */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON2, + RG_AUDPREAMP3DCCEN_MASK_SFT, + 0x0 << RG_AUDPREAMP3DCCEN_SFT); + break; + default: + break; + } + + return 0; +} + +static int mt_delay_250_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + switch (event) { + case SND_SOC_DAPM_POST_PMU: + case SND_SOC_DAPM_PRE_PMD: + usleep_range(250, 270); + break; + default: + break; + } + + return 0; +} + +static int mt_delay_100_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + switch (event) { + case SND_SOC_DAPM_POST_PMU: + case SND_SOC_DAPM_PRE_PMD: + usleep_range(100, 120); + break; + default: + break; + } + + return 0; +} + +static int mt_hp_pull_down_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + hp_pull_down(priv, true); + break; + case SND_SOC_DAPM_POST_PMD: + hp_pull_down(priv, false); + break; + default: + break; + } + + return 0; +} + +static int mt_hp_mute_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* Set HPR/HPL gain to -22dB */ + regmap_write(priv->regmap, MT6359_ZCD_CON2, DL_GAIN_N_22DB_REG); + break; + case SND_SOC_DAPM_POST_PMD: + /* Set HPL/HPR gain to mute */ + regmap_write(priv->regmap, MT6359_ZCD_CON2, DL_GAIN_N_40DB_REG); + break; + default: + break; + } + + return 0; +} + +static int mt_hp_damp_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + switch (event) { + case SND_SOC_DAPM_POST_PMD: + /* Disable HP damping circuit & HPN 4K load */ + /* reset CMFB PW level */ + regmap_write(priv->regmap, MT6359_AUDDEC_ANA_CON10, 0x0000); + break; + default: + break; + } + + return 0; +} + +static int mt_esd_resist_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* Reduce ESD resistance of AU_REFN */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON2, + RG_AUDREFN_DERES_EN_VAUDP32_MASK_SFT, + 0x1 << RG_AUDREFN_DERES_EN_VAUDP32_SFT); + usleep_range(250, 270); + break; + case SND_SOC_DAPM_POST_PMD: + /* Increase ESD resistance of AU_REFN */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON2, + RG_AUDREFN_DERES_EN_VAUDP32_MASK_SFT, 0x0); + break; + default: + break; + } + + return 0; +} + +static int mt_sdm_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* sdm audio fifo clock power on */ + regmap_update_bits(priv->regmap, MT6359_AFUNC_AUD_CON2, + 0xfffd, 0x0006); + /* scrambler clock on enable */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON0, 0xCBA1); + /* sdm power on */ + regmap_update_bits(priv->regmap, MT6359_AFUNC_AUD_CON2, + 0xfffd, 0x0003); + /* sdm fifo enable */ + regmap_update_bits(priv->regmap, MT6359_AFUNC_AUD_CON2, + 0xfffd, 0x000B); + break; + case SND_SOC_DAPM_POST_PMD: + /* DL scrambler disabling sequence */ + regmap_update_bits(priv->regmap, MT6359_AFUNC_AUD_CON2, + 0xfffd, 0x0000); + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON0, 0xcba0); + break; + default: + break; + } + return 0; +} + +static int mt_sdm_3rd_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + /* sdm audio fifo clock power on */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON11, 0x0006); + /* scrambler clock on enable */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON9, 0xCBA1); + /* sdm power on */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON11, 0x0003); + /* sdm fifo enable */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON11, 0x000B); + break; + case SND_SOC_DAPM_POST_PMD: + /* DL scrambler disabling sequence */ + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON11, 0x0000); + regmap_write(priv->regmap, MT6359_AFUNC_AUD_CON9, 0xcba0); + break; + default: + break; + } + return 0; +} + +static int mt_ncp_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + regmap_write(priv->regmap, MT6359_AFE_NCP_CFG0, 0xc800); + break; + default: + break; + } + return 0; +} + +static int mt_dl_gpio_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + playback_gpio_set(priv); + break; + case SND_SOC_DAPM_POST_PMD: + playback_gpio_reset(priv); + break; + default: + break; + } + return 0; +} + +static int mt_ul_gpio_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + capture_gpio_set(priv); + break; + case SND_SOC_DAPM_POST_PMD: + capture_gpio_reset(priv); + break; + default: + break; + } + return 0; +} + +/* DAPM Widgets */ +static const struct snd_soc_dapm_widget mt6359_dapm_widgets[] = { + /* Global Supply*/ + SND_SOC_DAPM_SUPPLY_S("CLK_BUF", SUPPLY_SEQ_CLK_BUF, + MT6359_DCXO_CW12, + RG_XO_AUDIO_EN_M_SFT, 0, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("LDO_VAUD18", SUPPLY_SEQ_LDO_VAUD18, + MT6359_LDO_VAUD18_CON0, + RG_LDO_VAUD18_EN_SFT, 0, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("AUDGLB", SUPPLY_SEQ_AUD_GLB, + MT6359_AUDDEC_ANA_CON13, + RG_AUDGLB_PWRDN_VA32_SFT, 1, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("AUDGLB_VOW", SUPPLY_SEQ_AUD_GLB_VOW, + MT6359_AUDDEC_ANA_CON13, + RG_AUDGLB_LP2_VOW_EN_VA32_SFT, 0, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("CLKSQ Audio", SUPPLY_SEQ_CLKSQ, + MT6359_AUDENC_ANA_CON23, + RG_CLKSQ_EN_SFT, 0, + mt_clksq_event, + SND_SOC_DAPM_PRE_PMU), + SND_SOC_DAPM_SUPPLY_S("AUDNCP_CK", SUPPLY_SEQ_TOP_CK, + MT6359_AUD_TOP_CKPDN_CON0, + RG_AUDNCP_CK_PDN_SFT, 1, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("ZCD13M_CK", SUPPLY_SEQ_TOP_CK, + MT6359_AUD_TOP_CKPDN_CON0, + RG_ZCD13M_CK_PDN_SFT, 1, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("AUD_CK", SUPPLY_SEQ_TOP_CK_LAST, + MT6359_AUD_TOP_CKPDN_CON0, + RG_AUD_CK_PDN_SFT, 1, + mt_delay_250_event, + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), + SND_SOC_DAPM_SUPPLY_S("AUDIF_CK", SUPPLY_SEQ_TOP_CK, + MT6359_AUD_TOP_CKPDN_CON0, + RG_AUDIF_CK_PDN_SFT, 1, NULL, 0), + /* vow */ + SND_SOC_DAPM_SUPPLY_S("VOW_AUD_LPW", SUPPLY_SEQ_VOW_AUD_LPW, + SND_SOC_NOPM, 0, 0, + mt_vow_aud_lpw_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SUPPLY_S("AUD_VOW", SUPPLY_SEQ_AUD_VOW, + MT6359_AUDENC_ANA_CON23, + RG_AUDIO_VOW_EN_SFT, 0, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("VOW_CLK", SUPPLY_SEQ_VOW_CLK, + MT6359_DCXO_CW11, + RG_XO_VOW_EN_SFT, 0, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("VOW_LDO", SUPPLY_SEQ_VOW_LDO, + MT6359_AUDENC_ANA_CON23, + RG_CLKSQ_EN_VOW_SFT, 0, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("VOW_DIG_CFG", SUPPLY_SEQ_VOW_DIG_CFG, + MT6359_AUD_TOP_CKPDN_CON0, + RG_VOW13M_CK_PDN_SFT, 1, + mt_vow_digital_cfg_event, + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), + SND_SOC_DAPM_SUPPLY_S("VOW_PERIODIC_CFG", SUPPLY_SEQ_VOW_PERIODIC_CFG, + SND_SOC_NOPM, 0, 0, + mt_vow_periodic_cfg_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + /* Digital Clock */ + SND_SOC_DAPM_SUPPLY_S("AUDIO_TOP_AFE_CTL", SUPPLY_SEQ_AUD_TOP_LAST, + MT6359_AUDIO_TOP_CON0, + PDN_AFE_CTL_SFT, 1, + mt_delay_250_event, + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), + SND_SOC_DAPM_SUPPLY_S("AUDIO_TOP_DAC_CTL", SUPPLY_SEQ_AUD_TOP, + MT6359_AUDIO_TOP_CON0, + PDN_DAC_CTL_SFT, 1, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("AUDIO_TOP_ADC_CTL", SUPPLY_SEQ_AUD_TOP, + MT6359_AUDIO_TOP_CON0, + PDN_ADC_CTL_SFT, 1, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("AUDIO_TOP_ADDA6_ADC_CTL", SUPPLY_SEQ_AUD_TOP, + MT6359_AUDIO_TOP_CON0, + PDN_ADDA6_ADC_CTL_SFT, 1, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("AUDIO_TOP_I2S_DL", SUPPLY_SEQ_AUD_TOP, + MT6359_AUDIO_TOP_CON0, + PDN_I2S_DL_CTL_SFT, 1, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("AUDIO_TOP_PWR_CLK", SUPPLY_SEQ_AUD_TOP, + MT6359_AUDIO_TOP_CON0, + PWR_CLK_DIS_CTL_SFT, 1, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("AUDIO_TOP_PDN_AFE_TESTMODEL", SUPPLY_SEQ_AUD_TOP, + MT6359_AUDIO_TOP_CON0, + PDN_AFE_TESTMODEL_CTL_SFT, 1, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("AUDIO_TOP_PDN_RESERVED", SUPPLY_SEQ_AUD_TOP, + MT6359_AUDIO_TOP_CON0, + PDN_RESERVED_SFT, 1, NULL, 0), + + SND_SOC_DAPM_SUPPLY_S("SDM", SUPPLY_SEQ_DL_SDM, + SND_SOC_NOPM, 0, 0, + mt_sdm_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SUPPLY_S("SDM_3RD", SUPPLY_SEQ_DL_SDM, + SND_SOC_NOPM, 0, 0, + mt_sdm_3rd_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + + /* ch123 share SDM FIFO CLK */ + SND_SOC_DAPM_SUPPLY_S("SDM_FIFO_CLK", SUPPLY_SEQ_DL_SDM_FIFO_CLK, + MT6359_AFUNC_AUD_CON2, + CCI_AFIFO_CLK_PWDB_SFT, 0, + NULL, 0), + + SND_SOC_DAPM_SUPPLY_S("NCP", SUPPLY_SEQ_DL_NCP, + MT6359_AFE_NCP_CFG0, + RG_NCP_ON_SFT, 0, + mt_ncp_event, + SND_SOC_DAPM_PRE_PMU), + + SND_SOC_DAPM_SUPPLY("DL Digital Clock", SND_SOC_NOPM, + 0, 0, NULL, 0), + SND_SOC_DAPM_SUPPLY("DL Digital Clock CH_1_2", SND_SOC_NOPM, + 0, 0, NULL, 0), + SND_SOC_DAPM_SUPPLY("DL Digital Clock CH_3", SND_SOC_NOPM, + 0, 0, NULL, 0), + + /* AFE ON */ + SND_SOC_DAPM_SUPPLY_S("AFE_ON", SUPPLY_SEQ_AFE, + MT6359_AFE_UL_DL_CON0, AFE_ON_SFT, 0, + NULL, 0), + + /* GPIO */ + SND_SOC_DAPM_SUPPLY_S("DL_GPIO", SUPPLY_SEQ_DL_GPIO, + SND_SOC_NOPM, 0, 0, + mt_dl_gpio_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SUPPLY_S("UL_GPIO", SUPPLY_SEQ_UL_GPIO, + SND_SOC_NOPM, 0, 0, + mt_ul_gpio_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + + /* AIF Rx*/ + SND_SOC_DAPM_AIF_IN("AIF_RX", "AIF1 Playback", 0, + SND_SOC_NOPM, 0, 0), + + SND_SOC_DAPM_AIF_IN("AIF2_RX", "AIF2 Playback", 0, + SND_SOC_NOPM, 0, 0), + + SND_SOC_DAPM_SUPPLY_S("AFE_DL_SRC", SUPPLY_SEQ_DL_SRC, + MT6359_AFE_DL_SRC2_CON0_L, + DL_2_SRC_ON_TMP_CTL_PRE_SFT, 0, + NULL, 0), + + /* DL Supply */ + SND_SOC_DAPM_SUPPLY("DL Power Supply", SND_SOC_NOPM, + 0, 0, NULL, 0), + + SND_SOC_DAPM_SUPPLY_S("ESD_RESIST", SUPPLY_SEQ_DL_ESD_RESIST, + SND_SOC_NOPM, + 0, 0, + mt_esd_resist_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SUPPLY_S("LDO", SUPPLY_SEQ_DL_LDO, + MT6359_AUDDEC_ANA_CON14, + RG_LCLDO_DEC_EN_VA32_SFT, 0, + NULL, 0), + SND_SOC_DAPM_SUPPLY_S("LDO_REMOTE", SUPPLY_SEQ_DL_LDO_REMOTE_SENSE, + MT6359_AUDDEC_ANA_CON14, + RG_LCLDO_DEC_REMOTE_SENSE_VA18_SFT, 0, + NULL, 0), + SND_SOC_DAPM_SUPPLY_S("NV_REGULATOR", SUPPLY_SEQ_DL_NV, + MT6359_AUDDEC_ANA_CON14, + RG_NVREG_EN_VAUDP32_SFT, 0, + mt_delay_100_event, SND_SOC_DAPM_POST_PMU), + SND_SOC_DAPM_SUPPLY_S("IBIST", SUPPLY_SEQ_DL_IBIST, + MT6359_AUDDEC_ANA_CON12, + RG_AUDIBIASPWRDN_VAUDP32_SFT, 1, + NULL, 0), + + /* DAC */ + SND_SOC_DAPM_MUX("DAC In Mux", SND_SOC_NOPM, 0, 0, &dac_in_mux_control), + + SND_SOC_DAPM_DAC("DACL", NULL, SND_SOC_NOPM, 0, 0), + + SND_SOC_DAPM_DAC("DACR", NULL, SND_SOC_NOPM, 0, 0), + + SND_SOC_DAPM_DAC("DAC_3RD", NULL, SND_SOC_NOPM, 0, 0), + + /* Headphone */ + SND_SOC_DAPM_MUX_E("HPL Mux", SND_SOC_NOPM, 0, 0, + &hpl_in_mux_control, + mt_hp_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), + + SND_SOC_DAPM_MUX_E("HPR Mux", SND_SOC_NOPM, 0, 0, + &hpr_in_mux_control, + mt_hp_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), + + SND_SOC_DAPM_SUPPLY("HP_Supply", SND_SOC_NOPM, + 0, 0, NULL, 0), + SND_SOC_DAPM_SUPPLY_S("HP_PULL_DOWN", SUPPLY_SEQ_HP_PULL_DOWN, + SND_SOC_NOPM, + 0, 0, + mt_hp_pull_down_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SUPPLY_S("HP_MUTE", SUPPLY_SEQ_HP_MUTE, + SND_SOC_NOPM, + 0, 0, + mt_hp_mute_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SUPPLY_S("HP_DAMP", SUPPLY_SEQ_HP_DAMPING_OFF_RESET_CMFB, + SND_SOC_NOPM, + 0, 0, + mt_hp_damp_event, + SND_SOC_DAPM_POST_PMD), + + /* Receiver */ + SND_SOC_DAPM_MUX_E("RCV Mux", SND_SOC_NOPM, 0, 0, + &rcv_in_mux_control, + mt_rcv_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), + + /* LOL */ + SND_SOC_DAPM_MUX_E("LOL Mux", SND_SOC_NOPM, 0, 0, + &lo_in_mux_control, + mt_lo_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), + + /* Outputs */ + SND_SOC_DAPM_OUTPUT("Receiver"), + SND_SOC_DAPM_OUTPUT("Headphone L"), + SND_SOC_DAPM_OUTPUT("Headphone R"), + SND_SOC_DAPM_OUTPUT("Headphone L Ext Spk Amp"), + SND_SOC_DAPM_OUTPUT("Headphone R Ext Spk Amp"), + SND_SOC_DAPM_OUTPUT("LINEOUT L"), + + /* SGEN */ + SND_SOC_DAPM_SUPPLY("SGEN DL Enable", MT6359_AFE_SGEN_CFG0, + SGEN_DAC_EN_CTL_SFT, 0, NULL, 0), + SND_SOC_DAPM_SUPPLY("SGEN MUTE", MT6359_AFE_SGEN_CFG0, + SGEN_MUTE_SW_CTL_SFT, 1, + mt_sgen_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SUPPLY("SGEN DL SRC", MT6359_AFE_DL_SRC2_CON0_L, + DL_2_SRC_ON_TMP_CTL_PRE_SFT, 0, NULL, 0), + + SND_SOC_DAPM_INPUT("SGEN DL"), + + /* Uplinks */ + SND_SOC_DAPM_AIF_OUT("AIF1TX", "AIF1 Capture", 0, + SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("AIF2TX", "AIF2 Capture", 0, + SND_SOC_NOPM, 0, 0), + + SND_SOC_DAPM_SUPPLY_S("ADC_CLKGEN", SUPPLY_SEQ_ADC_CLKGEN, + SND_SOC_NOPM, 0, 0, + mt_adc_clk_gen_event, + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), + + SND_SOC_DAPM_SUPPLY_S("DCC_CLK", SUPPLY_SEQ_DCC_CLK, + SND_SOC_NOPM, 0, 0, + mt_dcc_clk_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + + /* Uplinks MUX */ + SND_SOC_DAPM_MUX("AIF Out Mux", SND_SOC_NOPM, 0, 0, + &aif_out_mux_control), + + SND_SOC_DAPM_MUX("AIF2 Out Mux", SND_SOC_NOPM, 0, 0, + &aif2_out_mux_control), + + SND_SOC_DAPM_SUPPLY("AIFTX_Supply", SND_SOC_NOPM, 0, 0, NULL, 0), + + SND_SOC_DAPM_SUPPLY_S("MTKAIF_TX", SUPPLY_SEQ_UL_MTKAIF, + SND_SOC_NOPM, 0, 0, + mt_mtkaif_tx_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + + SND_SOC_DAPM_SUPPLY_S("UL_SRC", SUPPLY_SEQ_UL_SRC, + MT6359_AFE_UL_SRC_CON0_L, + UL_SRC_ON_TMP_CTL_SFT, 0, + NULL, 0), + + SND_SOC_DAPM_SUPPLY_S("UL_SRC_DMIC", SUPPLY_SEQ_UL_SRC_DMIC, + SND_SOC_NOPM, 0, 0, + mt_ul_src_dmic_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + + SND_SOC_DAPM_SUPPLY_S("UL_SRC_34", SUPPLY_SEQ_UL_SRC, + MT6359_AFE_ADDA6_UL_SRC_CON0_L, + ADDA6_UL_SRC_ON_TMP_CTL_SFT, 0, + NULL, 0), + + SND_SOC_DAPM_SUPPLY_S("UL_SRC_34_DMIC", SUPPLY_SEQ_UL_SRC_DMIC, + SND_SOC_NOPM, 0, 0, + mt_ul_src_34_dmic_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + + SND_SOC_DAPM_MUX("MISO0_MUX", SND_SOC_NOPM, 0, 0, &miso0_mux_control), + SND_SOC_DAPM_MUX("MISO1_MUX", SND_SOC_NOPM, 0, 0, &miso1_mux_control), + SND_SOC_DAPM_MUX("MISO2_MUX", SND_SOC_NOPM, 0, 0, &miso2_mux_control), + + SND_SOC_DAPM_MUX("UL_SRC_MUX", SND_SOC_NOPM, 0, 0, + &ul_src_mux_control), + SND_SOC_DAPM_MUX("UL2_SRC_MUX", SND_SOC_NOPM, 0, 0, + &ul2_src_mux_control), + SND_SOC_DAPM_MUX("VOW_UL_SRC_MUX", SND_SOC_NOPM, 0, 0, + &vow_ul_src_mux_control), + + SND_SOC_DAPM_MUX("DMIC0_MUX", SND_SOC_NOPM, 0, 0, &dmic0_mux_control), + SND_SOC_DAPM_MUX("DMIC1_MUX", SND_SOC_NOPM, 0, 0, &dmic1_mux_control), + SND_SOC_DAPM_MUX("DMIC2_MUX", SND_SOC_NOPM, 0, 0, &dmic2_mux_control), + + SND_SOC_DAPM_MUX("VOW_AMIC0_MUX", SND_SOC_NOPM, 0, 0, + &vow_amic0_mux_control), + SND_SOC_DAPM_MUX("VOW_AMIC1_MUX", SND_SOC_NOPM, 0, 0, + &vow_amic1_mux_control), + + SND_SOC_DAPM_MUX_E("ADC_L_Mux", SND_SOC_NOPM, 0, 0, + &adc_left_mux_control, NULL, 0), + SND_SOC_DAPM_MUX_E("ADC_R_Mux", SND_SOC_NOPM, 0, 0, + &adc_right_mux_control, NULL, 0), + SND_SOC_DAPM_MUX_E("ADC_3_Mux", SND_SOC_NOPM, 0, 0, + &adc_3_mux_control, NULL, 0), + + SND_SOC_DAPM_ADC("ADC_L", NULL, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_ADC("ADC_R", NULL, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_ADC("ADC_3", NULL, SND_SOC_NOPM, 0, 0), + + SND_SOC_DAPM_SUPPLY_S("ADC_L_EN", SUPPLY_SEQ_UL_ADC, + MT6359_AUDENC_ANA_CON0, + RG_AUDADCLPWRUP_SFT, 0, + mt_adc_l_event, + SND_SOC_DAPM_POST_PMU), + SND_SOC_DAPM_SUPPLY_S("ADC_R_EN", SUPPLY_SEQ_UL_ADC, + MT6359_AUDENC_ANA_CON1, + RG_AUDADCRPWRUP_SFT, 0, + mt_adc_r_event, + SND_SOC_DAPM_POST_PMU), + SND_SOC_DAPM_SUPPLY_S("ADC_3_EN", SUPPLY_SEQ_UL_ADC, + MT6359_AUDENC_ANA_CON2, + RG_AUDADC3PWRUP_SFT, 0, + mt_adc_3_event, + SND_SOC_DAPM_POST_PMU), + + SND_SOC_DAPM_MUX_E("PGA_L_Mux", SND_SOC_NOPM, 0, 0, + &pga_left_mux_control, + mt_pga_l_mux_event, + SND_SOC_DAPM_WILL_PMU), + SND_SOC_DAPM_MUX_E("PGA_R_Mux", SND_SOC_NOPM, 0, 0, + &pga_right_mux_control, + mt_pga_r_mux_event, + SND_SOC_DAPM_WILL_PMU), + SND_SOC_DAPM_MUX_E("PGA_3_Mux", SND_SOC_NOPM, 0, 0, + &pga_3_mux_control, + mt_pga_3_mux_event, + SND_SOC_DAPM_WILL_PMU), + + SND_SOC_DAPM_PGA("PGA_L", SND_SOC_NOPM, 0, 0, NULL, 0), + SND_SOC_DAPM_PGA("PGA_R", SND_SOC_NOPM, 0, 0, NULL, 0), + SND_SOC_DAPM_PGA("PGA_3", SND_SOC_NOPM, 0, 0, NULL, 0), + + SND_SOC_DAPM_SUPPLY_S("PGA_L_EN", SUPPLY_SEQ_UL_PGA, + MT6359_AUDENC_ANA_CON0, + RG_AUDPREAMPLON_SFT, 0, + mt_pga_l_event, + SND_SOC_DAPM_PRE_PMU | + SND_SOC_DAPM_POST_PMU | + SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SUPPLY_S("PGA_R_EN", SUPPLY_SEQ_UL_PGA, + MT6359_AUDENC_ANA_CON1, + RG_AUDPREAMPRON_SFT, 0, + mt_pga_r_event, + SND_SOC_DAPM_PRE_PMU | + SND_SOC_DAPM_POST_PMU | + SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SUPPLY_S("PGA_3_EN", SUPPLY_SEQ_UL_PGA, + MT6359_AUDENC_ANA_CON2, + RG_AUDPREAMP3ON_SFT, 0, + mt_pga_3_event, + SND_SOC_DAPM_PRE_PMU | + SND_SOC_DAPM_POST_PMU | + SND_SOC_DAPM_POST_PMD), + + /* UL input */ + SND_SOC_DAPM_INPUT("AIN0"), + SND_SOC_DAPM_INPUT("AIN1"), + SND_SOC_DAPM_INPUT("AIN2"), + SND_SOC_DAPM_INPUT("AIN3"), + + SND_SOC_DAPM_INPUT("AIN0_DMIC"), + SND_SOC_DAPM_INPUT("AIN2_DMIC"), + SND_SOC_DAPM_INPUT("AIN3_DMIC"), + + /* mic bias */ + SND_SOC_DAPM_SUPPLY_S("MIC_BIAS_0", SUPPLY_SEQ_MIC_BIAS, + MT6359_AUDENC_ANA_CON15, + RG_AUDPWDBMICBIAS0_SFT, 0, + mt_mic_bias_0_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SUPPLY_S("MIC_BIAS_1", SUPPLY_SEQ_MIC_BIAS, + MT6359_AUDENC_ANA_CON16, + RG_AUDPWDBMICBIAS1_SFT, 0, + mt_mic_bias_1_event, + SND_SOC_DAPM_PRE_PMU), + SND_SOC_DAPM_SUPPLY_S("MIC_BIAS_2", SUPPLY_SEQ_MIC_BIAS, + MT6359_AUDENC_ANA_CON17, + RG_AUDPWDBMICBIAS2_SFT, 0, + mt_mic_bias_2_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + + /* dmic */ + SND_SOC_DAPM_SUPPLY_S("DMIC_0", SUPPLY_SEQ_DMIC, + MT6359_AUDENC_ANA_CON13, + RG_AUDDIGMICEN_SFT, 0, + NULL, 0), + SND_SOC_DAPM_SUPPLY_S("DMIC_1", SUPPLY_SEQ_DMIC, + MT6359_AUDENC_ANA_CON14, + RG_AUDDIGMIC1EN_SFT, 0, + NULL, 0), + + /* VOW */ + SND_SOC_DAPM_AIF_OUT_E("VOW TX", "VOW Capture", 0, + SND_SOC_NOPM, 0, 0, + mt_vow_out_event, + SND_SOC_DAPM_WILL_PMU | + SND_SOC_DAPM_PRE_PMU | + SND_SOC_DAPM_POST_PMD), +}; + +static int mt_vow_amic_connect(struct snd_soc_dapm_widget *source, + struct snd_soc_dapm_widget *sink) +{ + struct snd_soc_dapm_widget *w = sink; + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + if (IS_VOW_AMIC_BASE(priv->mux_select[MUX_MIC_TYPE_0]) || + IS_VOW_AMIC_BASE(priv->mux_select[MUX_MIC_TYPE_1]) || + IS_VOW_AMIC_BASE(priv->mux_select[MUX_MIC_TYPE_2])) + return 1; + else + return 0; +} + +static int mt_vow_amic_dcc_connect(struct snd_soc_dapm_widget *source, + struct snd_soc_dapm_widget *sink) +{ + struct snd_soc_dapm_widget *w = sink; + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + if (IS_VOW_DCC_BASE(priv->mux_select[MUX_MIC_TYPE_0]) || + IS_VOW_DCC_BASE(priv->mux_select[MUX_MIC_TYPE_1]) || + IS_VOW_DCC_BASE(priv->mux_select[MUX_MIC_TYPE_2])) + return 1; + else + return 0; +} + +static int mt_dcc_clk_connect(struct snd_soc_dapm_widget *source, + struct snd_soc_dapm_widget *sink) +{ + struct snd_soc_dapm_widget *w = sink; + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + + if (IS_DCC_BASE(priv->mux_select[MUX_MIC_TYPE_0]) || + IS_DCC_BASE(priv->mux_select[MUX_MIC_TYPE_1]) || + IS_DCC_BASE(priv->mux_select[MUX_MIC_TYPE_2])) + return 1; + else + return 0; +} + +static const struct snd_soc_dapm_route mt6359_dapm_routes[] = { + /* Capture */ + {"AIFTX_Supply", NULL, "CLK_BUF"}, + {"AIFTX_Supply", NULL, "LDO_VAUD18"}, + {"AIFTX_Supply", NULL, "AUDGLB"}, + {"AIFTX_Supply", NULL, "CLKSQ Audio"}, + {"AIFTX_Supply", NULL, "AUD_CK"}, + {"AIFTX_Supply", NULL, "AUDIF_CK"}, + {"AIFTX_Supply", NULL, "AUDIO_TOP_AFE_CTL"}, + {"AIFTX_Supply", NULL, "AUDIO_TOP_PWR_CLK"}, + {"AIFTX_Supply", NULL, "AUDIO_TOP_PDN_RESERVED"}, + {"AIFTX_Supply", NULL, "AUDIO_TOP_I2S_DL"}, + /* + * *_ADC_CTL should enable only if UL_SRC in use, + * but dm ck may be needed even UL_SRC_x not in use + */ + {"AIFTX_Supply", NULL, "AUDIO_TOP_ADC_CTL"}, + {"AIFTX_Supply", NULL, "AUDIO_TOP_ADDA6_ADC_CTL"}, + {"AIFTX_Supply", NULL, "AFE_ON"}, + + /* ul ch 12 */ + {"AIF1TX", NULL, "AIF Out Mux"}, + {"AIF1TX", NULL, "AIFTX_Supply"}, + {"AIF1TX", NULL, "UL_GPIO"}, + {"AIF1TX", NULL, "MTKAIF_TX"}, + + {"AIF2TX", NULL, "AIF2 Out Mux"}, + {"AIF2TX", NULL, "AIFTX_Supply"}, + {"AIF2TX", NULL, "UL_GPIO"}, + {"AIF2TX", NULL, "MTKAIF_TX"}, + + {"AIF Out Mux", "Normal Path", "MISO0_MUX"}, + {"AIF Out Mux", "Normal Path", "MISO1_MUX"}, + {"AIF2 Out Mux", "Normal Path", "MISO2_MUX"}, + + {"MISO0_MUX", "UL1_CH1", "UL_SRC_MUX"}, + {"MISO0_MUX", "UL1_CH2", "UL_SRC_MUX"}, + {"MISO0_MUX", "UL2_CH1", "UL2_SRC_MUX"}, + {"MISO0_MUX", "UL2_CH2", "UL2_SRC_MUX"}, + + {"MISO1_MUX", "UL1_CH1", "UL_SRC_MUX"}, + {"MISO1_MUX", "UL1_CH2", "UL_SRC_MUX"}, + {"MISO1_MUX", "UL2_CH1", "UL2_SRC_MUX"}, + {"MISO1_MUX", "UL2_CH2", "UL2_SRC_MUX"}, + + {"MISO2_MUX", "UL1_CH1", "UL_SRC_MUX"}, + {"MISO2_MUX", "UL1_CH2", "UL_SRC_MUX"}, + {"MISO2_MUX", "UL2_CH1", "UL2_SRC_MUX"}, + {"MISO2_MUX", "UL2_CH2", "UL2_SRC_MUX"}, + + {"UL_SRC_MUX", "AMIC", "ADC_L"}, + {"UL_SRC_MUX", "AMIC", "ADC_R"}, + {"UL_SRC_MUX", "DMIC", "DMIC0_MUX"}, + {"UL_SRC_MUX", "DMIC", "DMIC1_MUX"}, + {"UL_SRC_MUX", NULL, "UL_SRC"}, + + {"UL2_SRC_MUX", "AMIC", "ADC_3"}, + {"UL2_SRC_MUX", "DMIC", "DMIC2_MUX"}, + {"UL2_SRC_MUX", NULL, "UL_SRC_34"}, + + {"DMIC0_MUX", "DMIC_DATA0", "AIN0_DMIC"}, + {"DMIC0_MUX", "DMIC_DATA1_L", "AIN2_DMIC"}, + {"DMIC0_MUX", "DMIC_DATA1_L_1", "AIN2_DMIC"}, + {"DMIC0_MUX", "DMIC_DATA1_R", "AIN3_DMIC"}, + {"DMIC1_MUX", "DMIC_DATA0", "AIN0_DMIC"}, + {"DMIC1_MUX", "DMIC_DATA1_L", "AIN2_DMIC"}, + {"DMIC1_MUX", "DMIC_DATA1_L_1", "AIN2_DMIC"}, + {"DMIC1_MUX", "DMIC_DATA1_R", "AIN3_DMIC"}, + {"DMIC2_MUX", "DMIC_DATA0", "AIN0_DMIC"}, + {"DMIC2_MUX", "DMIC_DATA1_L", "AIN2_DMIC"}, + {"DMIC2_MUX", "DMIC_DATA1_L_1", "AIN2_DMIC"}, + {"DMIC2_MUX", "DMIC_DATA1_R", "AIN3_DMIC"}, + + {"DMIC0_MUX", NULL, "UL_SRC_DMIC"}, + {"DMIC1_MUX", NULL, "UL_SRC_DMIC"}, + {"DMIC2_MUX", NULL, "UL_SRC_34_DMIC"}, + + {"AIN0_DMIC", NULL, "DMIC_0"}, + {"AIN2_DMIC", NULL, "DMIC_1"}, + {"AIN3_DMIC", NULL, "DMIC_1"}, + {"AIN2_DMIC", NULL, "MIC_BIAS_2"}, + {"AIN3_DMIC", NULL, "MIC_BIAS_2"}, + + /* adc */ + {"ADC_L", NULL, "ADC_L_Mux"}, + {"ADC_L", NULL, "ADC_CLKGEN"}, + {"ADC_L", NULL, "ADC_L_EN"}, + {"ADC_R", NULL, "ADC_R_Mux"}, + {"ADC_R", NULL, "ADC_CLKGEN"}, + {"ADC_R", NULL, "ADC_R_EN"}, + /* + * amic fifo ch1/2 clk from ADC_L, + * enable ADC_L even use ADC_R only + */ + {"ADC_R", NULL, "ADC_L_EN"}, + {"ADC_3", NULL, "ADC_3_Mux"}, + {"ADC_3", NULL, "ADC_CLKGEN"}, + {"ADC_3", NULL, "ADC_3_EN"}, + + {"ADC_L_Mux", "Left Preamplifier", "PGA_L"}, + {"ADC_R_Mux", "Right Preamplifier", "PGA_R"}, + {"ADC_3_Mux", "Preamplifier", "PGA_3"}, + + {"PGA_L", NULL, "PGA_L_Mux"}, + {"PGA_L", NULL, "PGA_L_EN"}, + {"PGA_R", NULL, "PGA_R_Mux"}, + {"PGA_R", NULL, "PGA_R_EN"}, + {"PGA_3", NULL, "PGA_3_Mux"}, + {"PGA_3", NULL, "PGA_3_EN"}, + + {"PGA_L", NULL, "DCC_CLK", mt_dcc_clk_connect}, + {"PGA_R", NULL, "DCC_CLK", mt_dcc_clk_connect}, + {"PGA_3", NULL, "DCC_CLK", mt_dcc_clk_connect}, + + {"PGA_L_Mux", "AIN0", "AIN0"}, + {"PGA_L_Mux", "AIN1", "AIN1"}, + + {"PGA_R_Mux", "AIN0", "AIN0"}, + {"PGA_R_Mux", "AIN2", "AIN2"}, + {"PGA_R_Mux", "AIN3", "AIN3"}, + + {"PGA_3_Mux", "AIN2", "AIN2"}, + {"PGA_3_Mux", "AIN3", "AIN3"}, + + {"AIN0", NULL, "MIC_BIAS_0"}, + {"AIN1", NULL, "MIC_BIAS_1"}, + {"AIN2", NULL, "MIC_BIAS_0"}, + {"AIN2", NULL, "MIC_BIAS_2"}, + {"AIN3", NULL, "MIC_BIAS_2"}, + + /* DL Supply */ + {"DL Power Supply", NULL, "CLK_BUF"}, + {"DL Power Supply", NULL, "LDO_VAUD18"}, + {"DL Power Supply", NULL, "AUDGLB"}, + {"DL Power Supply", NULL, "CLKSQ Audio"}, + + {"DL Power Supply", NULL, "AUDNCP_CK"}, + {"DL Power Supply", NULL, "ZCD13M_CK"}, + {"DL Power Supply", NULL, "AUD_CK"}, + {"DL Power Supply", NULL, "AUDIF_CK"}, + + {"DL Power Supply", NULL, "ESD_RESIST"}, + {"DL Power Supply", NULL, "LDO"}, + {"DL Power Supply", NULL, "LDO_REMOTE"}, + {"DL Power Supply", NULL, "NV_REGULATOR"}, + {"DL Power Supply", NULL, "IBIST"}, + + /* DL Digital Supply */ + {"DL Digital Clock", NULL, "AUDIO_TOP_AFE_CTL"}, + {"DL Digital Clock", NULL, "AUDIO_TOP_DAC_CTL"}, + {"DL Digital Clock", NULL, "AUDIO_TOP_PWR_CLK"}, + {"DL Digital Clock", NULL, "AUDIO_TOP_PDN_RESERVED"}, + + {"DL Digital Clock", NULL, "SDM_FIFO_CLK"}, + {"DL Digital Clock", NULL, "NCP"}, + + {"DL Digital Clock", NULL, "AFE_ON"}, + {"DL Digital Clock", NULL, "AFE_DL_SRC"}, + + {"DL Digital Clock CH_1_2", NULL, "DL Digital Clock"}, + {"DL Digital Clock CH_1_2", NULL, "SDM"}, + + {"DL Digital Clock CH_3", NULL, "DL Digital Clock"}, + {"DL Digital Clock CH_3", NULL, "SDM_3RD"}, + + {"AIF_RX", NULL, "DL Digital Clock CH_1_2"}, + {"AIF_RX", NULL, "DL_GPIO"}, + + {"AIF2_RX", NULL, "DL Digital Clock CH_3"}, + {"AIF2_RX", NULL, "DL_GPIO"}, + + /* DL Path */ + {"DAC In Mux", "Normal Path", "AIF_RX"}, + {"DAC In Mux", "Sgen", "SGEN DL"}, + {"SGEN DL", NULL, "SGEN DL SRC"}, + {"SGEN DL", NULL, "SGEN MUTE"}, + {"SGEN DL", NULL, "SGEN DL Enable"}, + {"SGEN DL", NULL, "DL Digital Clock CH_1_2"}, + {"SGEN DL", NULL, "DL Digital Clock CH_3"}, + {"SGEN DL", NULL, "AUDIO_TOP_PDN_AFE_TESTMODEL"}, + + {"DACL", NULL, "DAC In Mux"}, + {"DACL", NULL, "DL Power Supply"}, + + {"DACR", NULL, "DAC In Mux"}, + {"DACR", NULL, "DL Power Supply"}, + + /* DAC 3RD */ + {"DAC In Mux", "Normal Path", "AIF2_RX"}, + {"DAC_3RD", NULL, "DAC In Mux"}, + {"DAC_3RD", NULL, "DL Power Supply"}, + + /* Lineout Path */ + {"LOL Mux", "Playback", "DAC_3RD"}, + {"LINEOUT L", NULL, "LOL Mux"}, + + /* Headphone Path */ + {"HP_Supply", NULL, "HP_PULL_DOWN"}, + {"HP_Supply", NULL, "HP_MUTE"}, + {"HP_Supply", NULL, "HP_DAMP"}, + {"HPL Mux", NULL, "HP_Supply"}, + {"HPR Mux", NULL, "HP_Supply"}, + + {"HPL Mux", "Audio Playback", "DACL"}, + {"HPR Mux", "Audio Playback", "DACR"}, + {"HPL Mux", "HP Impedance", "DACL"}, + {"HPR Mux", "HP Impedance", "DACR"}, + {"HPL Mux", "LoudSPK Playback", "DACL"}, + {"HPR Mux", "LoudSPK Playback", "DACR"}, + + {"Headphone L", NULL, "HPL Mux"}, + {"Headphone R", NULL, "HPR Mux"}, + {"Headphone L Ext Spk Amp", NULL, "HPL Mux"}, + {"Headphone R Ext Spk Amp", NULL, "HPR Mux"}, + + /* Receiver Path */ + {"RCV Mux", "Voice Playback", "DACL"}, + {"Receiver", NULL, "RCV Mux"}, + + /* VOW */ + {"VOW TX", NULL, "VOW_UL_SRC_MUX"}, + {"VOW TX", NULL, "CLK_BUF"}, + {"VOW TX", NULL, "LDO_VAUD18"}, + {"VOW TX", NULL, "AUDGLB"}, + {"VOW TX", NULL, "AUDGLB_VOW", mt_vow_amic_connect}, + {"VOW TX", NULL, "AUD_CK", mt_vow_amic_connect}, + {"VOW TX", NULL, "VOW_AUD_LPW", mt_vow_amic_connect}, + {"VOW TX", NULL, "VOW_CLK"}, + {"VOW TX", NULL, "AUD_VOW"}, + {"VOW TX", NULL, "VOW_LDO", mt_vow_amic_connect}, + {"VOW TX", NULL, "VOW_DIG_CFG"}, + {"VOW TX", NULL, "VOW_PERIODIC_CFG", mt_vow_amic_dcc_connect}, + {"VOW_UL_SRC_MUX", "AMIC", "VOW_AMIC0_MUX"}, + {"VOW_UL_SRC_MUX", "AMIC", "VOW_AMIC1_MUX"}, + {"VOW_UL_SRC_MUX", "DMIC", "DMIC0_MUX"}, + {"VOW_UL_SRC_MUX", "DMIC", "DMIC1_MUX"}, + {"VOW_AMIC0_MUX", "ADC_L", "ADC_L"}, + {"VOW_AMIC0_MUX", "ADC_R", "ADC_R"}, + {"VOW_AMIC0_MUX", "ADC_T", "ADC_3"}, + {"VOW_AMIC1_MUX", "ADC_L", "ADC_L"}, + {"VOW_AMIC1_MUX", "ADC_R", "ADC_R"}, + {"VOW_AMIC1_MUX", "ADC_T", "ADC_3"}, +}; + +static int mt6359_codec_dai_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params, + struct snd_soc_dai *dai) +{ + struct snd_soc_component *cmpnt = dai->component; + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int rate = params_rate(params); + int id = dai->id; + + dev_info(priv->dev, "%s(), id %d, substream->stream %d, rate %d, number %d\n", + __func__, + id, + substream->stream, + rate, + substream->number); + + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) + priv->dl_rate[id] = rate; + else if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) + priv->ul_rate[id] = rate; + + return 0; +} + +static const struct snd_soc_dai_ops mt6359_codec_dai_ops = { + .hw_params = mt6359_codec_dai_hw_params, +}; + +static int mt6359_codec_dai_vow_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params, + struct snd_soc_dai *dai) +{ + struct snd_soc_component *cmpnt = dai->component; + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int channel = params_channels(params); + + dev_info(priv->dev, "%s(), substream->stream %d, channel %d, number %d\n", + __func__, + substream->stream, + channel, + substream->number); + + priv->vow_channel = channel; + + return 0; +} + +static const struct snd_soc_dai_ops mt6359_codec_dai_vow_ops = { + .hw_params = mt6359_codec_dai_vow_hw_params, +}; + +#define MT6359_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE |\ + SNDRV_PCM_FMTBIT_U16_LE | SNDRV_PCM_FMTBIT_U16_BE |\ + SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_BE |\ + SNDRV_PCM_FMTBIT_U24_LE | SNDRV_PCM_FMTBIT_U24_BE |\ + SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE |\ + SNDRV_PCM_FMTBIT_U32_LE | SNDRV_PCM_FMTBIT_U32_BE) + +static struct snd_soc_dai_driver mt6359_dai_driver[] = { + { + .id = MT6359_AIF_1, + .name = "mt6359-snd-codec-aif1", + .playback = { + .stream_name = "AIF1 Playback", + .channels_min = 1, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000_48000 | + SNDRV_PCM_RATE_96000 | + SNDRV_PCM_RATE_192000, + .formats = MT6359_FORMATS, + }, + .capture = { + .stream_name = "AIF1 Capture", + .channels_min = 1, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000 | + SNDRV_PCM_RATE_16000 | + SNDRV_PCM_RATE_32000 | + SNDRV_PCM_RATE_48000 | + SNDRV_PCM_RATE_96000 | + SNDRV_PCM_RATE_192000, + .formats = MT6359_FORMATS, + }, + .ops = &mt6359_codec_dai_ops, + }, + { + .id = MT6359_AIF_2, + .name = "mt6359-snd-codec-aif2", + .playback = { + .stream_name = "AIF2 Playback", + .channels_min = 1, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000_48000 | + SNDRV_PCM_RATE_96000 | + SNDRV_PCM_RATE_192000, + .formats = MT6359_FORMATS, + }, + .capture = { + .stream_name = "AIF2 Capture", + .channels_min = 1, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000 | + SNDRV_PCM_RATE_16000 | + SNDRV_PCM_RATE_32000 | + SNDRV_PCM_RATE_48000, + .formats = MT6359_FORMATS, + }, + .ops = &mt6359_codec_dai_ops, + }, + { + .id = MT6359_AIF_VOW, + .name = "mt6359-snd-codec-vow", + .capture = { + .stream_name = "VOW Capture", + .channels_min = 1, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_16000, + .formats = MT6359_FORMATS, + }, + .ops = &mt6359_codec_dai_vow_ops, + }, +}; + +/* vow control */ +static void *get_vow_coeff_by_name(struct mt6359_priv *priv, + const char *name) +{ + if (strcmp(name, "Audio VOWCFG0 Data") == 0) + return &priv->reg_afe_vow_vad_cfg0; + else if (strcmp(name, "Audio VOWCFG1 Data") == 0) + return &priv->reg_afe_vow_vad_cfg1; + else if (strcmp(name, "Audio VOWCFG2 Data") == 0) + return &priv->reg_afe_vow_vad_cfg2; + else if (strcmp(name, "Audio VOWCFG3 Data") == 0) + return &priv->reg_afe_vow_vad_cfg3; + else if (strcmp(name, "Audio VOWCFG4 Data") == 0) + return &priv->reg_afe_vow_vad_cfg4; + else if (strcmp(name, "Audio VOWCFG5 Data") == 0) + return &priv->reg_afe_vow_vad_cfg5; + else if (strcmp(name, "Audio_VOW_Periodic") == 0) + return &priv->reg_afe_vow_periodic; + else if (strcmp(name, "Audio_VOW_Periodic_Param") == 0) + return (void *)&priv->vow_periodic_param; + else + return NULL; +} + +static int audio_vow_cfg_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_component *cmpnt = snd_soc_kcontrol_component(kcontrol); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + int *vow_cfg; + + vow_cfg = (int *)get_vow_coeff_by_name(priv, kcontrol->id.name); + if (!vow_cfg) { + dev_err(priv->dev, "%s(), vow_cfg == NULL\n", __func__); + return -EINVAL; + } + dev_info(priv->dev, "%s(), %s = 0x%x\n", + __func__, kcontrol->id.name, *vow_cfg); + + ucontrol->value.integer.value[0] = *vow_cfg; + return 0; +} + +static int audio_vow_cfg_set(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_component *cmpnt = snd_soc_kcontrol_component(kcontrol); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + int index = ucontrol->value.integer.value[0]; + int *vow_cfg; + + vow_cfg = (int *)get_vow_coeff_by_name(priv, kcontrol->id.name); + if (!vow_cfg) { + dev_err(priv->dev, "%s(), vow_cfg == NULL\n", __func__); + return -EINVAL; + } + dev_info(priv->dev, "%s(), %s = 0x%x\n", + __func__, kcontrol->id.name, index); + + *vow_cfg = index; + return 0; +} + +static int audio_vow_periodic_parm_get(struct snd_kcontrol *kcontrol, + unsigned int __user *data, + unsigned int size) +{ + return 0; +} + +static int audio_vow_periodic_parm_set(struct snd_kcontrol *kcontrol, + const unsigned int __user *data, + unsigned int size) +{ + int ret = 0; + struct snd_soc_component *cmpnt = snd_soc_kcontrol_component(kcontrol); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + struct mt6359_vow_periodic_on_off_data *vow_param_cfg; + + dev_info(priv->dev, "%s(), size = %d\n", __func__, size); + if (size > sizeof(struct mt6359_vow_periodic_on_off_data)) + return -EINVAL; + vow_param_cfg = (struct mt6359_vow_periodic_on_off_data *) + get_vow_coeff_by_name(priv, kcontrol->id.name); + if (copy_from_user(vow_param_cfg, data, + sizeof(struct mt6359_vow_periodic_on_off_data))) { + dev_info(priv->dev, "%s(),Fail copy to user Ptr:%p,r_sz:%zu\n", + __func__, + data, + sizeof(struct mt6359_vow_periodic_on_off_data)); + ret = -EFAULT; + } + return ret; +} + +/* vow control */ +static const struct snd_kcontrol_new mt6359_snd_vow_controls[] = { + SOC_SINGLE_EXT("Audio VOWCFG0 Data", + SND_SOC_NOPM, 0, 0x80000, 0, + audio_vow_cfg_get, audio_vow_cfg_set), + SOC_SINGLE_EXT("Audio VOWCFG1 Data", + SND_SOC_NOPM, 0, 0x80000, 0, + audio_vow_cfg_get, audio_vow_cfg_set), + SOC_SINGLE_EXT("Audio VOWCFG2 Data", + SND_SOC_NOPM, 0, 0x80000, 0, + audio_vow_cfg_get, audio_vow_cfg_set), + SOC_SINGLE_EXT("Audio VOWCFG3 Data", + SND_SOC_NOPM, 0, 0x80000, 0, + audio_vow_cfg_get, audio_vow_cfg_set), + SOC_SINGLE_EXT("Audio VOWCFG4 Data", + SND_SOC_NOPM, 0, 0x80000, 0, + audio_vow_cfg_get, audio_vow_cfg_set), + SOC_SINGLE_EXT("Audio VOWCFG5 Data", + SND_SOC_NOPM, 0, 0x80000, 0, + audio_vow_cfg_get, audio_vow_cfg_set), + SOC_SINGLE_EXT("Audio_VOW_Periodic", + SND_SOC_NOPM, 0, 0x80000, 0, + audio_vow_cfg_get, audio_vow_cfg_set), + SND_SOC_BYTES_TLV("Audio_VOW_Periodic_Param", + sizeof(struct mt6359_vow_periodic_on_off_data), + audio_vow_periodic_parm_get, + audio_vow_periodic_parm_set), +}; + +static int mt6359_codec_init_reg(struct mt6359_priv *priv) +{ + int ret = 0; + + /* enable clk buf */ + regmap_update_bits(priv->regmap, MT6359_DCXO_CW12, + 0x1 << RG_XO_AUDIO_EN_M_SFT, + 0x1 << RG_XO_AUDIO_EN_M_SFT); + + /* set those not controlled by dapm widget */ + + /* audio clk source from internal dcxo */ + regmap_update_bits(priv->regmap, MT6359_AUDENC_ANA_CON23, + RG_CLKSQ_IN_SEL_TEST_MASK_SFT, + 0x0); + + /* Disable HeadphoneL/HeadphoneR short circuit protection */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON0, + RG_AUDHPLSCDISABLE_VAUDP32_MASK_SFT, + 0x1 << RG_AUDHPLSCDISABLE_VAUDP32_SFT); + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON0, + RG_AUDHPRSCDISABLE_VAUDP32_MASK_SFT, + 0x1 << RG_AUDHPRSCDISABLE_VAUDP32_SFT); + /* Disable voice short circuit protection */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON6, + RG_AUDHSSCDISABLE_VAUDP32_MASK_SFT, + 0x1 << RG_AUDHSSCDISABLE_VAUDP32_SFT); + /* disable LO buffer left short circuit protection */ + regmap_update_bits(priv->regmap, MT6359_AUDDEC_ANA_CON7, + RG_AUDLOLSCDISABLE_VAUDP32_MASK_SFT, + 0x1 << RG_AUDLOLSCDISABLE_VAUDP32_SFT); + + /* set gpio */ + playback_gpio_reset(priv); + capture_gpio_reset(priv); + + /* hp gain ctl default choose ZCD */ + priv->hp_gain_ctl = HP_GAIN_CTL_ZCD; + hp_gain_ctl_select(priv, priv->hp_gain_ctl); + + /* hp hifi mode, default normal mode */ + priv->hp_hifi_mode = 0; + + /* Disable AUD_ZCD */ + zcd_disable(priv); + + /* disable clk buf */ + regmap_update_bits(priv->regmap, MT6359_DCXO_CW12, + 0x1 << RG_XO_AUDIO_EN_M_SFT, + 0x0); + + return ret; +} + +static int mt6359_codec_probe(struct snd_soc_component *cmpnt) +{ + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + int ret; + + snd_soc_component_init_regmap(cmpnt, priv->regmap); + + snd_soc_add_component_controls(cmpnt, + mt6359_snd_vow_controls, + ARRAY_SIZE(mt6359_snd_vow_controls)); + + mt6359_codec_init_reg(priv); + + priv->ana_gain[AUDIO_ANALOG_VOLUME_HPOUTL] = 8; + priv->ana_gain[AUDIO_ANALOG_VOLUME_HPOUTR] = 8; + priv->ana_gain[AUDIO_ANALOG_VOLUME_MICAMP1] = 3; + priv->ana_gain[AUDIO_ANALOG_VOLUME_MICAMP2] = 3; + priv->ana_gain[AUDIO_ANALOG_VOLUME_MICAMP3] = 3; + + priv->avdd_reg = devm_regulator_get(priv->dev, "vaud18"); + if (IS_ERR(priv->avdd_reg)) { + dev_err(priv->dev, "%s(), have no vaud18 supply", __func__); + return PTR_ERR(priv->avdd_reg); + } + + ret = regulator_enable(priv->avdd_reg); + if (ret) + return ret; + + return 0; +} + +static const struct snd_soc_component_driver mt6359_soc_component_driver = { + .name = CODEC_MT6359_NAME, + .probe = mt6359_codec_probe, + .controls = mt6359_snd_controls, + .num_controls = ARRAY_SIZE(mt6359_snd_controls), + .dapm_widgets = mt6359_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(mt6359_dapm_widgets), + .dapm_routes = mt6359_dapm_routes, + .num_dapm_routes = ARRAY_SIZE(mt6359_dapm_routes), +}; + +static int mt6359_platform_driver_probe(struct platform_device *pdev) +{ + struct mt6359_priv *priv; + int ret; + struct mt6397_chip *mt6397 = dev_get_drvdata(pdev->dev.parent); + + priv = devm_kzalloc(&pdev->dev, + sizeof(struct mt6359_priv), + GFP_KERNEL); + if (!priv) + return -ENOMEM; + + priv->regmap = mt6397->regmap; + if (IS_ERR(priv->regmap)) + return PTR_ERR(priv->regmap); + + dev_set_drvdata(&pdev->dev, priv); + priv->dev = &pdev->dev; + + dev_info(&pdev->dev, "%s(), dev name %s\n", + __func__, dev_name(&pdev->dev)); + + ret = devm_snd_soc_register_component(&pdev->dev, + &mt6359_soc_component_driver, + mt6359_dai_driver, + ARRAY_SIZE(mt6359_dai_driver)); + + dev_info(&pdev->dev, "%s(), ret = %d\n", __func__, ret); + return ret; +} + +static const struct of_device_id mt6359_of_match[] = { + {.compatible = "mediatek,mt6359-sound",}, + {} +}; +MODULE_DEVICE_TABLE(of, mt6359_of_match); + +static struct platform_driver mt6359_platform_driver = { + .driver = { + .name = "mt6359-sound", + .of_match_table = mt6359_of_match, + }, + .probe = mt6359_platform_driver_probe, +}; + +module_platform_driver(mt6359_platform_driver) + +/* Module information */ +MODULE_DESCRIPTION("MT6359 ALSA SoC codec driver"); +MODULE_AUTHOR("KaiChieh Chuang "); +MODULE_AUTHOR("Eason Yen "); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/mt6359.h b/sound/soc/codecs/mt6359.h new file mode 100644 index 0000000..e319d69 --- /dev/null +++ b/sound/soc/codecs/mt6359.h @@ -0,0 +1,3212 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2019 MediaTek Inc. + * Author: Argus Lin + */ + +#ifndef _MT6359_H_ +#define _MT6359_H_ + +/*************Register Bit Define*************/ +#define PMIC_ACCDET_IRQ_SHIFT 0 +#define PMIC_ACCDET_EINT0_IRQ_SHIFT 2 +#define PMIC_ACCDET_EINT1_IRQ_SHIFT 3 +#define PMIC_ACCDET_IRQ_CLR_SHIFT 8 +#define PMIC_ACCDET_EINT0_IRQ_CLR_SHIFT 10 +#define PMIC_ACCDET_EINT1_IRQ_CLR_SHIFT 11 +#define PMIC_RG_INT_STATUS_ACCDET_SHIFT 5 +#define PMIC_RG_INT_STATUS_ACCDET_EINT0_SHIFT 6 +#define PMIC_RG_INT_STATUS_ACCDET_EINT1_SHIFT 7 +#define PMIC_RG_EINT0CONFIGACCDET_SHIFT 11 +#define PMIC_RG_EINT1CONFIGACCDET_SHIFT 0 +#define PMIC_ACCDET_EINT0_INVERTER_SW_EN_SHIFT 6 +#define PMIC_ACCDET_EINT1_INVERTER_SW_EN_SHIFT 8 +#define PMIC_RG_MTEST_EN_SHIFT 8 +#define PMIC_RG_MTEST_SEL_SHIFT 9 +#define PMIC_ACCDET_EINT0_M_SW_EN_SHIFT 10 +#define PMIC_ACCDET_EINT1_M_SW_EN_SHIFT 11 +#define PMIC_ACCDET_EINT0_CEN_STABLE_SHIFT 5 +#define PMIC_ACCDET_EINT1_CEN_STABLE_SHIFT 10 +#define PMIC_ACCDET_DA_STABLE_SHIFT 0 +#define PMIC_ACCDET_EINT0_EN_STABLE_SHIFT 1 +#define PMIC_ACCDET_EINT0_CMPEN_STABLE_SHIFT 2 +#define PMIC_ACCDET_EINT1_EN_STABLE_SHIFT 6 +#define PMIC_ACCDET_EINT1_CMPEN_STABLE_SHIFT 7 +#define PMIC_ACCDET_EINT_CTURBO_SEL_SHIFT 7 +#define PMIC_ACCDET_EINT0_CTURBO_SW_SHIFT 7 +#define PMIC_RG_EINTCOMPVTH_SHIFT 4 +#define PMIC_RG_EINT0HIRENB_SHIFT 12 +#define PMIC_RG_EINT0NOHYS_SHIFT 10 +#define PMIC_ACCDET_SW_EN_SHIFT 0 +#define PMIC_ACCDET_EINT0_MEM_IN_SHIFT 6 +#define PMIC_ACCDET_MEM_IN_SHIFT 6 +#define PMIC_ACCDET_EINT_DEBOUNCE0_SHIFT 0 +#define PMIC_ACCDET_EINT_DEBOUNCE1_SHIFT 4 +#define PMIC_ACCDET_EINT_DEBOUNCE2_SHIFT 8 +#define PMIC_ACCDET_EINT_DEBOUNCE3_SHIFT 12 +#define PMIC_RG_ACCDET2AUXSWEN_SHIFT 14 +#define PMIC_AUDACCDETAUXADCSWCTRL_SEL_SHIFT 9 +#define PMIC_AUDACCDETAUXADCSWCTRL_SW_SHIFT 10 +#define PMIC_RG_EINT0CTURBO_SHIFT 5 +#define PMIC_RG_EINT1CTURBO_SHIFT 13 +#define PMIC_ACCDET_EINT_M_PLUG_IN_NUM_SHIFT 12 +#define PMIC_ACCDET_EINT_M_DETECT_EN_SHIFT 12 +#define PMIC_ACCDET_EINT0_SW_EN_SHIFT 2 +#define PMIC_ACCDET_EINT1_SW_EN_SHIFT 4 +#define PMIC_ACCDET_EINT_CMPMOUT_SEL_SHIFT 12 +#define PMIC_ACCDET_EINT_CMPMEN_SEL_SHIFT 6 +#define PMIC_RG_HPLOUTPUTSTBENH_VAUDP32_SHIFT 0 +#define PMIC_RG_HPROUTPUTSTBENH_VAUDP32_SHIFT 4 +#define PMIC_RG_EINT0EN_SHIFT 2 +#define PMIC_RG_EINT1EN_SHIFT 10 +#define PMIC_RG_NCP_PDDIS_EN_SHIFT 0 +#define PMIC_RG_ACCDETSPARE_SHIFT 0 +#define PMIC_RG_ACCDET_RST_SHIFT 1 +#define PMIC_RG_AUDMICBIAS1HVEN_SHIFT 12 +#define PMIC_RG_AUDMICBIAS1VREF_SHIFT 4 +#define PMIC_RG_ANALOGFDEN_SHIFT 12 +#define PMIC_RG_AUDMICBIAS1DCSW1PEN_SHIFT 8 +#define PMIC_RG_AUDMICBIAS1LOWPEN_SHIFT 2 +#define PMIC_ACCDET_SEQ_INIT_SHIFT 1 + +#define PMIC_RG_EINTCOMPVTH_MASK 0xF +#define PMIC_ACCDET_EINT0_MEM_IN_MASK 0x3 +#define PMIC_ACCDET_EINT_DEBOUNCE0_MASK 0xF +#define PMIC_ACCDET_EINT_DEBOUNCE1_MASK 0xF +#define PMIC_ACCDET_EINT_DEBOUNCE2_MASK 0xF +#define PMIC_ACCDET_EINT_DEBOUNCE3_MASK 0xF + +#define PMIC_ACCDET_EINT0_IRQ_SHIFT 2 +#define PMIC_ACCDET_EINT1_IRQ_SHIFT 3 +/* AUDENC_ANA_CON16: */ +#define RG_AUD_MICBIAS1_LOWP_EN BIT(PMIC_RG_AUDMICBIAS1LOWPEN_SHIFT) + +/* AUDENC_ANA_CON18: */ +#define RG_ACCDET_MODE_ANA11_MODE1 (0x000F) +#define RG_ACCDET_MODE_ANA11_MODE2 (0x008F) +#define RG_ACCDET_MODE_ANA11_MODE6 (0x008F) + +/* AUXADC_ADC5: Auxadc CH5 read data */ +#define AUXADC_DATA_RDY_CH5 BIT(15) +#define AUXADC_DATA_PROCEED_CH5 BIT(15) +#define AUXADC_DATA_MASK (0x0FFF) + +/* AUXADC_RQST0_SET: Auxadc CH5 request, relevant 0x07EC */ +#define AUXADC_RQST_CH5_SET BIT(5) +/* AUXADC_RQST0_CLR: Auxadc CH5 request, relevant 0x07EC */ +#define AUXADC_RQST_CH5_CLR BIT(5) + +#define ACCDET_CALI_MASK0 (0xFF) +#define ACCDET_CALI_MASK1 (0xFF << 8) +#define ACCDET_CALI_MASK2 (0xFF) +#define ACCDET_CALI_MASK3 (0xFF << 8) +#define ACCDET_CALI_MASK4 (0xFF) + +#define ACCDET_EINT1_IRQ_CLR_B11 BIT(PMIC_ACCDET_EINT1_IRQ_CLR_SHIFT) +#define ACCDET_EINT0_IRQ_CLR_B10 BIT(PMIC_ACCDET_EINT0_IRQ_CLR_SHIFT) +#define ACCDET_EINT_IRQ_CLR_B10_11 (0x03 << \ + PMIC_ACCDET_EINT0_IRQ_CLR_SHIFT) +#define ACCDET_IRQ_CLR_B8 BIT(PMIC_ACCDET_IRQ_CLR_SHIFT) + +#define ACCDET_EINT1_IRQ_B3 BIT(PMIC_ACCDET_EINT1_IRQ_SHIFT) +#define ACCDET_EINT0_IRQ_B2 BIT(PMIC_ACCDET_EINT0_IRQ_SHIFT) +#define ACCDET_EINT_IRQ_B2_B3 (0x03 << PMIC_ACCDET_EINT0_IRQ_SHIFT) +#define ACCDET_IRQ_B0 BIT(PMIC_ACCDET_IRQ_SHIFT) + +/* ACCDET_CON25: RO, accdet FSM state,etc.*/ +#define ACCDET_STATE_MEM_IN_OFFSET (PMIC_ACCDET_MEM_IN_SHIFT) +#define ACCDET_STATE_AB_MASK (0x03) +#define ACCDET_STATE_AB_00 (0x00) +#define ACCDET_STATE_AB_01 (0x01) +#define ACCDET_STATE_AB_10 (0x02) +#define ACCDET_STATE_AB_11 (0x03) + +/* ACCDET_CON19 */ +#define ACCDET_EINT0_STABLE_VAL ((1 << PMIC_ACCDET_DA_STABLE_SHIFT) | \ + (1 << PMIC_ACCDET_EINT0_EN_STABLE_SHIFT) | \ + (1 << PMIC_ACCDET_EINT0_CMPEN_STABLE_SHIFT) | \ + (1 << PMIC_ACCDET_EINT0_CEN_STABLE_SHIFT)) + +#define ACCDET_EINT1_STABLE_VAL ((1 << PMIC_ACCDET_DA_STABLE_SHIFT) | \ + (1 << PMIC_ACCDET_EINT1_EN_STABLE_SHIFT) | \ + (1 << PMIC_ACCDET_EINT1_CMPEN_STABLE_SHIFT) | \ + (1 << PMIC_ACCDET_EINT1_CEN_STABLE_SHIFT)) + +/* The following are used for mt6359.c */ +/* MT6359_DCXO_CW12 */ +#define RG_XO_AUDIO_EN_M_SFT 13 + +/* MT6359_DCXO_CW11 */ +#define RG_XO_VOW_EN_SFT 9 + +/* LDO_VAUD18_CON0 */ +#define RG_LDO_VAUD18_EN_SFT 0 +#define RG_LDO_VAUD18_EN_MASK 0x1 +#define RG_LDO_VAUD18_EN_MASK_SFT (0x1 << 0) + +/* AUD_TOP_CKPDN_CON0 */ +#define RG_VOW13M_CK_PDN_SFT 13 +#define RG_VOW13M_CK_PDN_MASK 0x1 +#define RG_VOW13M_CK_PDN_MASK_SFT (0x1 << 13) +#define RG_VOW32K_CK_PDN_SFT 12 +#define RG_VOW32K_CK_PDN_MASK 0x1 +#define RG_VOW32K_CK_PDN_MASK_SFT (0x1 << 12) +#define RG_AUD_INTRP_CK_PDN_SFT 8 +#define RG_AUD_INTRP_CK_PDN_MASK 0x1 +#define RG_AUD_INTRP_CK_PDN_MASK_SFT (0x1 << 8) +#define RG_PAD_AUD_CLK_MISO_CK_PDN_SFT 7 +#define RG_PAD_AUD_CLK_MISO_CK_PDN_MASK 0x1 +#define RG_PAD_AUD_CLK_MISO_CK_PDN_MASK_SFT (0x1 << 7) +#define RG_AUDNCP_CK_PDN_SFT 6 +#define RG_AUDNCP_CK_PDN_MASK 0x1 +#define RG_AUDNCP_CK_PDN_MASK_SFT (0x1 << 6) +#define RG_ZCD13M_CK_PDN_SFT 5 +#define RG_ZCD13M_CK_PDN_MASK 0x1 +#define RG_ZCD13M_CK_PDN_MASK_SFT (0x1 << 5) +#define RG_AUDIF_CK_PDN_SFT 2 +#define RG_AUDIF_CK_PDN_MASK 0x1 +#define RG_AUDIF_CK_PDN_MASK_SFT (0x1 << 2) +#define RG_AUD_CK_PDN_SFT 1 +#define RG_AUD_CK_PDN_MASK 0x1 +#define RG_AUD_CK_PDN_MASK_SFT (0x1 << 1) +#define RG_ACCDET_CK_PDN_SFT 0 +#define RG_ACCDET_CK_PDN_MASK 0x1 +#define RG_ACCDET_CK_PDN_MASK_SFT (0x1 << 0) + +/* AUD_TOP_CKPDN_CON0_SET */ +#define RG_AUD_TOP_CKPDN_CON0_SET_SFT 0 +#define RG_AUD_TOP_CKPDN_CON0_SET_MASK 0x3fff +#define RG_AUD_TOP_CKPDN_CON0_SET_MASK_SFT (0x3fff << 0) + +/* AUD_TOP_CKPDN_CON0_CLR */ +#define RG_AUD_TOP_CKPDN_CON0_CLR_SFT 0 +#define RG_AUD_TOP_CKPDN_CON0_CLR_MASK 0x3fff +#define RG_AUD_TOP_CKPDN_CON0_CLR_MASK_SFT (0x3fff << 0) + +/* AUD_TOP_CKSEL_CON0 */ +#define RG_AUDIF_CK_CKSEL_SFT 3 +#define RG_AUDIF_CK_CKSEL_MASK 0x1 +#define RG_AUDIF_CK_CKSEL_MASK_SFT (0x1 << 3) +#define RG_AUD_CK_CKSEL_SFT 2 +#define RG_AUD_CK_CKSEL_MASK 0x1 +#define RG_AUD_CK_CKSEL_MASK_SFT (0x1 << 2) + +/* AUD_TOP_CKSEL_CON0_SET */ +#define RG_AUD_TOP_CKSEL_CON0_SET_SFT 0 +#define RG_AUD_TOP_CKSEL_CON0_SET_MASK 0xf +#define RG_AUD_TOP_CKSEL_CON0_SET_MASK_SFT (0xf << 0) + +/* AUD_TOP_CKSEL_CON0_CLR */ +#define RG_AUD_TOP_CKSEL_CON0_CLR_SFT 0 +#define RG_AUD_TOP_CKSEL_CON0_CLR_MASK 0xf +#define RG_AUD_TOP_CKSEL_CON0_CLR_MASK_SFT (0xf << 0) + +/* AUD_TOP_CKTST_CON0 */ +#define RG_VOW13M_CK_TSTSEL_SFT 9 +#define RG_VOW13M_CK_TSTSEL_MASK 0x1 +#define RG_VOW13M_CK_TSTSEL_MASK_SFT (0x1 << 9) +#define RG_VOW13M_CK_TST_DIS_SFT 8 +#define RG_VOW13M_CK_TST_DIS_MASK 0x1 +#define RG_VOW13M_CK_TST_DIS_MASK_SFT (0x1 << 8) +#define RG_AUD26M_CK_TSTSEL_SFT 4 +#define RG_AUD26M_CK_TSTSEL_MASK 0x1 +#define RG_AUD26M_CK_TSTSEL_MASK_SFT (0x1 << 4) +#define RG_AUDIF_CK_TSTSEL_SFT 3 +#define RG_AUDIF_CK_TSTSEL_MASK 0x1 +#define RG_AUDIF_CK_TSTSEL_MASK_SFT (0x1 << 3) +#define RG_AUD_CK_TSTSEL_SFT 2 +#define RG_AUD_CK_TSTSEL_MASK 0x1 +#define RG_AUD_CK_TSTSEL_MASK_SFT (0x1 << 2) +#define RG_AUD26M_CK_TST_DIS_SFT 0 +#define RG_AUD26M_CK_TST_DIS_MASK 0x1 +#define RG_AUD26M_CK_TST_DIS_MASK_SFT (0x1 << 0) + +/* AUD_TOP_CLK_HWEN_CON0 */ +#define RG_AUD_INTRP_CK_PDN_HWEN_SFT 0 +#define RG_AUD_INTRP_CK_PDN_HWEN_MASK 0x1 +#define RG_AUD_INTRP_CK_PDN_HWEN_MASK_SFT (0x1 << 0) + +/* AUD_TOP_CLK_HWEN_CON0_SET */ +#define RG_AUD_INTRP_CK_PND_HWEN_CON0_SET_SFT 0 +#define RG_AUD_INTRP_CK_PND_HWEN_CON0_SET_MASK 0xffff +#define RG_AUD_INTRP_CK_PND_HWEN_CON0_SET_MASK_SFT (0xffff << 0) + +/* AUD_TOP_CLK_HWEN_CON0_CLR */ +#define RG_AUD_INTRP_CLK_PDN_HWEN_CON0_CLR_SFT 0 +#define RG_AUD_INTRP_CLK_PDN_HWEN_CON0_CLR_MASK 0xffff +#define RG_AUD_INTRP_CLK_PDN_HWEN_CON0_CLR_MASK_SFT (0xffff << 0) + +/* AUD_TOP_RST_CON0 */ +#define RG_AUDNCP_RST_SFT 3 +#define RG_AUDNCP_RST_MASK 0x1 +#define RG_AUDNCP_RST_MASK_SFT (0x1 << 3) +#define RG_ZCD_RST_SFT 2 +#define RG_ZCD_RST_MASK 0x1 +#define RG_ZCD_RST_MASK_SFT (0x1 << 2) +#define RG_ACCDET_RST_SFT 1 +#define RG_ACCDET_RST_MASK 0x1 +#define RG_ACCDET_RST_MASK_SFT (0x1 << 1) +#define RG_AUDIO_RST_SFT 0 +#define RG_AUDIO_RST_MASK 0x1 +#define RG_AUDIO_RST_MASK_SFT (0x1 << 0) + +/* AUD_TOP_RST_CON0_SET */ +#define RG_AUD_TOP_RST_CON0_SET_SFT 0 +#define RG_AUD_TOP_RST_CON0_SET_MASK 0xf +#define RG_AUD_TOP_RST_CON0_SET_MASK_SFT (0xf << 0) + +/* AUD_TOP_RST_CON0_CLR */ +#define RG_AUD_TOP_RST_CON0_CLR_SFT 0 +#define RG_AUD_TOP_RST_CON0_CLR_MASK 0xf +#define RG_AUD_TOP_RST_CON0_CLR_MASK_SFT (0xf << 0) + +/* AUD_TOP_RST_BANK_CON0 */ +#define BANK_AUDZCD_SWRST_SFT 2 +#define BANK_AUDZCD_SWRST_MASK 0x1 +#define BANK_AUDZCD_SWRST_MASK_SFT (0x1 << 2) +#define BANK_AUDIO_SWRST_SFT 1 +#define BANK_AUDIO_SWRST_MASK 0x1 +#define BANK_AUDIO_SWRST_MASK_SFT (0x1 << 1) +#define BANK_ACCDET_SWRST_SFT 0 +#define BANK_ACCDET_SWRST_MASK 0x1 +#define BANK_ACCDET_SWRST_MASK_SFT (0x1 << 0) + +/* AFE_UL_DL_CON0 */ +#define AFE_UL_LR_SWAP_SFT 15 +#define AFE_UL_LR_SWAP_MASK 0x1 +#define AFE_UL_LR_SWAP_MASK_SFT (0x1 << 15) +#define AFE_DL_LR_SWAP_SFT 14 +#define AFE_DL_LR_SWAP_MASK 0x1 +#define AFE_DL_LR_SWAP_MASK_SFT (0x1 << 14) +#define AFE_ON_SFT 0 +#define AFE_ON_MASK 0x1 +#define AFE_ON_MASK_SFT (0x1 << 0) + +/* AFE_DL_SRC2_CON0_L */ +#define DL_2_SRC_ON_TMP_CTL_PRE_SFT 0 +#define DL_2_SRC_ON_TMP_CTL_PRE_MASK 0x1 +#define DL_2_SRC_ON_TMP_CTL_PRE_MASK_SFT (0x1 << 0) + +/* AFE_UL_SRC_CON0_H */ +#define C_DIGMIC_PHASE_SEL_CH1_CTL_SFT 11 +#define C_DIGMIC_PHASE_SEL_CH1_CTL_MASK 0x7 +#define C_DIGMIC_PHASE_SEL_CH1_CTL_MASK_SFT (0x7 << 11) +#define C_DIGMIC_PHASE_SEL_CH2_CTL_SFT 8 +#define C_DIGMIC_PHASE_SEL_CH2_CTL_MASK 0x7 +#define C_DIGMIC_PHASE_SEL_CH2_CTL_MASK_SFT (0x7 << 8) +#define C_TWO_DIGITAL_MIC_CTL_SFT 7 +#define C_TWO_DIGITAL_MIC_CTL_MASK 0x1 +#define C_TWO_DIGITAL_MIC_CTL_MASK_SFT (0x1 << 7) + +/* AFE_UL_SRC_CON0_L */ +#define DMIC_LOW_POWER_MODE_CTL_SFT 14 +#define DMIC_LOW_POWER_MODE_CTL_MASK 0x3 +#define DMIC_LOW_POWER_MODE_CTL_MASK_SFT (0x3 << 14) +#define DIGMIC_4P33M_SEL_CTL_SFT 6 +#define DIGMIC_4P33M_SEL_CTL_MASK 0x1 +#define DIGMIC_4P33M_SEL_CTL_MASK_SFT (0x1 << 6) +#define DIGMIC_3P25M_1P625M_SEL_CTL_SFT 5 +#define DIGMIC_3P25M_1P625M_SEL_CTL_MASK 0x1 +#define DIGMIC_3P25M_1P625M_SEL_CTL_MASK_SFT (0x1 << 5) +#define UL_LOOP_BACK_MODE_CTL_SFT 2 +#define UL_LOOP_BACK_MODE_CTL_MASK 0x1 +#define UL_LOOP_BACK_MODE_CTL_MASK_SFT (0x1 << 2) +#define UL_SDM_3_LEVEL_CTL_SFT 1 +#define UL_SDM_3_LEVEL_CTL_MASK 0x1 +#define UL_SDM_3_LEVEL_CTL_MASK_SFT (0x1 << 1) +#define UL_SRC_ON_TMP_CTL_SFT 0 +#define UL_SRC_ON_TMP_CTL_MASK 0x1 +#define UL_SRC_ON_TMP_CTL_MASK_SFT (0x1 << 0) + +/* AFE_ADDA6_L_SRC_CON0_H */ +#define ADDA6_C_DIGMIC_PHASE_SEL_CH1_CTL_SFT 11 +#define ADDA6_C_DIGMIC_PHASE_SEL_CH1_CTL_MASK 0x7 +#define ADDA6_C_DIGMIC_PHASE_SEL_CH1_CTL_MASK_SFT (0x7 << 11) +#define ADDA6_C_DIGMIC_PHASE_SEL_CH2_CTL_SFT 8 +#define ADDA6_C_DIGMIC_PHASE_SEL_CH2_CTL_MASK 0x7 +#define ADDA6_C_DIGMIC_PHASE_SEL_CH2_CTL_MASK_SFT (0x7 << 8) +#define ADDA6_C_TWO_DIGITAL_MIC_CTL_SFT 7 +#define ADDA6_C_TWO_DIGITAL_MIC_CTL_MASK 0x1 +#define ADDA6_C_TWO_DIGITAL_MIC_CTL_MASK_SFT (0x1 << 7) + +/* AFE_ADDA6_UL_SRC_CON0_L */ +#define ADDA6_DMIC_LOW_POWER_MODE_CTL_SFT 14 +#define ADDA6_DMIC_LOW_POWER_MODE_CTL_MASK 0x3 +#define ADDA6_DMIC_LOW_POWER_MODE_CTL_MASK_SFT (0x3 << 14) +#define ADDA6_DIGMIC_4P33M_SEL_CTL_SFT 6 +#define ADDA6_DIGMIC_4P33M_SEL_CTL_MASK 0x1 +#define ADDA6_DIGMIC_4P33M_SEL_CTL_MASK_SFT (0x1 << 6) +#define ADDA6_DIGMIC_3P25M_1P625M_SEL_CTL_SFT 5 +#define ADDA6_DIGMIC_3P25M_1P625M_SEL_CTL_MASK 0x1 +#define ADDA6_DIGMIC_3P25M_1P625M_SEL_CTL_MASK_SFT (0x1 << 5) +#define ADDA6_UL_LOOP_BACK_MODE_CTL_SFT 2 +#define ADDA6_UL_LOOP_BACK_MODE_CTL_MASK 0x1 +#define ADDA6_UL_LOOP_BACK_MODE_CTL_MASK_SFT (0x1 << 2) +#define ADDA6_UL_SDM_3_LEVEL_CTL_SFT 1 +#define ADDA6_UL_SDM_3_LEVEL_CTL_MASK 0x1 +#define ADDA6_UL_SDM_3_LEVEL_CTL_MASK_SFT (0x1 << 1) +#define ADDA6_UL_SRC_ON_TMP_CTL_SFT 0 +#define ADDA6_UL_SRC_ON_TMP_CTL_MASK 0x1 +#define ADDA6_UL_SRC_ON_TMP_CTL_MASK_SFT (0x1 << 0) + +/* AFE_TOP_CON0 */ +#define ADDA6_MTKAIF_SINE_ON_SFT 4 +#define ADDA6_MTKAIF_SINE_ON_MASK 0x1 +#define ADDA6_MTKAIF_SINE_ON_MASK_SFT (0x1 << 4) +#define ADDA6_UL_SINE_ON_SFT 3 +#define ADDA6_UL_SINE_ON_MASK 0x1 +#define ADDA6_UL_SINE_ON_MASK_SFT (0x1 << 3) +#define MTKAIF_SINE_ON_SFT 2 +#define MTKAIF_SINE_ON_MASK 0x1 +#define MTKAIF_SINE_ON_MASK_SFT (0x1 << 2) +#define UL_SINE_ON_SFT 1 +#define UL_SINE_ON_MASK 0x1 +#define UL_SINE_ON_MASK_SFT (0x1 << 1) +#define DL_SINE_ON_SFT 0 +#define DL_SINE_ON_MASK 0x1 +#define DL_SINE_ON_MASK_SFT (0x1 << 0) + +/* AUDIO_TOP_CON0 */ +#define PDN_AFE_CTL_SFT 7 +#define PDN_AFE_CTL_MASK 0x1 +#define PDN_AFE_CTL_MASK_SFT (0x1 << 7) +#define PDN_DAC_CTL_SFT 6 +#define PDN_DAC_CTL_MASK 0x1 +#define PDN_DAC_CTL_MASK_SFT (0x1 << 6) +#define PDN_ADC_CTL_SFT 5 +#define PDN_ADC_CTL_MASK 0x1 +#define PDN_ADC_CTL_MASK_SFT (0x1 << 5) +#define PDN_ADDA6_ADC_CTL_SFT 4 +#define PDN_ADDA6_ADC_CTL_MASK 0x1 +#define PDN_ADDA6_ADC_CTL_MASK_SFT (0x1 << 4) +#define PDN_I2S_DL_CTL_SFT 3 +#define PDN_I2S_DL_CTL_MASK 0x1 +#define PDN_I2S_DL_CTL_MASK_SFT (0x1 << 3) +#define PWR_CLK_DIS_CTL_SFT 2 +#define PWR_CLK_DIS_CTL_MASK 0x1 +#define PWR_CLK_DIS_CTL_MASK_SFT (0x1 << 2) +#define PDN_AFE_TESTMODEL_CTL_SFT 1 +#define PDN_AFE_TESTMODEL_CTL_MASK 0x1 +#define PDN_AFE_TESTMODEL_CTL_MASK_SFT (0x1 << 1) +#define PDN_RESERVED_SFT 0 +#define PDN_RESERVED_MASK 0x1 +#define PDN_RESERVED_MASK_SFT (0x1 << 0) + +/* AFE_MON_DEBUG0 */ +#define AUDIO_SYS_TOP_MON_SWAP_SFT 14 +#define AUDIO_SYS_TOP_MON_SWAP_MASK 0x3 +#define AUDIO_SYS_TOP_MON_SWAP_MASK_SFT (0x3 << 14) +#define AUDIO_SYS_TOP_MON_SEL_SFT 8 +#define AUDIO_SYS_TOP_MON_SEL_MASK 0x1f +#define AUDIO_SYS_TOP_MON_SEL_MASK_SFT (0x1f << 8) +#define AFE_MON_SEL_SFT 0 +#define AFE_MON_SEL_MASK 0xff +#define AFE_MON_SEL_MASK_SFT (0xff << 0) + +/* AFUNC_AUD_CON0 */ +#define CCI_AUD_ANACK_SEL_SFT 15 +#define CCI_AUD_ANACK_SEL_MASK 0x1 +#define CCI_AUD_ANACK_SEL_MASK_SFT (0x1 << 15) +#define CCI_AUDIO_FIFO_WPTR_SFT 12 +#define CCI_AUDIO_FIFO_WPTR_MASK 0x7 +#define CCI_AUDIO_FIFO_WPTR_MASK_SFT (0x7 << 12) +#define CCI_SCRAMBLER_CG_EN_SFT 11 +#define CCI_SCRAMBLER_CG_EN_MASK 0x1 +#define CCI_SCRAMBLER_CG_EN_MASK_SFT (0x1 << 11) +#define CCI_LCH_INV_SFT 10 +#define CCI_LCH_INV_MASK 0x1 +#define CCI_LCH_INV_MASK_SFT (0x1 << 10) +#define CCI_RAND_EN_SFT 9 +#define CCI_RAND_EN_MASK 0x1 +#define CCI_RAND_EN_MASK_SFT (0x1 << 9) +#define CCI_SPLT_SCRMB_CLK_ON_SFT 8 +#define CCI_SPLT_SCRMB_CLK_ON_MASK 0x1 +#define CCI_SPLT_SCRMB_CLK_ON_MASK_SFT (0x1 << 8) +#define CCI_SPLT_SCRMB_ON_SFT 7 +#define CCI_SPLT_SCRMB_ON_MASK 0x1 +#define CCI_SPLT_SCRMB_ON_MASK_SFT (0x1 << 7) +#define CCI_AUD_IDAC_TEST_EN_SFT 6 +#define CCI_AUD_IDAC_TEST_EN_MASK 0x1 +#define CCI_AUD_IDAC_TEST_EN_MASK_SFT (0x1 << 6) +#define CCI_ZERO_PAD_DISABLE_SFT 5 +#define CCI_ZERO_PAD_DISABLE_MASK 0x1 +#define CCI_ZERO_PAD_DISABLE_MASK_SFT (0x1 << 5) +#define CCI_AUD_SPLIT_TEST_EN_SFT 4 +#define CCI_AUD_SPLIT_TEST_EN_MASK 0x1 +#define CCI_AUD_SPLIT_TEST_EN_MASK_SFT (0x1 << 4) +#define CCI_AUD_SDM_MUTEL_SFT 3 +#define CCI_AUD_SDM_MUTEL_MASK 0x1 +#define CCI_AUD_SDM_MUTEL_MASK_SFT (0x1 << 3) +#define CCI_AUD_SDM_MUTER_SFT 2 +#define CCI_AUD_SDM_MUTER_MASK 0x1 +#define CCI_AUD_SDM_MUTER_MASK_SFT (0x1 << 2) +#define CCI_AUD_SDM_7BIT_SEL_SFT 1 +#define CCI_AUD_SDM_7BIT_SEL_MASK 0x1 +#define CCI_AUD_SDM_7BIT_SEL_MASK_SFT (0x1 << 1) +#define CCI_SCRAMBLER_EN_SFT 0 +#define CCI_SCRAMBLER_EN_MASK 0x1 +#define CCI_SCRAMBLER_EN_MASK_SFT (0x1 << 0) + +/* AFUNC_AUD_CON1 */ +#define AUD_SDM_TEST_L_SFT 8 +#define AUD_SDM_TEST_L_MASK 0xff +#define AUD_SDM_TEST_L_MASK_SFT (0xff << 8) +#define AUD_SDM_TEST_R_SFT 0 +#define AUD_SDM_TEST_R_MASK 0xff +#define AUD_SDM_TEST_R_MASK_SFT (0xff << 0) + +/* AFUNC_AUD_CON2 */ +#define CCI_AUD_DAC_ANA_MUTE_SFT 7 +#define CCI_AUD_DAC_ANA_MUTE_MASK 0x1 +#define CCI_AUD_DAC_ANA_MUTE_MASK_SFT (0x1 << 7) +#define CCI_AUD_DAC_ANA_RSTB_SEL_SFT 6 +#define CCI_AUD_DAC_ANA_RSTB_SEL_MASK 0x1 +#define CCI_AUD_DAC_ANA_RSTB_SEL_MASK_SFT (0x1 << 6) +#define CCI_AUDIO_FIFO_CLKIN_INV_SFT 4 +#define CCI_AUDIO_FIFO_CLKIN_INV_MASK 0x1 +#define CCI_AUDIO_FIFO_CLKIN_INV_MASK_SFT (0x1 << 4) +#define CCI_AUDIO_FIFO_ENABLE_SFT 3 +#define CCI_AUDIO_FIFO_ENABLE_MASK 0x1 +#define CCI_AUDIO_FIFO_ENABLE_MASK_SFT (0x1 << 3) +#define CCI_ACD_MODE_SFT 2 +#define CCI_ACD_MODE_MASK 0x1 +#define CCI_ACD_MODE_MASK_SFT (0x1 << 2) +#define CCI_AFIFO_CLK_PWDB_SFT 1 +#define CCI_AFIFO_CLK_PWDB_MASK 0x1 +#define CCI_AFIFO_CLK_PWDB_MASK_SFT (0x1 << 1) +#define CCI_ACD_FUNC_RSTB_SFT 0 +#define CCI_ACD_FUNC_RSTB_MASK 0x1 +#define CCI_ACD_FUNC_RSTB_MASK_SFT (0x1 << 0) + +/* AFUNC_AUD_CON3 */ +#define SDM_ANA13M_TESTCK_SEL_SFT 15 +#define SDM_ANA13M_TESTCK_SEL_MASK 0x1 +#define SDM_ANA13M_TESTCK_SEL_MASK_SFT (0x1 << 15) +#define SDM_ANA13M_TESTCK_SRC_SEL_SFT 12 +#define SDM_ANA13M_TESTCK_SRC_SEL_MASK 0x7 +#define SDM_ANA13M_TESTCK_SRC_SEL_MASK_SFT (0x7 << 12) +#define SDM_TESTCK_SRC_SEL_SFT 8 +#define SDM_TESTCK_SRC_SEL_MASK 0x7 +#define SDM_TESTCK_SRC_SEL_MASK_SFT (0x7 << 8) +#define DIGMIC_TESTCK_SRC_SEL_SFT 4 +#define DIGMIC_TESTCK_SRC_SEL_MASK 0x7 +#define DIGMIC_TESTCK_SRC_SEL_MASK_SFT (0x7 << 4) +#define DIGMIC_TESTCK_SEL_SFT 0 +#define DIGMIC_TESTCK_SEL_MASK 0x1 +#define DIGMIC_TESTCK_SEL_MASK_SFT (0x1 << 0) + +/* AFUNC_AUD_CON4 */ +#define UL_FIFO_WCLK_INV_SFT 8 +#define UL_FIFO_WCLK_INV_MASK 0x1 +#define UL_FIFO_WCLK_INV_MASK_SFT (0x1 << 8) +#define UL_FIFO_DIGMIC_WDATA_TESTSRC_SEL_SFT 6 +#define UL_FIFO_DIGMIC_WDATA_TESTSRC_SEL_MASK 0x1 +#define UL_FIFO_DIGMIC_WDATA_TESTSRC_SEL_MASK_SFT (0x1 << 6) +#define UL_FIFO_WDATA_TESTEN_SFT 5 +#define UL_FIFO_WDATA_TESTEN_MASK 0x1 +#define UL_FIFO_WDATA_TESTEN_MASK_SFT (0x1 << 5) +#define UL_FIFO_WDATA_TESTSRC_SEL_SFT 4 +#define UL_FIFO_WDATA_TESTSRC_SEL_MASK 0x1 +#define UL_FIFO_WDATA_TESTSRC_SEL_MASK_SFT (0x1 << 4) +#define UL_FIFO_WCLK_6P5M_TESTCK_SEL_SFT 3 +#define UL_FIFO_WCLK_6P5M_TESTCK_SEL_MASK 0x1 +#define UL_FIFO_WCLK_6P5M_TESTCK_SEL_MASK_SFT (0x1 << 3) +#define UL_FIFO_WCLK_6P5M_TESTCK_SRC_SEL_SFT 0 +#define UL_FIFO_WCLK_6P5M_TESTCK_SRC_SEL_MASK 0x7 +#define UL_FIFO_WCLK_6P5M_TESTCK_SRC_SEL_MASK_SFT (0x7 << 0) + +/* AFUNC_AUD_CON5 */ +#define R_AUD_DAC_POS_LARGE_MONO_SFT 8 +#define R_AUD_DAC_POS_LARGE_MONO_MASK 0xff +#define R_AUD_DAC_POS_LARGE_MONO_MASK_SFT (0xff << 8) +#define R_AUD_DAC_NEG_LARGE_MONO_SFT 0 +#define R_AUD_DAC_NEG_LARGE_MONO_MASK 0xff +#define R_AUD_DAC_NEG_LARGE_MONO_MASK_SFT (0xff << 0) + +/* AFUNC_AUD_CON6 */ +#define R_AUD_DAC_POS_SMALL_MONO_SFT 12 +#define R_AUD_DAC_POS_SMALL_MONO_MASK 0xf +#define R_AUD_DAC_POS_SMALL_MONO_MASK_SFT (0xf << 12) +#define R_AUD_DAC_NEG_SMALL_MONO_SFT 8 +#define R_AUD_DAC_NEG_SMALL_MONO_MASK 0xf +#define R_AUD_DAC_NEG_SMALL_MONO_MASK_SFT (0xf << 8) +#define R_AUD_DAC_POS_TINY_MONO_SFT 6 +#define R_AUD_DAC_POS_TINY_MONO_MASK 0x3 +#define R_AUD_DAC_POS_TINY_MONO_MASK_SFT (0x3 << 6) +#define R_AUD_DAC_NEG_TINY_MONO_SFT 4 +#define R_AUD_DAC_NEG_TINY_MONO_MASK 0x3 +#define R_AUD_DAC_NEG_TINY_MONO_MASK_SFT (0x3 << 4) +#define R_AUD_DAC_MONO_SEL_SFT 3 +#define R_AUD_DAC_MONO_SEL_MASK 0x1 +#define R_AUD_DAC_MONO_SEL_MASK_SFT (0x1 << 3) +#define R_AUD_DAC_3TH_SEL_SFT 1 +#define R_AUD_DAC_3TH_SEL_MASK 0x1 +#define R_AUD_DAC_3TH_SEL_MASK_SFT (0x1 << 1) +#define R_AUD_DAC_SW_RSTB_SFT 0 +#define R_AUD_DAC_SW_RSTB_MASK 0x1 +#define R_AUD_DAC_SW_RSTB_MASK_SFT (0x1 << 0) + +/* AFUNC_AUD_CON7 */ +#define UL2_DIGMIC_TESTCK_SRC_SEL_SFT 10 +#define UL2_DIGMIC_TESTCK_SRC_SEL_MASK 0x7 +#define UL2_DIGMIC_TESTCK_SRC_SEL_MASK_SFT (0x7 << 10) +#define UL2_DIGMIC_TESTCK_SEL_SFT 9 +#define UL2_DIGMIC_TESTCK_SEL_MASK 0x1 +#define UL2_DIGMIC_TESTCK_SEL_MASK_SFT (0x1 << 9) +#define UL2_FIFO_WCLK_INV_SFT 8 +#define UL2_FIFO_WCLK_INV_MASK 0x1 +#define UL2_FIFO_WCLK_INV_MASK_SFT (0x1 << 8) +#define UL2_FIFO_DIGMIC_WDATA_TESTSRC_SEL_SFT 6 +#define UL2_FIFO_DIGMIC_WDATA_TESTSRC_SEL_MASK 0x1 +#define UL2_FIFO_DIGMIC_WDATA_TESTSRC_SEL_MASK_SFT (0x1 << 6) +#define UL2_FIFO_WDATA_TESTEN_SFT 5 +#define UL2_FIFO_WDATA_TESTEN_MASK 0x1 +#define UL2_FIFO_WDATA_TESTEN_MASK_SFT (0x1 << 5) +#define UL2_FIFO_WDATA_TESTSRC_SEL_SFT 4 +#define UL2_FIFO_WDATA_TESTSRC_SEL_MASK 0x1 +#define UL2_FIFO_WDATA_TESTSRC_SEL_MASK_SFT (0x1 << 4) +#define UL2_FIFO_WCLK_6P5M_TESTCK_SEL_SFT 3 +#define UL2_FIFO_WCLK_6P5M_TESTCK_SEL_MASK 0x1 +#define UL2_FIFO_WCLK_6P5M_TESTCK_SEL_MASK_SFT (0x1 << 3) +#define UL2_FIFO_WCLK_6P5M_TESTCK_SRC_SEL_SFT 0 +#define UL2_FIFO_WCLK_6P5M_TESTCK_SRC_SEL_MASK 0x7 +#define UL2_FIFO_WCLK_6P5M_TESTCK_SRC_SEL_MASK_SFT (0x7 << 0) + +/* AFUNC_AUD_CON8 */ +#define SPLITTER2_DITHER_EN_SFT 9 +#define SPLITTER2_DITHER_EN_MASK 0x1 +#define SPLITTER2_DITHER_EN_MASK_SFT (0x1 << 9) +#define SPLITTER1_DITHER_EN_SFT 8 +#define SPLITTER1_DITHER_EN_MASK 0x1 +#define SPLITTER1_DITHER_EN_MASK_SFT (0x1 << 8) +#define SPLITTER2_DITHER_GAIN_SFT 4 +#define SPLITTER2_DITHER_GAIN_MASK 0xf +#define SPLITTER2_DITHER_GAIN_MASK_SFT (0xf << 4) +#define SPLITTER1_DITHER_GAIN_SFT 0 +#define SPLITTER1_DITHER_GAIN_MASK 0xf +#define SPLITTER1_DITHER_GAIN_MASK_SFT (0xf << 0) + +/* AFUNC_AUD_CON9 */ +#define CCI_AUD_ANACK_SEL_2ND_SFT 15 +#define CCI_AUD_ANACK_SEL_2ND_MASK 0x1 +#define CCI_AUD_ANACK_SEL_2ND_MASK_SFT (0x1 << 15) +#define CCI_AUDIO_FIFO_WPTR_2ND_SFT 12 +#define CCI_AUDIO_FIFO_WPTR_2ND_MASK 0x7 +#define CCI_AUDIO_FIFO_WPTR_2ND_MASK_SFT (0x7 << 12) +#define CCI_SCRAMBLER_CG_EN_2ND_SFT 11 +#define CCI_SCRAMBLER_CG_EN_2ND_MASK 0x1 +#define CCI_SCRAMBLER_CG_EN_2ND_MASK_SFT (0x1 << 11) +#define CCI_LCH_INV_2ND_SFT 10 +#define CCI_LCH_INV_2ND_MASK 0x1 +#define CCI_LCH_INV_2ND_MASK_SFT (0x1 << 10) +#define CCI_RAND_EN_2ND_SFT 9 +#define CCI_RAND_EN_2ND_MASK 0x1 +#define CCI_RAND_EN_2ND_MASK_SFT (0x1 << 9) +#define CCI_SPLT_SCRMB_CLK_ON_2ND_SFT 8 +#define CCI_SPLT_SCRMB_CLK_ON_2ND_MASK 0x1 +#define CCI_SPLT_SCRMB_CLK_ON_2ND_MASK_SFT (0x1 << 8) +#define CCI_SPLT_SCRMB_ON_2ND_SFT 7 +#define CCI_SPLT_SCRMB_ON_2ND_MASK 0x1 +#define CCI_SPLT_SCRMB_ON_2ND_MASK_SFT (0x1 << 7) +#define CCI_AUD_IDAC_TEST_EN_2ND_SFT 6 +#define CCI_AUD_IDAC_TEST_EN_2ND_MASK 0x1 +#define CCI_AUD_IDAC_TEST_EN_2ND_MASK_SFT (0x1 << 6) +#define CCI_ZERO_PAD_DISABLE_2ND_SFT 5 +#define CCI_ZERO_PAD_DISABLE_2ND_MASK 0x1 +#define CCI_ZERO_PAD_DISABLE_2ND_MASK_SFT (0x1 << 5) +#define CCI_AUD_SPLIT_TEST_EN_2ND_SFT 4 +#define CCI_AUD_SPLIT_TEST_EN_2ND_MASK 0x1 +#define CCI_AUD_SPLIT_TEST_EN_2ND_MASK_SFT (0x1 << 4) +#define CCI_AUD_SDM_MUTEL_2ND_SFT 3 +#define CCI_AUD_SDM_MUTEL_2ND_MASK 0x1 +#define CCI_AUD_SDM_MUTEL_2ND_MASK_SFT (0x1 << 3) +#define CCI_AUD_SDM_MUTER_2ND_SFT 2 +#define CCI_AUD_SDM_MUTER_2ND_MASK 0x1 +#define CCI_AUD_SDM_MUTER_2ND_MASK_SFT (0x1 << 2) +#define CCI_AUD_SDM_7BIT_SEL_2ND_SFT 1 +#define CCI_AUD_SDM_7BIT_SEL_2ND_MASK 0x1 +#define CCI_AUD_SDM_7BIT_SEL_2ND_MASK_SFT (0x1 << 1) +#define CCI_SCRAMBLER_EN_2ND_SFT 0 +#define CCI_SCRAMBLER_EN_2ND_MASK 0x1 +#define CCI_SCRAMBLER_EN_2ND_MASK_SFT (0x1 << 0) + +/* AFUNC_AUD_CON10 */ +#define AUD_SDM_TEST_L_2ND_SFT 8 +#define AUD_SDM_TEST_L_2ND_MASK 0xff +#define AUD_SDM_TEST_L_2ND_MASK_SFT (0xff << 8) +#define AUD_SDM_TEST_R_2ND_SFT 0 +#define AUD_SDM_TEST_R_2ND_MASK 0xff +#define AUD_SDM_TEST_R_2ND_MASK_SFT (0xff << 0) + +/* AFUNC_AUD_CON11 */ +#define CCI_AUD_DAC_ANA_MUTE_2ND_SFT 7 +#define CCI_AUD_DAC_ANA_MUTE_2ND_MASK 0x1 +#define CCI_AUD_DAC_ANA_MUTE_2ND_MASK_SFT (0x1 << 7) +#define CCI_AUD_DAC_ANA_RSTB_SEL_2ND_SFT 6 +#define CCI_AUD_DAC_ANA_RSTB_SEL_2ND_MASK 0x1 +#define CCI_AUD_DAC_ANA_RSTB_SEL_2ND_MASK_SFT (0x1 << 6) +#define CCI_AUDIO_FIFO_CLKIN_INV_2ND_SFT 4 +#define CCI_AUDIO_FIFO_CLKIN_INV_2ND_MASK 0x1 +#define CCI_AUDIO_FIFO_CLKIN_INV_2ND_MASK_SFT (0x1 << 4) +#define CCI_AUDIO_FIFO_ENABLE_2ND_SFT 3 +#define CCI_AUDIO_FIFO_ENABLE_2ND_MASK 0x1 +#define CCI_AUDIO_FIFO_ENABLE_2ND_MASK_SFT (0x1 << 3) +#define CCI_ACD_MODE_2ND_SFT 2 +#define CCI_ACD_MODE_2ND_MASK 0x1 +#define CCI_ACD_MODE_2ND_MASK_SFT (0x1 << 2) +#define CCI_AFIFO_CLK_PWDB_2ND_SFT 1 +#define CCI_AFIFO_CLK_PWDB_2ND_MASK 0x1 +#define CCI_AFIFO_CLK_PWDB_2ND_MASK_SFT (0x1 << 1) +#define CCI_ACD_FUNC_RSTB_2ND_SFT 0 +#define CCI_ACD_FUNC_RSTB_2ND_MASK 0x1 +#define CCI_ACD_FUNC_RSTB_2ND_MASK_SFT (0x1 << 0) + +/* AFUNC_AUD_CON12 */ +#define SPLITTER2_DITHER_EN_2ND_SFT 9 +#define SPLITTER2_DITHER_EN_2ND_MASK 0x1 +#define SPLITTER2_DITHER_EN_2ND_MASK_SFT (0x1 << 9) +#define SPLITTER1_DITHER_EN_2ND_SFT 8 +#define SPLITTER1_DITHER_EN_2ND_MASK 0x1 +#define SPLITTER1_DITHER_EN_2ND_MASK_SFT (0x1 << 8) +#define SPLITTER2_DITHER_GAIN_2ND_SFT 4 +#define SPLITTER2_DITHER_GAIN_2ND_MASK 0xf +#define SPLITTER2_DITHER_GAIN_2ND_MASK_SFT (0xf << 4) +#define SPLITTER1_DITHER_GAIN_2ND_SFT 0 +#define SPLITTER1_DITHER_GAIN_2ND_MASK 0xf +#define SPLITTER1_DITHER_GAIN_2ND_MASK_SFT (0xf << 0) + +/* AFUNC_AUD_MON0 */ +#define AUD_SCR_OUT_L_SFT 8 +#define AUD_SCR_OUT_L_MASK 0xff +#define AUD_SCR_OUT_L_MASK_SFT (0xff << 8) +#define AUD_SCR_OUT_R_SFT 0 +#define AUD_SCR_OUT_R_MASK 0xff +#define AUD_SCR_OUT_R_MASK_SFT (0xff << 0) + +/* AFUNC_AUD_MON1 */ +#define AUD_SCR_OUT_L_2ND_SFT 8 +#define AUD_SCR_OUT_L_2ND_MASK 0xff +#define AUD_SCR_OUT_L_2ND_MASK_SFT (0xff << 8) +#define AUD_SCR_OUT_R_2ND_SFT 0 +#define AUD_SCR_OUT_R_2ND_MASK 0xff +#define AUD_SCR_OUT_R_2ND_MASK_SFT (0xff << 0) + +/* AUDRC_TUNE_MON0 */ +#define ASYNC_TEST_OUT_BCK_SFT 15 +#define ASYNC_TEST_OUT_BCK_MASK 0x1 +#define ASYNC_TEST_OUT_BCK_MASK_SFT (0x1 << 15) +#define RGS_AUDRCTUNE1READ_SFT 8 +#define RGS_AUDRCTUNE1READ_MASK 0x1f +#define RGS_AUDRCTUNE1READ_MASK_SFT (0x1f << 8) +#define RGS_AUDRCTUNE0READ_SFT 0 +#define RGS_AUDRCTUNE0READ_MASK 0x1f +#define RGS_AUDRCTUNE0READ_MASK_SFT (0x1f << 0) + +/* AFE_ADDA_MTKAIF_FIFO_CFG0 */ +#define AFE_RESERVED_SFT 1 +#define AFE_RESERVED_MASK 0x7fff +#define AFE_RESERVED_MASK_SFT (0x7fff << 1) +#define RG_MTKAIF_RXIF_FIFO_INTEN_SFT 0 +#define RG_MTKAIF_RXIF_FIFO_INTEN_MASK 0x1 +#define RG_MTKAIF_RXIF_FIFO_INTEN_MASK_SFT (0x1 << 0) + +/* AFE_ADDA_MTKAIF_FIFO_LOG_MON1 */ +#define MTKAIF_RXIF_WR_FULL_STATUS_SFT 1 +#define MTKAIF_RXIF_WR_FULL_STATUS_MASK 0x1 +#define MTKAIF_RXIF_WR_FULL_STATUS_MASK_SFT (0x1 << 1) +#define MTKAIF_RXIF_RD_EMPTY_STATUS_SFT 0 +#define MTKAIF_RXIF_RD_EMPTY_STATUS_MASK 0x1 +#define MTKAIF_RXIF_RD_EMPTY_STATUS_MASK_SFT (0x1 << 0) + +/* AFE_ADDA_MTKAIF_MON0 */ +#define MTKAIFTX_V3_SYNC_OUT_SFT 15 +#define MTKAIFTX_V3_SYNC_OUT_MASK 0x1 +#define MTKAIFTX_V3_SYNC_OUT_MASK_SFT (0x1 << 15) +#define MTKAIFTX_V3_SDATA_OUT3_SFT 14 +#define MTKAIFTX_V3_SDATA_OUT3_MASK 0x1 +#define MTKAIFTX_V3_SDATA_OUT3_MASK_SFT (0x1 << 14) +#define MTKAIFTX_V3_SDATA_OUT2_SFT 13 +#define MTKAIFTX_V3_SDATA_OUT2_MASK 0x1 +#define MTKAIFTX_V3_SDATA_OUT2_MASK_SFT (0x1 << 13) +#define MTKAIFTX_V3_SDATA_OUT1_SFT 12 +#define MTKAIFTX_V3_SDATA_OUT1_MASK 0x1 +#define MTKAIFTX_V3_SDATA_OUT1_MASK_SFT (0x1 << 12) +#define MTKAIF_RXIF_FIFO_STATUS_SFT 0 +#define MTKAIF_RXIF_FIFO_STATUS_MASK 0xfff +#define MTKAIF_RXIF_FIFO_STATUS_MASK_SFT (0xfff << 0) + +/* AFE_ADDA_MTKAIF_MON1 */ +#define MTKAIFRX_V3_SYNC_IN_SFT 15 +#define MTKAIFRX_V3_SYNC_IN_MASK 0x1 +#define MTKAIFRX_V3_SYNC_IN_MASK_SFT (0x1 << 15) +#define MTKAIFRX_V3_SDATA_IN3_SFT 14 +#define MTKAIFRX_V3_SDATA_IN3_MASK 0x1 +#define MTKAIFRX_V3_SDATA_IN3_MASK_SFT (0x1 << 14) +#define MTKAIFRX_V3_SDATA_IN2_SFT 13 +#define MTKAIFRX_V3_SDATA_IN2_MASK 0x1 +#define MTKAIFRX_V3_SDATA_IN2_MASK_SFT (0x1 << 13) +#define MTKAIFRX_V3_SDATA_IN1_SFT 12 +#define MTKAIFRX_V3_SDATA_IN1_MASK 0x1 +#define MTKAIFRX_V3_SDATA_IN1_MASK_SFT (0x1 << 12) +#define MTKAIF_RXIF_SEARCH_FAIL_FLAG_SFT 11 +#define MTKAIF_RXIF_SEARCH_FAIL_FLAG_MASK 0x1 +#define MTKAIF_RXIF_SEARCH_FAIL_FLAG_MASK_SFT (0x1 << 11) +#define MTKAIF_RXIF_INVALID_FLAG_SFT 8 +#define MTKAIF_RXIF_INVALID_FLAG_MASK 0x1 +#define MTKAIF_RXIF_INVALID_FLAG_MASK_SFT (0x1 << 8) +#define MTKAIF_RXIF_INVALID_CYCLE_SFT 0 +#define MTKAIF_RXIF_INVALID_CYCLE_MASK 0xff +#define MTKAIF_RXIF_INVALID_CYCLE_MASK_SFT (0xff << 0) + +/* AFE_ADDA_MTKAIF_MON2 */ +#define MTKAIF_TXIF_IN_CH2_SFT 8 +#define MTKAIF_TXIF_IN_CH2_MASK 0xff +#define MTKAIF_TXIF_IN_CH2_MASK_SFT (0xff << 8) +#define MTKAIF_TXIF_IN_CH1_SFT 0 +#define MTKAIF_TXIF_IN_CH1_MASK 0xff +#define MTKAIF_TXIF_IN_CH1_MASK_SFT (0xff << 0) + +/* AFE_ADDA6_MTKAIF_MON3 */ +#define ADDA6_MTKAIF_TXIF_IN_CH2_SFT 8 +#define ADDA6_MTKAIF_TXIF_IN_CH2_MASK 0xff +#define ADDA6_MTKAIF_TXIF_IN_CH2_MASK_SFT (0xff << 8) +#define ADDA6_MTKAIF_TXIF_IN_CH1_SFT 0 +#define ADDA6_MTKAIF_TXIF_IN_CH1_MASK 0xff +#define ADDA6_MTKAIF_TXIF_IN_CH1_MASK_SFT (0xff << 0) + +/* AFE_ADDA_MTKAIF_MON4 */ +#define MTKAIF_RXIF_OUT_CH2_SFT 8 +#define MTKAIF_RXIF_OUT_CH2_MASK 0xff +#define MTKAIF_RXIF_OUT_CH2_MASK_SFT (0xff << 8) +#define MTKAIF_RXIF_OUT_CH1_SFT 0 +#define MTKAIF_RXIF_OUT_CH1_MASK 0xff +#define MTKAIF_RXIF_OUT_CH1_MASK_SFT (0xff << 0) + +/* AFE_ADDA_MTKAIF_MON5 */ +#define MTKAIF_RXIF_OUT_CH3_SFT 0 +#define MTKAIF_RXIF_OUT_CH3_MASK 0xff +#define MTKAIF_RXIF_OUT_CH3_MASK_SFT (0xff << 0) + +/* AFE_ADDA_MTKAIF_CFG0 */ +#define RG_MTKAIF_RXIF_CLKINV_SFT 15 +#define RG_MTKAIF_RXIF_CLKINV_MASK 0x1 +#define RG_MTKAIF_RXIF_CLKINV_MASK_SFT (0x1 << 15) +#define RG_ADDA6_MTKAIF_TXIF_PROTOCOL2_SFT 9 +#define RG_ADDA6_MTKAIF_TXIF_PROTOCOL2_MASK 0x1 +#define RG_ADDA6_MTKAIF_TXIF_PROTOCOL2_MASK_SFT (0x1 << 9) +#define RG_MTKAIF_RXIF_PROTOCOL2_SFT 8 +#define RG_MTKAIF_RXIF_PROTOCOL2_MASK 0x1 +#define RG_MTKAIF_RXIF_PROTOCOL2_MASK_SFT (0x1 << 8) +#define RG_MTKAIF_BYPASS_SRC_MODE_SFT 6 +#define RG_MTKAIF_BYPASS_SRC_MODE_MASK 0x3 +#define RG_MTKAIF_BYPASS_SRC_MODE_MASK_SFT (0x3 << 6) +#define RG_MTKAIF_BYPASS_SRC_TEST_SFT 5 +#define RG_MTKAIF_BYPASS_SRC_TEST_MASK 0x1 +#define RG_MTKAIF_BYPASS_SRC_TEST_MASK_SFT (0x1 << 5) +#define RG_MTKAIF_TXIF_PROTOCOL2_SFT 4 +#define RG_MTKAIF_TXIF_PROTOCOL2_MASK 0x1 +#define RG_MTKAIF_TXIF_PROTOCOL2_MASK_SFT (0x1 << 4) +#define RG_ADDA6_MTKAIF_PMIC_TXIF_8TO5_SFT 3 +#define RG_ADDA6_MTKAIF_PMIC_TXIF_8TO5_MASK 0x1 +#define RG_ADDA6_MTKAIF_PMIC_TXIF_8TO5_MASK_SFT (0x1 << 3) +#define RG_MTKAIF_PMIC_TXIF_8TO5_SFT 2 +#define RG_MTKAIF_PMIC_TXIF_8TO5_MASK 0x1 +#define RG_MTKAIF_PMIC_TXIF_8TO5_MASK_SFT (0x1 << 2) +#define RG_MTKAIF_LOOPBACK_TEST2_SFT 1 +#define RG_MTKAIF_LOOPBACK_TEST2_MASK 0x1 +#define RG_MTKAIF_LOOPBACK_TEST2_MASK_SFT (0x1 << 1) +#define RG_MTKAIF_LOOPBACK_TEST1_SFT 0 +#define RG_MTKAIF_LOOPBACK_TEST1_MASK 0x1 +#define RG_MTKAIF_LOOPBACK_TEST1_MASK_SFT (0x1 << 0) + +/* AFE_ADDA_MTKAIF_RX_CFG0 */ +#define RG_MTKAIF_RXIF_VOICE_MODE_SFT 12 +#define RG_MTKAIF_RXIF_VOICE_MODE_MASK 0xf +#define RG_MTKAIF_RXIF_VOICE_MODE_MASK_SFT (0xf << 12) +#define RG_MTKAIF_RXIF_DATA_BIT_SFT 8 +#define RG_MTKAIF_RXIF_DATA_BIT_MASK 0x7 +#define RG_MTKAIF_RXIF_DATA_BIT_MASK_SFT (0x7 << 8) +#define RG_MTKAIF_RXIF_FIFO_RSP_SFT 4 +#define RG_MTKAIF_RXIF_FIFO_RSP_MASK 0x7 +#define RG_MTKAIF_RXIF_FIFO_RSP_MASK_SFT (0x7 << 4) +#define RG_MTKAIF_RXIF_DETECT_ON_SFT 3 +#define RG_MTKAIF_RXIF_DETECT_ON_MASK 0x1 +#define RG_MTKAIF_RXIF_DETECT_ON_MASK_SFT (0x1 << 3) +#define RG_MTKAIF_RXIF_DATA_MODE_SFT 0 +#define RG_MTKAIF_RXIF_DATA_MODE_MASK 0x1 +#define RG_MTKAIF_RXIF_DATA_MODE_MASK_SFT (0x1 << 0) + +/* AFE_ADDA_MTKAIF_RX_CFG1 */ +#define RG_MTKAIF_RXIF_SYNC_SEARCH_TABLE_SFT 12 +#define RG_MTKAIF_RXIF_SYNC_SEARCH_TABLE_MASK 0xf +#define RG_MTKAIF_RXIF_SYNC_SEARCH_TABLE_MASK_SFT (0xf << 12) +#define RG_MTKAIF_RXIF_INVALID_SYNC_CHECK_ROUND_SFT 8 +#define RG_MTKAIF_RXIF_INVALID_SYNC_CHECK_ROUND_MASK 0xf +#define RG_MTKAIF_RXIF_INVALID_SYNC_CHECK_ROUND_MASK_SFT (0xf << 8) +#define RG_MTKAIF_RXIF_SYNC_CHECK_ROUND_SFT 4 +#define RG_MTKAIF_RXIF_SYNC_CHECK_ROUND_MASK 0xf +#define RG_MTKAIF_RXIF_SYNC_CHECK_ROUND_MASK_SFT (0xf << 4) +#define RG_MTKAIF_RXIF_VOICE_MODE_PROTOCOL2_SFT 0 +#define RG_MTKAIF_RXIF_VOICE_MODE_PROTOCOL2_MASK 0xf +#define RG_MTKAIF_RXIF_VOICE_MODE_PROTOCOL2_MASK_SFT (0xf << 0) + +/* AFE_ADDA_MTKAIF_RX_CFG2 */ +#define RG_MTKAIF_RXIF_P2_INPUT_SEL_SFT 15 +#define RG_MTKAIF_RXIF_P2_INPUT_SEL_MASK 0x1 +#define RG_MTKAIF_RXIF_P2_INPUT_SEL_MASK_SFT (0x1 << 15) +#define RG_MTKAIF_RXIF_SYNC_WORD2_DISABLE_SFT 14 +#define RG_MTKAIF_RXIF_SYNC_WORD2_DISABLE_MASK 0x1 +#define RG_MTKAIF_RXIF_SYNC_WORD2_DISABLE_MASK_SFT (0x1 << 14) +#define RG_MTKAIF_RXIF_SYNC_WORD1_DISABLE_SFT 13 +#define RG_MTKAIF_RXIF_SYNC_WORD1_DISABLE_MASK 0x1 +#define RG_MTKAIF_RXIF_SYNC_WORD1_DISABLE_MASK_SFT (0x1 << 13) +#define RG_MTKAIF_RXIF_CLEAR_SYNC_FAIL_SFT 12 +#define RG_MTKAIF_RXIF_CLEAR_SYNC_FAIL_MASK 0x1 +#define RG_MTKAIF_RXIF_CLEAR_SYNC_FAIL_MASK_SFT (0x1 << 12) +#define RG_MTKAIF_RXIF_SYNC_CNT_TABLE_SFT 0 +#define RG_MTKAIF_RXIF_SYNC_CNT_TABLE_MASK 0xfff +#define RG_MTKAIF_RXIF_SYNC_CNT_TABLE_MASK_SFT (0xfff << 0) + +/* AFE_ADDA_MTKAIF_RX_CFG3 */ +#define RG_MTKAIF_RXIF_LOOPBACK_USE_NLE_SFT 7 +#define RG_MTKAIF_RXIF_LOOPBACK_USE_NLE_MASK 0x1 +#define RG_MTKAIF_RXIF_LOOPBACK_USE_NLE_MASK_SFT (0x1 << 7) +#define RG_MTKAIF_RXIF_FIFO_RSP_PROTOCOL2_SFT 4 +#define RG_MTKAIF_RXIF_FIFO_RSP_PROTOCOL2_MASK 0x7 +#define RG_MTKAIF_RXIF_FIFO_RSP_PROTOCOL2_MASK_SFT (0x7 << 4) +#define RG_MTKAIF_RXIF_DETECT_ON_PROTOCOL2_SFT 3 +#define RG_MTKAIF_RXIF_DETECT_ON_PROTOCOL2_MASK 0x1 +#define RG_MTKAIF_RXIF_DETECT_ON_PROTOCOL2_MASK_SFT (0x1 << 3) + +/* AFE_ADDA_MTKAIF_SYNCWORD_CFG0 */ +#define RG_MTKAIF_RX_SYNC_WORD2_SFT 4 +#define RG_MTKAIF_RX_SYNC_WORD2_MASK 0x7 +#define RG_MTKAIF_RX_SYNC_WORD2_MASK_SFT (0x7 << 4) +#define RG_MTKAIF_RX_SYNC_WORD1_SFT 0 +#define RG_MTKAIF_RX_SYNC_WORD1_MASK 0x7 +#define RG_MTKAIF_RX_SYNC_WORD1_MASK_SFT (0x7 << 0) + +/* AFE_ADDA_MTKAIF_SYNCWORD_CFG1 */ +#define RG_ADDA6_MTKAIF_TX_SYNC_WORD2_SFT 12 +#define RG_ADDA6_MTKAIF_TX_SYNC_WORD2_MASK 0x7 +#define RG_ADDA6_MTKAIF_TX_SYNC_WORD2_MASK_SFT (0x7 << 12) +#define RG_ADDA6_MTKAIF_TX_SYNC_WORD1_SFT 8 +#define RG_ADDA6_MTKAIF_TX_SYNC_WORD1_MASK 0x7 +#define RG_ADDA6_MTKAIF_TX_SYNC_WORD1_MASK_SFT (0x7 << 8) +#define RG_ADDA_MTKAIF_TX_SYNC_WORD2_SFT 4 +#define RG_ADDA_MTKAIF_TX_SYNC_WORD2_MASK 0x7 +#define RG_ADDA_MTKAIF_TX_SYNC_WORD2_MASK_SFT (0x7 << 4) +#define RG_ADDA_MTKAIF_TX_SYNC_WORD1_SFT 0 +#define RG_ADDA_MTKAIF_TX_SYNC_WORD1_MASK 0x7 +#define RG_ADDA_MTKAIF_TX_SYNC_WORD1_MASK_SFT (0x7 << 0) + +/* AFE_SGEN_CFG0 */ +#define SGEN_AMP_DIV_CH1_CTL_SFT 12 +#define SGEN_AMP_DIV_CH1_CTL_MASK 0xf +#define SGEN_AMP_DIV_CH1_CTL_MASK_SFT (0xf << 12) +#define SGEN_DAC_EN_CTL_SFT 7 +#define SGEN_DAC_EN_CTL_MASK 0x1 +#define SGEN_DAC_EN_CTL_MASK_SFT (0x1 << 7) +#define SGEN_MUTE_SW_CTL_SFT 6 +#define SGEN_MUTE_SW_CTL_MASK 0x1 +#define SGEN_MUTE_SW_CTL_MASK_SFT (0x1 << 6) +#define R_AUD_SDM_MUTE_L_SFT 5 +#define R_AUD_SDM_MUTE_L_MASK 0x1 +#define R_AUD_SDM_MUTE_L_MASK_SFT (0x1 << 5) +#define R_AUD_SDM_MUTE_R_SFT 4 +#define R_AUD_SDM_MUTE_R_MASK 0x1 +#define R_AUD_SDM_MUTE_R_MASK_SFT (0x1 << 4) +#define R_AUD_SDM_MUTE_L_2ND_SFT 3 +#define R_AUD_SDM_MUTE_L_2ND_MASK 0x1 +#define R_AUD_SDM_MUTE_L_2ND_MASK_SFT (0x1 << 3) +#define R_AUD_SDM_MUTE_R_2ND_SFT 2 +#define R_AUD_SDM_MUTE_R_2ND_MASK 0x1 +#define R_AUD_SDM_MUTE_R_2ND_MASK_SFT (0x1 << 2) + +/* AFE_SGEN_CFG1 */ +#define C_SGEN_RCH_INV_5BIT_SFT 15 +#define C_SGEN_RCH_INV_5BIT_MASK 0x1 +#define C_SGEN_RCH_INV_5BIT_MASK_SFT (0x1 << 15) +#define C_SGEN_RCH_INV_8BIT_SFT 14 +#define C_SGEN_RCH_INV_8BIT_MASK 0x1 +#define C_SGEN_RCH_INV_8BIT_MASK_SFT (0x1 << 14) +#define SGEN_FREQ_DIV_CH1_CTL_SFT 0 +#define SGEN_FREQ_DIV_CH1_CTL_MASK 0x1f +#define SGEN_FREQ_DIV_CH1_CTL_MASK_SFT (0x1f << 0) + +/* AFE_ADC_ASYNC_FIFO_CFG */ +#define RG_UL_ASYNC_FIFO_SOFT_RST_EN_SFT 5 +#define RG_UL_ASYNC_FIFO_SOFT_RST_EN_MASK 0x1 +#define RG_UL_ASYNC_FIFO_SOFT_RST_EN_MASK_SFT (0x1 << 5) +#define RG_UL_ASYNC_FIFO_SOFT_RST_SFT 4 +#define RG_UL_ASYNC_FIFO_SOFT_RST_MASK 0x1 +#define RG_UL_ASYNC_FIFO_SOFT_RST_MASK_SFT (0x1 << 4) +#define RG_AMIC_UL_ADC_CLK_SEL_SFT 1 +#define RG_AMIC_UL_ADC_CLK_SEL_MASK 0x1 +#define RG_AMIC_UL_ADC_CLK_SEL_MASK_SFT (0x1 << 1) + +/* AFE_ADC_ASYNC_FIFO_CFG1 */ +#define RG_UL2_ASYNC_FIFO_SOFT_RST_EN_SFT 5 +#define RG_UL2_ASYNC_FIFO_SOFT_RST_EN_MASK 0x1 +#define RG_UL2_ASYNC_FIFO_SOFT_RST_EN_MASK_SFT (0x1 << 5) +#define RG_UL2_ASYNC_FIFO_SOFT_RST_SFT 4 +#define RG_UL2_ASYNC_FIFO_SOFT_RST_MASK 0x1 +#define RG_UL2_ASYNC_FIFO_SOFT_RST_MASK_SFT (0x1 << 4) + +/* AFE_DCCLK_CFG0 */ +#define DCCLK_DIV_SFT 5 +#define DCCLK_DIV_MASK 0x7ff +#define DCCLK_DIV_MASK_SFT (0x7ff << 5) +#define DCCLK_INV_SFT 4 +#define DCCLK_INV_MASK 0x1 +#define DCCLK_INV_MASK_SFT (0x1 << 4) +#define DCCLK_REF_CK_SEL_SFT 2 +#define DCCLK_REF_CK_SEL_MASK 0x3 +#define DCCLK_REF_CK_SEL_MASK_SFT (0x3 << 2) +#define DCCLK_PDN_SFT 1 +#define DCCLK_PDN_MASK 0x1 +#define DCCLK_PDN_MASK_SFT (0x1 << 1) +#define DCCLK_GEN_ON_SFT 0 +#define DCCLK_GEN_ON_MASK 0x1 +#define DCCLK_GEN_ON_MASK_SFT (0x1 << 0) + +/* AFE_DCCLK_CFG1 */ +#define RESYNC_SRC_SEL_SFT 10 +#define RESYNC_SRC_SEL_MASK 0x3 +#define RESYNC_SRC_SEL_MASK_SFT (0x3 << 10) +#define RESYNC_SRC_CK_INV_SFT 9 +#define RESYNC_SRC_CK_INV_MASK 0x1 +#define RESYNC_SRC_CK_INV_MASK_SFT (0x1 << 9) +#define DCCLK_RESYNC_BYPASS_SFT 8 +#define DCCLK_RESYNC_BYPASS_MASK 0x1 +#define DCCLK_RESYNC_BYPASS_MASK_SFT (0x1 << 8) +#define DCCLK_PHASE_SEL_SFT 4 +#define DCCLK_PHASE_SEL_MASK 0xf +#define DCCLK_PHASE_SEL_MASK_SFT (0xf << 4) + +/* AUDIO_DIG_CFG */ +#define RG_AUD_PAD_TOP_DAT_MISO2_LOOPBACK_SFT 15 +#define RG_AUD_PAD_TOP_DAT_MISO2_LOOPBACK_MASK 0x1 +#define RG_AUD_PAD_TOP_DAT_MISO2_LOOPBACK_MASK_SFT (0x1 << 15) +#define RG_AUD_PAD_TOP_PHASE_MODE2_SFT 8 +#define RG_AUD_PAD_TOP_PHASE_MODE2_MASK 0x7f +#define RG_AUD_PAD_TOP_PHASE_MODE2_MASK_SFT (0x7f << 8) +#define RG_AUD_PAD_TOP_DAT_MISO_LOOPBACK_SFT 7 +#define RG_AUD_PAD_TOP_DAT_MISO_LOOPBACK_MASK 0x1 +#define RG_AUD_PAD_TOP_DAT_MISO_LOOPBACK_MASK_SFT (0x1 << 7) +#define RG_AUD_PAD_TOP_PHASE_MODE_SFT 0 +#define RG_AUD_PAD_TOP_PHASE_MODE_MASK 0x7f +#define RG_AUD_PAD_TOP_PHASE_MODE_MASK_SFT (0x7f << 0) + +/* AUDIO_DIG_CFG1 */ +#define RG_AUD_PAD_TOP_DAT_MISO3_LOOPBACK_SFT 7 +#define RG_AUD_PAD_TOP_DAT_MISO3_LOOPBACK_MASK 0x1 +#define RG_AUD_PAD_TOP_DAT_MISO3_LOOPBACK_MASK_SFT (0x1 << 7) +#define RG_AUD_PAD_TOP_PHASE_MODE3_SFT 0 +#define RG_AUD_PAD_TOP_PHASE_MODE3_MASK 0x7f +#define RG_AUD_PAD_TOP_PHASE_MODE3_MASK_SFT (0x7f << 0) + +/* AFE_AUD_PAD_TOP */ +#define RG_AUD_PAD_TOP_TX_FIFO_RSP_SFT 12 +#define RG_AUD_PAD_TOP_TX_FIFO_RSP_MASK 0x7 +#define RG_AUD_PAD_TOP_TX_FIFO_RSP_MASK_SFT (0x7 << 12) +#define RG_AUD_PAD_TOP_MTKAIF_CLK_PROTOCOL2_SFT 11 +#define RG_AUD_PAD_TOP_MTKAIF_CLK_PROTOCOL2_MASK 0x1 +#define RG_AUD_PAD_TOP_MTKAIF_CLK_PROTOCOL2_MASK_SFT (0x1 << 11) +#define RG_AUD_PAD_TOP_TX_FIFO_ON_SFT 8 +#define RG_AUD_PAD_TOP_TX_FIFO_ON_MASK 0x1 +#define RG_AUD_PAD_TOP_TX_FIFO_ON_MASK_SFT (0x1 << 8) + +/* AFE_AUD_PAD_TOP_MON */ +#define ADDA_AUD_PAD_TOP_MON_SFT 0 +#define ADDA_AUD_PAD_TOP_MON_MASK 0xffff +#define ADDA_AUD_PAD_TOP_MON_MASK_SFT (0xffff << 0) + +/* AFE_AUD_PAD_TOP_MON1 */ +#define ADDA_AUD_PAD_TOP_MON1_SFT 0 +#define ADDA_AUD_PAD_TOP_MON1_MASK 0xffff +#define ADDA_AUD_PAD_TOP_MON1_MASK_SFT (0xffff << 0) + +/* AFE_AUD_PAD_TOP_MON2 */ +#define ADDA_AUD_PAD_TOP_MON2_SFT 0 +#define ADDA_AUD_PAD_TOP_MON2_MASK 0xffff +#define ADDA_AUD_PAD_TOP_MON2_MASK_SFT (0xffff << 0) + +/* AFE_DL_NLE_CFG */ +#define NLE_RCH_HPGAIN_SEL_SFT 10 +#define NLE_RCH_HPGAIN_SEL_MASK 0x1 +#define NLE_RCH_HPGAIN_SEL_MASK_SFT (0x1 << 10) +#define NLE_RCH_CH_SEL_SFT 9 +#define NLE_RCH_CH_SEL_MASK 0x1 +#define NLE_RCH_CH_SEL_MASK_SFT (0x1 << 9) +#define NLE_RCH_ON_SFT 8 +#define NLE_RCH_ON_MASK 0x1 +#define NLE_RCH_ON_MASK_SFT (0x1 << 8) +#define NLE_LCH_HPGAIN_SEL_SFT 2 +#define NLE_LCH_HPGAIN_SEL_MASK 0x1 +#define NLE_LCH_HPGAIN_SEL_MASK_SFT (0x1 << 2) +#define NLE_LCH_CH_SEL_SFT 1 +#define NLE_LCH_CH_SEL_MASK 0x1 +#define NLE_LCH_CH_SEL_MASK_SFT (0x1 << 1) +#define NLE_LCH_ON_SFT 0 +#define NLE_LCH_ON_MASK 0x1 +#define NLE_LCH_ON_MASK_SFT (0x1 << 0) + +/* AFE_DL_NLE_MON */ +#define NLE_MONITOR_SFT 0 +#define NLE_MONITOR_MASK 0x3fff +#define NLE_MONITOR_MASK_SFT (0x3fff << 0) + +/* AFE_CG_EN_MON */ +#define CK_CG_EN_MON_SFT 0 +#define CK_CG_EN_MON_MASK 0x3f +#define CK_CG_EN_MON_MASK_SFT (0x3f << 0) + +/* AFE_MIC_ARRAY_CFG */ +#define RG_AMIC_ADC1_SOURCE_SEL_SFT 10 +#define RG_AMIC_ADC1_SOURCE_SEL_MASK 0x3 +#define RG_AMIC_ADC1_SOURCE_SEL_MASK_SFT (0x3 << 10) +#define RG_AMIC_ADC2_SOURCE_SEL_SFT 8 +#define RG_AMIC_ADC2_SOURCE_SEL_MASK 0x3 +#define RG_AMIC_ADC2_SOURCE_SEL_MASK_SFT (0x3 << 8) +#define RG_AMIC_ADC3_SOURCE_SEL_SFT 6 +#define RG_AMIC_ADC3_SOURCE_SEL_MASK 0x3 +#define RG_AMIC_ADC3_SOURCE_SEL_MASK_SFT (0x3 << 6) +#define RG_DMIC_ADC1_SOURCE_SEL_SFT 4 +#define RG_DMIC_ADC1_SOURCE_SEL_MASK 0x3 +#define RG_DMIC_ADC1_SOURCE_SEL_MASK_SFT (0x3 << 4) +#define RG_DMIC_ADC2_SOURCE_SEL_SFT 2 +#define RG_DMIC_ADC2_SOURCE_SEL_MASK 0x3 +#define RG_DMIC_ADC2_SOURCE_SEL_MASK_SFT (0x3 << 2) +#define RG_DMIC_ADC3_SOURCE_SEL_SFT 0 +#define RG_DMIC_ADC3_SOURCE_SEL_MASK 0x3 +#define RG_DMIC_ADC3_SOURCE_SEL_MASK_SFT (0x3 << 0) + +/* AFE_CHOP_CFG0 */ +#define RG_CHOP_DIV_SEL_SFT 4 +#define RG_CHOP_DIV_SEL_MASK 0x1f +#define RG_CHOP_DIV_SEL_MASK_SFT (0x1f << 4) +#define RG_CHOP_DIV_EN_SFT 0 +#define RG_CHOP_DIV_EN_MASK 0x1 +#define RG_CHOP_DIV_EN_MASK_SFT (0x1 << 0) + +/* AFE_MTKAIF_MUX_CFG */ +#define RG_ADDA6_EN_SEL_SFT 12 +#define RG_ADDA6_EN_SEL_MASK 0x1 +#define RG_ADDA6_EN_SEL_MASK_SFT (0x1 << 12) +#define RG_ADDA6_CH2_SEL_SFT 10 +#define RG_ADDA6_CH2_SEL_MASK 0x3 +#define RG_ADDA6_CH2_SEL_MASK_SFT (0x3 << 10) +#define RG_ADDA6_CH1_SEL_SFT 8 +#define RG_ADDA6_CH1_SEL_MASK 0x3 +#define RG_ADDA6_CH1_SEL_MASK_SFT (0x3 << 8) +#define RG_ADDA_EN_SEL_SFT 4 +#define RG_ADDA_EN_SEL_MASK 0x1 +#define RG_ADDA_EN_SEL_MASK_SFT (0x1 << 4) +#define RG_ADDA_CH2_SEL_SFT 2 +#define RG_ADDA_CH2_SEL_MASK 0x3 +#define RG_ADDA_CH2_SEL_MASK_SFT (0x3 << 2) +#define RG_ADDA_CH1_SEL_SFT 0 +#define RG_ADDA_CH1_SEL_MASK 0x3 +#define RG_ADDA_CH1_SEL_MASK_SFT (0x3 << 0) + +/* AFE_PMIC_NEWIF_CFG3 */ +#define RG_UP8X_SYNC_WORD_SFT 0 +#define RG_UP8X_SYNC_WORD_MASK 0xffff +#define RG_UP8X_SYNC_WORD_MASK_SFT (0xffff << 0) + +/* AFE_VOW_TOP_CON0 */ +#define PDN_VOW_SFT 15 +#define PDN_VOW_MASK 0x1 +#define PDN_VOW_MASK_SFT (0x1 << 15) +#define VOW_DMIC_CK_SEL_SFT 13 +#define VOW_DMIC_CK_SEL_MASK 0x3 +#define VOW_DMIC_CK_SEL_MASK_SFT (0x3 << 13) +#define MAIN_DMIC_CK_VOW_SEL_SFT 12 +#define MAIN_DMIC_CK_VOW_SEL_MASK 0x1 +#define MAIN_DMIC_CK_VOW_SEL_MASK_SFT (0x1 << 12) +#define VOW_CIC_MODE_SEL_SFT 10 +#define VOW_CIC_MODE_SEL_MASK 0x3 +#define VOW_CIC_MODE_SEL_MASK_SFT (0x3 << 10) +#define VOW_SDM_3_LEVEL_SFT 9 +#define VOW_SDM_3_LEVEL_MASK 0x1 +#define VOW_SDM_3_LEVEL_MASK_SFT (0x1 << 9) +#define VOW_LOOP_BACK_MODE_SFT 8 +#define VOW_LOOP_BACK_MODE_MASK 0x1 +#define VOW_LOOP_BACK_MODE_MASK_SFT (0x1 << 8) +#define VOW_INTR_SW_MODE_SFT 7 +#define VOW_INTR_SW_MODE_MASK 0x1 +#define VOW_INTR_SW_MODE_MASK_SFT (0x1 << 7) +#define VOW_INTR_SW_VAL_SFT 6 +#define VOW_INTR_SW_VAL_MASK 0x1 +#define VOW_INTR_SW_VAL_MASK_SFT (0x1 << 6) +#define RG_VOW_INTR_MODE_SEL_SFT 2 +#define RG_VOW_INTR_MODE_SEL_MASK 0x3 +#define RG_VOW_INTR_MODE_SEL_MASK_SFT (0x3 << 2) + +/* AFE_VOW_TOP_CON1 */ +#define VOW_DMIC0_CK_PDN_SFT 15 +#define VOW_DMIC0_CK_PDN_MASK 0x1 +#define VOW_DMIC0_CK_PDN_MASK_SFT (0x1 << 15) +#define VOW_DIGMIC_ON_CH1_SFT 14 +#define VOW_DIGMIC_ON_CH1_MASK 0x1 +#define VOW_DIGMIC_ON_CH1_MASK_SFT (0x1 << 14) +#define VOW_CK_DIV_RST_CH1_SFT 13 +#define VOW_CK_DIV_RST_CH1_MASK 0x1 +#define VOW_CK_DIV_RST_CH1_MASK_SFT (0x1 << 13) +#define VOW_ADC_CK_PDN_CH1_SFT 12 +#define VOW_ADC_CK_PDN_CH1_MASK 0x1 +#define VOW_ADC_CK_PDN_CH1_MASK_SFT (0x1 << 12) +#define VOW_CK_PDN_CH1_SFT 11 +#define VOW_CK_PDN_CH1_MASK 0x1 +#define VOW_CK_PDN_CH1_MASK_SFT (0x1 << 11) +#define VOW_DIGMIC_CK_PHASE_SEL_CH1_SFT 6 +#define VOW_DIGMIC_CK_PHASE_SEL_CH1_MASK 0x1f +#define VOW_DIGMIC_CK_PHASE_SEL_CH1_MASK_SFT (0x1f << 6) +#define VOW_ADC_CLK_INV_CH1_SFT 5 +#define VOW_ADC_CLK_INV_CH1_MASK 0x1 +#define VOW_ADC_CLK_INV_CH1_MASK_SFT (0x1 << 5) +#define VOW_INTR_SOURCE_SEL_CH1_SFT 4 +#define VOW_INTR_SOURCE_SEL_CH1_MASK 0x1 +#define VOW_INTR_SOURCE_SEL_CH1_MASK_SFT (0x1 << 4) +#define VOW_INTR_CLR_CH1_SFT 3 +#define VOW_INTR_CLR_CH1_MASK 0x1 +#define VOW_INTR_CLR_CH1_MASK_SFT (0x1 << 3) +#define S_N_VALUE_RST_CH1_SFT 2 +#define S_N_VALUE_RST_CH1_MASK 0x1 +#define S_N_VALUE_RST_CH1_MASK_SFT (0x1 << 2) +#define SAMPLE_BASE_MODE_CH1_SFT 1 +#define SAMPLE_BASE_MODE_CH1_MASK 0x1 +#define SAMPLE_BASE_MODE_CH1_MASK_SFT (0x1 << 1) +#define VOW_ON_CH1_SFT 0 +#define VOW_ON_CH1_MASK 0x1 +#define VOW_ON_CH1_MASK_SFT (0x1 << 0) + +/* AFE_VOW_TOP_CON2 */ +#define VOW_DMIC1_CK_PDN_SFT 15 +#define VOW_DMIC1_CK_PDN_MASK 0x1 +#define VOW_DMIC1_CK_PDN_MASK_SFT (0x1 << 15) +#define VOW_DIGMIC_ON_CH2_SFT 14 +#define VOW_DIGMIC_ON_CH2_MASK 0x1 +#define VOW_DIGMIC_ON_CH2_MASK_SFT (0x1 << 14) +#define VOW_CK_DIV_RST_CH2_SFT 13 +#define VOW_CK_DIV_RST_CH2_MASK 0x1 +#define VOW_CK_DIV_RST_CH2_MASK_SFT (0x1 << 13) +#define VOW_ADC_CK_PDN_CH2_SFT 12 +#define VOW_ADC_CK_PDN_CH2_MASK 0x1 +#define VOW_ADC_CK_PDN_CH2_MASK_SFT (0x1 << 12) +#define VOW_CK_PDN_CH2_SFT 11 +#define VOW_CK_PDN_CH2_MASK 0x1 +#define VOW_CK_PDN_CH2_MASK_SFT (0x1 << 11) +#define VOW_DIGMIC_CK_PHASE_SEL_CH2_SFT 6 +#define VOW_DIGMIC_CK_PHASE_SEL_CH2_MASK 0x1f +#define VOW_DIGMIC_CK_PHASE_SEL_CH2_MASK_SFT (0x1f << 6) +#define VOW_ADC_CLK_INV_CH2_SFT 5 +#define VOW_ADC_CLK_INV_CH2_MASK 0x1 +#define VOW_ADC_CLK_INV_CH2_MASK_SFT (0x1 << 5) +#define VOW_INTR_SOURCE_SEL_CH2_SFT 4 +#define VOW_INTR_SOURCE_SEL_CH2_MASK 0x1 +#define VOW_INTR_SOURCE_SEL_CH2_MASK_SFT (0x1 << 4) +#define VOW_INTR_CLR_CH2_SFT 3 +#define VOW_INTR_CLR_CH2_MASK 0x1 +#define VOW_INTR_CLR_CH2_MASK_SFT (0x1 << 3) +#define S_N_VALUE_RST_CH2_SFT 2 +#define S_N_VALUE_RST_CH2_MASK 0x1 +#define S_N_VALUE_RST_CH2_MASK_SFT (0x1 << 2) +#define SAMPLE_BASE_MODE_CH2_SFT 1 +#define SAMPLE_BASE_MODE_CH2_MASK 0x1 +#define SAMPLE_BASE_MODE_CH2_MASK_SFT (0x1 << 1) +#define VOW_ON_CH2_SFT 0 +#define VOW_ON_CH2_MASK 0x1 +#define VOW_ON_CH2_MASK_SFT (0x1 << 0) + +/* AFE_VOW_TOP_CON3 */ +#define VOW_TXIF_SCK_INV_SFT 15 +#define VOW_TXIF_SCK_INV_MASK 0x1 +#define VOW_TXIF_SCK_INV_MASK_SFT (0x1 << 15) +#define VOW_ADC_TESTCK_SRC_SEL_SFT 12 +#define VOW_ADC_TESTCK_SRC_SEL_MASK 0x7 +#define VOW_ADC_TESTCK_SRC_SEL_MASK_SFT (0x7 << 12) +#define VOW_ADC_TESTCK_SEL_SFT 11 +#define VOW_ADC_TESTCK_SEL_MASK 0x1 +#define VOW_ADC_TESTCK_SEL_MASK_SFT (0x1 << 11) +#define VOW_TXIF_MONO_SFT 9 +#define VOW_TXIF_MONO_MASK 0x1 +#define VOW_TXIF_MONO_MASK_SFT (0x1 << 9) +#define VOW_TXIF_SCK_DIV_SFT 4 +#define VOW_TXIF_SCK_DIV_MASK 0x1f +#define VOW_TXIF_SCK_DIV_MASK_SFT (0x1f << 4) +#define VOW_P2_SNRDET_AUTO_PDN_SFT 0 +#define VOW_P2_SNRDET_AUTO_PDN_MASK 0x1 +#define VOW_P2_SNRDET_AUTO_PDN_MASK_SFT (0x1 << 0) + +/* AFE_VOW_TOP_CON4 */ +#define RG_VOW_AMIC_ADC1_SOURCE_SEL_SFT 4 +#define RG_VOW_AMIC_ADC1_SOURCE_SEL_MASK 0x3 +#define RG_VOW_AMIC_ADC1_SOURCE_SEL_MASK_SFT (0x3 << 4) +#define RG_VOW_AMIC_ADC2_SOURCE_SEL_SFT 0 +#define RG_VOW_AMIC_ADC2_SOURCE_SEL_MASK 0x3 +#define RG_VOW_AMIC_ADC2_SOURCE_SEL_MASK_SFT (0x3 << 0) + +/* AFE_VOW_TOP_MON0 */ +#define BUCK_DVFS_DONE_SFT 8 +#define BUCK_DVFS_DONE_MASK 0x1 +#define BUCK_DVFS_DONE_MASK_SFT (0x1 << 8) +#define VOW_INTR_SFT 4 +#define VOW_INTR_MASK 0x1 +#define VOW_INTR_MASK_SFT (0x1 << 4) +#define VOW_INTR_FLAG_CH1_SFT 1 +#define VOW_INTR_FLAG_CH1_MASK 0x1 +#define VOW_INTR_FLAG_CH1_MASK_SFT (0x1 << 1) +#define VOW_INTR_FLAG_CH2_SFT 0 +#define VOW_INTR_FLAG_CH2_MASK 0x1 +#define VOW_INTR_FLAG_CH2_MASK_SFT (0x1 << 0) + +/* AFE_VOW_VAD_CFG0 */ +#define AMPREF_CH1_SFT 0 +#define AMPREF_CH1_MASK 0xffff +#define AMPREF_CH1_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_CFG1 */ +#define AMPREF_CH2_SFT 0 +#define AMPREF_CH2_MASK 0xffff +#define AMPREF_CH2_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_CFG2 */ +#define TIMERINI_CH1_SFT 0 +#define TIMERINI_CH1_MASK 0xffff +#define TIMERINI_CH1_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_CFG3 */ +#define TIMERINI_CH2_SFT 0 +#define TIMERINI_CH2_MASK 0xffff +#define TIMERINI_CH2_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_CFG4 */ +#define VOW_IRQ_LATCH_SNR_EN_CH1_SFT 15 +#define VOW_IRQ_LATCH_SNR_EN_CH1_MASK 0x1 +#define VOW_IRQ_LATCH_SNR_EN_CH1_MASK_SFT (0x1 << 15) +#define B_DEFAULT_CH1_SFT 12 +#define B_DEFAULT_CH1_MASK 0x7 +#define B_DEFAULT_CH1_MASK_SFT (0x7 << 12) +#define A_DEFAULT_CH1_SFT 8 +#define A_DEFAULT_CH1_MASK 0x7 +#define A_DEFAULT_CH1_MASK_SFT (0x7 << 8) +#define B_INI_CH1_SFT 4 +#define B_INI_CH1_MASK 0x7 +#define B_INI_CH1_MASK_SFT (0x7 << 4) +#define A_INI_CH1_SFT 0 +#define A_INI_CH1_MASK 0x7 +#define A_INI_CH1_MASK_SFT (0x7 << 0) + +/* AFE_VOW_VAD_CFG5 */ +#define VOW_IRQ_LATCH_SNR_EN_CH2_SFT 15 +#define VOW_IRQ_LATCH_SNR_EN_CH2_MASK 0x1 +#define VOW_IRQ_LATCH_SNR_EN_CH2_MASK_SFT (0x1 << 15) +#define B_DEFAULT_CH2_SFT 12 +#define B_DEFAULT_CH2_MASK 0x7 +#define B_DEFAULT_CH2_MASK_SFT (0x7 << 12) +#define A_DEFAULT_CH2_SFT 8 +#define A_DEFAULT_CH2_MASK 0x7 +#define A_DEFAULT_CH2_MASK_SFT (0x7 << 8) +#define B_INI_CH2_SFT 4 +#define B_INI_CH2_MASK 0x7 +#define B_INI_CH2_MASK_SFT (0x7 << 4) +#define A_INI_CH2_SFT 0 +#define A_INI_CH2_MASK 0x7 +#define A_INI_CH2_MASK_SFT (0x7 << 0) + +/* AFE_VOW_VAD_CFG6 */ +#define K_BETA_RISE_CH1_SFT 12 +#define K_BETA_RISE_CH1_MASK 0xf +#define K_BETA_RISE_CH1_MASK_SFT (0xf << 12) +#define K_BETA_FALL_CH1_SFT 8 +#define K_BETA_FALL_CH1_MASK 0xf +#define K_BETA_FALL_CH1_MASK_SFT (0xf << 8) +#define K_ALPHA_RISE_CH1_SFT 4 +#define K_ALPHA_RISE_CH1_MASK 0xf +#define K_ALPHA_RISE_CH1_MASK_SFT (0xf << 4) +#define K_ALPHA_FALL_CH1_SFT 0 +#define K_ALPHA_FALL_CH1_MASK 0xf +#define K_ALPHA_FALL_CH1_MASK_SFT (0xf << 0) + +/* AFE_VOW_VAD_CFG7 */ +#define K_BETA_RISE_CH2_SFT 12 +#define K_BETA_RISE_CH2_MASK 0xf +#define K_BETA_RISE_CH2_MASK_SFT (0xf << 12) +#define K_BETA_FALL_CH2_SFT 8 +#define K_BETA_FALL_CH2_MASK 0xf +#define K_BETA_FALL_CH2_MASK_SFT (0xf << 8) +#define K_ALPHA_RISE_CH2_SFT 4 +#define K_ALPHA_RISE_CH2_MASK 0xf +#define K_ALPHA_RISE_CH2_MASK_SFT (0xf << 4) +#define K_ALPHA_FALL_CH2_SFT 0 +#define K_ALPHA_FALL_CH2_MASK 0xf +#define K_ALPHA_FALL_CH2_MASK_SFT (0xf << 0) + +/* AFE_VOW_VAD_CFG8 */ +#define N_MIN_CH1_SFT 0 +#define N_MIN_CH1_MASK 0xffff +#define N_MIN_CH1_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_CFG9 */ +#define N_MIN_CH2_SFT 0 +#define N_MIN_CH2_MASK 0xffff +#define N_MIN_CH2_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_CFG10 */ +#define VOW_SN_INI_CFG_EN_CH1_SFT 15 +#define VOW_SN_INI_CFG_EN_CH1_MASK 0x1 +#define VOW_SN_INI_CFG_EN_CH1_MASK_SFT (0x1 << 15) +#define VOW_SN_INI_CFG_VAL_CH1_SFT 0 +#define VOW_SN_INI_CFG_VAL_CH1_MASK 0x7fff +#define VOW_SN_INI_CFG_VAL_CH1_MASK_SFT (0x7fff << 0) + +/* AFE_VOW_VAD_CFG11 */ +#define VOW_SN_INI_CFG_EN_CH2_SFT 15 +#define VOW_SN_INI_CFG_EN_CH2_MASK 0x1 +#define VOW_SN_INI_CFG_EN_CH2_MASK_SFT (0x1 << 15) +#define VOW_SN_INI_CFG_VAL_CH2_SFT 0 +#define VOW_SN_INI_CFG_VAL_CH2_MASK 0x7fff +#define VOW_SN_INI_CFG_VAL_CH2_MASK_SFT (0x7fff << 0) + +/* AFE_VOW_VAD_CFG12 */ +#define K_GAMMA_CH1_SFT 8 +#define K_GAMMA_CH1_MASK 0xf +#define K_GAMMA_CH1_MASK_SFT (0xf << 8) +#define K_GAMMA_CH2_SFT 0 +#define K_GAMMA_CH2_MASK 0xf +#define K_GAMMA_CH2_MASK_SFT (0xf << 0) + +/* AFE_VOW_VAD_MON0 */ +#define VOW_DOWNCNT_CH1_SFT 0 +#define VOW_DOWNCNT_CH1_MASK 0xffff +#define VOW_DOWNCNT_CH1_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_MON1 */ +#define VOW_DOWNCNT_CH2_SFT 0 +#define VOW_DOWNCNT_CH2_MASK 0xffff +#define VOW_DOWNCNT_CH2_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_MON2 */ +#define K_TMP_MON_CH1_SFT 10 +#define K_TMP_MON_CH1_MASK 0xf +#define K_TMP_MON_CH1_MASK_SFT (0xf << 10) +#define SLT_COUNTER_MON_CH1_SFT 7 +#define SLT_COUNTER_MON_CH1_MASK 0x7 +#define SLT_COUNTER_MON_CH1_MASK_SFT (0x7 << 7) +#define VOW_B_CH1_SFT 4 +#define VOW_B_CH1_MASK 0x7 +#define VOW_B_CH1_MASK_SFT (0x7 << 4) +#define VOW_A_CH1_SFT 1 +#define VOW_A_CH1_MASK 0x7 +#define VOW_A_CH1_MASK_SFT (0x7 << 1) +#define SECOND_CNT_START_CH1_SFT 0 +#define SECOND_CNT_START_CH1_MASK 0x1 +#define SECOND_CNT_START_CH1_MASK_SFT (0x1 << 0) + +/* AFE_VOW_VAD_MON3 */ +#define K_TMP_MON_CH2_SFT 10 +#define K_TMP_MON_CH2_MASK 0xf +#define K_TMP_MON_CH2_MASK_SFT (0xf << 10) +#define SLT_COUNTER_MON_CH2_SFT 7 +#define SLT_COUNTER_MON_CH2_MASK 0x7 +#define SLT_COUNTER_MON_CH2_MASK_SFT (0x7 << 7) +#define VOW_B_CH2_SFT 4 +#define VOW_B_CH2_MASK 0x7 +#define VOW_B_CH2_MASK_SFT (0x7 << 4) +#define VOW_A_CH2_SFT 1 +#define VOW_A_CH2_MASK 0x7 +#define VOW_A_CH2_MASK_SFT (0x7 << 1) +#define SECOND_CNT_START_CH2_SFT 0 +#define SECOND_CNT_START_CH2_MASK 0x1 +#define SECOND_CNT_START_CH2_MASK_SFT (0x1 << 0) + +/* AFE_VOW_VAD_MON4 */ +#define VOW_S_L_CH1_SFT 0 +#define VOW_S_L_CH1_MASK 0xffff +#define VOW_S_L_CH1_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_MON5 */ +#define VOW_S_L_CH2_SFT 0 +#define VOW_S_L_CH2_MASK 0xffff +#define VOW_S_L_CH2_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_MON6 */ +#define VOW_S_H_CH1_SFT 0 +#define VOW_S_H_CH1_MASK 0xffff +#define VOW_S_H_CH1_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_MON7 */ +#define VOW_S_H_CH2_SFT 0 +#define VOW_S_H_CH2_MASK 0xffff +#define VOW_S_H_CH2_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_MON8 */ +#define VOW_N_L_CH1_SFT 0 +#define VOW_N_L_CH1_MASK 0xffff +#define VOW_N_L_CH1_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_MON9 */ +#define VOW_N_L_CH2_SFT 0 +#define VOW_N_L_CH2_MASK 0xffff +#define VOW_N_L_CH2_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_MON10 */ +#define VOW_N_H_CH1_SFT 0 +#define VOW_N_H_CH1_MASK 0xffff +#define VOW_N_H_CH1_MASK_SFT (0xffff << 0) + +/* AFE_VOW_VAD_MON11 */ +#define VOW_N_H_CH2_SFT 0 +#define VOW_N_H_CH2_MASK 0xffff +#define VOW_N_H_CH2_MASK_SFT (0xffff << 0) + +/* AFE_VOW_TGEN_CFG0 */ +#define VOW_TGEN_EN_CH1_SFT 15 +#define VOW_TGEN_EN_CH1_MASK 0x1 +#define VOW_TGEN_EN_CH1_MASK_SFT (0x1 << 15) +#define VOW_TGEN_MUTE_SW_CH1_SFT 14 +#define VOW_TGEN_MUTE_SW_CH1_MASK 0x1 +#define VOW_TGEN_MUTE_SW_CH1_MASK_SFT (0x1 << 14) +#define VOW_TGEN_FREQ_DIV_CH1_SFT 0 +#define VOW_TGEN_FREQ_DIV_CH1_MASK 0x3fff +#define VOW_TGEN_FREQ_DIV_CH1_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_TGEN_CFG1 */ +#define VOW_TGEN_EN_CH2_SFT 15 +#define VOW_TGEN_EN_CH2_MASK 0x1 +#define VOW_TGEN_EN_CH2_MASK_SFT (0x1 << 15) +#define VOW_TGEN_MUTE_SW_CH2_SFT 14 +#define VOW_TGEN_MUTE_SW_CH2_MASK 0x1 +#define VOW_TGEN_MUTE_SW_CH2_MASK_SFT (0x1 << 14) +#define VOW_TGEN_FREQ_DIV_CH2_SFT 0 +#define VOW_TGEN_FREQ_DIV_CH2_MASK 0x3fff +#define VOW_TGEN_FREQ_DIV_CH2_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_HPF_CFG0 */ +#define VOW_HPF_DC_TEST_CH1_SFT 12 +#define VOW_HPF_DC_TEST_CH1_MASK 0xf +#define VOW_HPF_DC_TEST_CH1_MASK_SFT (0xf << 12) +#define RG_BASELINE_ALPHA_ORDER_CH1_SFT 4 +#define RG_BASELINE_ALPHA_ORDER_CH1_MASK 0xf +#define RG_BASELINE_ALPHA_ORDER_CH1_MASK_SFT (0xf << 4) +#define RG_MTKAIF_HPF_BYPASS_CH1_SFT 2 +#define RG_MTKAIF_HPF_BYPASS_CH1_MASK 0x1 +#define RG_MTKAIF_HPF_BYPASS_CH1_MASK_SFT (0x1 << 2) +#define RG_SNRDET_HPF_BYPASS_CH1_SFT 1 +#define RG_SNRDET_HPF_BYPASS_CH1_MASK 0x1 +#define RG_SNRDET_HPF_BYPASS_CH1_MASK_SFT (0x1 << 1) +#define RG_HPF_ON_CH1_SFT 0 +#define RG_HPF_ON_CH1_MASK 0x1 +#define RG_HPF_ON_CH1_MASK_SFT (0x1 << 0) + +/* AFE_VOW_HPF_CFG1 */ +#define VOW_HPF_DC_TEST_CH2_SFT 12 +#define VOW_HPF_DC_TEST_CH2_MASK 0xf +#define VOW_HPF_DC_TEST_CH2_MASK_SFT (0xf << 12) +#define RG_BASELINE_ALPHA_ORDER_CH2_SFT 4 +#define RG_BASELINE_ALPHA_ORDER_CH2_MASK 0xf +#define RG_BASELINE_ALPHA_ORDER_CH2_MASK_SFT (0xf << 4) +#define RG_MTKAIF_HPF_BYPASS_CH2_SFT 2 +#define RG_MTKAIF_HPF_BYPASS_CH2_MASK 0x1 +#define RG_MTKAIF_HPF_BYPASS_CH2_MASK_SFT (0x1 << 2) +#define RG_SNRDET_HPF_BYPASS_CH2_SFT 1 +#define RG_SNRDET_HPF_BYPASS_CH2_MASK 0x1 +#define RG_SNRDET_HPF_BYPASS_CH2_MASK_SFT (0x1 << 1) +#define RG_HPF_ON_CH2_SFT 0 +#define RG_HPF_ON_CH2_MASK 0x1 +#define RG_HPF_ON_CH2_MASK_SFT (0x1 << 0) + +/* AFE_VOW_PERIODIC_CFG0 */ +#define RG_PERIODIC_EN_SFT 15 +#define RG_PERIODIC_EN_MASK 0x1 +#define RG_PERIODIC_EN_MASK_SFT (0x1 << 15) +#define RG_PERIODIC_CNT_CLR_SFT 14 +#define RG_PERIODIC_CNT_CLR_MASK 0x1 +#define RG_PERIODIC_CNT_CLR_MASK_SFT (0x1 << 14) +#define RG_PERIODIC_CNT_PERIOD_SFT 0 +#define RG_PERIODIC_CNT_PERIOD_MASK 0x3fff +#define RG_PERIODIC_CNT_PERIOD_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG1 */ +#define RG_PERIODIC_CNT_SET_SFT 15 +#define RG_PERIODIC_CNT_SET_MASK 0x1 +#define RG_PERIODIC_CNT_SET_MASK_SFT (0x1 << 15) +#define RG_PERIODIC_CNT_PAUSE_SFT 14 +#define RG_PERIODIC_CNT_PAUSE_MASK 0x1 +#define RG_PERIODIC_CNT_PAUSE_MASK_SFT (0x1 << 14) +#define RG_PERIODIC_CNT_SET_VALUE_SFT 0 +#define RG_PERIODIC_CNT_SET_VALUE_MASK 0x3fff +#define RG_PERIODIC_CNT_SET_VALUE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG2 */ +#define AUDPREAMPLON_PERIODIC_MODE_SFT 15 +#define AUDPREAMPLON_PERIODIC_MODE_MASK 0x1 +#define AUDPREAMPLON_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDPREAMPLON_PERIODIC_INVERSE_SFT 14 +#define AUDPREAMPLON_PERIODIC_INVERSE_MASK 0x1 +#define AUDPREAMPLON_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDPREAMPLON_PERIODIC_ON_CYCLE_SFT 0 +#define AUDPREAMPLON_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDPREAMPLON_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG3 */ +#define AUDPREAMPLDCPRECHARGE_PERIODIC_MODE_SFT 15 +#define AUDPREAMPLDCPRECHARGE_PERIODIC_MODE_MASK 0x1 +#define AUDPREAMPLDCPRECHARGE_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDPREAMPLDCPRECHARGE_PERIODIC_INVERSE_SFT 14 +#define AUDPREAMPLDCPRECHARGE_PERIODIC_INVERSE_MASK 0x1 +#define AUDPREAMPLDCPRECHARGE_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDPREAMPLDCPRECHARGE_PERIODIC_ON_CYCLE_SFT 0 +#define AUDPREAMPLDCPRECHARGE_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDPREAMPLDCPRECHARGE_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG4 */ +#define AUDADCLPWRUP_PERIODIC_MODE_SFT 15 +#define AUDADCLPWRUP_PERIODIC_MODE_MASK 0x1 +#define AUDADCLPWRUP_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDADCLPWRUP_PERIODIC_INVERSE_SFT 14 +#define AUDADCLPWRUP_PERIODIC_INVERSE_MASK 0x1 +#define AUDADCLPWRUP_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDADCLPWRUP_PERIODIC_ON_CYCLE_SFT 0 +#define AUDADCLPWRUP_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDADCLPWRUP_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG5 */ +#define AUDGLBVOWLPWEN_PERIODIC_MODE_SFT 15 +#define AUDGLBVOWLPWEN_PERIODIC_MODE_MASK 0x1 +#define AUDGLBVOWLPWEN_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDGLBVOWLPWEN_PERIODIC_INVERSE_SFT 14 +#define AUDGLBVOWLPWEN_PERIODIC_INVERSE_MASK 0x1 +#define AUDGLBVOWLPWEN_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDGLBVOWLPWEN_PERIODIC_ON_CYCLE_SFT 0 +#define AUDGLBVOWLPWEN_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDGLBVOWLPWEN_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG6 */ +#define AUDDIGMICEN_PERIODIC_MODE_SFT 15 +#define AUDDIGMICEN_PERIODIC_MODE_MASK 0x1 +#define AUDDIGMICEN_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDDIGMICEN_PERIODIC_INVERSE_SFT 14 +#define AUDDIGMICEN_PERIODIC_INVERSE_MASK 0x1 +#define AUDDIGMICEN_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDDIGMICEN_PERIODIC_ON_CYCLE_SFT 0 +#define AUDDIGMICEN_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDDIGMICEN_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG7 */ +#define AUDPWDBMICBIAS0_PERIODIC_MODE_SFT 15 +#define AUDPWDBMICBIAS0_PERIODIC_MODE_MASK 0x1 +#define AUDPWDBMICBIAS0_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDPWDBMICBIAS0_PERIODIC_INVERSE_SFT 14 +#define AUDPWDBMICBIAS0_PERIODIC_INVERSE_MASK 0x1 +#define AUDPWDBMICBIAS0_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDPWDBMICBIAS0_PERIODIC_ON_CYCLE_SFT 0 +#define AUDPWDBMICBIAS0_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDPWDBMICBIAS0_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG8 */ +#define AUDPWDBMICBIAS1_PERIODIC_MODE_SFT 15 +#define AUDPWDBMICBIAS1_PERIODIC_MODE_MASK 0x1 +#define AUDPWDBMICBIAS1_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDPWDBMICBIAS1_PERIODIC_INVERSE_SFT 14 +#define AUDPWDBMICBIAS1_PERIODIC_INVERSE_MASK 0x1 +#define AUDPWDBMICBIAS1_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDPWDBMICBIAS1_PERIODIC_ON_CYCLE_SFT 0 +#define AUDPWDBMICBIAS1_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDPWDBMICBIAS1_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG9 */ +#define XO_VOW_CK_EN_PERIODIC_MODE_SFT 15 +#define XO_VOW_CK_EN_PERIODIC_MODE_MASK 0x1 +#define XO_VOW_CK_EN_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define XO_VOW_CK_EN_PERIODIC_INVERSE_SFT 14 +#define XO_VOW_CK_EN_PERIODIC_INVERSE_MASK 0x1 +#define XO_VOW_CK_EN_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define XO_VOW_CK_EN_PERIODIC_ON_CYCLE_SFT 0 +#define XO_VOW_CK_EN_PERIODIC_ON_CYCLE_MASK 0x3fff +#define XO_VOW_CK_EN_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG10 */ +#define AUDGLB_PWRDN_PERIODIC_MODE_SFT 15 +#define AUDGLB_PWRDN_PERIODIC_MODE_MASK 0x1 +#define AUDGLB_PWRDN_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDGLB_PWRDN_PERIODIC_INVERSE_SFT 14 +#define AUDGLB_PWRDN_PERIODIC_INVERSE_MASK 0x1 +#define AUDGLB_PWRDN_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDGLB_PWRDN_PERIODIC_ON_CYCLE_SFT 0 +#define AUDGLB_PWRDN_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDGLB_PWRDN_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG11 */ +#define VOW_ON_CH1_PERIODIC_MODE_SFT 15 +#define VOW_ON_CH1_PERIODIC_MODE_MASK 0x1 +#define VOW_ON_CH1_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define VOW_ON_CH1_PERIODIC_INVERSE_SFT 14 +#define VOW_ON_CH1_PERIODIC_INVERSE_MASK 0x1 +#define VOW_ON_CH1_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define VOW_ON_CH1_PERIODIC_ON_CYCLE_SFT 0 +#define VOW_ON_CH1_PERIODIC_ON_CYCLE_MASK 0x3fff +#define VOW_ON_CH1_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG12 */ +#define DMIC_ON_CH1_PERIODIC_MODE_SFT 15 +#define DMIC_ON_CH1_PERIODIC_MODE_MASK 0x1 +#define DMIC_ON_CH1_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define DMIC_ON_CH1_PERIODIC_INVERSE_SFT 14 +#define DMIC_ON_CH1_PERIODIC_INVERSE_MASK 0x1 +#define DMIC_ON_CH1_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define DMIC_ON_CH1_PERIODIC_ON_CYCLE_SFT 0 +#define DMIC_ON_CH1_PERIODIC_ON_CYCLE_MASK 0x3fff +#define DMIC_ON_CH1_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG13 */ +#define PDN_VOW_F32K_CK_SFT 15 +#define PDN_VOW_F32K_CK_MASK 0x1 +#define PDN_VOW_F32K_CK_MASK_SFT (0x1 << 15) +#define AUDPREAMPLON_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDPREAMPLON_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDPREAMPLON_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG14 */ +#define VOW_SNRDET_PERIODIC_CFG_SFT 15 +#define VOW_SNRDET_PERIODIC_CFG_MASK 0x1 +#define VOW_SNRDET_PERIODIC_CFG_MASK_SFT (0x1 << 15) +#define AUDPREAMPLDCPRECHARGE_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDPREAMPLDCPRECHARGE_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDPREAMPLDCPRECHARGE_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG15 */ +#define AUDADCLPWRUP_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDADCLPWRUP_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDADCLPWRUP_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG16 */ +#define AUDGLBVOWLPWEN_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDGLBVOWLPWEN_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDGLBVOWLPWEN_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG17 */ +#define AUDDIGMICEN_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDDIGMICEN_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDDIGMICEN_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG18 */ +#define AUDPWDBMICBIAS0_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDPWDBMICBIAS0_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDPWDBMICBIAS0_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG19 */ +#define AUDPWDBMICBIAS1_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDPWDBMICBIAS1_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDPWDBMICBIAS1_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG20 */ +#define CLKSQ_EN_VOW_PERIODIC_MODE_SFT 15 +#define CLKSQ_EN_VOW_PERIODIC_MODE_MASK 0x1 +#define CLKSQ_EN_VOW_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define XO_VOW_CK_EN_PERIODIC_OFF_CYCLE_SFT 0 +#define XO_VOW_CK_EN_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define XO_VOW_CK_EN_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG21 */ +#define AUDGLB_PWRDN_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDGLB_PWRDN_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDGLB_PWRDN_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG22 */ +#define VOW_ON_CH1_PERIODIC_OFF_CYCLE_SFT 0 +#define VOW_ON_CH1_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define VOW_ON_CH1_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG23 */ +#define DMIC_ON_CH1_PERIODIC_OFF_CYCLE_SFT 0 +#define DMIC_ON_CH1_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define DMIC_ON_CH1_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG24 */ +#define AUDPREAMPRON_PERIODIC_MODE_SFT 15 +#define AUDPREAMPRON_PERIODIC_MODE_MASK 0x1 +#define AUDPREAMPRON_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDPREAMPRON_PERIODIC_INVERSE_SFT 14 +#define AUDPREAMPRON_PERIODIC_INVERSE_MASK 0x1 +#define AUDPREAMPRON_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDPREAMPRON_PERIODIC_ON_CYCLE_SFT 0 +#define AUDPREAMPRON_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDPREAMPRON_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG25 */ +#define AUDPREAMPRDCPRECHARGE_PERIODIC_MODE_SFT 15 +#define AUDPREAMPRDCPRECHARGE_PERIODIC_MODE_MASK 0x1 +#define AUDPREAMPRDCPRECHARGE_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDPREAMPRDCPRECHARGE_PERIODIC_INVERSE_SFT 14 +#define AUDPREAMPRDCPRECHARGE_PERIODIC_INVERSE_MASK 0x1 +#define AUDPREAMPRDCPRECHARGE_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDPREAMPRDCPRECHARGE_PERIODIC_ON_CYCLE_SFT 0 +#define AUDPREAMPRDCPRECHARGE_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDPREAMPRDCPRECHARGE_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG26 */ +#define AUDADCRPWRUP_PERIODIC_MODE_SFT 15 +#define AUDADCRPWRUP_PERIODIC_MODE_MASK 0x1 +#define AUDADCRPWRUP_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDADCRPWRUP_PERIODIC_INVERSE_SFT 14 +#define AUDADCRPWRUP_PERIODIC_INVERSE_MASK 0x1 +#define AUDADCRPWRUP_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDADCRPWRUP_PERIODIC_ON_CYCLE_SFT 0 +#define AUDADCRPWRUP_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDADCRPWRUP_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG27 */ +#define AUDGLBRVOWLPWEN_PERIODIC_MODE_SFT 15 +#define AUDGLBRVOWLPWEN_PERIODIC_MODE_MASK 0x1 +#define AUDGLBRVOWLPWEN_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDGLBRVOWLPWEN_PERIODIC_INVERSE_SFT 14 +#define AUDGLBRVOWLPWEN_PERIODIC_INVERSE_MASK 0x1 +#define AUDGLBRVOWLPWEN_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDGLBRVOWLPWEN_PERIODIC_ON_CYCLE_SFT 0 +#define AUDGLBRVOWLPWEN_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDGLBRVOWLPWEN_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG28 */ +#define AUDDIGMIC1EN_PERIODIC_MODE_SFT 15 +#define AUDDIGMIC1EN_PERIODIC_MODE_MASK 0x1 +#define AUDDIGMIC1EN_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDDIGMIC1EN_PERIODIC_INVERSE_SFT 14 +#define AUDDIGMIC1EN_PERIODIC_INVERSE_MASK 0x1 +#define AUDDIGMIC1EN_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDDIGMIC1EN_PERIODIC_ON_CYCLE_SFT 0 +#define AUDDIGMIC1EN_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDDIGMIC1EN_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG29 */ +#define AUDPWDBMICBIAS2_PERIODIC_MODE_SFT 15 +#define AUDPWDBMICBIAS2_PERIODIC_MODE_MASK 0x1 +#define AUDPWDBMICBIAS2_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define AUDPWDBMICBIAS2_PERIODIC_INVERSE_SFT 14 +#define AUDPWDBMICBIAS2_PERIODIC_INVERSE_MASK 0x1 +#define AUDPWDBMICBIAS2_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define AUDPWDBMICBIAS2_PERIODIC_ON_CYCLE_SFT 0 +#define AUDPWDBMICBIAS2_PERIODIC_ON_CYCLE_MASK 0x3fff +#define AUDPWDBMICBIAS2_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG30 */ +#define VOW_ON_CH2_PERIODIC_MODE_SFT 15 +#define VOW_ON_CH2_PERIODIC_MODE_MASK 0x1 +#define VOW_ON_CH2_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define VOW_ON_CH2_PERIODIC_INVERSE_SFT 14 +#define VOW_ON_CH2_PERIODIC_INVERSE_MASK 0x1 +#define VOW_ON_CH2_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define VOW_ON_CH2_PERIODIC_ON_CYCLE_SFT 0 +#define VOW_ON_CH2_PERIODIC_ON_CYCLE_MASK 0x3fff +#define VOW_ON_CH2_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG31 */ +#define DMIC_ON_CH2_PERIODIC_MODE_SFT 15 +#define DMIC_ON_CH2_PERIODIC_MODE_MASK 0x1 +#define DMIC_ON_CH2_PERIODIC_MODE_MASK_SFT (0x1 << 15) +#define DMIC_ON_CH2_PERIODIC_INVERSE_SFT 14 +#define DMIC_ON_CH2_PERIODIC_INVERSE_MASK 0x1 +#define DMIC_ON_CH2_PERIODIC_INVERSE_MASK_SFT (0x1 << 14) +#define DMIC_ON_CH2_PERIODIC_ON_CYCLE_SFT 0 +#define DMIC_ON_CH2_PERIODIC_ON_CYCLE_MASK 0x3fff +#define DMIC_ON_CH2_PERIODIC_ON_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG32 */ +#define AUDPREAMPRON_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDPREAMPRON_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDPREAMPRON_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG33 */ +#define AUDPREAMPRDCPRECHARGE_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDPREAMPRDCPRECHARGE_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDPREAMPRDCPRECHARGE_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG34 */ +#define AUDADCRPWRUP_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDADCRPWRUP_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDADCRPWRUP_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG35 */ +#define AUDGLBRVOWLPWEN_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDGLBRVOWLPWEN_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDGLBRVOWLPWEN_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG36 */ +#define AUDDIGMIC1EN_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDDIGMIC1EN_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDDIGMIC1EN_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG37 */ +#define AUDPWDBMICBIAS2_PERIODIC_OFF_CYCLE_SFT 0 +#define AUDPWDBMICBIAS2_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define AUDPWDBMICBIAS2_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG38 */ +#define VOW_ON_CH2_PERIODIC_OFF_CYCLE_SFT 0 +#define VOW_ON_CH2_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define VOW_ON_CH2_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_CFG39 */ +#define DMIC_ON_CH2_PERIODIC_OFF_CYCLE_SFT 0 +#define DMIC_ON_CH2_PERIODIC_OFF_CYCLE_MASK 0x3fff +#define DMIC_ON_CH2_PERIODIC_OFF_CYCLE_MASK_SFT (0x3fff << 0) + +/* AFE_VOW_PERIODIC_MON0 */ +#define VOW_PERIODIC_MON0_SFT 0 +#define VOW_PERIODIC_MON0_MASK 0xffff +#define VOW_PERIODIC_MON0_MASK_SFT (0xffff << 0) + +/* AFE_VOW_PERIODIC_MON1 */ +#define VOW_PERIODIC_MON1_SFT 0 +#define VOW_PERIODIC_MON1_MASK 0xffff +#define VOW_PERIODIC_MON1_MASK_SFT (0xffff << 0) + +/* AFE_VOW_PERIODIC_MON2 */ +#define VOW_PERIODIC_COUNT_MON_SFT 0 +#define VOW_PERIODIC_COUNT_MON_MASK 0xffff +#define VOW_PERIODIC_COUNT_MON_MASK_SFT (0xffff << 0) + +/* AFE_NCP_CFG0 */ +#define RG_NCP_CK1_VALID_CNT_SFT 9 +#define RG_NCP_CK1_VALID_CNT_MASK 0x7f +#define RG_NCP_CK1_VALID_CNT_MASK_SFT (0x7f << 9) +#define RG_NCP_ADITH_SFT 8 +#define RG_NCP_ADITH_MASK 0x1 +#define RG_NCP_ADITH_MASK_SFT (0x1 << 8) +#define RG_NCP_DITHER_EN_SFT 7 +#define RG_NCP_DITHER_EN_MASK 0x1 +#define RG_NCP_DITHER_EN_MASK_SFT (0x1 << 7) +#define RG_NCP_DITHER_FIXED_CK0_ACK1_2P_SFT 4 +#define RG_NCP_DITHER_FIXED_CK0_ACK1_2P_MASK 0x7 +#define RG_NCP_DITHER_FIXED_CK0_ACK1_2P_MASK_SFT (0x7 << 4) +#define RG_NCP_DITHER_FIXED_CK0_ACK2_2P_SFT 1 +#define RG_NCP_DITHER_FIXED_CK0_ACK2_2P_MASK 0x7 +#define RG_NCP_DITHER_FIXED_CK0_ACK2_2P_MASK_SFT (0x7 << 1) +#define RG_NCP_ON_SFT 0 +#define RG_NCP_ON_MASK 0x1 +#define RG_NCP_ON_MASK_SFT (0x1 << 0) + +/* AFE_NCP_CFG1 */ +#define RG_XY_VAL_CFG_EN_SFT 15 +#define RG_XY_VAL_CFG_EN_MASK 0x1 +#define RG_XY_VAL_CFG_EN_MASK_SFT (0x1 << 15) +#define RG_X_VAL_CFG_SFT 8 +#define RG_X_VAL_CFG_MASK 0x7f +#define RG_X_VAL_CFG_MASK_SFT (0x7f << 8) +#define RG_Y_VAL_CFG_SFT 0 +#define RG_Y_VAL_CFG_MASK 0x7f +#define RG_Y_VAL_CFG_MASK_SFT (0x7f << 0) + +/* AFE_NCP_CFG2 */ +#define RG_NCP_NONCLK_SET_SFT 1 +#define RG_NCP_NONCLK_SET_MASK 0x1 +#define RG_NCP_NONCLK_SET_MASK_SFT (0x1 << 1) +#define RG_NCP_PDDIS_EN_SFT 0 +#define RG_NCP_PDDIS_EN_MASK 0x1 +#define RG_NCP_PDDIS_EN_MASK_SFT (0x1 << 0) + +/* AUDENC_ANA_CON0 */ +#define RG_AUDPREAMPLON_SFT 0 +#define RG_AUDPREAMPLON_MASK 0x1 +#define RG_AUDPREAMPLON_MASK_SFT (0x1 << 0) +#define RG_AUDPREAMPLDCCEN_SFT 1 +#define RG_AUDPREAMPLDCCEN_MASK 0x1 +#define RG_AUDPREAMPLDCCEN_MASK_SFT (0x1 << 1) +#define RG_AUDPREAMPLDCPRECHARGE_SFT 2 +#define RG_AUDPREAMPLDCPRECHARGE_MASK 0x1 +#define RG_AUDPREAMPLDCPRECHARGE_MASK_SFT (0x1 << 2) +#define RG_AUDPREAMPLPGATEST_SFT 3 +#define RG_AUDPREAMPLPGATEST_MASK 0x1 +#define RG_AUDPREAMPLPGATEST_MASK_SFT (0x1 << 3) +#define RG_AUDPREAMPLVSCALE_SFT 4 +#define RG_AUDPREAMPLVSCALE_MASK 0x3 +#define RG_AUDPREAMPLVSCALE_MASK_SFT (0x3 << 4) +#define RG_AUDPREAMPLINPUTSEL_SFT 6 +#define RG_AUDPREAMPLINPUTSEL_MASK 0x3 +#define RG_AUDPREAMPLINPUTSEL_MASK_SFT (0x3 << 6) +#define RG_AUDPREAMPLGAIN_SFT 8 +#define RG_AUDPREAMPLGAIN_MASK 0x7 +#define RG_AUDPREAMPLGAIN_MASK_SFT (0x7 << 8) +#define RG_BULKL_VCM_EN_SFT 11 +#define RG_BULKL_VCM_EN_MASK 0x1 +#define RG_BULKL_VCM_EN_MASK_SFT (0x1 << 11) +#define RG_AUDADCLPWRUP_SFT 12 +#define RG_AUDADCLPWRUP_MASK 0x1 +#define RG_AUDADCLPWRUP_MASK_SFT (0x1 << 12) +#define RG_AUDADCLINPUTSEL_SFT 13 +#define RG_AUDADCLINPUTSEL_MASK 0x3 +#define RG_AUDADCLINPUTSEL_MASK_SFT (0x3 << 13) + +/* AUDENC_ANA_CON1 */ +#define RG_AUDPREAMPRON_SFT 0 +#define RG_AUDPREAMPRON_MASK 0x1 +#define RG_AUDPREAMPRON_MASK_SFT (0x1 << 0) +#define RG_AUDPREAMPRDCCEN_SFT 1 +#define RG_AUDPREAMPRDCCEN_MASK 0x1 +#define RG_AUDPREAMPRDCCEN_MASK_SFT (0x1 << 1) +#define RG_AUDPREAMPRDCPRECHARGE_SFT 2 +#define RG_AUDPREAMPRDCPRECHARGE_MASK 0x1 +#define RG_AUDPREAMPRDCPRECHARGE_MASK_SFT (0x1 << 2) +#define RG_AUDPREAMPRPGATEST_SFT 3 +#define RG_AUDPREAMPRPGATEST_MASK 0x1 +#define RG_AUDPREAMPRPGATEST_MASK_SFT (0x1 << 3) +#define RG_AUDPREAMPRVSCALE_SFT 4 +#define RG_AUDPREAMPRVSCALE_MASK 0x3 +#define RG_AUDPREAMPRVSCALE_MASK_SFT (0x3 << 4) +#define RG_AUDPREAMPRINPUTSEL_SFT 6 +#define RG_AUDPREAMPRINPUTSEL_MASK 0x3 +#define RG_AUDPREAMPRINPUTSEL_MASK_SFT (0x3 << 6) +#define RG_AUDPREAMPRGAIN_SFT 8 +#define RG_AUDPREAMPRGAIN_MASK 0x7 +#define RG_AUDPREAMPRGAIN_MASK_SFT (0x7 << 8) +#define RG_BULKR_VCM_EN_SFT 11 +#define RG_BULKR_VCM_EN_MASK 0x1 +#define RG_BULKR_VCM_EN_MASK_SFT (0x1 << 11) +#define RG_AUDADCRPWRUP_SFT 12 +#define RG_AUDADCRPWRUP_MASK 0x1 +#define RG_AUDADCRPWRUP_MASK_SFT (0x1 << 12) +#define RG_AUDADCRINPUTSEL_SFT 13 +#define RG_AUDADCRINPUTSEL_MASK 0x3 +#define RG_AUDADCRINPUTSEL_MASK_SFT (0x3 << 13) + +/* AUDENC_ANA_CON2 */ +#define RG_AUDPREAMP3ON_SFT 0 +#define RG_AUDPREAMP3ON_MASK 0x1 +#define RG_AUDPREAMP3ON_MASK_SFT (0x1 << 0) +#define RG_AUDPREAMP3DCCEN_SFT 1 +#define RG_AUDPREAMP3DCCEN_MASK 0x1 +#define RG_AUDPREAMP3DCCEN_MASK_SFT (0x1 << 1) +#define RG_AUDPREAMP3DCPRECHARGE_SFT 2 +#define RG_AUDPREAMP3DCPRECHARGE_MASK 0x1 +#define RG_AUDPREAMP3DCPRECHARGE_MASK_SFT (0x1 << 2) +#define RG_AUDPREAMP3PGATEST_SFT 3 +#define RG_AUDPREAMP3PGATEST_MASK 0x1 +#define RG_AUDPREAMP3PGATEST_MASK_SFT (0x1 << 3) +#define RG_AUDPREAMP3VSCALE_SFT 4 +#define RG_AUDPREAMP3VSCALE_MASK 0x3 +#define RG_AUDPREAMP3VSCALE_MASK_SFT (0x3 << 4) +#define RG_AUDPREAMP3INPUTSEL_SFT 6 +#define RG_AUDPREAMP3INPUTSEL_MASK 0x3 +#define RG_AUDPREAMP3INPUTSEL_MASK_SFT (0x3 << 6) +#define RG_AUDPREAMP3GAIN_SFT 8 +#define RG_AUDPREAMP3GAIN_MASK 0x7 +#define RG_AUDPREAMP3GAIN_MASK_SFT (0x7 << 8) +#define RG_BULK3_VCM_EN_SFT 11 +#define RG_BULK3_VCM_EN_MASK 0x1 +#define RG_BULK3_VCM_EN_MASK_SFT (0x1 << 11) +#define RG_AUDADC3PWRUP_SFT 12 +#define RG_AUDADC3PWRUP_MASK 0x1 +#define RG_AUDADC3PWRUP_MASK_SFT (0x1 << 12) +#define RG_AUDADC3INPUTSEL_SFT 13 +#define RG_AUDADC3INPUTSEL_MASK 0x3 +#define RG_AUDADC3INPUTSEL_MASK_SFT (0x3 << 13) + +/* AUDENC_ANA_CON3 */ +#define RG_AUDULHALFBIAS_SFT 0 +#define RG_AUDULHALFBIAS_MASK 0x1 +#define RG_AUDULHALFBIAS_MASK_SFT (0x1 << 0) +#define RG_AUDGLBVOWLPWEN_SFT 1 +#define RG_AUDGLBVOWLPWEN_MASK 0x1 +#define RG_AUDGLBVOWLPWEN_MASK_SFT (0x1 << 1) +#define RG_AUDPREAMPLPEN_SFT 2 +#define RG_AUDPREAMPLPEN_MASK 0x1 +#define RG_AUDPREAMPLPEN_MASK_SFT (0x1 << 2) +#define RG_AUDADC1STSTAGELPEN_SFT 3 +#define RG_AUDADC1STSTAGELPEN_MASK 0x1 +#define RG_AUDADC1STSTAGELPEN_MASK_SFT (0x1 << 3) +#define RG_AUDADC2NDSTAGELPEN_SFT 4 +#define RG_AUDADC2NDSTAGELPEN_MASK 0x1 +#define RG_AUDADC2NDSTAGELPEN_MASK_SFT (0x1 << 4) +#define RG_AUDADCFLASHLPEN_SFT 5 +#define RG_AUDADCFLASHLPEN_MASK 0x1 +#define RG_AUDADCFLASHLPEN_MASK_SFT (0x1 << 5) +#define RG_AUDPREAMPIDDTEST_SFT 6 +#define RG_AUDPREAMPIDDTEST_MASK 0x3 +#define RG_AUDPREAMPIDDTEST_MASK_SFT (0x3 << 6) +#define RG_AUDADC1STSTAGEIDDTEST_SFT 8 +#define RG_AUDADC1STSTAGEIDDTEST_MASK 0x3 +#define RG_AUDADC1STSTAGEIDDTEST_MASK_SFT (0x3 << 8) +#define RG_AUDADC2NDSTAGEIDDTEST_SFT 10 +#define RG_AUDADC2NDSTAGEIDDTEST_MASK 0x3 +#define RG_AUDADC2NDSTAGEIDDTEST_MASK_SFT (0x3 << 10) +#define RG_AUDADCREFBUFIDDTEST_SFT 12 +#define RG_AUDADCREFBUFIDDTEST_MASK 0x3 +#define RG_AUDADCREFBUFIDDTEST_MASK_SFT (0x3 << 12) +#define RG_AUDADCFLASHIDDTEST_SFT 14 +#define RG_AUDADCFLASHIDDTEST_MASK 0x3 +#define RG_AUDADCFLASHIDDTEST_MASK_SFT (0x3 << 14) + +/* AUDENC_ANA_CON4 */ +#define RG_AUDRULHALFBIAS_SFT 0 +#define RG_AUDRULHALFBIAS_MASK 0x1 +#define RG_AUDRULHALFBIAS_MASK_SFT (0x1 << 0) +#define RG_AUDGLBRVOWLPWEN_SFT 1 +#define RG_AUDGLBRVOWLPWEN_MASK 0x1 +#define RG_AUDGLBRVOWLPWEN_MASK_SFT (0x1 << 1) +#define RG_AUDRPREAMPLPEN_SFT 2 +#define RG_AUDRPREAMPLPEN_MASK 0x1 +#define RG_AUDRPREAMPLPEN_MASK_SFT (0x1 << 2) +#define RG_AUDRADC1STSTAGELPEN_SFT 3 +#define RG_AUDRADC1STSTAGELPEN_MASK 0x1 +#define RG_AUDRADC1STSTAGELPEN_MASK_SFT (0x1 << 3) +#define RG_AUDRADC2NDSTAGELPEN_SFT 4 +#define RG_AUDRADC2NDSTAGELPEN_MASK 0x1 +#define RG_AUDRADC2NDSTAGELPEN_MASK_SFT (0x1 << 4) +#define RG_AUDRADCFLASHLPEN_SFT 5 +#define RG_AUDRADCFLASHLPEN_MASK 0x1 +#define RG_AUDRADCFLASHLPEN_MASK_SFT (0x1 << 5) +#define RG_AUDRPREAMPIDDTEST_SFT 6 +#define RG_AUDRPREAMPIDDTEST_MASK 0x3 +#define RG_AUDRPREAMPIDDTEST_MASK_SFT (0x3 << 6) +#define RG_AUDRADC1STSTAGEIDDTEST_SFT 8 +#define RG_AUDRADC1STSTAGEIDDTEST_MASK 0x3 +#define RG_AUDRADC1STSTAGEIDDTEST_MASK_SFT (0x3 << 8) +#define RG_AUDRADC2NDSTAGEIDDTEST_SFT 10 +#define RG_AUDRADC2NDSTAGEIDDTEST_MASK 0x3 +#define RG_AUDRADC2NDSTAGEIDDTEST_MASK_SFT (0x3 << 10) +#define RG_AUDRADCREFBUFIDDTEST_SFT 12 +#define RG_AUDRADCREFBUFIDDTEST_MASK 0x3 +#define RG_AUDRADCREFBUFIDDTEST_MASK_SFT (0x3 << 12) +#define RG_AUDRADCFLASHIDDTEST_SFT 14 +#define RG_AUDRADCFLASHIDDTEST_MASK 0x3 +#define RG_AUDRADCFLASHIDDTEST_MASK_SFT (0x3 << 14) + +/* AUDENC_ANA_CON5 */ +#define RG_AUDADCCLKRSTB_SFT 0 +#define RG_AUDADCCLKRSTB_MASK 0x1 +#define RG_AUDADCCLKRSTB_MASK_SFT (0x1 << 0) +#define RG_AUDADCCLKSEL_SFT 1 +#define RG_AUDADCCLKSEL_MASK 0x3 +#define RG_AUDADCCLKSEL_MASK_SFT (0x3 << 1) +#define RG_AUDADCCLKSOURCE_SFT 3 +#define RG_AUDADCCLKSOURCE_MASK 0x3 +#define RG_AUDADCCLKSOURCE_MASK_SFT (0x3 << 3) +#define RG_AUDADCCLKGENMODE_SFT 5 +#define RG_AUDADCCLKGENMODE_MASK 0x3 +#define RG_AUDADCCLKGENMODE_MASK_SFT (0x3 << 5) +#define RG_AUDPREAMP_ACCFS_SFT 7 +#define RG_AUDPREAMP_ACCFS_MASK 0x1 +#define RG_AUDPREAMP_ACCFS_MASK_SFT (0x1 << 7) +#define RG_AUDPREAMPAAFEN_SFT 8 +#define RG_AUDPREAMPAAFEN_MASK 0x1 +#define RG_AUDPREAMPAAFEN_MASK_SFT (0x1 << 8) +#define RG_DCCVCMBUFLPMODSEL_SFT 9 +#define RG_DCCVCMBUFLPMODSEL_MASK 0x1 +#define RG_DCCVCMBUFLPMODSEL_MASK_SFT (0x1 << 9) +#define RG_DCCVCMBUFLPSWEN_SFT 10 +#define RG_DCCVCMBUFLPSWEN_MASK 0x1 +#define RG_DCCVCMBUFLPSWEN_MASK_SFT (0x1 << 10) +#define RG_AUDSPAREPGA_SFT 11 +#define RG_AUDSPAREPGA_MASK 0x1f +#define RG_AUDSPAREPGA_MASK_SFT (0x1f << 11) + +/* AUDENC_ANA_CON6 */ +#define RG_AUDADC1STSTAGESDENB_SFT 0 +#define RG_AUDADC1STSTAGESDENB_MASK 0x1 +#define RG_AUDADC1STSTAGESDENB_MASK_SFT (0x1 << 0) +#define RG_AUDADC2NDSTAGERESET_SFT 1 +#define RG_AUDADC2NDSTAGERESET_MASK 0x1 +#define RG_AUDADC2NDSTAGERESET_MASK_SFT (0x1 << 1) +#define RG_AUDADC3RDSTAGERESET_SFT 2 +#define RG_AUDADC3RDSTAGERESET_MASK 0x1 +#define RG_AUDADC3RDSTAGERESET_MASK_SFT (0x1 << 2) +#define RG_AUDADCFSRESET_SFT 3 +#define RG_AUDADCFSRESET_MASK 0x1 +#define RG_AUDADCFSRESET_MASK_SFT (0x1 << 3) +#define RG_AUDADCWIDECM_SFT 4 +#define RG_AUDADCWIDECM_MASK 0x1 +#define RG_AUDADCWIDECM_MASK_SFT (0x1 << 4) +#define RG_AUDADCNOPATEST_SFT 5 +#define RG_AUDADCNOPATEST_MASK 0x1 +#define RG_AUDADCNOPATEST_MASK_SFT (0x1 << 5) +#define RG_AUDADCBYPASS_SFT 6 +#define RG_AUDADCBYPASS_MASK 0x1 +#define RG_AUDADCBYPASS_MASK_SFT (0x1 << 6) +#define RG_AUDADCFFBYPASS_SFT 7 +#define RG_AUDADCFFBYPASS_MASK 0x1 +#define RG_AUDADCFFBYPASS_MASK_SFT (0x1 << 7) +#define RG_AUDADCDACFBCURRENT_SFT 8 +#define RG_AUDADCDACFBCURRENT_MASK 0x1 +#define RG_AUDADCDACFBCURRENT_MASK_SFT (0x1 << 8) +#define RG_AUDADCDACIDDTEST_SFT 9 +#define RG_AUDADCDACIDDTEST_MASK 0x3 +#define RG_AUDADCDACIDDTEST_MASK_SFT (0x3 << 9) +#define RG_AUDADCDACNRZ_SFT 11 +#define RG_AUDADCDACNRZ_MASK 0x1 +#define RG_AUDADCDACNRZ_MASK_SFT (0x1 << 11) +#define RG_AUDADCNODEM_SFT 12 +#define RG_AUDADCNODEM_MASK 0x1 +#define RG_AUDADCNODEM_MASK_SFT (0x1 << 12) +#define RG_AUDADCDACTEST_SFT 13 +#define RG_AUDADCDACTEST_MASK 0x1 +#define RG_AUDADCDACTEST_MASK_SFT (0x1 << 13) +#define RG_AUDADCDAC0P25FS_SFT 14 +#define RG_AUDADCDAC0P25FS_MASK 0x1 +#define RG_AUDADCDAC0P25FS_MASK_SFT (0x1 << 14) +#define RG_AUDADCRDAC0P25FS_SFT 15 +#define RG_AUDADCRDAC0P25FS_MASK 0x1 +#define RG_AUDADCRDAC0P25FS_MASK_SFT (0x1 << 15) + +/* AUDENC_ANA_CON7 */ +#define RG_AUDADCTESTDATA_SFT 0 +#define RG_AUDADCTESTDATA_MASK 0xffff +#define RG_AUDADCTESTDATA_MASK_SFT (0xffff << 0) + +/* AUDENC_ANA_CON8 */ +#define RG_AUDRCTUNEL_SFT 0 +#define RG_AUDRCTUNEL_MASK 0x1f +#define RG_AUDRCTUNEL_MASK_SFT (0x1f << 0) +#define RG_AUDRCTUNELSEL_SFT 5 +#define RG_AUDRCTUNELSEL_MASK 0x1 +#define RG_AUDRCTUNELSEL_MASK_SFT (0x1 << 5) +#define RG_AUDRCTUNER_SFT 8 +#define RG_AUDRCTUNER_MASK 0x1f +#define RG_AUDRCTUNER_MASK_SFT (0x1f << 8) +#define RG_AUDRCTUNERSEL_SFT 13 +#define RG_AUDRCTUNERSEL_MASK 0x1 +#define RG_AUDRCTUNERSEL_MASK_SFT (0x1 << 13) + +/* AUDENC_ANA_CON9 */ +#define RG_AUD3CTUNEL_SFT 0 +#define RG_AUD3CTUNEL_MASK 0x1f +#define RG_AUD3CTUNEL_MASK_SFT (0x1f << 0) +#define RG_AUD3CTUNELSEL_SFT 5 +#define RG_AUD3CTUNELSEL_MASK 0x1 +#define RG_AUD3CTUNELSEL_MASK_SFT (0x1 << 5) +#define RGS_AUDRCTUNE3READ_SFT 6 +#define RGS_AUDRCTUNE3READ_MASK 0x1f +#define RGS_AUDRCTUNE3READ_MASK_SFT (0x1f << 6) +#define RG_AUD3SPARE_SFT 11 +#define RG_AUD3SPARE_MASK 0x1f +#define RG_AUD3SPARE_MASK_SFT (0x1f << 11) + +/* AUDENC_ANA_CON10 */ +#define RGS_AUDRCTUNELREAD_SFT 0 +#define RGS_AUDRCTUNELREAD_MASK 0x1f +#define RGS_AUDRCTUNELREAD_MASK_SFT (0x1f << 0) +#define RGS_AUDRCTUNERREAD_SFT 8 +#define RGS_AUDRCTUNERREAD_MASK 0x1f +#define RGS_AUDRCTUNERREAD_MASK_SFT (0x1f << 8) + +/* AUDENC_ANA_CON11 */ +#define RG_AUDSPAREVA30_SFT 0 +#define RG_AUDSPAREVA30_MASK 0xff +#define RG_AUDSPAREVA30_MASK_SFT (0xff << 0) +#define RG_AUDSPAREVA18_SFT 8 +#define RG_AUDSPAREVA18_MASK 0xff +#define RG_AUDSPAREVA18_MASK_SFT (0xff << 8) + +/* AUDENC_ANA_CON12 */ +#define RG_AUDPGA_DECAP_SFT 0 +#define RG_AUDPGA_DECAP_MASK 0x1 +#define RG_AUDPGA_DECAP_MASK_SFT (0x1 << 0) +#define RG_AUDPGA_CAPRA_SFT 1 +#define RG_AUDPGA_CAPRA_MASK 0x1 +#define RG_AUDPGA_CAPRA_MASK_SFT (0x1 << 1) +#define RG_AUDPGA_ACCCMP_SFT 2 +#define RG_AUDPGA_ACCCMP_MASK 0x1 +#define RG_AUDPGA_ACCCMP_MASK_SFT (0x1 << 2) +#define RG_AUDENC_SPARE2_SFT 3 +#define RG_AUDENC_SPARE2_MASK 0x1fff +#define RG_AUDENC_SPARE2_MASK_SFT (0x1fff << 3) + +/* AUDENC_ANA_CON13 */ +#define RG_AUDDIGMICEN_SFT 0 +#define RG_AUDDIGMICEN_MASK 0x1 +#define RG_AUDDIGMICEN_MASK_SFT (0x1 << 0) +#define RG_AUDDIGMICBIAS_SFT 1 +#define RG_AUDDIGMICBIAS_MASK 0x3 +#define RG_AUDDIGMICBIAS_MASK_SFT (0x3 << 1) +#define RG_DMICHPCLKEN_SFT 3 +#define RG_DMICHPCLKEN_MASK 0x1 +#define RG_DMICHPCLKEN_MASK_SFT (0x1 << 3) +#define RG_AUDDIGMICPDUTY_SFT 4 +#define RG_AUDDIGMICPDUTY_MASK 0x3 +#define RG_AUDDIGMICPDUTY_MASK_SFT (0x3 << 4) +#define RG_AUDDIGMICNDUTY_SFT 6 +#define RG_AUDDIGMICNDUTY_MASK 0x3 +#define RG_AUDDIGMICNDUTY_MASK_SFT (0x3 << 6) +#define RG_DMICMONEN_SFT 8 +#define RG_DMICMONEN_MASK 0x1 +#define RG_DMICMONEN_MASK_SFT (0x1 << 8) +#define RG_DMICMONSEL_SFT 9 +#define RG_DMICMONSEL_MASK 0x7 +#define RG_DMICMONSEL_MASK_SFT (0x7 << 9) + +/* AUDENC_ANA_CON14 */ +#define RG_AUDDIGMIC1EN_SFT 0 +#define RG_AUDDIGMIC1EN_MASK 0x1 +#define RG_AUDDIGMIC1EN_MASK_SFT (0x1 << 0) +#define RG_AUDDIGMICBIAS1_SFT 1 +#define RG_AUDDIGMICBIAS1_MASK 0x3 +#define RG_AUDDIGMICBIAS1_MASK_SFT (0x3 << 1) +#define RG_DMIC1HPCLKEN_SFT 3 +#define RG_DMIC1HPCLKEN_MASK 0x1 +#define RG_DMIC1HPCLKEN_MASK_SFT (0x1 << 3) +#define RG_AUDDIGMIC1PDUTY_SFT 4 +#define RG_AUDDIGMIC1PDUTY_MASK 0x3 +#define RG_AUDDIGMIC1PDUTY_MASK_SFT (0x3 << 4) +#define RG_AUDDIGMIC1NDUTY_SFT 6 +#define RG_AUDDIGMIC1NDUTY_MASK 0x3 +#define RG_AUDDIGMIC1NDUTY_MASK_SFT (0x3 << 6) +#define RG_DMIC1MONEN_SFT 8 +#define RG_DMIC1MONEN_MASK 0x1 +#define RG_DMIC1MONEN_MASK_SFT (0x1 << 8) +#define RG_DMIC1MONSEL_SFT 9 +#define RG_DMIC1MONSEL_MASK 0x7 +#define RG_DMIC1MONSEL_MASK_SFT (0x7 << 9) +#define RG_AUDSPAREVMIC_SFT 12 +#define RG_AUDSPAREVMIC_MASK 0xf +#define RG_AUDSPAREVMIC_MASK_SFT (0xf << 12) + +/* AUDENC_ANA_CON15 */ +#define RG_AUDPWDBMICBIAS0_SFT 0 +#define RG_AUDPWDBMICBIAS0_MASK 0x1 +#define RG_AUDPWDBMICBIAS0_MASK_SFT (0x1 << 0) +#define RG_AUDMICBIAS0BYPASSEN_SFT 1 +#define RG_AUDMICBIAS0BYPASSEN_MASK 0x1 +#define RG_AUDMICBIAS0BYPASSEN_MASK_SFT (0x1 << 1) +#define RG_AUDMICBIAS0LOWPEN_SFT 2 +#define RG_AUDMICBIAS0LOWPEN_MASK 0x1 +#define RG_AUDMICBIAS0LOWPEN_MASK_SFT (0x1 << 2) +#define RG_AUDPWDBMICBIAS3_SFT 3 +#define RG_AUDPWDBMICBIAS3_MASK 0x1 +#define RG_AUDPWDBMICBIAS3_MASK_SFT (0x1 << 3) +#define RG_AUDMICBIAS0VREF_SFT 4 +#define RG_AUDMICBIAS0VREF_MASK 0x7 +#define RG_AUDMICBIAS0VREF_MASK_SFT (0x7 << 4) +#define RG_AUDMICBIAS0DCSW0P1EN_SFT 8 +#define RG_AUDMICBIAS0DCSW0P1EN_MASK 0x1 +#define RG_AUDMICBIAS0DCSW0P1EN_MASK_SFT (0x1 << 8) +#define RG_AUDMICBIAS0DCSW0P2EN_SFT 9 +#define RG_AUDMICBIAS0DCSW0P2EN_MASK 0x1 +#define RG_AUDMICBIAS0DCSW0P2EN_MASK_SFT (0x1 << 9) +#define RG_AUDMICBIAS0DCSW0NEN_SFT 10 +#define RG_AUDMICBIAS0DCSW0NEN_MASK 0x1 +#define RG_AUDMICBIAS0DCSW0NEN_MASK_SFT (0x1 << 10) +#define RG_AUDMICBIAS0DCSW2P1EN_SFT 12 +#define RG_AUDMICBIAS0DCSW2P1EN_MASK 0x1 +#define RG_AUDMICBIAS0DCSW2P1EN_MASK_SFT (0x1 << 12) +#define RG_AUDMICBIAS0DCSW2P2EN_SFT 13 +#define RG_AUDMICBIAS0DCSW2P2EN_MASK 0x1 +#define RG_AUDMICBIAS0DCSW2P2EN_MASK_SFT (0x1 << 13) +#define RG_AUDMICBIAS0DCSW2NEN_SFT 14 +#define RG_AUDMICBIAS0DCSW2NEN_MASK 0x1 +#define RG_AUDMICBIAS0DCSW2NEN_MASK_SFT (0x1 << 14) + +/* AUDENC_ANA_CON16 */ +#define RG_AUDPWDBMICBIAS1_SFT 0 +#define RG_AUDPWDBMICBIAS1_MASK 0x1 +#define RG_AUDPWDBMICBIAS1_MASK_SFT (0x1 << 0) +#define RG_AUDMICBIAS1BYPASSEN_SFT 1 +#define RG_AUDMICBIAS1BYPASSEN_MASK 0x1 +#define RG_AUDMICBIAS1BYPASSEN_MASK_SFT (0x1 << 1) +#define RG_AUDMICBIAS1LOWPEN_SFT 2 +#define RG_AUDMICBIAS1LOWPEN_MASK 0x1 +#define RG_AUDMICBIAS1LOWPEN_MASK_SFT (0x1 << 2) +#define RG_AUDMICBIAS1VREF_SFT 4 +#define RG_AUDMICBIAS1VREF_MASK 0x7 +#define RG_AUDMICBIAS1VREF_MASK_SFT (0x7 << 4) +#define RG_AUDMICBIAS1DCSW1PEN_SFT 8 +#define RG_AUDMICBIAS1DCSW1PEN_MASK 0x1 +#define RG_AUDMICBIAS1DCSW1PEN_MASK_SFT (0x1 << 8) +#define RG_AUDMICBIAS1DCSW1NEN_SFT 9 +#define RG_AUDMICBIAS1DCSW1NEN_MASK 0x1 +#define RG_AUDMICBIAS1DCSW1NEN_MASK_SFT (0x1 << 9) +#define RG_BANDGAPGEN_SFT 10 +#define RG_BANDGAPGEN_MASK 0x1 +#define RG_BANDGAPGEN_MASK_SFT (0x1 << 10) +#define RG_AUDMICBIAS1HVEN_SFT 12 +#define RG_AUDMICBIAS1HVEN_MASK 0x1 +#define RG_AUDMICBIAS1HVEN_MASK_SFT (0x1 << 12) +#define RG_AUDMICBIAS1HVVREF_SFT 13 +#define RG_AUDMICBIAS1HVVREF_MASK 0x1 +#define RG_AUDMICBIAS1HVVREF_MASK_SFT (0x1 << 13) + +/* AUDENC_ANA_CON17 */ +#define RG_AUDPWDBMICBIAS2_SFT 0 +#define RG_AUDPWDBMICBIAS2_MASK 0x1 +#define RG_AUDPWDBMICBIAS2_MASK_SFT (0x1 << 0) +#define RG_AUDMICBIAS2BYPASSEN_SFT 1 +#define RG_AUDMICBIAS2BYPASSEN_MASK 0x1 +#define RG_AUDMICBIAS2BYPASSEN_MASK_SFT (0x1 << 1) +#define RG_AUDMICBIAS2LOWPEN_SFT 2 +#define RG_AUDMICBIAS2LOWPEN_MASK 0x1 +#define RG_AUDMICBIAS2LOWPEN_MASK_SFT (0x1 << 2) +#define RG_AUDMICBIAS2VREF_SFT 4 +#define RG_AUDMICBIAS2VREF_MASK 0x7 +#define RG_AUDMICBIAS2VREF_MASK_SFT (0x7 << 4) +#define RG_AUDMICBIAS2DCSW3P1EN_SFT 8 +#define RG_AUDMICBIAS2DCSW3P1EN_MASK 0x1 +#define RG_AUDMICBIAS2DCSW3P1EN_MASK_SFT (0x1 << 8) +#define RG_AUDMICBIAS2DCSW3P2EN_SFT 9 +#define RG_AUDMICBIAS2DCSW3P2EN_MASK 0x1 +#define RG_AUDMICBIAS2DCSW3P2EN_MASK_SFT (0x1 << 9) +#define RG_AUDMICBIAS2DCSW3NEN_SFT 10 +#define RG_AUDMICBIAS2DCSW3NEN_MASK 0x1 +#define RG_AUDMICBIAS2DCSW3NEN_MASK_SFT (0x1 << 10) +#define RG_AUDMICBIASSPARE_SFT 12 +#define RG_AUDMICBIASSPARE_MASK 0xf +#define RG_AUDMICBIASSPARE_MASK_SFT (0xf << 12) + +/* AUDENC_ANA_CON18 */ +#define RG_AUDACCDETMICBIAS0PULLLOW_SFT 0 +#define RG_AUDACCDETMICBIAS0PULLLOW_MASK 0x1 +#define RG_AUDACCDETMICBIAS0PULLLOW_MASK_SFT (0x1 << 0) +#define RG_AUDACCDETMICBIAS1PULLLOW_SFT 1 +#define RG_AUDACCDETMICBIAS1PULLLOW_MASK 0x1 +#define RG_AUDACCDETMICBIAS1PULLLOW_MASK_SFT (0x1 << 1) +#define RG_AUDACCDETMICBIAS2PULLLOW_SFT 2 +#define RG_AUDACCDETMICBIAS2PULLLOW_MASK 0x1 +#define RG_AUDACCDETMICBIAS2PULLLOW_MASK_SFT (0x1 << 2) +#define RG_AUDACCDETVIN1PULLLOW_SFT 3 +#define RG_AUDACCDETVIN1PULLLOW_MASK 0x1 +#define RG_AUDACCDETVIN1PULLLOW_MASK_SFT (0x1 << 3) +#define RG_AUDACCDETVTHACAL_SFT 4 +#define RG_AUDACCDETVTHACAL_MASK 0x1 +#define RG_AUDACCDETVTHACAL_MASK_SFT (0x1 << 4) +#define RG_AUDACCDETVTHBCAL_SFT 5 +#define RG_AUDACCDETVTHBCAL_MASK 0x1 +#define RG_AUDACCDETVTHBCAL_MASK_SFT (0x1 << 5) +#define RG_AUDACCDETTVDET_SFT 6 +#define RG_AUDACCDETTVDET_MASK 0x1 +#define RG_AUDACCDETTVDET_MASK_SFT (0x1 << 6) +#define RG_ACCDETSEL_SFT 7 +#define RG_ACCDETSEL_MASK 0x1 +#define RG_ACCDETSEL_MASK_SFT (0x1 << 7) +#define RG_SWBUFMODSEL_SFT 8 +#define RG_SWBUFMODSEL_MASK 0x1 +#define RG_SWBUFMODSEL_MASK_SFT (0x1 << 8) +#define RG_SWBUFSWEN_SFT 9 +#define RG_SWBUFSWEN_MASK 0x1 +#define RG_SWBUFSWEN_MASK_SFT (0x1 << 9) +#define RG_EINT0NOHYS_SFT 10 +#define RG_EINT0NOHYS_MASK 0x1 +#define RG_EINT0NOHYS_MASK_SFT (0x1 << 10) +#define RG_EINT0CONFIGACCDET_SFT 11 +#define RG_EINT0CONFIGACCDET_MASK 0x1 +#define RG_EINT0CONFIGACCDET_MASK_SFT (0x1 << 11) +#define RG_EINT0HIRENB_SFT 12 +#define RG_EINT0HIRENB_MASK 0x1 +#define RG_EINT0HIRENB_MASK_SFT (0x1 << 12) +#define RG_ACCDET2AUXRESBYPASS_SFT 13 +#define RG_ACCDET2AUXRESBYPASS_MASK 0x1 +#define RG_ACCDET2AUXRESBYPASS_MASK_SFT (0x1 << 13) +#define RG_ACCDET2AUXSWEN_SFT 14 +#define RG_ACCDET2AUXSWEN_MASK 0x1 +#define RG_ACCDET2AUXSWEN_MASK_SFT (0x1 << 14) +#define RG_AUDACCDETMICBIAS3PULLLOW_SFT 15 +#define RG_AUDACCDETMICBIAS3PULLLOW_MASK 0x1 +#define RG_AUDACCDETMICBIAS3PULLLOW_MASK_SFT (0x1 << 15) + +/* AUDENC_ANA_CON19 */ +#define RG_EINT1CONFIGACCDET_SFT 0 +#define RG_EINT1CONFIGACCDET_MASK 0x1 +#define RG_EINT1CONFIGACCDET_MASK_SFT (0x1 << 0) +#define RG_EINT1HIRENB_SFT 1 +#define RG_EINT1HIRENB_MASK 0x1 +#define RG_EINT1HIRENB_MASK_SFT (0x1 << 1) +#define RG_EINT1NOHYS_SFT 2 +#define RG_EINT1NOHYS_MASK 0x1 +#define RG_EINT1NOHYS_MASK_SFT (0x1 << 2) +#define RG_EINTCOMPVTH_SFT 4 +#define RG_EINTCOMPVTH_MASK 0xf +#define RG_EINTCOMPVTH_MASK_SFT (0xf << 4) +#define RG_MTEST_EN_SFT 8 +#define RG_MTEST_EN_MASK 0x1 +#define RG_MTEST_EN_MASK_SFT (0x1 << 8) +#define RG_MTEST_SEL_SFT 9 +#define RG_MTEST_SEL_MASK 0x1 +#define RG_MTEST_SEL_MASK_SFT (0x1 << 9) +#define RG_MTEST_CURRENT_SFT 10 +#define RG_MTEST_CURRENT_MASK 0x1 +#define RG_MTEST_CURRENT_MASK_SFT (0x1 << 10) +#define RG_ANALOGFDEN_SFT 12 +#define RG_ANALOGFDEN_MASK 0x1 +#define RG_ANALOGFDEN_MASK_SFT (0x1 << 12) +#define RG_FDVIN1PPULLLOW_SFT 13 +#define RG_FDVIN1PPULLLOW_MASK 0x1 +#define RG_FDVIN1PPULLLOW_MASK_SFT (0x1 << 13) +#define RG_FDEINT0TYPE_SFT 14 +#define RG_FDEINT0TYPE_MASK 0x1 +#define RG_FDEINT0TYPE_MASK_SFT (0x1 << 14) +#define RG_FDEINT1TYPE_SFT 15 +#define RG_FDEINT1TYPE_MASK 0x1 +#define RG_FDEINT1TYPE_MASK_SFT (0x1 << 15) + +/* AUDENC_ANA_CON20 */ +#define RG_EINT0CMPEN_SFT 0 +#define RG_EINT0CMPEN_MASK 0x1 +#define RG_EINT0CMPEN_MASK_SFT (0x1 << 0) +#define RG_EINT0CMPMEN_SFT 1 +#define RG_EINT0CMPMEN_MASK 0x1 +#define RG_EINT0CMPMEN_MASK_SFT (0x1 << 1) +#define RG_EINT0EN_SFT 2 +#define RG_EINT0EN_MASK 0x1 +#define RG_EINT0EN_MASK_SFT (0x1 << 2) +#define RG_EINT0CEN_SFT 3 +#define RG_EINT0CEN_MASK 0x1 +#define RG_EINT0CEN_MASK_SFT (0x1 << 3) +#define RG_EINT0INVEN_SFT 4 +#define RG_EINT0INVEN_MASK 0x1 +#define RG_EINT0INVEN_MASK_SFT (0x1 << 4) +#define RG_EINT0CTURBO_SFT 5 +#define RG_EINT0CTURBO_MASK 0x7 +#define RG_EINT0CTURBO_MASK_SFT (0x7 << 5) +#define RG_EINT1CMPEN_SFT 8 +#define RG_EINT1CMPEN_MASK 0x1 +#define RG_EINT1CMPEN_MASK_SFT (0x1 << 8) +#define RG_EINT1CMPMEN_SFT 9 +#define RG_EINT1CMPMEN_MASK 0x1 +#define RG_EINT1CMPMEN_MASK_SFT (0x1 << 9) +#define RG_EINT1EN_SFT 10 +#define RG_EINT1EN_MASK 0x1 +#define RG_EINT1EN_MASK_SFT (0x1 << 10) +#define RG_EINT1CEN_SFT 11 +#define RG_EINT1CEN_MASK 0x1 +#define RG_EINT1CEN_MASK_SFT (0x1 << 11) +#define RG_EINT1INVEN_SFT 12 +#define RG_EINT1INVEN_MASK 0x1 +#define RG_EINT1INVEN_MASK_SFT (0x1 << 12) +#define RG_EINT1CTURBO_SFT 13 +#define RG_EINT1CTURBO_MASK 0x7 +#define RG_EINT1CTURBO_MASK_SFT (0x7 << 13) + +/* AUDENC_ANA_CON21 */ +#define RG_ACCDETSPARE_SFT 0 +#define RG_ACCDETSPARE_MASK 0xffff +#define RG_ACCDETSPARE_MASK_SFT (0xffff << 0) + +/* AUDENC_ANA_CON22 */ +#define RG_AUDENCSPAREVA30_SFT 0 +#define RG_AUDENCSPAREVA30_MASK 0xff +#define RG_AUDENCSPAREVA30_MASK_SFT (0xff << 0) +#define RG_AUDENCSPAREVA18_SFT 8 +#define RG_AUDENCSPAREVA18_MASK 0xff +#define RG_AUDENCSPAREVA18_MASK_SFT (0xff << 8) + +/* AUDENC_ANA_CON23 */ +#define RG_CLKSQ_EN_SFT 0 +#define RG_CLKSQ_EN_MASK 0x1 +#define RG_CLKSQ_EN_MASK_SFT (0x1 << 0) +#define RG_CLKSQ_IN_SEL_TEST_SFT 1 +#define RG_CLKSQ_IN_SEL_TEST_MASK 0x1 +#define RG_CLKSQ_IN_SEL_TEST_MASK_SFT (0x1 << 1) +#define RG_CM_REFGENSEL_SFT 2 +#define RG_CM_REFGENSEL_MASK 0x1 +#define RG_CM_REFGENSEL_MASK_SFT (0x1 << 2) +#define RG_AUDIO_VOW_EN_SFT 3 +#define RG_AUDIO_VOW_EN_MASK 0x1 +#define RG_AUDIO_VOW_EN_MASK_SFT (0x1 << 3) +#define RG_CLKSQ_EN_VOW_SFT 4 +#define RG_CLKSQ_EN_VOW_MASK 0x1 +#define RG_CLKSQ_EN_VOW_MASK_SFT (0x1 << 4) +#define RG_CLKAND_EN_VOW_SFT 5 +#define RG_CLKAND_EN_VOW_MASK 0x1 +#define RG_CLKAND_EN_VOW_MASK_SFT (0x1 << 5) +#define RG_VOWCLK_SEL_EN_VOW_SFT 6 +#define RG_VOWCLK_SEL_EN_VOW_MASK 0x1 +#define RG_VOWCLK_SEL_EN_VOW_MASK_SFT (0x1 << 6) +#define RG_SPARE_VOW_SFT 7 +#define RG_SPARE_VOW_MASK 0x7 +#define RG_SPARE_VOW_MASK_SFT (0x7 << 7) + +/* AUDDEC_ANA_CON0 */ +#define RG_AUDDACLPWRUP_VAUDP32_SFT 0 +#define RG_AUDDACLPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDDACLPWRUP_VAUDP32_MASK_SFT (0x1 << 0) +#define RG_AUDDACRPWRUP_VAUDP32_SFT 1 +#define RG_AUDDACRPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDDACRPWRUP_VAUDP32_MASK_SFT (0x1 << 1) +#define RG_AUD_DAC_PWR_UP_VA32_SFT 2 +#define RG_AUD_DAC_PWR_UP_VA32_MASK 0x1 +#define RG_AUD_DAC_PWR_UP_VA32_MASK_SFT (0x1 << 2) +#define RG_AUD_DAC_PWL_UP_VA32_SFT 3 +#define RG_AUD_DAC_PWL_UP_VA32_MASK 0x1 +#define RG_AUD_DAC_PWL_UP_VA32_MASK_SFT (0x1 << 3) +#define RG_AUDHPLPWRUP_VAUDP32_SFT 4 +#define RG_AUDHPLPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDHPLPWRUP_VAUDP32_MASK_SFT (0x1 << 4) +#define RG_AUDHPRPWRUP_VAUDP32_SFT 5 +#define RG_AUDHPRPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDHPRPWRUP_VAUDP32_MASK_SFT (0x1 << 5) +#define RG_AUDHPLPWRUP_IBIAS_VAUDP32_SFT 6 +#define RG_AUDHPLPWRUP_IBIAS_VAUDP32_MASK 0x1 +#define RG_AUDHPLPWRUP_IBIAS_VAUDP32_MASK_SFT (0x1 << 6) +#define RG_AUDHPRPWRUP_IBIAS_VAUDP32_SFT 7 +#define RG_AUDHPRPWRUP_IBIAS_VAUDP32_MASK 0x1 +#define RG_AUDHPRPWRUP_IBIAS_VAUDP32_MASK_SFT (0x1 << 7) +#define RG_AUDHPLMUXINPUTSEL_VAUDP32_SFT 8 +#define RG_AUDHPLMUXINPUTSEL_VAUDP32_MASK 0x3 +#define RG_AUDHPLMUXINPUTSEL_VAUDP32_MASK_SFT (0x3 << 8) +#define RG_AUDHPRMUXINPUTSEL_VAUDP32_SFT 10 +#define RG_AUDHPRMUXINPUTSEL_VAUDP32_MASK 0x3 +#define RG_AUDHPRMUXINPUTSEL_VAUDP32_MASK_SFT (0x3 << 10) +#define RG_AUDHPLSCDISABLE_VAUDP32_SFT 12 +#define RG_AUDHPLSCDISABLE_VAUDP32_MASK 0x1 +#define RG_AUDHPLSCDISABLE_VAUDP32_MASK_SFT (0x1 << 12) +#define RG_AUDHPRSCDISABLE_VAUDP32_SFT 13 +#define RG_AUDHPRSCDISABLE_VAUDP32_MASK 0x1 +#define RG_AUDHPRSCDISABLE_VAUDP32_MASK_SFT (0x1 << 13) +#define RG_AUDHPLBSCCURRENT_VAUDP32_SFT 14 +#define RG_AUDHPLBSCCURRENT_VAUDP32_MASK 0x1 +#define RG_AUDHPLBSCCURRENT_VAUDP32_MASK_SFT (0x1 << 14) +#define RG_AUDHPRBSCCURRENT_VAUDP32_SFT 15 +#define RG_AUDHPRBSCCURRENT_VAUDP32_MASK 0x1 +#define RG_AUDHPRBSCCURRENT_VAUDP32_MASK_SFT (0x1 << 15) + +/* AUDDEC_ANA_CON1 */ +#define RG_AUDHPLOUTPWRUP_VAUDP32_SFT 0 +#define RG_AUDHPLOUTPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDHPLOUTPWRUP_VAUDP32_MASK_SFT (0x1 << 0) +#define RG_AUDHPROUTPWRUP_VAUDP32_SFT 1 +#define RG_AUDHPROUTPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDHPROUTPWRUP_VAUDP32_MASK_SFT (0x1 << 1) +#define RG_AUDHPLOUTAUXPWRUP_VAUDP32_SFT 2 +#define RG_AUDHPLOUTAUXPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDHPLOUTAUXPWRUP_VAUDP32_MASK_SFT (0x1 << 2) +#define RG_AUDHPROUTAUXPWRUP_VAUDP32_SFT 3 +#define RG_AUDHPROUTAUXPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDHPROUTAUXPWRUP_VAUDP32_MASK_SFT (0x1 << 3) +#define RG_HPLAUXFBRSW_EN_VAUDP32_SFT 4 +#define RG_HPLAUXFBRSW_EN_VAUDP32_MASK 0x1 +#define RG_HPLAUXFBRSW_EN_VAUDP32_MASK_SFT (0x1 << 4) +#define RG_HPRAUXFBRSW_EN_VAUDP32_SFT 5 +#define RG_HPRAUXFBRSW_EN_VAUDP32_MASK 0x1 +#define RG_HPRAUXFBRSW_EN_VAUDP32_MASK_SFT (0x1 << 5) +#define RG_HPLSHORT2HPLAUX_EN_VAUDP32_SFT 6 +#define RG_HPLSHORT2HPLAUX_EN_VAUDP32_MASK 0x1 +#define RG_HPLSHORT2HPLAUX_EN_VAUDP32_MASK_SFT (0x1 << 6) +#define RG_HPRSHORT2HPRAUX_EN_VAUDP32_SFT 7 +#define RG_HPRSHORT2HPRAUX_EN_VAUDP32_MASK 0x1 +#define RG_HPRSHORT2HPRAUX_EN_VAUDP32_MASK_SFT (0x1 << 7) +#define RG_HPLOUTSTGCTRL_VAUDP32_SFT 8 +#define RG_HPLOUTSTGCTRL_VAUDP32_MASK 0x7 +#define RG_HPLOUTSTGCTRL_VAUDP32_MASK_SFT (0x7 << 8) +#define RG_HPROUTSTGCTRL_VAUDP32_SFT 12 +#define RG_HPROUTSTGCTRL_VAUDP32_MASK 0x7 +#define RG_HPROUTSTGCTRL_VAUDP32_MASK_SFT (0x7 << 12) + +/* AUDDEC_ANA_CON2 */ +#define RG_HPLOUTPUTSTBENH_VAUDP32_SFT 0 +#define RG_HPLOUTPUTSTBENH_VAUDP32_MASK 0x7 +#define RG_HPLOUTPUTSTBENH_VAUDP32_MASK_SFT (0x7 << 0) +#define RG_HPROUTPUTSTBENH_VAUDP32_SFT 4 +#define RG_HPROUTPUTSTBENH_VAUDP32_MASK 0x7 +#define RG_HPROUTPUTSTBENH_VAUDP32_MASK_SFT (0x7 << 4) +#define RG_AUDHPSTARTUP_VAUDP32_SFT 7 +#define RG_AUDHPSTARTUP_VAUDP32_MASK 0x1 +#define RG_AUDHPSTARTUP_VAUDP32_MASK_SFT (0x1 << 7) +#define RG_AUDREFN_DERES_EN_VAUDP32_SFT 8 +#define RG_AUDREFN_DERES_EN_VAUDP32_MASK 0x1 +#define RG_AUDREFN_DERES_EN_VAUDP32_MASK_SFT (0x1 << 8) +#define RG_HPINPUTSTBENH_VAUDP32_SFT 9 +#define RG_HPINPUTSTBENH_VAUDP32_MASK 0x1 +#define RG_HPINPUTSTBENH_VAUDP32_MASK_SFT (0x1 << 9) +#define RG_HPINPUTRESET0_VAUDP32_SFT 10 +#define RG_HPINPUTRESET0_VAUDP32_MASK 0x1 +#define RG_HPINPUTRESET0_VAUDP32_MASK_SFT (0x1 << 10) +#define RG_HPOUTPUTRESET0_VAUDP32_SFT 11 +#define RG_HPOUTPUTRESET0_VAUDP32_MASK 0x1 +#define RG_HPOUTPUTRESET0_VAUDP32_MASK_SFT (0x1 << 11) +#define RG_HPPSHORT2VCM_VAUDP32_SFT 12 +#define RG_HPPSHORT2VCM_VAUDP32_MASK 0x7 +#define RG_HPPSHORT2VCM_VAUDP32_MASK_SFT (0x7 << 12) +#define RG_AUDHPTRIM_EN_VAUDP32_SFT 15 +#define RG_AUDHPTRIM_EN_VAUDP32_MASK 0x1 +#define RG_AUDHPTRIM_EN_VAUDP32_MASK_SFT (0x1 << 15) + +/* AUDDEC_ANA_CON3 */ +#define RG_AUDHPLTRIM_VAUDP32_SFT 0 +#define RG_AUDHPLTRIM_VAUDP32_MASK 0x1f +#define RG_AUDHPLTRIM_VAUDP32_MASK_SFT (0x1f << 0) +#define RG_AUDHPLFINETRIM_VAUDP32_SFT 5 +#define RG_AUDHPLFINETRIM_VAUDP32_MASK 0x7 +#define RG_AUDHPLFINETRIM_VAUDP32_MASK_SFT (0x7 << 5) +#define RG_AUDHPRTRIM_VAUDP32_SFT 8 +#define RG_AUDHPRTRIM_VAUDP32_MASK 0x1f +#define RG_AUDHPRTRIM_VAUDP32_MASK_SFT (0x1f << 8) +#define RG_AUDHPRFINETRIM_VAUDP32_SFT 13 +#define RG_AUDHPRFINETRIM_VAUDP32_MASK 0x7 +#define RG_AUDHPRFINETRIM_VAUDP32_MASK_SFT (0x7 << 13) + +/* AUDDEC_ANA_CON4 */ +#define RG_AUDHPDIFFINPBIASADJ_VAUDP32_SFT 0 +#define RG_AUDHPDIFFINPBIASADJ_VAUDP32_MASK 0x7 +#define RG_AUDHPDIFFINPBIASADJ_VAUDP32_MASK_SFT (0x7 << 0) +#define RG_AUDHPLFCOMPRESSEL_VAUDP32_SFT 4 +#define RG_AUDHPLFCOMPRESSEL_VAUDP32_MASK 0x7 +#define RG_AUDHPLFCOMPRESSEL_VAUDP32_MASK_SFT (0x7 << 4) +#define RG_AUDHPHFCOMPRESSEL_VAUDP32_SFT 8 +#define RG_AUDHPHFCOMPRESSEL_VAUDP32_MASK 0x7 +#define RG_AUDHPHFCOMPRESSEL_VAUDP32_MASK_SFT (0x7 << 8) +#define RG_AUDHPHFCOMPBUFGAINSEL_VAUDP32_SFT 12 +#define RG_AUDHPHFCOMPBUFGAINSEL_VAUDP32_MASK 0x3 +#define RG_AUDHPHFCOMPBUFGAINSEL_VAUDP32_MASK_SFT (0x3 << 12) +#define RG_AUDHPCOMP_EN_VAUDP32_SFT 15 +#define RG_AUDHPCOMP_EN_VAUDP32_MASK 0x1 +#define RG_AUDHPCOMP_EN_VAUDP32_MASK_SFT (0x1 << 15) + +/* AUDDEC_ANA_CON5 */ +#define RG_AUDHPDECMGAINADJ_VAUDP32_SFT 0 +#define RG_AUDHPDECMGAINADJ_VAUDP32_MASK 0x7 +#define RG_AUDHPDECMGAINADJ_VAUDP32_MASK_SFT (0x7 << 0) +#define RG_AUDHPDEDMGAINADJ_VAUDP32_SFT 4 +#define RG_AUDHPDEDMGAINADJ_VAUDP32_MASK 0x7 +#define RG_AUDHPDEDMGAINADJ_VAUDP32_MASK_SFT (0x7 << 4) + +/* AUDDEC_ANA_CON6 */ +#define RG_AUDHSPWRUP_VAUDP32_SFT 0 +#define RG_AUDHSPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDHSPWRUP_VAUDP32_MASK_SFT (0x1 << 0) +#define RG_AUDHSPWRUP_IBIAS_VAUDP32_SFT 1 +#define RG_AUDHSPWRUP_IBIAS_VAUDP32_MASK 0x1 +#define RG_AUDHSPWRUP_IBIAS_VAUDP32_MASK_SFT (0x1 << 1) +#define RG_AUDHSMUXINPUTSEL_VAUDP32_SFT 2 +#define RG_AUDHSMUXINPUTSEL_VAUDP32_MASK 0x3 +#define RG_AUDHSMUXINPUTSEL_VAUDP32_MASK_SFT (0x3 << 2) +#define RG_AUDHSSCDISABLE_VAUDP32_SFT 4 +#define RG_AUDHSSCDISABLE_VAUDP32_MASK 0x1 +#define RG_AUDHSSCDISABLE_VAUDP32_MASK_SFT (0x1 << 4) +#define RG_AUDHSBSCCURRENT_VAUDP32_SFT 5 +#define RG_AUDHSBSCCURRENT_VAUDP32_MASK 0x1 +#define RG_AUDHSBSCCURRENT_VAUDP32_MASK_SFT (0x1 << 5) +#define RG_AUDHSSTARTUP_VAUDP32_SFT 6 +#define RG_AUDHSSTARTUP_VAUDP32_MASK 0x1 +#define RG_AUDHSSTARTUP_VAUDP32_MASK_SFT (0x1 << 6) +#define RG_HSOUTPUTSTBENH_VAUDP32_SFT 7 +#define RG_HSOUTPUTSTBENH_VAUDP32_MASK 0x1 +#define RG_HSOUTPUTSTBENH_VAUDP32_MASK_SFT (0x1 << 7) +#define RG_HSINPUTSTBENH_VAUDP32_SFT 8 +#define RG_HSINPUTSTBENH_VAUDP32_MASK 0x1 +#define RG_HSINPUTSTBENH_VAUDP32_MASK_SFT (0x1 << 8) +#define RG_HSINPUTRESET0_VAUDP32_SFT 9 +#define RG_HSINPUTRESET0_VAUDP32_MASK 0x1 +#define RG_HSINPUTRESET0_VAUDP32_MASK_SFT (0x1 << 9) +#define RG_HSOUTPUTRESET0_VAUDP32_SFT 10 +#define RG_HSOUTPUTRESET0_VAUDP32_MASK 0x1 +#define RG_HSOUTPUTRESET0_VAUDP32_MASK_SFT (0x1 << 10) +#define RG_HSOUT_SHORTVCM_VAUDP32_SFT 11 +#define RG_HSOUT_SHORTVCM_VAUDP32_MASK 0x1 +#define RG_HSOUT_SHORTVCM_VAUDP32_MASK_SFT (0x1 << 11) + +/* AUDDEC_ANA_CON7 */ +#define RG_AUDLOLPWRUP_VAUDP32_SFT 0 +#define RG_AUDLOLPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDLOLPWRUP_VAUDP32_MASK_SFT (0x1 << 0) +#define RG_AUDLOLPWRUP_IBIAS_VAUDP32_SFT 1 +#define RG_AUDLOLPWRUP_IBIAS_VAUDP32_MASK 0x1 +#define RG_AUDLOLPWRUP_IBIAS_VAUDP32_MASK_SFT (0x1 << 1) +#define RG_AUDLOLMUXINPUTSEL_VAUDP32_SFT 2 +#define RG_AUDLOLMUXINPUTSEL_VAUDP32_MASK 0x3 +#define RG_AUDLOLMUXINPUTSEL_VAUDP32_MASK_SFT (0x3 << 2) +#define RG_AUDLOLSCDISABLE_VAUDP32_SFT 4 +#define RG_AUDLOLSCDISABLE_VAUDP32_MASK 0x1 +#define RG_AUDLOLSCDISABLE_VAUDP32_MASK_SFT (0x1 << 4) +#define RG_AUDLOLBSCCURRENT_VAUDP32_SFT 5 +#define RG_AUDLOLBSCCURRENT_VAUDP32_MASK 0x1 +#define RG_AUDLOLBSCCURRENT_VAUDP32_MASK_SFT (0x1 << 5) +#define RG_AUDLOSTARTUP_VAUDP32_SFT 6 +#define RG_AUDLOSTARTUP_VAUDP32_MASK 0x1 +#define RG_AUDLOSTARTUP_VAUDP32_MASK_SFT (0x1 << 6) +#define RG_LOINPUTSTBENH_VAUDP32_SFT 7 +#define RG_LOINPUTSTBENH_VAUDP32_MASK 0x1 +#define RG_LOINPUTSTBENH_VAUDP32_MASK_SFT (0x1 << 7) +#define RG_LOOUTPUTSTBENH_VAUDP32_SFT 8 +#define RG_LOOUTPUTSTBENH_VAUDP32_MASK 0x1 +#define RG_LOOUTPUTSTBENH_VAUDP32_MASK_SFT (0x1 << 8) +#define RG_LOINPUTRESET0_VAUDP32_SFT 9 +#define RG_LOINPUTRESET0_VAUDP32_MASK 0x1 +#define RG_LOINPUTRESET0_VAUDP32_MASK_SFT (0x1 << 9) +#define RG_LOOUTPUTRESET0_VAUDP32_SFT 10 +#define RG_LOOUTPUTRESET0_VAUDP32_MASK 0x1 +#define RG_LOOUTPUTRESET0_VAUDP32_MASK_SFT (0x1 << 10) +#define RG_LOOUT_SHORTVCM_VAUDP32_SFT 11 +#define RG_LOOUT_SHORTVCM_VAUDP32_MASK 0x1 +#define RG_LOOUT_SHORTVCM_VAUDP32_MASK_SFT (0x1 << 11) +#define RG_AUDDACTPWRUP_VAUDP32_SFT 12 +#define RG_AUDDACTPWRUP_VAUDP32_MASK 0x1 +#define RG_AUDDACTPWRUP_VAUDP32_MASK_SFT (0x1 << 12) +#define RG_AUD_DAC_PWT_UP_VA32_SFT 13 +#define RG_AUD_DAC_PWT_UP_VA32_MASK 0x1 +#define RG_AUD_DAC_PWT_UP_VA32_MASK_SFT (0x1 << 13) + +/* AUDDEC_ANA_CON8 */ +#define RG_AUDTRIMBUF_INPUTMUXSEL_VAUDP32_SFT 0 +#define RG_AUDTRIMBUF_INPUTMUXSEL_VAUDP32_MASK 0xf +#define RG_AUDTRIMBUF_INPUTMUXSEL_VAUDP32_MASK_SFT (0xf << 0) +#define RG_AUDTRIMBUF_GAINSEL_VAUDP32_SFT 4 +#define RG_AUDTRIMBUF_GAINSEL_VAUDP32_MASK 0x3 +#define RG_AUDTRIMBUF_GAINSEL_VAUDP32_MASK_SFT (0x3 << 4) +#define RG_AUDTRIMBUF_EN_VAUDP32_SFT 6 +#define RG_AUDTRIMBUF_EN_VAUDP32_MASK 0x1 +#define RG_AUDTRIMBUF_EN_VAUDP32_MASK_SFT (0x1 << 6) +#define RG_AUDHPSPKDET_INPUTMUXSEL_VAUDP32_SFT 8 +#define RG_AUDHPSPKDET_INPUTMUXSEL_VAUDP32_MASK 0x3 +#define RG_AUDHPSPKDET_INPUTMUXSEL_VAUDP32_MASK_SFT (0x3 << 8) +#define RG_AUDHPSPKDET_OUTPUTMUXSEL_VAUDP32_SFT 10 +#define RG_AUDHPSPKDET_OUTPUTMUXSEL_VAUDP32_MASK 0x3 +#define RG_AUDHPSPKDET_OUTPUTMUXSEL_VAUDP32_MASK_SFT (0x3 << 10) +#define RG_AUDHPSPKDET_EN_VAUDP32_SFT 12 +#define RG_AUDHPSPKDET_EN_VAUDP32_MASK 0x1 +#define RG_AUDHPSPKDET_EN_VAUDP32_MASK_SFT (0x1 << 12) + +/* AUDDEC_ANA_CON9 */ +#define RG_ABIDEC_RSVD0_VA32_SFT 0 +#define RG_ABIDEC_RSVD0_VA32_MASK 0xff +#define RG_ABIDEC_RSVD0_VA32_MASK_SFT (0xff << 0) +#define RG_ABIDEC_RSVD0_VAUDP32_SFT 8 +#define RG_ABIDEC_RSVD0_VAUDP32_MASK 0xff +#define RG_ABIDEC_RSVD0_VAUDP32_MASK_SFT (0xff << 8) + +/* AUDDEC_ANA_CON10 */ +#define RG_ABIDEC_RSVD1_VAUDP32_SFT 0 +#define RG_ABIDEC_RSVD1_VAUDP32_MASK 0xff +#define RG_ABIDEC_RSVD1_VAUDP32_MASK_SFT (0xff << 0) +#define RG_ABIDEC_RSVD2_VAUDP32_SFT 8 +#define RG_ABIDEC_RSVD2_VAUDP32_MASK 0xff +#define RG_ABIDEC_RSVD2_VAUDP32_MASK_SFT (0xff << 8) + +/* AUDDEC_ANA_CON11 */ +#define RG_AUDZCDMUXSEL_VAUDP32_SFT 0 +#define RG_AUDZCDMUXSEL_VAUDP32_MASK 0x7 +#define RG_AUDZCDMUXSEL_VAUDP32_MASK_SFT (0x7 << 0) +#define RG_AUDZCDCLKSEL_VAUDP32_SFT 3 +#define RG_AUDZCDCLKSEL_VAUDP32_MASK 0x1 +#define RG_AUDZCDCLKSEL_VAUDP32_MASK_SFT (0x1 << 3) +#define RG_AUDBIASADJ_0_VAUDP32_SFT 7 +#define RG_AUDBIASADJ_0_VAUDP32_MASK 0x1ff +#define RG_AUDBIASADJ_0_VAUDP32_MASK_SFT (0x1ff << 7) + +/* AUDDEC_ANA_CON12 */ +#define RG_AUDBIASADJ_1_VAUDP32_SFT 0 +#define RG_AUDBIASADJ_1_VAUDP32_MASK 0xff +#define RG_AUDBIASADJ_1_VAUDP32_MASK_SFT (0xff << 0) +#define RG_AUDIBIASPWRDN_VAUDP32_SFT 8 +#define RG_AUDIBIASPWRDN_VAUDP32_MASK 0x1 +#define RG_AUDIBIASPWRDN_VAUDP32_MASK_SFT (0x1 << 8) + +/* AUDDEC_ANA_CON13 */ +#define RG_RSTB_DECODER_VA32_SFT 0 +#define RG_RSTB_DECODER_VA32_MASK 0x1 +#define RG_RSTB_DECODER_VA32_MASK_SFT (0x1 << 0) +#define RG_SEL_DECODER_96K_VA32_SFT 1 +#define RG_SEL_DECODER_96K_VA32_MASK 0x1 +#define RG_SEL_DECODER_96K_VA32_MASK_SFT (0x1 << 1) +#define RG_SEL_DELAY_VCORE_SFT 2 +#define RG_SEL_DELAY_VCORE_MASK 0x1 +#define RG_SEL_DELAY_VCORE_MASK_SFT (0x1 << 2) +#define RG_AUDGLB_PWRDN_VA32_SFT 4 +#define RG_AUDGLB_PWRDN_VA32_MASK 0x1 +#define RG_AUDGLB_PWRDN_VA32_MASK_SFT (0x1 << 4) +#define RG_AUDGLB_LP_VOW_EN_VA32_SFT 5 +#define RG_AUDGLB_LP_VOW_EN_VA32_MASK 0x1 +#define RG_AUDGLB_LP_VOW_EN_VA32_MASK_SFT (0x1 << 5) +#define RG_AUDGLB_LP2_VOW_EN_VA32_SFT 6 +#define RG_AUDGLB_LP2_VOW_EN_VA32_MASK 0x1 +#define RG_AUDGLB_LP2_VOW_EN_VA32_MASK_SFT (0x1 << 6) + +/* AUDDEC_ANA_CON14 */ +#define RG_LCLDO_DEC_EN_VA32_SFT 0 +#define RG_LCLDO_DEC_EN_VA32_MASK 0x1 +#define RG_LCLDO_DEC_EN_VA32_MASK_SFT (0x1 << 0) +#define RG_LCLDO_DEC_PDDIS_EN_VA18_SFT 1 +#define RG_LCLDO_DEC_PDDIS_EN_VA18_MASK 0x1 +#define RG_LCLDO_DEC_PDDIS_EN_VA18_MASK_SFT (0x1 << 1) +#define RG_LCLDO_DEC_REMOTE_SENSE_VA18_SFT 2 +#define RG_LCLDO_DEC_REMOTE_SENSE_VA18_MASK 0x1 +#define RG_LCLDO_DEC_REMOTE_SENSE_VA18_MASK_SFT (0x1 << 2) +#define RG_NVREG_EN_VAUDP32_SFT 4 +#define RG_NVREG_EN_VAUDP32_MASK 0x1 +#define RG_NVREG_EN_VAUDP32_MASK_SFT (0x1 << 4) +#define RG_NVREG_PULL0V_VAUDP32_SFT 5 +#define RG_NVREG_PULL0V_VAUDP32_MASK 0x1 +#define RG_NVREG_PULL0V_VAUDP32_MASK_SFT (0x1 << 5) +#define RG_AUDPMU_RSVD_VA18_SFT 8 +#define RG_AUDPMU_RSVD_VA18_MASK 0xff +#define RG_AUDPMU_RSVD_VA18_MASK_SFT (0xff << 8) + +/* MT6359_ZCD_CON0 */ +#define RG_AUDZCDENABLE_SFT 0 +#define RG_AUDZCDENABLE_MASK 0x1 +#define RG_AUDZCDENABLE_MASK_SFT (0x1 << 0) +#define RG_AUDZCDGAINSTEPTIME_SFT 1 +#define RG_AUDZCDGAINSTEPTIME_MASK 0x7 +#define RG_AUDZCDGAINSTEPTIME_MASK_SFT (0x7 << 1) +#define RG_AUDZCDGAINSTEPSIZE_SFT 4 +#define RG_AUDZCDGAINSTEPSIZE_MASK 0x3 +#define RG_AUDZCDGAINSTEPSIZE_MASK_SFT (0x3 << 4) +#define RG_AUDZCDTIMEOUTMODESEL_SFT 6 +#define RG_AUDZCDTIMEOUTMODESEL_MASK 0x1 +#define RG_AUDZCDTIMEOUTMODESEL_MASK_SFT (0x1 << 6) + +/* MT6359_ZCD_CON1 */ +#define RG_AUDLOLGAIN_SFT 0 +#define RG_AUDLOLGAIN_MASK 0x1f +#define RG_AUDLOLGAIN_MASK_SFT (0x1f << 0) +#define RG_AUDLORGAIN_SFT 7 +#define RG_AUDLORGAIN_MASK 0x1f +#define RG_AUDLORGAIN_MASK_SFT (0x1f << 7) + +/* MT6359_ZCD_CON2 */ +#define RG_AUDHPLGAIN_SFT 0 +#define RG_AUDHPLGAIN_MASK 0x1f +#define RG_AUDHPLGAIN_MASK_SFT (0x1f << 0) +#define RG_AUDHPRGAIN_SFT 7 +#define RG_AUDHPRGAIN_MASK 0x1f +#define RG_AUDHPRGAIN_MASK_SFT (0x1f << 7) + +/* MT6359_ZCD_CON3 */ +#define RG_AUDHSGAIN_SFT 0 +#define RG_AUDHSGAIN_MASK 0x1f +#define RG_AUDHSGAIN_MASK_SFT (0x1f << 0) + +/* MT6359_ZCD_CON4 */ +#define RG_AUDIVLGAIN_SFT 0 +#define RG_AUDIVLGAIN_MASK 0x7 +#define RG_AUDIVLGAIN_MASK_SFT (0x7 << 0) +#define RG_AUDIVRGAIN_SFT 8 +#define RG_AUDIVRGAIN_MASK 0x7 +#define RG_AUDIVRGAIN_MASK_SFT (0x7 << 8) + +/* MT6359_ZCD_CON5 */ +#define RG_AUDINTGAIN1_SFT 0 +#define RG_AUDINTGAIN1_MASK 0x3f +#define RG_AUDINTGAIN1_MASK_SFT (0x3f << 0) +#define RG_AUDINTGAIN2_SFT 8 +#define RG_AUDINTGAIN2_MASK 0x3f +#define RG_AUDINTGAIN2_MASK_SFT (0x3f << 8) + +/* audio register */ +#define MT6359_GPIO_DIR0 0x88 +#define MT6359_GPIO_DIR0_SET 0x8a +#define MT6359_GPIO_DIR0_CLR 0x8c +#define MT6359_GPIO_DIR1 0x8e +#define MT6359_GPIO_DIR1_SET 0x90 +#define MT6359_GPIO_DIR1_CLR 0x92 + +#define MT6359_DCXO_CW11 0x7a6 +#define MT6359_DCXO_CW12 0x7a8 +#define MT6359_LDO_VAUD18_CON0 0x1c98 + +#define MT6359_GPIO_MODE0 0xcc +#define MT6359_GPIO_MODE0_SET 0xce +#define MT6359_GPIO_MODE0_CLR 0xd0 +#define MT6359_GPIO_MODE1 0xd2 +#define MT6359_GPIO_MODE1_SET 0xd4 +#define MT6359_GPIO_MODE1_CLR 0xd6 +#define MT6359_GPIO_MODE2 0xd8 +#define MT6359_GPIO_MODE2_SET 0xda +#define MT6359_GPIO_MODE2_CLR 0xdc +#define MT6359_GPIO_MODE3 0xde +#define MT6359_GPIO_MODE3_SET 0xe0 +#define MT6359_GPIO_MODE3_CLR 0xe2 +#define MT6359_GPIO_MODE4 0xe4 +#define MT6359_GPIO_MODE4_SET 0xe6 +#define MT6359_GPIO_MODE4_CLR 0xe8 + +#define MT6359_AUD_TOP_ID 0x2300 +#define MT6359_AUD_TOP_REV0 0x2302 +#define MT6359_AUD_TOP_DBI 0x2304 +#define MT6359_AUD_TOP_DXI 0x2306 +#define MT6359_AUD_TOP_CKPDN_TPM0 0x2308 +#define MT6359_AUD_TOP_CKPDN_TPM1 0x230a +#define MT6359_AUD_TOP_CKPDN_CON0 0x230c +#define MT6359_AUD_TOP_CKPDN_CON0_SET 0x230e +#define MT6359_AUD_TOP_CKPDN_CON0_CLR 0x2310 +#define MT6359_AUD_TOP_CKSEL_CON0 0x2312 +#define MT6359_AUD_TOP_CKSEL_CON0_SET 0x2314 +#define MT6359_AUD_TOP_CKSEL_CON0_CLR 0x2316 +#define MT6359_AUD_TOP_CKTST_CON0 0x2318 +#define MT6359_AUD_TOP_CLK_HWEN_CON0 0x231a +#define MT6359_AUD_TOP_CLK_HWEN_CON0_SET 0x231c +#define MT6359_AUD_TOP_CLK_HWEN_CON0_CLR 0x231e +#define MT6359_AUD_TOP_RST_CON0 0x2320 +#define MT6359_AUD_TOP_RST_CON0_SET 0x2322 +#define MT6359_AUD_TOP_RST_CON0_CLR 0x2324 +#define MT6359_AUD_TOP_RST_BANK_CON0 0x2326 +#define MT6359_AUD_TOP_INT_CON0 0x2328 +#define MT6359_AUD_TOP_INT_CON0_SET 0x232a +#define MT6359_AUD_TOP_INT_CON0_CLR 0x232c +#define MT6359_AUD_TOP_INT_MASK_CON0 0x232e +#define MT6359_AUD_TOP_INT_MASK_CON0_SET 0x2330 +#define MT6359_AUD_TOP_INT_MASK_CON0_CLR 0x2332 +#define MT6359_AUD_TOP_INT_STATUS0 0x2334 +#define MT6359_AUD_TOP_INT_RAW_STATUS0 0x2336 +#define MT6359_AUD_TOP_INT_MISC_CON0 0x2338 +#define MT6359_AUD_TOP_MON_CON0 0x233a +#define MT6359_AUDIO_DIG_DSN_ID 0x2380 +#define MT6359_AUDIO_DIG_DSN_REV0 0x2382 +#define MT6359_AUDIO_DIG_DSN_DBI 0x2384 +#define MT6359_AUDIO_DIG_DSN_DXI 0x2386 +#define MT6359_AFE_UL_DL_CON0 0x2388 +#define MT6359_AFE_DL_SRC2_CON0_L 0x238a +#define MT6359_AFE_UL_SRC_CON0_H 0x238c +#define MT6359_AFE_UL_SRC_CON0_L 0x238e +#define MT6359_AFE_ADDA6_L_SRC_CON0_H 0x2390 +#define MT6359_AFE_ADDA6_UL_SRC_CON0_L 0x2392 +#define MT6359_AFE_TOP_CON0 0x2394 +#define MT6359_AUDIO_TOP_CON0 0x2396 +#define MT6359_AFE_MON_DEBUG0 0x2398 +#define MT6359_AFUNC_AUD_CON0 0x239a +#define MT6359_AFUNC_AUD_CON1 0x239c +#define MT6359_AFUNC_AUD_CON2 0x239e +#define MT6359_AFUNC_AUD_CON3 0x23a0 +#define MT6359_AFUNC_AUD_CON4 0x23a2 +#define MT6359_AFUNC_AUD_CON5 0x23a4 +#define MT6359_AFUNC_AUD_CON6 0x23a6 +#define MT6359_AFUNC_AUD_CON7 0x23a8 +#define MT6359_AFUNC_AUD_CON8 0x23aa +#define MT6359_AFUNC_AUD_CON9 0x23ac +#define MT6359_AFUNC_AUD_CON10 0x23ae +#define MT6359_AFUNC_AUD_CON11 0x23b0 +#define MT6359_AFUNC_AUD_CON12 0x23b2 +#define MT6359_AFUNC_AUD_MON0 0x23b4 +#define MT6359_AFUNC_AUD_MON1 0x23b6 +#define MT6359_AUDRC_TUNE_MON0 0x23b8 +#define MT6359_AFE_ADDA_MTKAIF_FIFO_CFG0 0x23ba +#define MT6359_AFE_ADDA_MTKAIF_FIFO_LOG_MON1 0x23bc +#define MT6359_AFE_ADDA_MTKAIF_MON0 0x23be +#define MT6359_AFE_ADDA_MTKAIF_MON1 0x23c0 +#define MT6359_AFE_ADDA_MTKAIF_MON2 0x23c2 +#define MT6359_AFE_ADDA6_MTKAIF_MON3 0x23c4 +#define MT6359_AFE_ADDA_MTKAIF_MON4 0x23c6 +#define MT6359_AFE_ADDA_MTKAIF_MON5 0x23c8 +#define MT6359_AFE_ADDA_MTKAIF_CFG0 0x23ca +#define MT6359_AFE_ADDA_MTKAIF_RX_CFG0 0x23cc +#define MT6359_AFE_ADDA_MTKAIF_RX_CFG1 0x23ce +#define MT6359_AFE_ADDA_MTKAIF_RX_CFG2 0x23d0 +#define MT6359_AFE_ADDA_MTKAIF_RX_CFG3 0x23d2 +#define MT6359_AFE_ADDA_MTKAIF_SYNCWORD_CFG0 0x23d4 +#define MT6359_AFE_ADDA_MTKAIF_SYNCWORD_CFG1 0x23d6 +#define MT6359_AFE_SGEN_CFG0 0x23d8 +#define MT6359_AFE_SGEN_CFG1 0x23da +#define MT6359_AFE_ADC_ASYNC_FIFO_CFG 0x23dc +#define MT6359_AFE_ADC_ASYNC_FIFO_CFG1 0x23de +#define MT6359_AFE_DCCLK_CFG0 0x23e0 +#define MT6359_AFE_DCCLK_CFG1 0x23e2 +#define MT6359_AUDIO_DIG_CFG 0x23e4 +#define MT6359_AUDIO_DIG_CFG1 0x23e6 +#define MT6359_AFE_AUD_PAD_TOP 0x23e8 +#define MT6359_AFE_AUD_PAD_TOP_MON 0x23ea +#define MT6359_AFE_AUD_PAD_TOP_MON1 0x23ec +#define MT6359_AFE_AUD_PAD_TOP_MON2 0x23ee +#define MT6359_AFE_DL_NLE_CFG 0x23f0 +#define MT6359_AFE_DL_NLE_MON 0x23f2 +#define MT6359_AFE_CG_EN_MON 0x23f4 +#define MT6359_AFE_MIC_ARRAY_CFG 0x23f6 +#define MT6359_AFE_CHOP_CFG0 0x23f8 +#define MT6359_AFE_MTKAIF_MUX_CFG 0x23fa +#define MT6359_AUDIO_DIG_2ND_DSN_ID 0x2400 +#define MT6359_AUDIO_DIG_2ND_DSN_REV0 0x2402 +#define MT6359_AUDIO_DIG_2ND_DSN_DBI 0x2404 +#define MT6359_AUDIO_DIG_2ND_DSN_DXI 0x2406 +#define MT6359_AFE_PMIC_NEWIF_CFG3 0x2408 +#define MT6359_AFE_VOW_TOP_CON0 0x240a +#define MT6359_AFE_VOW_TOP_CON1 0x240c +#define MT6359_AFE_VOW_TOP_CON2 0x240e +#define MT6359_AFE_VOW_TOP_CON3 0x2410 +#define MT6359_AFE_VOW_TOP_CON4 0x2412 +#define MT6359_AFE_VOW_TOP_MON0 0x2414 +#define MT6359_AFE_VOW_VAD_CFG0 0x2416 +#define MT6359_AFE_VOW_VAD_CFG1 0x2418 +#define MT6359_AFE_VOW_VAD_CFG2 0x241a +#define MT6359_AFE_VOW_VAD_CFG3 0x241c +#define MT6359_AFE_VOW_VAD_CFG4 0x241e +#define MT6359_AFE_VOW_VAD_CFG5 0x2420 +#define MT6359_AFE_VOW_VAD_CFG6 0x2422 +#define MT6359_AFE_VOW_VAD_CFG7 0x2424 +#define MT6359_AFE_VOW_VAD_CFG8 0x2426 +#define MT6359_AFE_VOW_VAD_CFG9 0x2428 +#define MT6359_AFE_VOW_VAD_CFG10 0x242a +#define MT6359_AFE_VOW_VAD_CFG11 0x242c +#define MT6359_AFE_VOW_VAD_CFG12 0x242e +#define MT6359_AFE_VOW_VAD_MON0 0x2430 +#define MT6359_AFE_VOW_VAD_MON1 0x2432 +#define MT6359_AFE_VOW_VAD_MON2 0x2434 +#define MT6359_AFE_VOW_VAD_MON3 0x2436 +#define MT6359_AFE_VOW_VAD_MON4 0x2438 +#define MT6359_AFE_VOW_VAD_MON5 0x243a +#define MT6359_AFE_VOW_VAD_MON6 0x243c +#define MT6359_AFE_VOW_VAD_MON7 0x243e +#define MT6359_AFE_VOW_VAD_MON8 0x2440 +#define MT6359_AFE_VOW_VAD_MON9 0x2442 +#define MT6359_AFE_VOW_VAD_MON10 0x2444 +#define MT6359_AFE_VOW_VAD_MON11 0x2446 +#define MT6359_AFE_VOW_TGEN_CFG0 0x2448 +#define MT6359_AFE_VOW_TGEN_CFG1 0x244a +#define MT6359_AFE_VOW_HPF_CFG0 0x244c +#define MT6359_AFE_VOW_HPF_CFG1 0x244e +#define MT6359_AUDIO_DIG_3RD_DSN_ID 0x2480 +#define MT6359_AUDIO_DIG_3RD_DSN_REV0 0x2482 +#define MT6359_AUDIO_DIG_3RD_DSN_DBI 0x2484 +#define MT6359_AUDIO_DIG_3RD_DSN_DXI 0x2486 +#define MT6359_AFE_VOW_PERIODIC_CFG0 0x2488 +#define MT6359_AFE_VOW_PERIODIC_CFG1 0x248a +#define MT6359_AFE_VOW_PERIODIC_CFG2 0x248c +#define MT6359_AFE_VOW_PERIODIC_CFG3 0x248e +#define MT6359_AFE_VOW_PERIODIC_CFG4 0x2490 +#define MT6359_AFE_VOW_PERIODIC_CFG5 0x2492 +#define MT6359_AFE_VOW_PERIODIC_CFG6 0x2494 +#define MT6359_AFE_VOW_PERIODIC_CFG7 0x2496 +#define MT6359_AFE_VOW_PERIODIC_CFG8 0x2498 +#define MT6359_AFE_VOW_PERIODIC_CFG9 0x249a +#define MT6359_AFE_VOW_PERIODIC_CFG10 0x249c +#define MT6359_AFE_VOW_PERIODIC_CFG11 0x249e +#define MT6359_AFE_VOW_PERIODIC_CFG12 0x24a0 +#define MT6359_AFE_VOW_PERIODIC_CFG13 0x24a2 +#define MT6359_AFE_VOW_PERIODIC_CFG14 0x24a4 +#define MT6359_AFE_VOW_PERIODIC_CFG15 0x24a6 +#define MT6359_AFE_VOW_PERIODIC_CFG16 0x24a8 +#define MT6359_AFE_VOW_PERIODIC_CFG17 0x24aa +#define MT6359_AFE_VOW_PERIODIC_CFG18 0x24ac +#define MT6359_AFE_VOW_PERIODIC_CFG19 0x24ae +#define MT6359_AFE_VOW_PERIODIC_CFG20 0x24b0 +#define MT6359_AFE_VOW_PERIODIC_CFG21 0x24b2 +#define MT6359_AFE_VOW_PERIODIC_CFG22 0x24b4 +#define MT6359_AFE_VOW_PERIODIC_CFG23 0x24b6 +#define MT6359_AFE_VOW_PERIODIC_CFG24 0x24b8 +#define MT6359_AFE_VOW_PERIODIC_CFG25 0x24ba +#define MT6359_AFE_VOW_PERIODIC_CFG26 0x24bc +#define MT6359_AFE_VOW_PERIODIC_CFG27 0x24be +#define MT6359_AFE_VOW_PERIODIC_CFG28 0x24c0 +#define MT6359_AFE_VOW_PERIODIC_CFG29 0x24c2 +#define MT6359_AFE_VOW_PERIODIC_CFG30 0x24c4 +#define MT6359_AFE_VOW_PERIODIC_CFG31 0x24c6 +#define MT6359_AFE_VOW_PERIODIC_CFG32 0x24c8 +#define MT6359_AFE_VOW_PERIODIC_CFG33 0x24ca +#define MT6359_AFE_VOW_PERIODIC_CFG34 0x24cc +#define MT6359_AFE_VOW_PERIODIC_CFG35 0x24ce +#define MT6359_AFE_VOW_PERIODIC_CFG36 0x24d0 +#define MT6359_AFE_VOW_PERIODIC_CFG37 0x24d2 +#define MT6359_AFE_VOW_PERIODIC_CFG38 0x24d4 +#define MT6359_AFE_VOW_PERIODIC_CFG39 0x24d6 +#define MT6359_AFE_VOW_PERIODIC_MON0 0x24d8 +#define MT6359_AFE_VOW_PERIODIC_MON1 0x24da +#define MT6359_AFE_VOW_PERIODIC_MON2 0x24dc +#define MT6359_AFE_NCP_CFG0 0x24de +#define MT6359_AFE_NCP_CFG1 0x24e0 +#define MT6359_AFE_NCP_CFG2 0x24e2 +#define MT6359_AUDENC_DSN_ID 0x2500 +#define MT6359_AUDENC_DSN_REV0 0x2502 +#define MT6359_AUDENC_DSN_DBI 0x2504 +#define MT6359_AUDENC_DSN_FPI 0x2506 +#define MT6359_AUDENC_ANA_CON0 0x2508 +#define MT6359_AUDENC_ANA_CON1 0x250a +#define MT6359_AUDENC_ANA_CON2 0x250c +#define MT6359_AUDENC_ANA_CON3 0x250e +#define MT6359_AUDENC_ANA_CON4 0x2510 +#define MT6359_AUDENC_ANA_CON5 0x2512 +#define MT6359_AUDENC_ANA_CON6 0x2514 +#define MT6359_AUDENC_ANA_CON7 0x2516 +#define MT6359_AUDENC_ANA_CON8 0x2518 +#define MT6359_AUDENC_ANA_CON9 0x251a +#define MT6359_AUDENC_ANA_CON10 0x251c +#define MT6359_AUDENC_ANA_CON11 0x251e +#define MT6359_AUDENC_ANA_CON12 0x2520 +#define MT6359_AUDENC_ANA_CON13 0x2522 +#define MT6359_AUDENC_ANA_CON14 0x2524 +#define MT6359_AUDENC_ANA_CON15 0x2526 +#define MT6359_AUDENC_ANA_CON16 0x2528 +#define MT6359_AUDENC_ANA_CON17 0x252a +#define MT6359_AUDENC_ANA_CON18 0x252c +#define MT6359_AUDENC_ANA_CON19 0x252e +#define MT6359_AUDENC_ANA_CON20 0x2530 +#define MT6359_AUDENC_ANA_CON21 0x2532 +#define MT6359_AUDENC_ANA_CON22 0x2534 +#define MT6359_AUDENC_ANA_CON23 0x2536 +#define MT6359_AUDDEC_DSN_ID 0x2580 +#define MT6359_AUDDEC_DSN_REV0 0x2582 +#define MT6359_AUDDEC_DSN_DBI 0x2584 +#define MT6359_AUDDEC_DSN_FPI 0x2586 +#define MT6359_AUDDEC_ANA_CON0 0x2588 +#define MT6359_AUDDEC_ANA_CON1 0x258a +#define MT6359_AUDDEC_ANA_CON2 0x258c +#define MT6359_AUDDEC_ANA_CON3 0x258e +#define MT6359_AUDDEC_ANA_CON4 0x2590 +#define MT6359_AUDDEC_ANA_CON5 0x2592 +#define MT6359_AUDDEC_ANA_CON6 0x2594 +#define MT6359_AUDDEC_ANA_CON7 0x2596 +#define MT6359_AUDDEC_ANA_CON8 0x2598 +#define MT6359_AUDDEC_ANA_CON9 0x259a +#define MT6359_AUDDEC_ANA_CON10 0x259c +#define MT6359_AUDDEC_ANA_CON11 0x259e +#define MT6359_AUDDEC_ANA_CON12 0x25a0 +#define MT6359_AUDDEC_ANA_CON13 0x25a2 +#define MT6359_AUDDEC_ANA_CON14 0x25a4 +#define MT6359_AUDZCD_DSN_ID 0x2600 +#define MT6359_AUDZCD_DSN_REV0 0x2602 +#define MT6359_AUDZCD_DSN_DBI 0x2604 +#define MT6359_AUDZCD_DSN_FPI 0x2606 +#define MT6359_ZCD_CON0 0x2608 +#define MT6359_ZCD_CON1 0x260a +#define MT6359_ZCD_CON2 0x260c +#define MT6359_ZCD_CON3 0x260e +#define MT6359_ZCD_CON4 0x2610 +#define MT6359_ZCD_CON5 0x2612 +#define MT6359_ACCDET_DSN_DIG_ID 0x2680 +#define MT6359_ACCDET_DSN_DIG_REV0 0x2682 +#define MT6359_ACCDET_DSN_DBI 0x2684 +#define MT6359_ACCDET_DSN_FPI 0x2686 +#define MT6359_ACCDET_CON0 0x2688 +#define MT6359_ACCDET_CON1 0x268a +#define MT6359_ACCDET_CON2 0x268c +#define MT6359_ACCDET_CON3 0x268e +#define MT6359_ACCDET_CON4 0x2690 +#define MT6359_ACCDET_CON5 0x2692 +#define MT6359_ACCDET_CON6 0x2694 +#define MT6359_ACCDET_CON7 0x2696 +#define MT6359_ACCDET_CON8 0x2698 +#define MT6359_ACCDET_CON9 0x269a +#define MT6359_ACCDET_CON10 0x269c +#define MT6359_ACCDET_CON11 0x269e +#define MT6359_ACCDET_CON12 0x26a0 +#define MT6359_ACCDET_CON13 0x26a2 +#define MT6359_ACCDET_CON14 0x26a4 +#define MT6359_ACCDET_CON15 0x26a6 +#define MT6359_ACCDET_CON16 0x26a8 +#define MT6359_ACCDET_CON17 0x26aa +#define MT6359_ACCDET_CON18 0x26ac +#define MT6359_ACCDET_CON19 0x26ae +#define MT6359_ACCDET_CON20 0x26b0 +#define MT6359_ACCDET_CON21 0x26b2 +#define MT6359_ACCDET_CON22 0x26b4 +#define MT6359_ACCDET_CON23 0x26b6 +#define MT6359_ACCDET_CON24 0x26b8 +#define MT6359_ACCDET_CON25 0x26ba +#define MT6359_ACCDET_CON26 0x26bc +#define MT6359_ACCDET_CON27 0x26be +#define MT6359_ACCDET_CON28 0x26c0 +#define MT6359_ACCDET_CON29 0x26c2 +#define MT6359_ACCDET_CON30 0x26c4 +#define MT6359_ACCDET_CON31 0x26c6 +#define MT6359_ACCDET_CON32 0x26c8 +#define MT6359_ACCDET_CON33 0x26ca +#define MT6359_ACCDET_CON34 0x26cc +#define MT6359_ACCDET_CON35 0x26ce +#define MT6359_ACCDET_CON36 0x26d0 +#define MT6359_ACCDET_CON37 0x26d2 +#define MT6359_ACCDET_CON38 0x26d4 +#define MT6359_ACCDET_CON39 0x26d6 +#define MT6359_ACCDET_CON40 0x26d8 +#define MT6359_MAX_REGISTER MT6359_ZCD_CON5 + +enum { + MT6359_MTKAIF_PROTOCOL_1 = 0, + MT6359_MTKAIF_PROTOCOL_2, + MT6359_MTKAIF_PROTOCOL_2_CLK_P2, +}; + +#define CODEC_MT6359_NAME "mtk-codec-mt6359" + +int mt6359_set_mtkaif_protocol(struct snd_soc_component *cmpnt, + int mtkaif_protocol); + +int mt6359_mtkaif_calibration_enable(struct snd_soc_component *cmpnt); +int mt6359_mtkaif_calibration_disable(struct snd_soc_component *cmpnt); +int mt6359_set_mtkaif_calibration_phase(struct snd_soc_component *cmpnt, + int phase_1, int phase_2, int phase_3); + +#endif/* end _MT6359_H_ */ -- 1.9.1 _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek 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=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, UPPERCASE_50_75,USER_AGENT_GIT 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 6F9F4C3F2C6 for ; Fri, 6 Mar 2020 03:35:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 870452070A for ; Fri, 6 Mar 2020 03:35:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Apu6Zm91" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726358AbgCFDfK (ORCPT ); Thu, 5 Mar 2020 22:35:10 -0500 Received: from mailgw01.mediatek.com ([210.61.82.183]:34883 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726243AbgCFDfK (ORCPT ); Thu, 5 Mar 2020 22:35:10 -0500 X-UUID: 0ffde4a4c4e04184897d0b5da75ed41c-20200306 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=hLc2+xjINbO8wojgBZ2ySqlH9CLWkV4QmBkz3m9O/tY=; b=Apu6Zm91xe+N4kqZtLtsZTWW2s3/dyylk9lOTf0ehgYlGz7rMFrMtRvpNbnAG9IVb7klAYIzKo0cUXVnSrcb1+xZNsKhTl0c8sLaaypNW437VXD+di7Vpv2pNfba4Duf+viq0d2RIazRXKz57gJjlx4wlS7459zqOcIv4gdhNbE=; X-UUID: 0ffde4a4c4e04184897d0b5da75ed41c-20200306 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1189746104; Fri, 06 Mar 2020 11:33:57 +0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 6 Mar 2020 11:31:12 +0800 Received: from mtksdaap41.mediatek.inc (172.21.77.4) by mtkcas09.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Fri, 6 Mar 2020 11:33:55 +0800 From: Eason Yen To: Matthias Brugger , Mark Brown CC: , , , , , Subject: [PATCH 2/2] ASoC: codec: mediatek: add mt6359 codec driver Date: Fri, 6 Mar 2020 11:33:42 +0800 Message-ID: <1583465622-16628-3-git-send-email-eason.yen@mediatek.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1583465622-16628-1-git-send-email-eason.yen@mediatek.com> References: <1583465622-16628-1-git-send-email-eason.yen@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: 29BC24707111F40CD0C70860686FB26D24EEDB8961775097A156B4DCEF7C36E62000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org QWRkIG10NjM1OSBjb2RlYyBkcml2ZXINCg0KU2lnbmVkLW9mZi1ieTogRWFzb24gWWVuIDxlYXNv bi55ZW5AbWVkaWF0ZWsuY29tPg0KLS0tDQogc291bmQvc29jL2NvZGVjcy9LY29uZmlnICB8ICAg IDkgKw0KIHNvdW5kL3NvYy9jb2RlY3MvTWFrZWZpbGUgfCAgICAyICsNCiBzb3VuZC9zb2MvY29k ZWNzL210NjM1OS5jIHwgNDIxNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysNCiBzb3VuZC9zb2MvY29kZWNzL210NjM1OS5oIHwgMzIxMiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQogNCBmaWxlcyBjaGFuZ2VkLCA3NDQwIGluc2VydGlvbnMo KykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQvc29jL2NvZGVjcy9tdDYzNTkuYw0KIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzb3VuZC9zb2MvY29kZWNzL210NjM1OS5oDQoNCmRpZmYgLS1naXQgYS9z b3VuZC9zb2MvY29kZWNzL0tjb25maWcgYi9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcNCmluZGV4 IDZhZWU3MGUuLjZkNzEyNjcgMTAwNjQ0DQotLS0gYS9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcN CisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZw0KQEAgLTEyNSw2ICsxMjUsNyBAQCBjb25m aWcgU05EX1NPQ19BTExfQ09ERUNTDQogCWltcGx5IFNORF9TT0NfTUwyNjEyNA0KIAlpbXBseSBT TkRfU09DX01UNjM1MQ0KIAlpbXBseSBTTkRfU09DX01UNjM1OA0KKwlpbXBseSBTTkRfU09DX01U NjM1OQ0KIAlpbXBseSBTTkRfU09DX01UNjY2MA0KIAlpbXBseSBTTkRfU09DX05BVTg1NDANCiAJ aW1wbHkgU05EX1NPQ19OQVU4ODEwDQpAQCAtMTY4MSw2ICsxNjgyLDE0IEBAIGNvbmZpZyBTTkRf U09DX01UNjM1OA0KIAkgIEVuYWJsZSBzdXBwb3J0IGZvciB0aGUgcGxhdGZvcm0gd2hpY2ggdXNl cyBNVDYzNTggYXMNCiAJICBleHRlcm5hbCBjb2RlYyBkZXZpY2UuDQogDQorY29uZmlnIFNORF9T T0NfTVQ2MzU5DQorICAgICAgICB0cmlzdGF0ZSAiTWVkaWFUZWsgTVQ2MzU5IENvZGVjIGRyaXZl ciINCisgICAgICAgIGhlbHANCisgICAgICAgICAgTWVkaWFUZWsgTVQ2MzU5IGlzIGEgY29kZWMg d2hpY2ggY29udGFpbg0KKyAgICAgICAgICB0aHJlZSBBREMgZm9yIHVwbGluayBwYXRoKE1JQ3Mp LCBhbmQNCisgICAgICAgICAgdGhyZWUgREFDIGZvciBkb3dubGluayBwYXRoKGhhbmRzZXQsDQor ICAgICAgICAgIGhlYWRzZXQsIGxpbmVvdXQpLg0KKw0KIGNvbmZpZyBTTkRfU09DX01UNjY2MA0K IAl0cmlzdGF0ZSAiTWVkaWF0ZWsgTVQ2NjYwIFNwZWFrZXIgQW1wbGlmaWVyIg0KIAlkZXBlbmRz IG9uIEkyQw0KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvTWFrZWZpbGUgYi9zb3VuZC9z b2MvY29kZWNzL01ha2VmaWxlDQppbmRleCAwMzUzMzE1Ny4uMGM3Zjg0ZSAxMDA2NDQNCi0tLSBh L3NvdW5kL3NvYy9jb2RlY3MvTWFrZWZpbGUNCisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvTWFrZWZp bGUNCkBAIC0xMjMsNiArMTIzLDcgQEAgc25kLXNvYy1tc204OTE2LWFuYWxvZy1vYmpzIDo9IG1z bTg5MTYtd2NkLWFuYWxvZy5vDQogc25kLXNvYy1tc204OTE2LWRpZ2l0YWwtb2JqcyA6PSBtc204 OTE2LXdjZC1kaWdpdGFsLm8NCiBzbmQtc29jLW10NjM1MS1vYmpzIDo9IG10NjM1MS5vDQogc25k LXNvYy1tdDYzNTgtb2JqcyA6PSBtdDYzNTgubw0KK3NuZC1zb2MtbXQ2MzU5LW9ianMgOj0gbXQ2 MzU5Lm8NCiBzbmQtc29jLW10NjY2MC1vYmpzIDo9IG10NjY2MC5vDQogc25kLXNvYy1uYXU4NTQw LW9ianMgOj0gbmF1ODU0MC5vDQogc25kLXNvYy1uYXU4ODEwLW9ianMgOj0gbmF1ODgxMC5vDQpA QCAtNDIzLDYgKzQyNCw3IEBAIG9iai0kKENPTkZJR19TTkRfU09DX01TTTg5MTZfV0NEX0FOQUxP RykgKz1zbmQtc29jLW1zbTg5MTYtYW5hbG9nLm8NCiBvYmotJChDT05GSUdfU05EX1NPQ19NU004 OTE2X1dDRF9ESUdJVEFMKSArPXNuZC1zb2MtbXNtODkxNi1kaWdpdGFsLm8NCiBvYmotJChDT05G SUdfU05EX1NPQ19NVDYzNTEpCSs9IHNuZC1zb2MtbXQ2MzUxLm8NCiBvYmotJChDT05GSUdfU05E X1NPQ19NVDYzNTgpCSs9IHNuZC1zb2MtbXQ2MzU4Lm8NCitvYmotJChDT05GSUdfU05EX1NPQ19N VDYzNTkpCSs9IHNuZC1zb2MtbXQ2MzU5Lm8NCiBvYmotJChDT05GSUdfU05EX1NPQ19NVDY2NjAp CSs9IHNuZC1zb2MtbXQ2NjYwLm8NCiBvYmotJChDT05GSUdfU05EX1NPQ19OQVU4NTQwKSAgICs9 IHNuZC1zb2MtbmF1ODU0MC5vDQogb2JqLSQoQ09ORklHX1NORF9TT0NfTkFVODgxMCkgICArPSBz bmQtc29jLW5hdTg4MTAubw0KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvbXQ2MzU5LmMg Yi9zb3VuZC9zb2MvY29kZWNzL210NjM1OS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMC4uMzgzZWZiZg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvc291bmQvc29jL2NvZGVjcy9t dDYzNTkuYw0KQEAgLTAsMCArMSw0MjE3IEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjANCisvLw0KKy8vIG10NjM1OS5jICAtLSAgbXQ2MzU5IEFMU0EgU29DIGF1ZGlvIGNv ZGVjIGRyaXZlcg0KKy8vDQorLy8gQ29weXJpZ2h0IChjKSAyMDE4IE1lZGlhVGVrIEluYy4NCisv LyBBdXRob3I6IEthaUNoaWVoIENodWFuZyA8a2FpY2hpZWguY2h1YW5nQG1lZGlhdGVrLmNvbT4N CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQorI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgv ZGVsYXkuaD4NCisjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPg0KKyNpbmNsdWRlIDxsaW51eC9z Y2hlZC5oPg0KKyNpbmNsdWRlIDxsaW51eC9tZmQvbXQ2Mzk3L2NvcmUuaD4NCisjaW5jbHVkZSA8 bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+DQorI2luY2x1ZGUgPHNvdW5kL3Rsdi5oPg0KKyNp bmNsdWRlIDxzb3VuZC9zb2MuaD4NCisjaW5jbHVkZSAibXQ2MzU5LmgiDQorDQorZW51bSB7DQor CU1UNjM1OV9BSUZfMSA9IDAsCS8qIGRsOiBocCwgcmN2LCBocCtsbyAqLw0KKwlNVDYzNTlfQUlG XzIsCQkvKiBkbDogbG8gb25seSAqLw0KKwlNVDYzNTlfQUlGX1ZPVywNCisJTVQ2MzU5X0FJRl9O VU0sDQorfTsNCisNCitlbnVtIHsNCisJQVVESU9fQU5BTE9HX1ZPTFVNRV9IU09VVEwsDQorCUFV RElPX0FOQUxPR19WT0xVTUVfSFNPVVRSLA0KKwlBVURJT19BTkFMT0dfVk9MVU1FX0hQT1VUTCwN CisJQVVESU9fQU5BTE9HX1ZPTFVNRV9IUE9VVFIsDQorCUFVRElPX0FOQUxPR19WT0xVTUVfTElO RU9VVEwsDQorCUFVRElPX0FOQUxPR19WT0xVTUVfTElORU9VVFIsDQorCUFVRElPX0FOQUxPR19W T0xVTUVfTUlDQU1QMSwNCisJQVVESU9fQU5BTE9HX1ZPTFVNRV9NSUNBTVAyLA0KKwlBVURJT19B TkFMT0dfVk9MVU1FX01JQ0FNUDMsDQorCUFVRElPX0FOQUxPR19WT0xVTUVfVFlQRV9NQVgNCit9 Ow0KKw0KK2VudW0gew0KKwlNVVhfTUlDX1RZUEVfMCwJLyogYWluMCwgbWljYmlhcyAwICovDQor CU1VWF9NSUNfVFlQRV8xLAkvKiBhaW4xLCBtaWNiaWFzIDEgKi8NCisJTVVYX01JQ19UWVBFXzIs CS8qIGFpbjIvMywgbWljYmlhcyAyICovDQorCU1VWF9QR0FfTCwNCisJTVVYX1BHQV9SLA0KKwlN VVhfUEdBXzMsDQorCU1VWF9IUF9MLA0KKwlNVVhfSFBfUiwNCisJTVVYX05VTSwNCit9Ow0KKw0K K2VudW0gew0KKwlERVZJQ0VfSFAsDQorCURFVklDRV9MTywNCisJREVWSUNFX1JDViwNCisJREVW SUNFX01JQzEsDQorCURFVklDRV9NSUMyLA0KKwlERVZJQ0VfTlVNDQorfTsNCisNCitlbnVtIHsN CisJSFBfR0FJTl9DVExfWkNEID0gMCwNCisJSFBfR0FJTl9DVExfTkxFLA0KKwlIUF9HQUlOX0NU TF9OVU0sDQorfTsNCisNCisvKiBTdXBwbHkgd2lkZ2V0IHN1YnNlcSAqLw0KK2VudW0gew0KKwkv KiBjb21tb24gKi8NCisJU1VQUExZX1NFUV9DTEtfQlVGLA0KKwlTVVBQTFlfU0VRX0xET19WQVVE MTgsDQorCVNVUFBMWV9TRVFfQVVEX0dMQiwNCisJU1VQUExZX1NFUV9BVURfR0xCX1ZPVywNCisJ U1VQUExZX1NFUV9ETF9HUElPLA0KKwlTVVBQTFlfU0VRX1VMX0dQSU8sDQorCVNVUFBMWV9TRVFf SFBfUFVMTF9ET1dOLA0KKwlTVVBQTFlfU0VRX0NMS1NRLA0KKwlTVVBQTFlfU0VRX0FEQ19DTEtH RU4sDQorCVNVUFBMWV9TRVFfVk9XX0FVRF9MUFcsDQorCVNVUFBMWV9TRVFfQVVEX1ZPVywNCisJ U1VQUExZX1NFUV9WT1dfQ0xLLA0KKwlTVVBQTFlfU0VRX1ZPV19MRE8sDQorCVNVUFBMWV9TRVFf VE9QX0NLLA0KKwlTVVBQTFlfU0VRX1RPUF9DS19MQVNULA0KKwlTVVBQTFlfU0VRX0RDQ19DTEss DQorCVNVUFBMWV9TRVFfTUlDX0JJQVMsDQorCVNVUFBMWV9TRVFfRE1JQywNCisJU1VQUExZX1NF UV9WT1dfRElHX0NGRywNCisJU1VQUExZX1NFUV9WT1dfUEVSSU9ESUNfQ0ZHLA0KKwlTVVBQTFlf U0VRX0FVRF9UT1AsDQorCVNVUFBMWV9TRVFfQVVEX1RPUF9MQVNULA0KKwlTVVBQTFlfU0VRX0RM X1NETV9GSUZPX0NMSywNCisJU1VQUExZX1NFUV9ETF9TRE0sDQorCVNVUFBMWV9TRVFfRExfTkNQ LA0KKwlTVVBQTFlfU0VRX0FGRSwNCisJLyogcGxheWJhY2sgKi8NCisJU1VQUExZX1NFUV9ETF9T UkMsDQorCVNVUFBMWV9TRVFfRExfRVNEX1JFU0lTVCwNCisJU1VQUExZX1NFUV9IUF9EQU1QSU5H X09GRl9SRVNFVF9DTUZCLA0KKwlTVVBQTFlfU0VRX0hQX01VVEUsDQorCVNVUFBMWV9TRVFfRExf TERPX1JFTU9URV9TRU5TRSwNCisJU1VQUExZX1NFUV9ETF9MRE8sDQorCVNVUFBMWV9TRVFfRExf TlYsDQorCVNVUFBMWV9TRVFfSFBfQU5BX1RSSU0sDQorCVNVUFBMWV9TRVFfRExfSUJJU1QsDQor CS8qIGNhcHR1cmUgKi8NCisJU1VQUExZX1NFUV9VTF9QR0EsDQorCVNVUFBMWV9TRVFfVUxfQURD LA0KKwlTVVBQTFlfU0VRX1VMX01US0FJRiwNCisJU1VQUExZX1NFUV9VTF9TUkNfRE1JQywNCisJ U1VQUExZX1NFUV9VTF9TUkMsDQorfTsNCisNCitlbnVtIHsNCisJQ0hfTCA9IDAsDQorCUNIX1Is DQorCU5VTV9DSCwNCit9Ow0KKw0KKy8qIGRsIGJpYXMgKi8NCisjZGVmaW5lIERSQklBU19NQVNL IDB4Nw0KKyNkZWZpbmUgRFJCSUFTX0hQX1NGVCAoUkdfQVVEQklBU0FESl8wX1ZBVURQMzJfU0ZU ICsgMCkNCisjZGVmaW5lIERSQklBU19IUF9NQVNLX1NGVCAoRFJCSUFTX01BU0sgPDwgRFJCSUFT X0hQX1NGVCkNCisjZGVmaW5lIERSQklBU19IU19TRlQgKFJHX0FVREJJQVNBREpfMF9WQVVEUDMy X1NGVCArIDMpDQorI2RlZmluZSBEUkJJQVNfSFNfTUFTS19TRlQgKERSQklBU19NQVNLIDw8IERS QklBU19IU19TRlQpDQorI2RlZmluZSBEUkJJQVNfTE9fU0ZUIChSR19BVURCSUFTQURKXzBfVkFV RFAzMl9TRlQgKyA2KQ0KKyNkZWZpbmUgRFJCSUFTX0xPX01BU0tfU0ZUIChEUkJJQVNfTUFTSyA8 PCBEUkJJQVNfTE9fU0ZUKQ0KKw0KK2VudW0gew0KKwlEUkJJQVNfNFVBID0gMCwNCisJRFJCSUFT XzVVQSwNCisJRFJCSUFTXzZVQSwNCisJRFJCSUFTXzdVQSwNCisJRFJCSUFTXzhVQSwNCisJRFJC SUFTXzlVQSwNCisJRFJCSUFTXzEwVUEsDQorCURSQklBU18xMVVBLA0KK307DQorDQorI2RlZmlu ZSBJQklBU19NQVNLIDB4Mw0KKyNkZWZpbmUgSUJJQVNfSFBfU0ZUIChSR19BVURCSUFTQURKXzFf VkFVRFAzMl9TRlQgKyAwKQ0KKyNkZWZpbmUgSUJJQVNfSFBfTUFTS19TRlQgKElCSUFTX01BU0sg PDwgSUJJQVNfSFBfU0ZUKQ0KKyNkZWZpbmUgSUJJQVNfSFNfU0ZUIChSR19BVURCSUFTQURKXzFf VkFVRFAzMl9TRlQgKyAyKQ0KKyNkZWZpbmUgSUJJQVNfSFNfTUFTS19TRlQgKElCSUFTX01BU0sg PDwgSUJJQVNfSFNfU0ZUKQ0KKyNkZWZpbmUgSUJJQVNfTE9fU0ZUIChSR19BVURCSUFTQURKXzFf VkFVRFAzMl9TRlQgKyA0KQ0KKyNkZWZpbmUgSUJJQVNfTE9fTUFTS19TRlQgKElCSUFTX01BU0sg PDwgSUJJQVNfTE9fU0ZUKQ0KKyNkZWZpbmUgSUJJQVNfWkNEX1NGVCAoUkdfQVVEQklBU0FESl8x X1ZBVURQMzJfU0ZUICsgNikNCisjZGVmaW5lIElCSUFTX1pDRF9NQVNLX1NGVCAoSUJJQVNfTUFT SyA8PCBJQklBU19aQ0RfU0ZUKQ0KKw0KK2VudW0gew0KKwlJQklBU180VUEgPSAwLA0KKwlJQklB U181VUEsDQorCUlCSUFTXzZVQSwNCisJSUJJQVNfN1VBLA0KK307DQorDQorZW51bSB7DQorCUlC SUFTX1pDRF8zVUEgPSAwLA0KKwlJQklBU19aQ0RfNFVBLA0KKwlJQklBU19aQ0RfNVVBLA0KKwlJ QklBU19aQ0RfNlVBLA0KK307DQorDQorZW51bSB7DQorCU1JQ19CSUFTXzFQNyA9IDAsDQorCU1J Q19CSUFTXzFQOCwNCisJTUlDX0JJQVNfMVA5LA0KKwlNSUNfQklBU18yUDAsDQorCU1JQ19CSUFT XzJQMSwNCisJTUlDX0JJQVNfMlA1LA0KKwlNSUNfQklBU18yUDYsDQorCU1JQ19CSUFTXzJQNywN Cit9Ow0KKw0KK3N0cnVjdCBtdDYzNTlfdm93X3BlcmlvZGljX29uX29mZl9kYXRhIHsNCisJdW5z aWduZWQgbG9uZyBsb25nIHBnYV9vbjsNCisJdW5zaWduZWQgbG9uZyBsb25nIHByZWNnX29uOw0K Kwl1bnNpZ25lZCBsb25nIGxvbmcgYWRjX29uOw0KKwl1bnNpZ25lZCBsb25nIGxvbmcgbWljYmlh czBfb247DQorCXVuc2lnbmVkIGxvbmcgbG9uZyBtaWNiaWFzMV9vbjsNCisJdW5zaWduZWQgbG9u ZyBsb25nIGRjeG9fb247DQorCXVuc2lnbmVkIGxvbmcgbG9uZyBhdWRnbGJfb247DQorCXVuc2ln bmVkIGxvbmcgbG9uZyB2b3dfb247DQorCXVuc2lnbmVkIGxvbmcgbG9uZyBwZ2Ffb2ZmOw0KKwl1 bnNpZ25lZCBsb25nIGxvbmcgcHJlY2dfb2ZmOw0KKwl1bnNpZ25lZCBsb25nIGxvbmcgYWRjX29m ZjsNCisJdW5zaWduZWQgbG9uZyBsb25nIG1pY2JpYXMwX29mZjsNCisJdW5zaWduZWQgbG9uZyBs b25nIG1pY2JpYXMxX29mZjsNCisJdW5zaWduZWQgbG9uZyBsb25nIGRjeG9fb2ZmOw0KKwl1bnNp Z25lZCBsb25nIGxvbmcgYXVkZ2xiX29mZjsNCisJdW5zaWduZWQgbG9uZyBsb25nIHZvd19vZmY7 DQorfTsNCisNCitzdHJ1Y3QgbXQ2MzU5X3ByaXYgew0KKwlzdHJ1Y3QgZGV2aWNlICpkZXY7DQor CXN0cnVjdCByZWdtYXAgKnJlZ21hcDsNCisJdW5zaWduZWQgaW50IGRsX3JhdGVbTVQ2MzU5X0FJ Rl9OVU1dOw0KKwl1bnNpZ25lZCBpbnQgdWxfcmF0ZVtNVDYzNTlfQUlGX05VTV07DQorCWludCBh bmFfZ2FpbltBVURJT19BTkFMT0dfVk9MVU1FX1RZUEVfTUFYXTsNCisJdW5zaWduZWQgaW50IG11 eF9zZWxlY3RbTVVYX05VTV07DQorCWludCBkZXZfY291bnRlcltERVZJQ0VfTlVNXTsNCisJaW50 IGhwX2dhaW5fY3RsOw0KKwlpbnQgaHBfaGlmaV9tb2RlOw0KKwlpbnQgbXRrYWlmX3Byb3RvY29s Ow0KKwlzdHJ1Y3QgcmVndWxhdG9yICphdmRkX3JlZzsNCisNCisJLyogdm93IGNvbnRyb2wgKi8N CisJaW50IHZvd19lbmFibGU7DQorCWludCByZWdfYWZlX3Zvd192YWRfY2ZnMDsNCisJaW50IHJl Z19hZmVfdm93X3ZhZF9jZmcxOw0KKwlpbnQgcmVnX2FmZV92b3dfdmFkX2NmZzI7DQorCWludCBy ZWdfYWZlX3Zvd192YWRfY2ZnMzsNCisJaW50IHJlZ19hZmVfdm93X3ZhZF9jZmc0Ow0KKwlpbnQg cmVnX2FmZV92b3dfdmFkX2NmZzU7DQorCWludCByZWdfYWZlX3Zvd19wZXJpb2RpYzsNCisJdW5z aWduZWQgaW50IHZvd19jaGFubmVsOw0KKwlzdHJ1Y3QgbXQ2MzU5X3Zvd19wZXJpb2RpY19vbl9v ZmZfZGF0YSB2b3dfcGVyaW9kaWNfcGFyYW07DQorfTsNCisNCisvKiBzdGF0aWMgZnVuY3Rpb24g ZGVjbGFyYXRpb24gKi8NCitpbnQgbXQ2MzU5X3NldF9tdGthaWZfcHJvdG9jb2woc3RydWN0IHNu ZF9zb2NfY29tcG9uZW50ICpjbXBudCwNCisJCQkgICAgICAgaW50IG10a2FpZl9wcm90b2NvbCkN Cit7DQorCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9k cnZkYXRhKGNtcG50KTsNCisNCisJcHJpdi0+bXRrYWlmX3Byb3RvY29sID0gbXRrYWlmX3Byb3Rv Y29sOw0KKwlyZXR1cm4gMDsNCit9DQorRVhQT1JUX1NZTUJPTF9HUEwobXQ2MzU5X3NldF9tdGth aWZfcHJvdG9jb2wpOw0KKw0KK3N0YXRpYyB2b2lkIHBsYXliYWNrX2dwaW9fc2V0KHN0cnVjdCBt dDYzNTlfcHJpdiAqcHJpdikNCit7DQorCS8qIHNldCBncGlvIG1vc2kgbW9kZSwgY2xrIC8gZGF0 YSBtb3NpICovDQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9HUElPX01PREUy X0NMUiwgMHgwZmZlKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0dQSU9f TU9ERTJfU0VULCAweDAyNDkpOw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlf R1BJT19NT0RFMiwgMHgwMjQ5KTsNCisNCisJLyogc3luYyBtb3NpICovDQorCXJlZ21hcF93cml0 ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9HUElPX01PREUzX0NMUiwgMHg2KTsNCisJcmVnbWFwX3dy aXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0dQSU9fTU9ERTNfU0VULCAweDEpOw0KKwlyZWdtYXBf dXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfR1BJT19NT0RFMywNCisJCQkgICAweDcs IDB4MSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHBsYXliYWNrX2dwaW9fcmVzZXQoc3RydWN0IG10 NjM1OV9wcml2ICpwcml2KQ0KK3sNCisJLyogc2V0IHBhZF9hdWRfKl9tb3NpIHRvIEdQSU8gbW9k ZSBhbmQgZGlyIGlucHV0DQorCSAqIHJlYXNvbjoNCisJICogcGFkX2F1ZF9kYXRfbW9zaSosIGJl Y2F1c2UgdGhlIHBpbiBpcyB1c2VkIGFzIGJvb3Qgc3RyYXANCisJICogZG9uJ3QgY2xlYW4gY2xr L3N5bmMsIGZvciBtdGthaWYgcHJvdG9jb2wgMg0KKwkgKi8NCisJcmVnbWFwX3dyaXRlKHByaXYt PnJlZ21hcCwgTVQ2MzU5X0dQSU9fTU9ERTJfQ0xSLCAweDBmZjgpOw0KKwlyZWdtYXBfdXBkYXRl X2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfR1BJT19NT0RFMiwNCisJCQkgICAweDBmZjgsIDB4 MDAwMCk7DQorCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9HUElPX0RJ UjAsDQorCQkJICAgMHg3IDw8IDksIDB4MCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGNhcHR1cmVf Z3Bpb19zZXQoc3RydWN0IG10NjM1OV9wcml2ICpwcml2KQ0KK3sNCisJLyogc2V0IGdwaW8gbWlz byBtb2RlICovDQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9HUElPX01PREUz X0NMUiwgMHgwZTAwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0dQSU9f TU9ERTNfU0VULCAweDAyMDApOw0KKwlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBN VDYzNTlfR1BJT19NT0RFMywNCisJCQkgICAweDBlMDAsIDB4MDIwMCk7DQorDQorCXJlZ21hcF93 cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9HUElPX01PREU0X0NMUiwgMHgwMDNmKTsNCisJcmVn bWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0dQSU9fTU9ERTRfU0VULCAweDAwMDkpOw0K KwlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfR1BJT19NT0RFNCwNCisJ CQkgICAweDAzZiwgMHgwMDA5KTsNCit9DQorDQorc3RhdGljIHZvaWQgY2FwdHVyZV9ncGlvX3Jl c2V0KHN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdikNCit7DQorCS8qIHNldCBwYWRfYXVkXypfbWlz byB0byBHUElPIG1vZGUgYW5kIGRpciBpbnB1dA0KKwkgKiByZWFzb246DQorCSAqIHBhZF9hdWRf Y2xrX21pc28sIGJlY2F1c2Ugd2hlbiBwbGF5YmFjayBvbmx5IHRoZSBtaXNvX2Nsaw0KKwkgKiB3 aWxsIGFsc28gaGF2ZSAyNm0sIHNvIHdpbGwgaGF2ZSBwb3dlciBsZWFrDQorCSAqIHBhZF9hdWRf ZGF0X21pc28qLCBiZWNhdXNlIHRoZSBwaW4gaXMgdXNlZCBhcyBib290IHN0cmFwDQorCSAqLw0K KwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfR1BJT19NT0RFM19DTFIsIDB4MGUw MCk7DQorCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9HUElPX01PREUz LA0KKwkJCSAgIDB4MGUwMCwgMHgwMDAwKTsNCisNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21h cCwgTVQ2MzU5X0dQSU9fTU9ERTRfQ0xSLCAweDAwM2YpOw0KKwlyZWdtYXBfdXBkYXRlX2JpdHMo cHJpdi0+cmVnbWFwLCBNVDYzNTlfR1BJT19NT0RFNCwNCisJCQkgICAweDAwM2YsIDB4MDAwMCk7 DQorDQorCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9HUElPX0RJUjAs DQorCQkJICAgMHg3IDw8IDEzLCAweDApOw0KKwlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVn bWFwLCBNVDYzNTlfR1BJT19ESVIxLA0KKwkJCSAgIDB4MyA8PCAwLCAweDApOw0KK30NCisNCitz dGF0aWMgdm9pZCB2b3dfZ3Bpb19zZXQoc3RydWN0IG10NjM1OV9wcml2ICpwcml2KQ0KK3sNCisJ Lyogdm93IGdwaW8gc2V0IChkYXRhKSAqLw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBN VDYzNTlfR1BJT19NT0RFM19DTFIsIDB4MGUwMCk7DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdt YXAsIE1UNjM1OV9HUElPX01PREUzX1NFVCwgMHgwODAwKTsNCisJcmVnbWFwX3VwZGF0ZV9iaXRz KHByaXYtPnJlZ21hcCwgTVQ2MzU5X0dQSU9fTU9ERTMsDQorCQkJICAgMHgwZTAwLCAweDA4MDAp Ow0KKwkvKiB2b3cgZ3BpbyBzZXQgKGNsb2NrKSAqLw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVn bWFwLCBNVDYzNTlfR1BJT19NT0RFNF9DTFIsIDB4MDAwNyk7DQorCXJlZ21hcF93cml0ZShwcml2 LT5yZWdtYXAsIE1UNjM1OV9HUElPX01PREU0X1NFVCwgMHgwMDA0KTsNCisJcmVnbWFwX3VwZGF0 ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0dQSU9fTU9ERTQsDQorCQkJICAgMHgwMDA3LCAw eDAwMDQpOw0KK30NCisNCitzdGF0aWMgdm9pZCB2b3dfZ3Bpb19yZXNldChzdHJ1Y3QgbXQ2MzU5 X3ByaXYgKnByaXYpDQorew0KKwkvKiBzZXQgcGFkX2F1ZF8qX21pc28gdG8gR1BJTyBtb2RlIGFu ZCBkaXIgaW5wdXQNCisJICogcmVhc29uOg0KKwkgKiBwYWRfYXVkX2Nsa19taXNvLCBiZWNhdXNl IHdoZW4gcGxheWJhY2sgb25seSB0aGUgbWlzb19jbGsNCisJICogd2lsbCBhbHNvIGhhdmUgMjZt LCBzbyB3aWxsIGhhdmUgcG93ZXIgbGVhaw0KKwkgKiBwYWRfYXVkX2RhdF9taXNvKiwgYmVjYXVz ZSB0aGUgcGluIGlzIHVzZWQgYXMgYm9vdCBzdHJhcA0KKwkgKi8NCisJLyogdm93IGdwaW8gY2xl YXIgKGRhdGEpICovDQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9HUElPX01P REUzX0NMUiwgMHgwZTAwKTsNCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2 MzU5X0dQSU9fTU9ERTMsDQorCQkJICAgMHgwZTAwLCAweDAwMDApOw0KKwkvKiB2b3cgZ3BpbyBj bGVhciAoY2xvY2spICovDQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9HUElP X01PREU0X0NMUiwgMHgwMDA3KTsNCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwg TVQ2MzU5X0dQSU9fTU9ERTQsDQorCQkJICAgMHgwMDA3LCAweDAwMDApOw0KKwlyZWdtYXBfdXBk YXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfR1BJT19ESVIwLA0KKwkJCSAgIDB4MSA8PCAx NSwgMHgwKTsNCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0dQSU9f RElSMSwNCisJCQkgICAweDEgPDwgMCwgMHgwKTsNCit9DQorDQorLyogdXNlIG9ubHkgd2hlbiBu b3QgZ292ZXJuIGJ5IERBUE0gKi8NCitzdGF0aWMgaW50IG10NjM1OV9zZXRfZGN4byhzdHJ1Y3Qg bXQ2MzU5X3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKQ0KK3sNCisJcmVnbWFwX3VwZGF0ZV9iaXRz KHByaXYtPnJlZ21hcCwgTVQ2MzU5X0RDWE9fQ1cxMiwNCisJCQkgICAweDEgPDwgUkdfWE9fQVVE SU9fRU5fTV9TRlQsDQorCQkJICAgKGVuYWJsZSA/IDEgOiAwKSA8PCBSR19YT19BVURJT19FTl9N X1NGVCk7DQorCXJldHVybiAwOw0KK30NCisNCisvKiB1c2Ugb25seSB3aGVuIG5vdCBnb3Zlcm4g YnkgREFQTSAqLw0KK3N0YXRpYyBpbnQgbXQ2MzU5X3NldF9jbGtzcShzdHJ1Y3QgbXQ2MzU5X3By aXYgKnByaXYsIGJvb2wgZW5hYmxlKQ0KK3sNCisJLyogYXVkaW8gY2xrIHNvdXJjZSBmcm9tIGlu dGVybmFsIGRjeG8gKi8NCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5 X0FVREVOQ19BTkFfQ09OMjMsDQorCQkJICAgUkdfQ0xLU1FfSU5fU0VMX1RFU1RfTUFTS19TRlQs DQorCQkJICAgMHgwKTsNCisNCisJLyogRW5hYmxlL2Rpc2FibGUgQ0xLU1EgMjZNSHogKi8NCisJ cmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMjMs DQorCQkJICAgUkdfQ0xLU1FfRU5fTUFTS19TRlQsDQorCQkJICAgKGVuYWJsZSA/IDEgOiAwKSA8 PCBSR19DTEtTUV9FTl9TRlQpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyogdXNlIG9ubHkgd2hl biBub3QgZ292ZXJuIGJ5IERBUE0gKi8NCitzdGF0aWMgaW50IG10NjM1OV9zZXRfYXVkX2dsb2Jh bF9iaWFzKHN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpDQorew0KKwlyZWdt YXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04xMywNCisJ CQkgICBSR19BVURHTEJfUFdSRE5fVkEzMl9NQVNLX1NGVCwNCisJCQkgICAoZW5hYmxlID8gMCA6 IDEpIDw8IFJHX0FVREdMQl9QV1JETl9WQTMyX1NGVCk7DQorCXJldHVybiAwOw0KK30NCisNCisv KiB1c2Ugb25seSB3aGVuIG5vdCBnb3Zlcm4gYnkgREFQTSAqLw0KK3N0YXRpYyBpbnQgbXQ2MzU5 X3NldF90b3BjayhzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKQ0KK3sNCisJ cmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRF9UT1BfQ0tQRE5fQ09O MCwNCisJCQkgICAweDAwNjYsIGVuYWJsZSA/IDB4MCA6IDB4NjYpOw0KKwlyZXR1cm4gMDsNCit9 DQorDQorc3RhdGljIGludCBtdDYzNTlfc2V0X2RlY29kZXJfY2xrKHN0cnVjdCBtdDYzNTlfcHJp diAqcHJpdiwgYm9vbCBlbmFibGUpDQorew0KKwlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVn bWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04xMywNCisJCQkgICBSR19SU1RCX0RFQ09ERVJfVkEz Ml9NQVNLX1NGVCwNCisJCQkgICAoZW5hYmxlID8gMSA6IDApIDw8IFJHX1JTVEJfREVDT0RFUl9W QTMyX1NGVCk7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10NjM1OV9tdGthaWZf dHhfZW5hYmxlKHN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdikNCit7DQorCXN3aXRjaCAocHJpdi0+ bXRrYWlmX3Byb3RvY29sKSB7DQorCWNhc2UgTVQ2MzU5X01US0FJRl9QUk9UT0NPTF8yX0NMS19Q MjoNCisJCS8qIE1US0FJRiBUWCBmb3JtYXQgc2V0dGluZyAqLw0KKwkJcmVnbWFwX3VwZGF0ZV9i aXRzKHByaXYtPnJlZ21hcCwNCisJCQkJICAgTVQ2MzU5X0FGRV9BRERBX01US0FJRl9DRkcwLA0K KwkJCQkgICAweGZmZmYsIDB4MDIxMCk7DQorCQkvKiBlbmFibGUgYXVkX3BhZCBUWCBmaWZvcyAq Lw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJICAgTVQ2MzU5X0FG RV9BVURfUEFEX1RPUCwNCisJCQkJICAgMHhmZjAwLCAweDM4MDApOw0KKwkJcmVnbWFwX3VwZGF0 ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJICAgTVQ2MzU5X0FGRV9BVURfUEFEX1RPUCwNCisJ CQkJICAgMHhmZjAwLCAweDM5MDApOw0KKwkJYnJlYWs7DQorCWNhc2UgTVQ2MzU5X01US0FJRl9Q Uk9UT0NPTF8yOg0KKwkJLyogTVRLQUlGIFRYIGZvcm1hdCBzZXR0aW5nICovDQorCQlyZWdtYXBf dXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkgICBNVDYzNTlfQUZFX0FEREFfTVRLQUlG X0NGRzAsDQorCQkJCSAgIDB4ZmZmZiwgMHgwMjEwKTsNCisJCS8qIGVuYWJsZSBhdWRfcGFkIFRY IGZpZm9zICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkgICBN VDYzNTlfQUZFX0FVRF9QQURfVE9QLA0KKwkJCQkgICAweGZmMDAsIDB4MzEwMCk7DQorCQlicmVh azsNCisJY2FzZSBNVDYzNTlfTVRLQUlGX1BST1RPQ09MXzE6DQorCWRlZmF1bHQ6DQorCQkvKiBN VEtBSUYgVFggZm9ybWF0IHNldHRpbmcgKi8NCisJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5y ZWdtYXAsDQorCQkJCSAgIE1UNjM1OV9BRkVfQUREQV9NVEtBSUZfQ0ZHMCwNCisJCQkJICAgMHhm ZmZmLCAweDAwMDApOw0KKwkJLyogZW5hYmxlIGF1ZF9wYWQgVFggZmlmb3MgKi8NCisJCXJlZ21h cF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsDQorCQkJCSAgIE1UNjM1OV9BRkVfQVVEX1BBRF9U T1AsDQorCQkJCSAgIDB4ZmYwMCwgMHgzMTAwKTsNCisJCWJyZWFrOw0KKwl9DQorCXJldHVybiAw Ow0KK30NCisNCitzdGF0aWMgaW50IG10NjM1OV9tdGthaWZfdHhfZGlzYWJsZShzdHJ1Y3QgbXQ2 MzU5X3ByaXYgKnByaXYpDQorew0KKwkvKiBkaXNhYmxlIGF1ZF9wYWQgVFggZmlmb3MgKi8NCisJ cmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9BVURfUEFEX1RPUCwN CisJCQkgICAweGZmMDAsIDB4MzAwMCk7DQorCXJldHVybiAwOw0KK30NCisNCitpbnQgbXQ2MzU5 X210a2FpZl9jYWxpYnJhdGlvbl9lbmFibGUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBu dCkNCit7DQorCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dl dF9kcnZkYXRhKGNtcG50KTsNCisNCisJcGxheWJhY2tfZ3Bpb19zZXQocHJpdik7DQorCWNhcHR1 cmVfZ3Bpb19zZXQocHJpdik7DQorCW10NjM1OV9tdGthaWZfdHhfZW5hYmxlKHByaXYpOw0KKw0K KwltdDYzNTlfc2V0X2RjeG8ocHJpdiwgdHJ1ZSk7DQorCW10NjM1OV9zZXRfYXVkX2dsb2JhbF9i aWFzKHByaXYsIHRydWUpOw0KKwltdDYzNTlfc2V0X2Nsa3NxKHByaXYsIHRydWUpOw0KKwltdDYz NTlfc2V0X3RvcGNrKHByaXYsIHRydWUpOw0KKw0KKwkvKiBzZXQgZGF0X21pc29fbG9vcGJhY2sg b24gKi8NCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRElPX0RJ R19DRkcsDQorCQkJICAgUkdfQVVEX1BBRF9UT1BfREFUX01JU08yX0xPT1BCQUNLX01BU0tfU0ZU LA0KKwkJCSAgIDEgPDwgUkdfQVVEX1BBRF9UT1BfREFUX01JU08yX0xPT1BCQUNLX1NGVCk7DQor CXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURJT19ESUdfQ0ZHLA0K KwkJCSAgIFJHX0FVRF9QQURfVE9QX0RBVF9NSVNPX0xPT1BCQUNLX01BU0tfU0ZULA0KKwkJCSAg IDEgPDwgUkdfQVVEX1BBRF9UT1BfREFUX01JU09fTE9PUEJBQ0tfU0ZUKTsNCisJcmVnbWFwX3Vw ZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRElPX0RJR19DRkcxLA0KKwkJCSAgIFJH X0FVRF9QQURfVE9QX0RBVF9NSVNPM19MT09QQkFDS19NQVNLX1NGVCwNCisJCQkgICAxIDw8IFJH X0FVRF9QQURfVE9QX0RBVF9NSVNPM19MT09QQkFDS19TRlQpOw0KKwlyZXR1cm4gMDsNCit9DQor RVhQT1JUX1NZTUJPTF9HUEwobXQ2MzU5X210a2FpZl9jYWxpYnJhdGlvbl9lbmFibGUpOw0KKw0K K2ludCBtdDYzNTlfbXRrYWlmX2NhbGlicmF0aW9uX2Rpc2FibGUoc3RydWN0IHNuZF9zb2NfY29t cG9uZW50ICpjbXBudCkNCit7DQorCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2Nf Y29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisNCisJLyogc2V0IGRhdF9taXNvX2xvb3Bi YWNrIG9mZiAqLw0KKwlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVE SU9fRElHX0NGRywNCisJCQkgICBSR19BVURfUEFEX1RPUF9EQVRfTUlTTzJfTE9PUEJBQ0tfTUFT S19TRlQsDQorCQkJICAgMCA8PCBSR19BVURfUEFEX1RPUF9EQVRfTUlTTzJfTE9PUEJBQ0tfU0ZU KTsNCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRElPX0RJR19D RkcsDQorCQkJICAgUkdfQVVEX1BBRF9UT1BfREFUX01JU09fTE9PUEJBQ0tfTUFTS19TRlQsDQor CQkJICAgMCA8PCBSR19BVURfUEFEX1RPUF9EQVRfTUlTT19MT09QQkFDS19TRlQpOw0KKwlyZWdt YXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVESU9fRElHX0NGRzEsDQorCQkJ ICAgUkdfQVVEX1BBRF9UT1BfREFUX01JU08zX0xPT1BCQUNLX01BU0tfU0ZULA0KKwkJCSAgIDAg PDwgUkdfQVVEX1BBRF9UT1BfREFUX01JU08zX0xPT1BCQUNLX1NGVCk7DQorDQorCW10NjM1OV9z ZXRfdG9wY2socHJpdiwgZmFsc2UpOw0KKwltdDYzNTlfc2V0X2Nsa3NxKHByaXYsIGZhbHNlKTsN CisJbXQ2MzU5X3NldF9hdWRfZ2xvYmFsX2JpYXMocHJpdiwgZmFsc2UpOw0KKwltdDYzNTlfc2V0 X2RjeG8ocHJpdiwgZmFsc2UpOw0KKw0KKwltdDYzNTlfbXRrYWlmX3R4X2Rpc2FibGUocHJpdik7 DQorCXBsYXliYWNrX2dwaW9fcmVzZXQocHJpdik7DQorCWNhcHR1cmVfZ3Bpb19yZXNldChwcml2 KTsNCisJcmV0dXJuIDA7DQorfQ0KK0VYUE9SVF9TWU1CT0xfR1BMKG10NjM1OV9tdGthaWZfY2Fs aWJyYXRpb25fZGlzYWJsZSk7DQorDQoraW50IG10NjM1OV9zZXRfbXRrYWlmX2NhbGlicmF0aW9u X3BoYXNlKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQsDQorCQkJCQlpbnQgcGhhc2Vf MSwgaW50IHBoYXNlXzIsIGludCBwaGFzZV8zKQ0KK3sNCisJc3RydWN0IG10NjM1OV9wcml2ICpw cml2ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKw0KKwlyZWdtYXBf dXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVESU9fRElHX0NGRywNCisJCQkgICBS R19BVURfUEFEX1RPUF9QSEFTRV9NT0RFX01BU0tfU0ZULA0KKwkJCSAgIHBoYXNlXzEgPDwgUkdf QVVEX1BBRF9UT1BfUEhBU0VfTU9ERV9TRlQpOw0KKwlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+ cmVnbWFwLCBNVDYzNTlfQVVESU9fRElHX0NGRywNCisJCQkgICBSR19BVURfUEFEX1RPUF9QSEFT RV9NT0RFMl9NQVNLX1NGVCwNCisJCQkgICBwaGFzZV8yIDw8IFJHX0FVRF9QQURfVE9QX1BIQVNF X01PREUyX1NGVCk7DQorCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9B VURJT19ESUdfQ0ZHMSwNCisJCQkgICBSR19BVURfUEFEX1RPUF9QSEFTRV9NT0RFM19NQVNLX1NG VCwNCisJCQkgICBwaGFzZV8zIDw8IFJHX0FVRF9QQURfVE9QX1BIQVNFX01PREUzX1NGVCk7DQor CXJldHVybiAwOw0KK30NCitFWFBPUlRfU1lNQk9MX0dQTChtdDYzNTlfc2V0X210a2FpZl9jYWxp YnJhdGlvbl9waGFzZSk7DQorDQorLyogZGwgcGdhIGdhaW4gKi8NCitlbnVtIHsNCisJRExfR0FJ Tl84REIgPSAwLA0KKwlETF9HQUlOXzBEQiA9IDgsDQorCURMX0dBSU5fTl8xREIgPSA5LA0KKwlE TF9HQUlOX05fMTBEQiA9IDE4LA0KKwlETF9HQUlOX05fMjJEQiA9IDMwLA0KKwlETF9HQUlOX05f NDBEQiA9IDB4MWYsDQorfTsNCisNCisjZGVmaW5lIERMX0dBSU5fTl8xMERCX1JFRyAoRExfR0FJ Tl9OXzEwREIgPDwgNyB8IERMX0dBSU5fTl8xMERCKQ0KKyNkZWZpbmUgRExfR0FJTl9OXzIyREJf UkVHIChETF9HQUlOX05fMjJEQiA8PCA3IHwgRExfR0FJTl9OXzIyREIpDQorI2RlZmluZSBETF9H QUlOX05fNDBEQl9SRUcgKERMX0dBSU5fTl80MERCIDw8IDcgfCBETF9HQUlOX05fNDBEQikNCisj ZGVmaW5lIERMX0dBSU5fUkVHX01BU0sgMHgwZjlmDQorDQorLyogcmVnIGlkeCBmb3IgLTQwZEIq Lw0KKyNkZWZpbmUgUEdBX01JTlVTXzQwX0RCX1JFR19WQUwgMHgxZg0KKyNkZWZpbmUgSFBfUEdB X01JTlVTXzQwX0RCX1JFR19WQUwgMHgzZg0KK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBkbF9w Z2FfZ2FpbltdID0gew0KKwkiOERiIiwgIjdEYiIsICI2RGIiLCAiNURiIiwgIjREYiIsDQorCSIz RGIiLCAiMkRiIiwgIjFEYiIsICIwRGIiLCAiLTFEYiIsDQorCSItMkRiIiwgIi0zRGIiLAkiLTRE YiIsICItNURiIiwgIi02RGIiLA0KKwkiLTdEYiIsICItOERiIiwgIi05RGIiLCAiLTEwRGIiLCAi LTQwRGIiDQorfTsNCisNCitzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgaHBfZGxfcGdhX2dhaW5b XSA9IHsNCisJIjhEYiIsICI3RGIiLCAiNkRiIiwgIjVEYiIsICI0RGIiLA0KKwkiM0RiIiwgIjJE YiIsICIxRGIiLCAiMERiIiwgIi0xRGIiLA0KKwkiLTJEYiIsICItM0RiIiwJIi00RGIiLCAiLTVE YiIsICItNkRiIiwNCisJIi03RGIiLCAiLThEYiIsICItOURiIiwgIi0xMERiIiwgIi0xMURiIiwN CisJIi0xMkRiIiwgIi0xM0RiIiwgIi0xNERiIiwgIi0xNURiIiwgIi0xNkRiIiwNCisJIi0xN0Ri IiwgIi0xOERiIiwgIi0xOURiIiwgIi0yMERiIiwgIi0yMURiIiwNCisJIi0yMkRiIiwgIi00MERi Ig0KK307DQorDQorc3RhdGljIHZvaWQgemNkX2Rpc2FibGUoc3RydWN0IG10NjM1OV9wcml2ICpw cml2KQ0KK3sNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X1pDRF9DT04wLCAw eDAwMDApOw0KK30NCisNCitzdGF0aWMgdm9pZCBocF9tYWluX291dHB1dF9yYW1wKHN0cnVjdCBt dDYzNTlfcHJpdiAqcHJpdiwgYm9vbCB1cCkNCit7DQorCWludCBpID0gMCwgc3RhZ2UgPSAwOw0K KwlpbnQgdGFyZ2V0ID0gNzsNCisNCisJLyogRW5hYmxlL1JlZHVjZSBIUEwvUiBtYWluIG91dHB1 dCBzdGFnZSBzdGVwIGJ5IHN0ZXAgKi8NCisJZm9yIChpID0gMDsgaSA8PSB0YXJnZXQ7IGkrKykg ew0KKwkJc3RhZ2UgPSB1cCA/IGkgOiB0YXJnZXQgLSBpOw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRz KHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMSwNCisJCQkJICAgUkdfSFBMT1VU U1RHQ1RSTF9WQVVEUDMyX01BU0tfU0ZULA0KKwkJCQkgICBzdGFnZSA8PCBSR19IUExPVVRTVEdD VFJMX1ZBVURQMzJfU0ZUKTsNCisJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1U NjM1OV9BVURERUNfQU5BX0NPTjEsDQorCQkJCSAgIFJHX0hQUk9VVFNUR0NUUkxfVkFVRFAzMl9N QVNLX1NGVCwNCisJCQkJICAgc3RhZ2UgPDwgUkdfSFBST1VUU1RHQ1RSTF9WQVVEUDMyX1NGVCk7 DQorCQl1c2xlZXBfcmFuZ2UoNjAwLCA2NTApOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGhw X2F1eF9mZWVkYmFja19sb29wX2dhaW5fcmFtcChzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYsIGJv b2wgdXApDQorew0KKwlpbnQgaSA9IDAsIHN0YWdlID0gMDsNCisNCisJLyogUmVkdWNlIEhQIGF1 eCBmZWVkYmFjayBsb29wIGdhaW4gc3RlcCBieSBzdGVwICovDQorCWZvciAoaSA9IDA7IGkgPD0g MHhmOyBpKyspIHsNCisJCXN0YWdlID0gdXAgPyBpIDogMHhmIC0gaTsNCisJCXJlZ21hcF91cGRh dGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjksDQorCQkJCSAgIDB4 ZiA8PCAxMiwgc3RhZ2UgPDwgMTIpOw0KKwkJdXNsZWVwX3JhbmdlKDYwMCwgNjUwKTsNCisJfQ0K K30NCisNCitzdGF0aWMgdm9pZCBocF9pbl9wYWlyX2N1cnJlbnQoc3RydWN0IG10NjM1OV9wcml2 ICpwcml2LCBib29sIGluY3JlYXNlKQ0KK3sNCisJaW50IGkgPSAwLCBzdGFnZSA9IDA7DQorCWlu dCB0YXJnZXQgPSAweDM7DQorDQorCS8qIFNldCBpbnB1dCBkaWZmIHBhaXIgYmlhcyBzZWxlY3Qg KEhpLUZpIG1vZGUpICovDQorCWlmIChwcml2LT5ocF9oaWZpX21vZGUpIHsNCisJCS8qIFJlZHVj ZSBIUCBhdXggZmVlZGJhY2sgbG9vcCBnYWluIHN0ZXAgYnkgc3RlcCAqLw0KKwkJZm9yIChpID0g MDsgaSA8PSB0YXJnZXQ7IGkrKykgew0KKwkJCXN0YWdlID0gaW5jcmVhc2UgPyBpIDogdGFyZ2V0 IC0gaTsNCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkJICAgTVQ2 MzU5X0FVRERFQ19BTkFfQ09OMTAsDQorCQkJCQkgICAweDMgPDwgMywgc3RhZ2UgPDwgMyk7DQor CQkJdXNsZWVwX3JhbmdlKDEwMCwgMTUwKTsNCisJCX0NCisJfQ0KK30NCisNCitzdGF0aWMgdm9p ZCBocF9wdWxsX2Rvd24oc3RydWN0IG10NjM1OV9wcml2ICpwcml2LCBib29sIGVuYWJsZSkNCit7 DQorCWludCBpOw0KKw0KKwlpZiAoZW5hYmxlKSB7DQorCQlmb3IgKGkgPSAweDA7IGkgPD0gMHg3 OyBpKyspIHsNCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVE REVDX0FOQV9DT04yLA0KKwkJCQkJICAgUkdfSFBQU0hPUlQyVkNNX1ZBVURQMzJfTUFTS19TRlQs DQorCQkJCQkgICBpIDw8IFJHX0hQUFNIT1JUMlZDTV9WQVVEUDMyX1NGVCk7DQorCQkJdXNsZWVw X3JhbmdlKDEwMCwgMTUwKTsNCisJCX0NCisJfSBlbHNlIHsNCisJCWZvciAoaSA9IDB4NzsgaSA+ PSAweDA7IGktLSkgew0KKwkJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1 OV9BVURERUNfQU5BX0NPTjIsDQorCQkJCQkgICBSR19IUFBTSE9SVDJWQ01fVkFVRFAzMl9NQVNL X1NGVCwNCisJCQkJCSAgIGkgPDwgUkdfSFBQU0hPUlQyVkNNX1ZBVURQMzJfU0ZUKTsNCisJCQl1 c2xlZXBfcmFuZ2UoMTAwLCAxNTApOw0KKwkJfQ0KKwl9DQorfQ0KKw0KK3N0YXRpYyBpbnQgaHBf Z2Fpbl9jdGxfc2VsZWN0KHN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiwNCisJCQkgICAgICB1bnNp Z25lZCBpbnQgaHBfZ2Fpbl9jdGwpDQorew0KKwlpZiAoaHBfZ2Fpbl9jdGwgPj0gSFBfR0FJTl9D VExfTlVNKSB7DQorCQlkZXZfd2Fybihwcml2LT5kZXYsICIlcygpLCBocF9nYWluX2N0bCAlZCBp bnZhbGlkXG4iLA0KKwkJCSBfX2Z1bmNfXywgaHBfZ2Fpbl9jdGwpOw0KKwkJcmV0dXJuIC1FSU5W QUw7DQorCX0NCisNCisJcHJpdi0+aHBfZ2Fpbl9jdGwgPSBocF9nYWluX2N0bDsNCisJcmVnbWFw X3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9ETF9OTEVfQ0ZHLA0KKwkJCSAg IE5MRV9MQ0hfSFBHQUlOX1NFTF9NQVNLX1NGVCwNCisJCQkgICBocF9nYWluX2N0bCA8PCBOTEVf TENIX0hQR0FJTl9TRUxfU0ZUKTsNCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwg TVQ2MzU5X0FGRV9ETF9OTEVfQ0ZHLA0KKwkJCSAgIE5MRV9SQ0hfSFBHQUlOX1NFTF9NQVNLX1NG VCwNCisJCQkgICBocF9nYWluX2N0bCA8PCBOTEVfUkNIX0hQR0FJTl9TRUxfU0ZUKTsNCisNCisJ cmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBib29sIGlzX3ZhbGlkX2hwX3BnYV9pZHgoaW50IHJl Z19pZHgpDQorew0KKwlyZXR1cm4gKHJlZ19pZHggPj0gRExfR0FJTl84REIgJiYgcmVnX2lkeCA8 PSBETF9HQUlOX05fMjJEQikgfHwNCisJICAgICAgIHJlZ19pZHggPT0gRExfR0FJTl9OXzQwREI7 DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGhlYWRzZXRfdm9sdW1lX3JhbXAoc3RydWN0IG10NjM1OV9w cml2ICpwcml2LA0KKwkJCQlpbnQgZnJvbSwgaW50IHRvKQ0KK3sNCisJaW50IG9mZnNldCA9IDAs IGNvdW50ID0gMSwgcmVnX2lkeDsNCisNCisJaWYgKCFpc192YWxpZF9ocF9wZ2FfaWR4KGZyb20p IHx8ICFpc192YWxpZF9ocF9wZ2FfaWR4KHRvKSkNCisJCWRldl93YXJuKHByaXYtPmRldiwgIiVz KCksIHZvbHVtZSBpbmRleCBpcyBub3QgdmFsaWQsIGZyb20gJWQsIHRvICVkXG4iLA0KKwkJCSBf X2Z1bmNfXywgZnJvbSwgdG8pOw0KKw0KKwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCBmcm9t ICVkLCB0byAlZFxuIiwNCisJCSBfX2Z1bmNfXywgZnJvbSwgdG8pOw0KKw0KKwlpZiAodG8gPiBm cm9tKQ0KKwkJb2Zmc2V0ID0gdG8gLSBmcm9tOw0KKwllbHNlDQorCQlvZmZzZXQgPSBmcm9tIC0g dG87DQorDQorCXdoaWxlIChvZmZzZXQgPiAwKSB7DQorCQlpZiAodG8gPiBmcm9tKQ0KKwkJCXJl Z19pZHggPSBmcm9tICsgY291bnQ7DQorCQllbHNlDQorCQkJcmVnX2lkeCA9IGZyb20gLSBjb3Vu dDsNCisNCisJCWlmIChpc192YWxpZF9ocF9wZ2FfaWR4KHJlZ19pZHgpKSB7DQorCQkJcmVnbWFw X3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJCSAgIE1UNjM1OV9aQ0RfQ09OMiwNCisJ CQkJCSAgIERMX0dBSU5fUkVHX01BU0ssDQorCQkJCQkgICAocmVnX2lkeCA8PCA3KSB8IHJlZ19p ZHgpOw0KKwkJCXVzbGVlcF9yYW5nZSg2MDAsIDY1MCk7DQorCQl9DQorCQlvZmZzZXQtLTsNCisJ CWNvdW50Kys7DQorCX0NCit9DQorDQorI2RlZmluZSBNVF9TT0NfRU5VTV9FWFRfSUQoeG5hbWUs IHhlbnVtLCB4aGFuZGxlcl9nZXQsIHhoYW5kbGVyX3B1dCwgaWQpIFwNCit7CS5pZmFjZSA9IFNO RFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLCAubmFtZSA9IHhuYW1lLCAuZGV2aWNlID0gaWQsXA0K KwkuaW5mbyA9IHNuZF9zb2NfaW5mb19lbnVtX2RvdWJsZSwgXA0KKwkuZ2V0ID0geGhhbmRsZXJf Z2V0LCAucHV0ID0geGhhbmRsZXJfcHV0LCBcDQorCS5wcml2YXRlX3ZhbHVlID0gKHVuc2lnbmVk IGxvbmcpJih4ZW51bSkgfQ0KKw0KKy8qIE1pYyBUeXBlIE1VWCAqLw0KK2VudW0gew0KKwlNSUNf VFlQRV9NVVhfSURMRSA9IDAsDQorCU1JQ19UWVBFX01VWF9BQ0MsDQorCU1JQ19UWVBFX01VWF9E TUlDLA0KKwlNSUNfVFlQRV9NVVhfRENDLA0KKwlNSUNfVFlQRV9NVVhfRENDX0VDTV9ESUZGLA0K KwlNSUNfVFlQRV9NVVhfRENDX0VDTV9TSU5HTEUsDQorCU1JQ19UWVBFX01VWF9WT1dfQUNDLA0K KwlNSUNfVFlQRV9NVVhfVk9XX0RNSUMsDQorCU1JQ19UWVBFX01VWF9WT1dfRE1JQ19MUCwNCisJ TUlDX1RZUEVfTVVYX1ZPV19EQ0MsDQorCU1JQ19UWVBFX01VWF9WT1dfRENDX0VDTV9ESUZGLA0K KwlNSUNfVFlQRV9NVVhfVk9XX0RDQ19FQ01fU0lOR0xFLA0KK307DQorDQorI2RlZmluZSBJU19W T1dfRENDX0JBU0UodHlwZSkgKCh0eXBlKSA9PSBNSUNfVFlQRV9NVVhfVk9XX0RDQyB8fCBcDQor CQkJICAgICAgICh0eXBlKSA9PSBNSUNfVFlQRV9NVVhfVk9XX0RDQ19FQ01fRElGRiB8fCBcDQor CQkJICAgICAgICh0eXBlKSA9PSBNSUNfVFlQRV9NVVhfVk9XX0RDQ19FQ01fU0lOR0xFKQ0KKw0K KyNkZWZpbmUgSVNfRENDX0JBU0UodHlwZSkgKCh0eXBlKSA9PSBNSUNfVFlQRV9NVVhfRENDIHx8 IFwNCisJCQkgICAodHlwZSkgPT0gTUlDX1RZUEVfTVVYX0RDQ19FQ01fRElGRiB8fCBcDQorCQkJ ICAgKHR5cGUpID09IE1JQ19UWVBFX01VWF9EQ0NfRUNNX1NJTkdMRSB8fCBcDQorCQkJICAgSVNf Vk9XX0RDQ19CQVNFKCh0eXBlKSkpDQorDQorI2RlZmluZSBJU19WT1dfQU1JQ19CQVNFKHR5cGUp ICgodHlwZSkgPT0gTUlDX1RZUEVfTVVYX1ZPV19BQ0MgfHwgXA0KKwkJCQlJU19WT1dfRENDX0JB U0UoKHR5cGUpKSkNCisNCisjZGVmaW5lIElTX1ZPV19CQVNFKHR5cGUpICgodHlwZSkgPT0gTUlD X1RZUEVfTVVYX1ZPV19ETUlDIHx8IFwNCisJCQkgICAodHlwZSkgPT0gTUlDX1RZUEVfTVVYX1ZP V19ETUlDX0xQIHx8IFwNCisJCQkgICBJU19WT1dfQU1JQ19CQVNFKCh0eXBlKSkpDQorDQorc3Rh dGljIGNvbnN0IGNoYXIgKmNvbnN0IG1pY190eXBlX211eF9tYXBbXSA9IHsNCisJIklkbGUiLA0K KwkiQUNDIiwNCisJIkRNSUMiLA0KKwkiRENDIiwNCisJIkRDQ19FQ01fRElGRiIsDQorCSJEQ0Nf RUNNX1NJTkdMRSIsDQorCSJWT1dfQUNDIiwNCisJIlZPV19ETUlDIiwNCisJIlZPV19ETUlDX0xQ IiwNCisJIlZPV19EQ0MiLA0KKwkiVk9XX0RDQ19FQ01fRElGRiIsDQorCSJWT1dfRENDX0VDTV9T SU5HTEUiDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNvY19lbnVtIG1pY190eXBlX211 eF9lbnVtW10gPSB7DQorCVNPQ19FTlVNX1NJTkdMRV9FWFQoQVJSQVlfU0laRShtaWNfdHlwZV9t dXhfbWFwKSwgbWljX3R5cGVfbXV4X21hcCksDQorfTsNCisNCitzdGF0aWMgaW50IG1pY190eXBl X2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQlzdHJ1Y3Qgc25kX2N0bF9l bGVtX3ZhbHVlICp1Y29udHJvbCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21w bnQgPSBzbmRfc29jX2tjb250cm9sX2NvbXBvbmVudChrY29udHJvbCk7DQorCXN0cnVjdCBtdDYz NTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisN CisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPQ0KKwkJcHJpdi0+bXV4X3NlbGVj dFtrY29udHJvbC0+aWQuZGV2aWNlXTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQg bWljX3R5cGVfc2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCXN0cnVjdCBz bmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9u ZW50ICpjbXBudCA9IHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50KGtjb250cm9sKTsNCisJc3Ry dWN0IG10NjM1OV9wcml2ICpwcml2ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21w bnQpOw0KKwlzdHJ1Y3Qgc29jX2VudW0gKmUgPSAoc3RydWN0IHNvY19lbnVtICopa2NvbnRyb2wt PnByaXZhdGVfdmFsdWU7DQorCWludCBpbmRleCA9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZh bHVlWzBdOw0KKwl1bnNpZ25lZCBpbnQgaWQgPSBrY29udHJvbC0+aWQuZGV2aWNlOw0KKw0KKwlp ZiAodWNvbnRyb2wtPnZhbHVlLmVudW1lcmF0ZWQuaXRlbVswXSA+PSBlLT5pdGVtcykNCisJCXJl dHVybiAtRUlOVkFMOw0KKw0KKwlwcml2LT5tdXhfc2VsZWN0W2lkXSA9IGluZGV4Ow0KKwlyZXR1 cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdDYzNTlfcHV0X3ZvbHN3KHN0cnVjdCBzbmRfa2Nv bnRyb2wgKmtjb250cm9sLA0KKwkJCSAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29u dHJvbCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0NCisJCQlz bmRfc29jX2tjb250cm9sX2NvbXBvbmVudChrY29udHJvbCk7DQorCXN0cnVjdCBtdDYzNTlfcHJp diAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7DQorCXN0 cnVjdCBzb2NfbWl4ZXJfY29udHJvbCAqbWMgPQ0KKwkJCShzdHJ1Y3Qgc29jX21peGVyX2NvbnRy b2wgKilrY29udHJvbC0+cHJpdmF0ZV92YWx1ZTsNCisJdW5zaWduZWQgaW50IHJlZzsNCisJaW50 IGluZGV4ID0gdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF07DQorCWludCByZXQ7DQor DQorCXJldCA9IHNuZF9zb2NfcHV0X3ZvbHN3KGtjb250cm9sLCB1Y29udHJvbCk7DQorCWlmIChy ZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisNCisJc3dpdGNoIChtYy0+cmVnKSB7DQorCWNhc2Ug TVQ2MzU5X1pDRF9DT04yOg0KKwkJcmVnbWFwX3JlYWQocHJpdi0+cmVnbWFwLCBNVDYzNTlfWkNE X0NPTjIsICZyZWcpOw0KKwkJcHJpdi0+YW5hX2dhaW5bQVVESU9fQU5BTE9HX1ZPTFVNRV9IUE9V VExdID0NCisJCQkocmVnID4+IFJHX0FVREhQTEdBSU5fU0ZUKSAmIFJHX0FVREhQTEdBSU5fTUFT SzsNCisJCXByaXYtPmFuYV9nYWluW0FVRElPX0FOQUxPR19WT0xVTUVfSFBPVVRSXSA9DQorCQkJ KHJlZyA+PiBSR19BVURIUFJHQUlOX1NGVCkgJiBSR19BVURIUFJHQUlOX01BU0s7DQorCQlicmVh azsNCisJY2FzZSBNVDYzNTlfWkNEX0NPTjE6DQorCQlyZWdtYXBfcmVhZChwcml2LT5yZWdtYXAs IE1UNjM1OV9aQ0RfQ09OMSwgJnJlZyk7DQorCQlwcml2LT5hbmFfZ2FpbltBVURJT19BTkFMT0df Vk9MVU1FX0xJTkVPVVRMXSA9DQorCQkJKHJlZyA+PiBSR19BVURMT0xHQUlOX1NGVCkgJiBSR19B VURMT0xHQUlOX01BU0s7DQorCQlwcml2LT5hbmFfZ2FpbltBVURJT19BTkFMT0dfVk9MVU1FX0xJ TkVPVVRSXSA9DQorCQkJKHJlZyA+PiBSR19BVURMT1JHQUlOX1NGVCkgJiBSR19BVURMT1JHQUlO X01BU0s7DQorCQlicmVhazsNCisJY2FzZSBNVDYzNTlfWkNEX0NPTjM6DQorCQlyZWdtYXBfcmVh ZChwcml2LT5yZWdtYXAsIE1UNjM1OV9aQ0RfQ09OMywgJnJlZyk7DQorCQlwcml2LT5hbmFfZ2Fp bltBVURJT19BTkFMT0dfVk9MVU1FX0hTT1VUTF0gPQ0KKwkJCShyZWcgPj4gUkdfQVVESFNHQUlO X1NGVCkgJiBSR19BVURIU0dBSU5fTUFTSzsNCisJCWJyZWFrOw0KKwljYXNlIE1UNjM1OV9BVURF TkNfQU5BX0NPTjA6DQorCQlyZWdtYXBfcmVhZChwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNf QU5BX0NPTjAsICZyZWcpOw0KKwkJcHJpdi0+YW5hX2dhaW5bQVVESU9fQU5BTE9HX1ZPTFVNRV9N SUNBTVAxXSA9DQorCQkJKHJlZyA+PiBSR19BVURQUkVBTVBMR0FJTl9TRlQpICYgUkdfQVVEUFJF QU1QTEdBSU5fTUFTSzsNCisJCWJyZWFrOw0KKwljYXNlIE1UNjM1OV9BVURFTkNfQU5BX0NPTjE6 DQorCQlyZWdtYXBfcmVhZChwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NPTjEsICZy ZWcpOw0KKwkJcHJpdi0+YW5hX2dhaW5bQVVESU9fQU5BTE9HX1ZPTFVNRV9NSUNBTVAyXSA9DQor CQkJKHJlZyA+PiBSR19BVURQUkVBTVBSR0FJTl9TRlQpICYgUkdfQVVEUFJFQU1QUkdBSU5fTUFT SzsNCisJCWJyZWFrOw0KKwljYXNlIE1UNjM1OV9BVURFTkNfQU5BX0NPTjI6DQorCQlyZWdtYXBf cmVhZChwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NPTjIsICZyZWcpOw0KKwkJcHJp di0+YW5hX2dhaW5bQVVESU9fQU5BTE9HX1ZPTFVNRV9NSUNBTVAzXSA9DQorCQkJKHJlZyA+PiBS R19BVURQUkVBTVAzR0FJTl9TRlQpICYgUkdfQVVEUFJFQU1QM0dBSU5fTUFTSzsNCisNCisJCWJy ZWFrOw0KKwl9DQorDQorCWRldl9pbmZvKHByaXYtPmRldiwgIiVzKCksIG5hbWUgJXMsIHJlZygw eCV4KSA9IDB4JXgsIHNldCBpbmRleCA9ICV4XG4iLA0KKwkJIF9fZnVuY19fLCBrY29udHJvbC0+ aWQubmFtZSwgbWMtPnJlZywgcmVnLCBpbmRleCk7DQorDQorCXJldHVybiByZXQ7DQorfQ0KKw0K K3N0YXRpYyBjb25zdCBERUNMQVJFX1RMVl9EQl9TQ0FMRShocF9wbGF5YmFja190bHYsIC0yMjAw LCAxMDAsIDApOw0KK3N0YXRpYyBjb25zdCBERUNMQVJFX1RMVl9EQl9TQ0FMRShwbGF5YmFja190 bHYsIC0xMDAwLCAxMDAsIDApOw0KK3N0YXRpYyBjb25zdCBERUNMQVJFX1RMVl9EQl9TQ0FMRShj YXB0dXJlX3RsdiwgMCwgNjAwLCAwKTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29u dHJvbF9uZXcgbXQ2MzU5X3NuZF9jb250cm9sc1tdID0gew0KKwkvKiBkbCBwZ2EgZ2FpbiAqLw0K KwlTT0NfU0lOR0xFX0VYVF9UTFYoIkhlYWRzZXRMIFZvbHVtZSIsDQorCQkJICAgTVQ2MzU5X1pD RF9DT04yLCAwLCAweDFFLCAwLA0KKwkJCSAgIHNuZF9zb2NfZ2V0X3ZvbHN3LCBtdDYzNTlfcHV0 X3ZvbHN3LA0KKwkJCSAgIGhwX3BsYXliYWNrX3RsdiksDQorCVNPQ19TSU5HTEVfRVhUX1RMVigi SGVhZHNldFIgVm9sdW1lIiwNCisJCQkgICBNVDYzNTlfWkNEX0NPTjIsIDcsIDB4MUUsIDAsDQor CQkJICAgc25kX3NvY19nZXRfdm9sc3csIG10NjM1OV9wdXRfdm9sc3csDQorCQkJICAgaHBfcGxh eWJhY2tfdGx2KSwNCisJU09DX1NJTkdMRV9FWFRfVExWKCJMaW5lb3V0TCBWb2x1bWUiLA0KKwkJ CSAgIE1UNjM1OV9aQ0RfQ09OMSwgMCwgMHgxMiwgMCwNCisJCQkgICBzbmRfc29jX2dldF92b2xz dywgbXQ2MzU5X3B1dF92b2xzdywgcGxheWJhY2tfdGx2KSwNCisJU09DX1NJTkdMRV9FWFRfVExW KCJMaW5lb3V0UiBWb2x1bWUiLA0KKwkJCSAgIE1UNjM1OV9aQ0RfQ09OMSwgNywgMHgxMiwgMCwN CisJCQkgICBzbmRfc29jX2dldF92b2xzdywgbXQ2MzU5X3B1dF92b2xzdywgcGxheWJhY2tfdGx2 KSwNCisJU09DX1NJTkdMRV9FWFRfVExWKCJIYW5kc2V0IFZvbHVtZSIsDQorCQkJICAgTVQ2MzU5 X1pDRF9DT04zLCAwLCAweDEyLCAwLA0KKwkJCSAgIHNuZF9zb2NfZ2V0X3ZvbHN3LCBtdDYzNTlf cHV0X3ZvbHN3LCBwbGF5YmFja190bHYpLA0KKw0KKwkvKiB1bCBwZ2EgZ2FpbiAqLw0KKwlTT0Nf U0lOR0xFX0VYVF9UTFYoIlBHQUwgVm9sdW1lIiwNCisJCQkgICBNVDYzNTlfQVVERU5DX0FOQV9D T04wLCBSR19BVURQUkVBTVBMR0FJTl9TRlQsIDQsIDAsDQorCQkJICAgc25kX3NvY19nZXRfdm9s c3csIG10NjM1OV9wdXRfdm9sc3csIGNhcHR1cmVfdGx2KSwNCisJU09DX1NJTkdMRV9FWFRfVExW KCJQR0FSIFZvbHVtZSIsDQorCQkJICAgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMSwgUkdfQVVEUFJF QU1QUkdBSU5fU0ZULCA0LCAwLA0KKwkJCSAgIHNuZF9zb2NfZ2V0X3ZvbHN3LCBtdDYzNTlfcHV0 X3ZvbHN3LCBjYXB0dXJlX3RsdiksDQorCVNPQ19TSU5HTEVfRVhUX1RMVigiUEdBMyBWb2x1bWUi LA0KKwkJCSAgIE1UNjM1OV9BVURFTkNfQU5BX0NPTjIsIFJHX0FVRFBSRUFNUDNHQUlOX1NGVCwg NCwgMCwNCisJCQkgICBzbmRfc29jX2dldF92b2xzdywgbXQ2MzU5X3B1dF92b2xzdywgY2FwdHVy ZV90bHYpLA0KKw0KKwkvKiBtaXggdHlwZSBtdXggKi8NCisJTVRfU09DX0VOVU1fRVhUX0lEKCJN aWNfVHlwZV9NdXhfMCIsIG1pY190eXBlX211eF9lbnVtWzBdLA0KKwkJCSAgIG1pY190eXBlX2dl dCwgbWljX3R5cGVfc2V0LA0KKwkJCSAgIE1VWF9NSUNfVFlQRV8wKSwNCisJTVRfU09DX0VOVU1f RVhUX0lEKCJNaWNfVHlwZV9NdXhfMSIsIG1pY190eXBlX211eF9lbnVtWzBdLA0KKwkJCSAgIG1p Y190eXBlX2dldCwgbWljX3R5cGVfc2V0LA0KKwkJCSAgIE1VWF9NSUNfVFlQRV8xKSwNCisJTVRf U09DX0VOVU1fRVhUX0lEKCJNaWNfVHlwZV9NdXhfMiIsIG1pY190eXBlX211eF9lbnVtWzBdLA0K KwkJCSAgIG1pY190eXBlX2dldCwgbWljX3R5cGVfc2V0LA0KKwkJCSAgIE1VWF9NSUNfVFlQRV8y KSwNCit9Ow0KKw0KKy8qIE1VWCAqLw0KKw0KKy8qIExPTCBNVVggKi8NCitlbnVtIHsNCisJTE9f TVVYX09QRU4gPSAwLA0KKwlMT19NVVhfTF9EQUMsDQorCUxPX01VWF8zUkRfREFDLA0KKwlMT19N VVhfVEVTVF9NT0RFLA0KKwlMT19NVVhfTUFTSyA9IDB4MywNCit9Ow0KKw0KK3N0YXRpYyBjb25z dCBjaGFyICogY29uc3QgbG9faW5fbXV4X21hcFtdID0gew0KKwkiT3BlbiIsICJQbGF5YmFja19M X0RBQyIsICJQbGF5YmFjayIsICJUZXN0IE1vZGUiDQorfTsNCisNCitzdGF0aWMgaW50IGxvX2lu X211eF9tYXBfdmFsdWVbXSA9IHsNCisJMHgwLCAweDEsIDB4MiwgMHgzLA0KK307DQorDQorc3Rh dGljIFNPQ19WQUxVRV9FTlVNX1NJTkdMRV9ERUNMKGxvX2luX211eF9tYXBfZW51bSwNCisJCQkJ ICBTTkRfU09DX05PUE0sDQorCQkJCSAgMCwNCisJCQkJICBMT19NVVhfTUFTSywNCisJCQkJICBs b19pbl9tdXhfbWFwLA0KKwkJCQkgIGxvX2luX211eF9tYXBfdmFsdWUpOw0KKw0KK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBsb19pbl9tdXhfY29udHJvbCA9DQorCVNPQ19E QVBNX0VOVU0oIkxPIFNlbGVjdCIsIGxvX2luX211eF9tYXBfZW51bSk7DQorDQorLypIUCBNVVgg Ki8NCitlbnVtIHsNCisJSFBfTVVYX09QRU4gPSAwLA0KKwlIUF9NVVhfSFBTUEssDQorCUhQX01V WF9IUCwNCisJSFBfTVVYX1RFU1RfTU9ERSwNCisJSFBfTVVYX0hQX0lNUEVEQU5DRSwNCisJSFBf TVVYX01BU0sgPSAweDcsDQorfTsNCisNCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGhwX2lu X211eF9tYXBbXSA9IHsNCisJIk9wZW4iLA0KKwkiTG91ZFNQSyBQbGF5YmFjayIsDQorCSJBdWRp byBQbGF5YmFjayIsDQorCSJUZXN0IE1vZGUiLA0KKwkiSFAgSW1wZWRhbmNlIiwNCisJInVuZGVm aW5lZDEiLA0KKwkidW5kZWZpbmVkMiIsDQorCSJ1bmRlZmluZWQzIiwNCit9Ow0KKw0KK3N0YXRp YyBpbnQgaHBfaW5fbXV4X21hcF92YWx1ZVtdID0gew0KKwlIUF9NVVhfT1BFTiwNCisJSFBfTVVY X0hQU1BLLA0KKwlIUF9NVVhfSFAsDQorCUhQX01VWF9URVNUX01PREUsDQorCUhQX01VWF9IUF9J TVBFREFOQ0UsDQorCUhQX01VWF9PUEVOLA0KKwlIUF9NVVhfT1BFTiwNCisJSFBfTVVYX09QRU4s DQorfTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lOR0xFX0RFQ0woaHBsX2luX211eF9t YXBfZW51bSwNCisJCQkJICBTTkRfU09DX05PUE0sDQorCQkJCSAgMCwNCisJCQkJICBIUF9NVVhf TUFTSywNCisJCQkJICBocF9pbl9tdXhfbWFwLA0KKwkJCQkgIGhwX2luX211eF9tYXBfdmFsdWUp Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBocGxfaW5fbXV4X2Nv bnRyb2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJIUEwgU2VsZWN0IiwgaHBsX2luX211eF9tYXBfZW51 bSk7DQorDQorc3RhdGljIFNPQ19WQUxVRV9FTlVNX1NJTkdMRV9ERUNMKGhwcl9pbl9tdXhfbWFw X2VudW0sDQorCQkJCSAgU05EX1NPQ19OT1BNLA0KKwkJCQkgIDAsDQorCQkJCSAgSFBfTVVYX01B U0ssDQorCQkJCSAgaHBfaW5fbXV4X21hcCwNCisJCQkJICBocF9pbl9tdXhfbWFwX3ZhbHVlKTsN CisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaHByX2luX211eF9jb250 cm9sID0NCisJU09DX0RBUE1fRU5VTSgiSFBSIFNlbGVjdCIsIGhwcl9pbl9tdXhfbWFwX2VudW0p Ow0KKw0KKy8qIFJDViBNVVggKi8NCitlbnVtIHsNCisJUkNWX01VWF9PUEVOID0gMCwNCisJUkNW X01VWF9NVVRFLA0KKwlSQ1ZfTVVYX1ZPSUNFX1BMQVlCQUNLLA0KKwlSQ1ZfTVVYX1RFU1RfTU9E RSwNCisJUkNWX01VWF9NQVNLID0gMHgzLA0KK307DQorDQorc3RhdGljIGNvbnN0IGNoYXIgKiBj b25zdCByY3ZfaW5fbXV4X21hcFtdID0gew0KKwkiT3BlbiIsICJNdXRlIiwgIlZvaWNlIFBsYXli YWNrIiwgIlRlc3QgTW9kZSINCit9Ow0KKw0KK3N0YXRpYyBpbnQgcmN2X2luX211eF9tYXBfdmFs dWVbXSA9IHsNCisJUkNWX01VWF9PUEVOLA0KKwlSQ1ZfTVVYX01VVEUsDQorCVJDVl9NVVhfVk9J Q0VfUExBWUJBQ0ssDQorCVJDVl9NVVhfVEVTVF9NT0RFLA0KK307DQorDQorc3RhdGljIFNPQ19W QUxVRV9FTlVNX1NJTkdMRV9ERUNMKHJjdl9pbl9tdXhfbWFwX2VudW0sDQorCQkJCSAgU05EX1NP Q19OT1BNLA0KKwkJCQkgIDAsDQorCQkJCSAgUkNWX01VWF9NQVNLLA0KKwkJCQkgIHJjdl9pbl9t dXhfbWFwLA0KKwkJCQkgIHJjdl9pbl9tdXhfbWFwX3ZhbHVlKTsNCisNCitzdGF0aWMgY29uc3Qg c3RydWN0IHNuZF9rY29udHJvbF9uZXcgcmN2X2luX211eF9jb250cm9sID0NCisJU09DX0RBUE1f RU5VTSgiUkNWIFNlbGVjdCIsIHJjdl9pbl9tdXhfbWFwX2VudW0pOw0KKw0KKy8qIERBQyBJbiBN VVggKi8NCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRhY19pbl9tdXhfbWFwW10gPSB7DQor CSJOb3JtYWwgUGF0aCIsICJTZ2VuIg0KK307DQorDQorc3RhdGljIGludCBkYWNfaW5fbXV4X21h cF92YWx1ZVtdID0gew0KKwkweDAsIDB4MSwNCit9Ow0KKw0KK3N0YXRpYyBTT0NfVkFMVUVfRU5V TV9TSU5HTEVfREVDTChkYWNfaW5fbXV4X21hcF9lbnVtLA0KKwkJCQkgIE1UNjM1OV9BRkVfVE9Q X0NPTjAsDQorCQkJCSAgRExfU0lORV9PTl9TRlQsDQorCQkJCSAgRExfU0lORV9PTl9NQVNLLA0K KwkJCQkgIGRhY19pbl9tdXhfbWFwLA0KKwkJCQkgIGRhY19pbl9tdXhfbWFwX3ZhbHVlKTsNCisN CitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgZGFjX2luX211eF9jb250cm9s ID0NCisJU09DX0RBUE1fRU5VTSgiREFDIFNlbGVjdCIsIGRhY19pbl9tdXhfbWFwX2VudW0pOw0K Kw0KKy8qIEFJRiBPdXQgTVVYICovDQorc3RhdGljIFNPQ19WQUxVRV9FTlVNX1NJTkdMRV9ERUNM KGFpZl9vdXRfbXV4X21hcF9lbnVtLA0KKwkJCQkgIE1UNjM1OV9BRkVfVE9QX0NPTjAsDQorCQkJ CSAgVUxfU0lORV9PTl9TRlQsDQorCQkJCSAgVUxfU0lORV9PTl9NQVNLLA0KKwkJCQkgIGRhY19p bl9tdXhfbWFwLA0KKwkJCQkgIGRhY19pbl9tdXhfbWFwX3ZhbHVlKTsNCisNCitzdGF0aWMgY29u c3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgYWlmX291dF9tdXhfY29udHJvbCA9DQorCVNPQ19E QVBNX0VOVU0oIkFJRiBPdXQgU2VsZWN0IiwgYWlmX291dF9tdXhfbWFwX2VudW0pOw0KKw0KK3N0 YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfREVDTChhaWYyX291dF9tdXhfbWFwX2VudW0sDQor CQkJCSAgTVQ2MzU5X0FGRV9UT1BfQ09OMCwNCisJCQkJICBBRERBNl9VTF9TSU5FX09OX1NGVCwN CisJCQkJICBBRERBNl9VTF9TSU5FX09OX01BU0ssDQorCQkJCSAgZGFjX2luX211eF9tYXAsDQor CQkJCSAgZGFjX2luX211eF9tYXBfdmFsdWUpOw0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25k X2tjb250cm9sX25ldyBhaWYyX291dF9tdXhfY29udHJvbCA9DQorCVNPQ19EQVBNX0VOVU0oIkFJ RiBPdXQgU2VsZWN0IiwgYWlmMl9vdXRfbXV4X21hcF9lbnVtKTsNCisNCisvKiBVTCBTUkMgTVVY ICovDQorZW51bSB7DQorCVVMX1NSQ19NVVhfQU1JQyA9IDAsDQorCVVMX1NSQ19NVVhfRE1JQywN Cit9Ow0KKw0KK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdWxfc3JjX211eF9tYXBbXSA9IHsN CisJIkFNSUMiLA0KKwkiRE1JQyIsDQorfTsNCisNCitzdGF0aWMgaW50IHVsX3NyY19tdXhfbWFw X3ZhbHVlW10gPSB7DQorCVVMX1NSQ19NVVhfQU1JQywNCisJVUxfU1JDX01VWF9ETUlDLA0KK307 DQorDQorc3RhdGljIFNPQ19WQUxVRV9FTlVNX1NJTkdMRV9ERUNMKHVsX3NyY19tdXhfbWFwX2Vu dW0sDQorCQkJCSAgTVQ2MzU5X0FGRV9VTF9TUkNfQ09OMF9MLA0KKwkJCQkgIFVMX1NETV8zX0xF VkVMX0NUTF9TRlQsDQorCQkJCSAgVUxfU0RNXzNfTEVWRUxfQ1RMX01BU0ssDQorCQkJCSAgdWxf c3JjX211eF9tYXAsDQorCQkJCSAgdWxfc3JjX211eF9tYXBfdmFsdWUpOw0KKw0KK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyB1bF9zcmNfbXV4X2NvbnRyb2wgPQ0KKwlTT0Nf REFQTV9FTlVNKCJVTF9TUkNfTVVYIFNlbGVjdCIsIHVsX3NyY19tdXhfbWFwX2VudW0pOw0KKw0K K3N0YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfREVDTCh1bDJfc3JjX211eF9tYXBfZW51bSwN CisJCQkJICBNVDYzNTlfQUZFX0FEREE2X1VMX1NSQ19DT04wX0wsDQorCQkJCSAgQUREQTZfVUxf U0RNXzNfTEVWRUxfQ1RMX1NGVCwNCisJCQkJICBBRERBNl9VTF9TRE1fM19MRVZFTF9DVExfTUFT SywNCisJCQkJICB1bF9zcmNfbXV4X21hcCwNCisJCQkJICB1bF9zcmNfbXV4X21hcF92YWx1ZSk7 DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHVsMl9zcmNfbXV4X2Nv bnRyb2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJVTF9TUkNfTVVYIFNlbGVjdCIsIHVsMl9zcmNfbXV4 X21hcF9lbnVtKTsNCisNCisvKiBWT1cgVUwgU1JDIE1VWCAqLw0KK3N0YXRpYyBTT0NfVkFMVUVf RU5VTV9TSU5HTEVfREVDTCh2b3dfdWxfc3JjX211eF9tYXBfZW51bSwNCisJCQkJICBNVDYzNTlf QUZFX1ZPV19UT1BfQ09OMCwNCisJCQkJICBWT1dfU0RNXzNfTEVWRUxfU0ZULA0KKwkJCQkgIFZP V19TRE1fM19MRVZFTF9NQVNLLA0KKwkJCQkgIHVsX3NyY19tdXhfbWFwLA0KKwkJCQkgIHVsX3Ny Y19tdXhfbWFwX3ZhbHVlKTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9u ZXcgdm93X3VsX3NyY19tdXhfY29udHJvbCA9DQorCVNPQ19EQVBNX0VOVU0oIlZPV19VTF9TUkNf TVVYIFNlbGVjdCIsIHZvd191bF9zcmNfbXV4X21hcF9lbnVtKTsNCisNCisvKiBNSVNPIE1VWCAq Lw0KK2VudW0gew0KKwlNSVNPX01VWF9VTDFfQ0gxID0gMCwNCisJTUlTT19NVVhfVUwxX0NIMiwN CisJTUlTT19NVVhfVUwyX0NIMSwNCisJTUlTT19NVVhfVUwyX0NIMiwNCit9Ow0KKw0KK3N0YXRp YyBjb25zdCBjaGFyICogY29uc3QgbWlzb19tdXhfbWFwW10gPSB7DQorCSJVTDFfQ0gxIiwNCisJ IlVMMV9DSDIiLA0KKwkiVUwyX0NIMSIsDQorCSJVTDJfQ0gyIiwNCit9Ow0KKw0KK3N0YXRpYyBp bnQgbWlzb19tdXhfbWFwX3ZhbHVlW10gPSB7DQorCU1JU09fTVVYX1VMMV9DSDEsDQorCU1JU09f TVVYX1VMMV9DSDIsDQorCU1JU09fTVVYX1VMMl9DSDEsDQorCU1JU09fTVVYX1VMMl9DSDIsDQor fTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lOR0xFX0RFQ0wobWlzbzBfbXV4X21hcF9l bnVtLA0KKwkJCQkgIE1UNjM1OV9BRkVfTVRLQUlGX01VWF9DRkcsDQorCQkJCSAgUkdfQUREQV9D SDFfU0VMX1NGVCwNCisJCQkJICBSR19BRERBX0NIMV9TRUxfTUFTSywNCisJCQkJICBtaXNvX211 eF9tYXAsDQorCQkJCSAgbWlzb19tdXhfbWFwX3ZhbHVlKTsNCisNCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHNuZF9rY29udHJvbF9uZXcgbWlzbzBfbXV4X2NvbnRyb2wgPQ0KKwlTT0NfREFQTV9FTlVN KCJNSVNPX01VWCBTZWxlY3QiLCBtaXNvMF9tdXhfbWFwX2VudW0pOw0KKw0KK3N0YXRpYyBTT0Nf VkFMVUVfRU5VTV9TSU5HTEVfREVDTChtaXNvMV9tdXhfbWFwX2VudW0sDQorCQkJCSAgTVQ2MzU5 X0FGRV9NVEtBSUZfTVVYX0NGRywNCisJCQkJICBSR19BRERBX0NIMl9TRUxfU0ZULA0KKwkJCQkg IFJHX0FEREFfQ0gyX1NFTF9NQVNLLA0KKwkJCQkgIG1pc29fbXV4X21hcCwNCisJCQkJICBtaXNv X211eF9tYXBfdmFsdWUpOw0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25l dyBtaXNvMV9tdXhfY29udHJvbCA9DQorCVNPQ19EQVBNX0VOVU0oIk1JU09fTVVYIFNlbGVjdCIs IG1pc28xX211eF9tYXBfZW51bSk7DQorDQorc3RhdGljIFNPQ19WQUxVRV9FTlVNX1NJTkdMRV9E RUNMKG1pc28yX211eF9tYXBfZW51bSwNCisJCQkJICBNVDYzNTlfQUZFX01US0FJRl9NVVhfQ0ZH LA0KKwkJCQkgIFJHX0FEREE2X0NIMV9TRUxfU0ZULA0KKwkJCQkgIFJHX0FEREE2X0NIMV9TRUxf TUFTSywNCisJCQkJICBtaXNvX211eF9tYXAsDQorCQkJCSAgbWlzb19tdXhfbWFwX3ZhbHVlKTsN CisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgbWlzbzJfbXV4X2NvbnRy b2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJNSVNPX01VWCBTZWxlY3QiLCBtaXNvMl9tdXhfbWFwX2Vu dW0pOw0KKw0KKy8qIFZPVyBBTUlDIE1VWCAqLw0KK2VudW0gew0KKwlWT1dfQU1JQ19NVVhfQURD X0wgPSAwLA0KKwlWT1dfQU1JQ19NVVhfQURDX1IsDQorCVZPV19BTUlDX01VWF9BRENfVCwNCit9 Ow0KKw0KK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgdm93X2FtaWNfbXV4X21hcFtdID0gew0K KwkiQURDX0wiLA0KKwkiQURDX1IiLA0KKwkiQURDX1QiLA0KK307DQorDQorc3RhdGljIGludCB2 b3dfYW1pY19tdXhfbWFwX3ZhbHVlW10gPSB7DQorCVZPV19BTUlDX01VWF9BRENfTCwNCisJVk9X X0FNSUNfTVVYX0FEQ19SLA0KKwlWT1dfQU1JQ19NVVhfQURDX1QsDQorfTsNCisNCisvKiBWT1cg QU1JQyBNVVggKi8NCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lOR0xFX0RFQ0wodm93X2FtaWMw X211eF9tYXBfZW51bSwNCisJCQkJICBNVDYzNTlfQUZFX1ZPV19UT1BfQ09ONCwNCisJCQkJICBS R19WT1dfQU1JQ19BREMxX1NPVVJDRV9TRUxfU0ZULA0KKwkJCQkgIFJHX1ZPV19BTUlDX0FEQzFf U09VUkNFX1NFTF9NQVNLLA0KKwkJCQkgIHZvd19hbWljX211eF9tYXAsDQorCQkJCSAgdm93X2Ft aWNfbXV4X21hcF92YWx1ZSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xf bmV3IHZvd19hbWljMF9tdXhfY29udHJvbCA9DQorCVNPQ19EQVBNX0VOVU0oIlZPV19BTUlDX01V WCBTZWxlY3QiLCB2b3dfYW1pYzBfbXV4X21hcF9lbnVtKTsNCisNCitzdGF0aWMgU09DX1ZBTFVF X0VOVU1fU0lOR0xFX0RFQ0wodm93X2FtaWMxX211eF9tYXBfZW51bSwNCisJCQkJICBNVDYzNTlf QUZFX1ZPV19UT1BfQ09ONCwNCisJCQkJICBSR19WT1dfQU1JQ19BREMyX1NPVVJDRV9TRUxfU0ZU LA0KKwkJCQkgIFJHX1ZPV19BTUlDX0FEQzJfU09VUkNFX1NFTF9NQVNLLA0KKwkJCQkgIHZvd19h bWljX211eF9tYXAsDQorCQkJCSAgdm93X2FtaWNfbXV4X21hcF92YWx1ZSk7DQorDQorc3RhdGlj IGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHZvd19hbWljMV9tdXhfY29udHJvbCA9DQor CVNPQ19EQVBNX0VOVU0oIlZPV19BTUlDX01VWCBTZWxlY3QiLCB2b3dfYW1pYzFfbXV4X21hcF9l bnVtKTsNCisNCisvKiBETUlDIE1VWCAqLw0KK2VudW0gew0KKwlETUlDX01VWF9ETUlDX0RBVEEw ID0gMCwNCisJRE1JQ19NVVhfRE1JQ19EQVRBMV9MLA0KKwlETUlDX01VWF9ETUlDX0RBVEExX0xf MSwNCisJRE1JQ19NVVhfRE1JQ19EQVRBMV9SLA0KK307DQorDQorc3RhdGljIGNvbnN0IGNoYXIg KiBjb25zdCBkbWljX211eF9tYXBbXSA9IHsNCisJIkRNSUNfREFUQTAiLA0KKwkiRE1JQ19EQVRB MV9MIiwNCisJIkRNSUNfREFUQTFfTF8xIiwNCisJIkRNSUNfREFUQTFfUiIsDQorfTsNCisNCitz dGF0aWMgaW50IGRtaWNfbXV4X21hcF92YWx1ZVtdID0gew0KKwlETUlDX01VWF9ETUlDX0RBVEEw LA0KKwlETUlDX01VWF9ETUlDX0RBVEExX0wsDQorCURNSUNfTVVYX0RNSUNfREFUQTFfTF8xLA0K KwlETUlDX01VWF9ETUlDX0RBVEExX1IsDQorfTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1f U0lOR0xFX0RFQ0woZG1pYzBfbXV4X21hcF9lbnVtLA0KKwkJCQkgIE1UNjM1OV9BRkVfTUlDX0FS UkFZX0NGRywNCisJCQkJICBSR19ETUlDX0FEQzFfU09VUkNFX1NFTF9TRlQsDQorCQkJCSAgUkdf RE1JQ19BREMxX1NPVVJDRV9TRUxfTUFTSywNCisJCQkJICBkbWljX211eF9tYXAsDQorCQkJCSAg ZG1pY19tdXhfbWFwX3ZhbHVlKTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJv bF9uZXcgZG1pYzBfbXV4X2NvbnRyb2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJETUlDX01VWCBTZWxl Y3QiLCBkbWljMF9tdXhfbWFwX2VudW0pOw0KKw0KKy8qIHVsMSBjaDIgdXNlIFJHX0RNSUNfQURD M19TT1VSQ0VfU0VMICovDQorc3RhdGljIFNPQ19WQUxVRV9FTlVNX1NJTkdMRV9ERUNMKGRtaWMx X211eF9tYXBfZW51bSwNCisJCQkJICBNVDYzNTlfQUZFX01JQ19BUlJBWV9DRkcsDQorCQkJCSAg UkdfRE1JQ19BREMzX1NPVVJDRV9TRUxfU0ZULA0KKwkJCQkgIFJHX0RNSUNfQURDM19TT1VSQ0Vf U0VMX01BU0ssDQorCQkJCSAgZG1pY19tdXhfbWFwLA0KKwkJCQkgIGRtaWNfbXV4X21hcF92YWx1 ZSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGRtaWMxX211eF9j b250cm9sID0NCisJU09DX0RBUE1fRU5VTSgiRE1JQ19NVVggU2VsZWN0IiwgZG1pYzFfbXV4X21h cF9lbnVtKTsNCisNCisvKiB1bDIgY2gxIHVzZSBSR19ETUlDX0FEQzJfU09VUkNFX1NFTCAqLw0K K3N0YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfREVDTChkbWljMl9tdXhfbWFwX2VudW0sDQor CQkJCSAgTVQ2MzU5X0FGRV9NSUNfQVJSQVlfQ0ZHLA0KKwkJCQkgIFJHX0RNSUNfQURDMl9TT1VS Q0VfU0VMX1NGVCwNCisJCQkJICBSR19ETUlDX0FEQzJfU09VUkNFX1NFTF9NQVNLLA0KKwkJCQkg IGRtaWNfbXV4X21hcCwNCisJCQkJICBkbWljX211eF9tYXBfdmFsdWUpOw0KKw0KK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBkbWljMl9tdXhfY29udHJvbCA9DQorCVNPQ19E QVBNX0VOVU0oIkRNSUNfTVVYIFNlbGVjdCIsIGRtaWMyX211eF9tYXBfZW51bSk7DQorDQorLyog QURDIEwgTVVYICovDQorZW51bSB7DQorCUFEQ19NVVhfSURMRSA9IDAsDQorCUFEQ19NVVhfQUlO MCwNCisJQURDX01VWF9QUkVBTVBMSUZJRVIsDQorCUFEQ19NVVhfSURMRTEsDQorfTsNCisNCitz dGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFkY19sZWZ0X211eF9tYXBbXSA9IHsNCisJIklkbGUi LCAiQUlOMCIsICJMZWZ0IFByZWFtcGxpZmllciIsICJJZGxlXzEiDQorfTsNCisNCitzdGF0aWMg aW50IGFkY19tdXhfbWFwX3ZhbHVlW10gPSB7DQorCUFEQ19NVVhfSURMRSwNCisJQURDX01VWF9B SU4wLA0KKwlBRENfTVVYX1BSRUFNUExJRklFUiwNCisJQURDX01VWF9JRExFMSwNCit9Ow0KKw0K K3N0YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfREVDTChhZGNfbGVmdF9tdXhfbWFwX2VudW0s DQorCQkJCSAgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMCwNCisJCQkJICBSR19BVURBRENMSU5QVVRT RUxfU0ZULA0KKwkJCQkgIFJHX0FVREFEQ0xJTlBVVFNFTF9NQVNLLA0KKwkJCQkgIGFkY19sZWZ0 X211eF9tYXAsDQorCQkJCSAgYWRjX211eF9tYXBfdmFsdWUpOw0KKw0KK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgc25kX2tjb250cm9sX25ldyBhZGNfbGVmdF9tdXhfY29udHJvbCA9DQorCVNPQ19EQVBN X0VOVU0oIkFEQyBMIFNlbGVjdCIsIGFkY19sZWZ0X211eF9tYXBfZW51bSk7DQorDQorLyogQURD IFIgTVVYICovDQorc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBhZGNfcmlnaHRfbXV4X21hcFtd ID0gew0KKwkiSWRsZSIsICJBSU4wIiwgIlJpZ2h0IFByZWFtcGxpZmllciIsICJJZGxlXzEiDQor fTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lOR0xFX0RFQ0woYWRjX3JpZ2h0X211eF9t YXBfZW51bSwNCisJCQkJICBNVDYzNTlfQVVERU5DX0FOQV9DT04xLA0KKwkJCQkgIFJHX0FVREFE Q1JJTlBVVFNFTF9TRlQsDQorCQkJCSAgUkdfQVVEQURDUklOUFVUU0VMX01BU0ssDQorCQkJCSAg YWRjX3JpZ2h0X211eF9tYXAsDQorCQkJCSAgYWRjX211eF9tYXBfdmFsdWUpOw0KKw0KK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBhZGNfcmlnaHRfbXV4X2NvbnRyb2wgPQ0K KwlTT0NfREFQTV9FTlVNKCJBREMgUiBTZWxlY3QiLCBhZGNfcmlnaHRfbXV4X21hcF9lbnVtKTsN CisNCisvKiBBREMgMyBNVVggKi8NCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFkY18zX211 eF9tYXBbXSA9IHsNCisJIklkbGUiLCAiQUlOMCIsICJQcmVhbXBsaWZpZXIiLCAiSWRsZV8xIg0K K307DQorDQorc3RhdGljIFNPQ19WQUxVRV9FTlVNX1NJTkdMRV9ERUNMKGFkY18zX211eF9tYXBf ZW51bSwNCisJCQkJICBNVDYzNTlfQVVERU5DX0FOQV9DT04yLA0KKwkJCQkgIFJHX0FVREFEQzNJ TlBVVFNFTF9TRlQsDQorCQkJCSAgUkdfQVVEQURDM0lOUFVUU0VMX01BU0ssDQorCQkJCSAgYWRj XzNfbXV4X21hcCwNCisJCQkJICBhZGNfbXV4X21hcF92YWx1ZSk7DQorDQorc3RhdGljIGNvbnN0 IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGFkY18zX211eF9jb250cm9sID0NCisJU09DX0RBUE1f RU5VTSgiQURDIDMgU2VsZWN0IiwgYWRjXzNfbXV4X21hcF9lbnVtKTsNCisNCisvKiBQR0EgTCBN VVggKi8NCitlbnVtIHsNCisJUEdBX0xfTVVYX05PTkUgPSAwLA0KKwlQR0FfTF9NVVhfQUlOMCwN CisJUEdBX0xfTVVYX0FJTjEsDQorfTsNCisNCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBn YV9sX211eF9tYXBbXSA9IHsNCisJIk5vbmUiLCAiQUlOMCIsICJBSU4xIg0KK307DQorDQorc3Rh dGljIGludCBwZ2FfbF9tdXhfbWFwX3ZhbHVlW10gPSB7DQorCVBHQV9MX01VWF9OT05FLA0KKwlQ R0FfTF9NVVhfQUlOMCwNCisJUEdBX0xfTVVYX0FJTjENCit9Ow0KKw0KK3N0YXRpYyBTT0NfVkFM VUVfRU5VTV9TSU5HTEVfREVDTChwZ2FfbGVmdF9tdXhfbWFwX2VudW0sDQorCQkJCSAgTVQ2MzU5 X0FVREVOQ19BTkFfQ09OMCwNCisJCQkJICBSR19BVURQUkVBTVBMSU5QVVRTRUxfU0ZULA0KKwkJ CQkgIFJHX0FVRFBSRUFNUExJTlBVVFNFTF9NQVNLLA0KKwkJCQkgIHBnYV9sX211eF9tYXAsDQor CQkJCSAgcGdhX2xfbXV4X21hcF92YWx1ZSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRf a2NvbnRyb2xfbmV3IHBnYV9sZWZ0X211eF9jb250cm9sID0NCisJU09DX0RBUE1fRU5VTSgiUEdB IEwgU2VsZWN0IiwgcGdhX2xlZnRfbXV4X21hcF9lbnVtKTsNCisNCisvKiBQR0EgUiBNVVggKi8N CitlbnVtIHsNCisJUEdBX1JfTVVYX05PTkUgPSAwLA0KKwlQR0FfUl9NVVhfQUlOMiwNCisJUEdB X1JfTVVYX0FJTjMsDQorCVBHQV9SX01VWF9BSU4wLA0KK307DQorDQorc3RhdGljIGNvbnN0IGNo YXIgKiBjb25zdCBwZ2Ffcl9tdXhfbWFwW10gPSB7DQorCSJOb25lIiwgIkFJTjIiLCAiQUlOMyIs ICJBSU4wIg0KK307DQorDQorc3RhdGljIGludCBwZ2Ffcl9tdXhfbWFwX3ZhbHVlW10gPSB7DQor CVBHQV9SX01VWF9OT05FLA0KKwlQR0FfUl9NVVhfQUlOMiwNCisJUEdBX1JfTVVYX0FJTjMsDQor CVBHQV9SX01VWF9BSU4wDQorfTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lOR0xFX0RF Q0wocGdhX3JpZ2h0X211eF9tYXBfZW51bSwNCisJCQkJICBNVDYzNTlfQVVERU5DX0FOQV9DT04x LA0KKwkJCQkgIFJHX0FVRFBSRUFNUFJJTlBVVFNFTF9TRlQsDQorCQkJCSAgUkdfQVVEUFJFQU1Q UklOUFVUU0VMX01BU0ssDQorCQkJCSAgcGdhX3JfbXV4X21hcCwNCisJCQkJICBwZ2Ffcl9tdXhf bWFwX3ZhbHVlKTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgcGdh X3JpZ2h0X211eF9jb250cm9sID0NCisJU09DX0RBUE1fRU5VTSgiUEdBIFIgU2VsZWN0IiwgcGdh X3JpZ2h0X211eF9tYXBfZW51bSk7DQorDQorLyogUEdBIDMgTVVYICovDQorZW51bSB7DQorCVBH QV8zX01VWF9OT05FID0gMCwNCisJUEdBXzNfTVVYX0FJTjMsDQorCVBHQV8zX01VWF9BSU4yLA0K K307DQorDQorc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwZ2FfM19tdXhfbWFwW10gPSB7DQor CSJOb25lIiwgIkFJTjMiLCAiQUlOMiINCit9Ow0KKw0KK3N0YXRpYyBpbnQgcGdhXzNfbXV4X21h cF92YWx1ZVtdID0gew0KKwlQR0FfM19NVVhfTk9ORSwNCisJUEdBXzNfTVVYX0FJTjMsDQorCVBH QV8zX01VWF9BSU4yDQorfTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lOR0xFX0RFQ0wo cGdhXzNfbXV4X21hcF9lbnVtLA0KKwkJCQkgIE1UNjM1OV9BVURFTkNfQU5BX0NPTjIsDQorCQkJ CSAgUkdfQVVEUFJFQU1QM0lOUFVUU0VMX1NGVCwNCisJCQkJICBSR19BVURQUkVBTVAzSU5QVVRT RUxfTUFTSywNCisJCQkJICBwZ2FfM19tdXhfbWFwLA0KKwkJCQkgIHBnYV8zX211eF9tYXBfdmFs dWUpOw0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBwZ2FfM19tdXhf Y29udHJvbCA9DQorCVNPQ19EQVBNX0VOVU0oIlBHQSAzIFNlbGVjdCIsIHBnYV8zX211eF9tYXBf ZW51bSk7DQorDQorc3RhdGljIGludCBtdF9jbGtzcV9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBt X3dpZGdldCAqdywNCisJCQkgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAg aW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9z b2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQorCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJp diA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisNCisJZGV2X2RiZyhw cml2LT5kZXYsICIlcygpLCBldmVudCA9IDB4JXhcbiIsIF9fZnVuY19fLCBldmVudCk7DQorDQor CXN3aXRjaCAoZXZlbnQpIHsNCisJY2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNVToNCisJCS8qIGF1 ZGlvIGNsayBzb3VyY2UgZnJvbSBpbnRlcm5hbCBkY3hvICovDQorCQlyZWdtYXBfdXBkYXRlX2Jp dHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9DT04yMywNCisJCQkJICAgUkdfQ0xL U1FfSU5fU0VMX1RFU1RfTUFTS19TRlQsDQorCQkJCSAgIDB4MCk7DQorCQlicmVhazsNCisJZGVm YXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50 IG10X3NnZW5fZXZlbnQoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQorCQkJIHN0cnVj dCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSBpbnQgZXZlbnQpDQorew0KKwlzdHJ1Y3Qg c25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5k YXBtKTsNCisJc3RydWN0IG10NjM1OV9wcml2ICpwcml2ID0gc25kX3NvY19jb21wb25lbnRfZ2V0 X2RydmRhdGEoY21wbnQpOw0KKw0KKwlkZXZfZGJnKHByaXYtPmRldiwgIiVzKCksIGV2ZW50ID0g MHgleFxuIiwgX19mdW5jX18sIGV2ZW50KTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNl IFNORF9TT0NfREFQTV9QUkVfUE1VOg0KKwkJLyogc2RtIGF1ZGlvIGZpZm8gY2xvY2sgcG93ZXIg b24gKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRlVOQ19BVURfQ09O MiwgMHgwMDA2KTsNCisJCS8qIHNjcmFtYmxlciBjbG9jayBvbiBlbmFibGUgKi8NCisJCXJlZ21h cF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRlVOQ19BVURfQ09OMCwgMHhDQkExKTsNCisJ CS8qIHNkbSBwb3dlciBvbiAqLw0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5 X0FGVU5DX0FVRF9DT04yLCAweDAwMDMpOw0KKwkJLyogc2RtIGZpZm8gZW5hYmxlICovDQorCQly ZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZVTkNfQVVEX0NPTjIsIDB4MDAwQik7 DQorDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1NHRU5f Q0ZHMCwNCisJCQkJICAgMHhmZjNmLA0KKwkJCQkgICAweDAwMDApOw0KKwkJcmVnbWFwX3VwZGF0 ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9TR0VOX0NGRzEsDQorCQkJCSAgIDB4ZmZm ZiwNCisJCQkJICAgMHgwMDAxKTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NU X1BNRDoNCisJCS8qIERMIHNjcmFtYmxlciBkaXNhYmxpbmcgc2VxdWVuY2UgKi8NCisJCXJlZ21h cF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRlVOQ19BVURfQ09OMiwgMHgwMDAwKTsNCisJ CXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRlVOQ19BVURfQ09OMCwgMHhjYmEw KTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7 DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRrX2hwX2VuYWJsZShzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnBy aXYpDQorew0KKwlpZiAocHJpdi0+aHBfaGlmaV9tb2RlKSB7DQorCQkvKiBTZXQgSFAgRFIgYmlh cyBjdXJyZW50IG9wdGltaXphdGlvbiwgMDEwOiA2dUEgKi8NCisJCXJlZ21hcF91cGRhdGVfYml0 cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjExLA0KKwkJCQkgICBEUkJJQVNf SFBfTUFTS19TRlQsDQorCQkJCSAgIERSQklBU182VUEgPDwgRFJCSUFTX0hQX1NGVCk7DQorCQkv KiBTZXQgSFAgJiBaQ0QgYmlhcyBjdXJyZW50IG9wdGltaXphdGlvbiAqLw0KKwkJLyogMDE6IFpD RDogNHVBLCBIUC9IUy9MTzogNXVBICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVn bWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04xMiwNCisJCQkJICAgSUJJQVNfWkNEX01BU0tfU0ZU LA0KKwkJCQkgICBJQklBU19aQ0RfNFVBIDw8IElCSUFTX1pDRF9TRlQpOw0KKwkJcmVnbWFwX3Vw ZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMTIsDQorCQkJCSAg IElCSUFTX0hQX01BU0tfU0ZULA0KKwkJCQkgICBJQklBU181VUEgPDwgSUJJQVNfSFBfU0ZUKTsN CisJfSBlbHNlIHsNCisJCS8qIFNldCBIUCBEUiBiaWFzIGN1cnJlbnQgb3B0aW1pemF0aW9uLCAw MDE6IDV1QSAqLw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FV RERFQ19BTkFfQ09OMTEsDQorCQkJCSAgIERSQklBU19IUF9NQVNLX1NGVCwNCisJCQkJICAgRFJC SUFTXzVVQSA8PCBEUkJJQVNfSFBfU0ZUKTsNCisJCS8qIFNldCBIUCAmIFpDRCBiaWFzIGN1cnJl bnQgb3B0aW1pemF0aW9uICovDQorCQkvKiAwMDogWkNEOiAzdUEsIEhQL0hTL0xPOiA0dUEgKi8N CisJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NP TjEyLA0KKwkJCQkgICBJQklBU19aQ0RfTUFTS19TRlQsDQorCQkJCSAgIElCSUFTX1pDRF8zVUEg PDwgSUJJQVNfWkNEX1NGVCk7DQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBN VDYzNTlfQVVEREVDX0FOQV9DT04xMiwNCisJCQkJICAgSUJJQVNfSFBfTUFTS19TRlQsDQorCQkJ CSAgIElCSUFTXzRVQSA8PCBJQklBU19IUF9TRlQpOw0KKwl9DQorDQorCS8qIEhQIGRhbXAgY2ly Y3VpdCBlbmFibGUgKi8NCisJLypFbmFibGUgSFBSTi9IUExOIG91dHB1dCA0SyB0byBWQ00gKi8N CisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMTAsIDB4 MDA4Nyk7DQorDQorCS8qIEhQIEZlZWRiYWNrIENhcCBzZWxlY3QgMidiMDA6IDE1cEYgKi8NCisJ LyogZm9yID49IDk2S0h6IHNhbXBsaW5nIHJhdGU6IDInYjAxOiAxMC41cEYgKi8NCisJaWYgKHBy aXYtPmRsX3JhdGVbTVQ2MzU5X0FJRl8xXSA+PSA5NjAwMCkNCisJCXJlZ21hcF91cGRhdGVfYml0 cyhwcml2LT5yZWdtYXAsDQorCQkJCSAgIE1UNjM1OV9BVURERUNfQU5BX0NPTjQsDQorCQkJCSAg IFJHX0FVREhQSEZDT01QQlVGR0FJTlNFTF9WQVVEUDMyX01BU0tfU0ZULA0KKwkJCQkgICAweDEg PDwgUkdfQVVESFBIRkNPTVBCVUZHQUlOU0VMX1ZBVURQMzJfU0ZUKTsNCisJZWxzZQ0KKwkJcmVn bWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09ONCwgMHgwMDAwKTsN CisNCisJLyogU2V0IEhQUC9OIFNUQiBlbmhhbmNlIGNpcmN1aXRzICovDQorCXJlZ21hcF93cml0 ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjIsIDB4ZjEzMyk7DQorDQorCS8q IEVuYWJsZSBIUCBhdXggb3V0cHV0IHN0YWdlICovDQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdt YXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjEsIDB4MDAwYyk7DQorCS8qIEVuYWJsZSBIUCBhdXgg ZmVlZGJhY2sgbG9vcCAqLw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVE REVDX0FOQV9DT04xLCAweDAwM2MpOw0KKwkvKiBFbmFibGUgSFAgYXV4IENNRkIgbG9vcCAqLw0K KwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT045LCAweDBj MDApOw0KKwkvKiBFbmFibGUgSFAgZHJpdmVyIGJpYXMgY2lyY3VpdHMgKi8NCisJcmVnbWFwX3dy aXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMCwgMHgzMGMwKTsNCisJLyog RW5hYmxlIEhQIGRyaXZlciBjb3JlIGNpcmN1aXRzICovDQorCXJlZ21hcF93cml0ZShwcml2LT5y ZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjAsIDB4MzBmMCk7DQorCS8qIFNob3J0IEhQIG1h aW4gb3V0cHV0IHRvIEhQIGF1eCBvdXRwdXQgc3RhZ2UgKi8NCisJcmVnbWFwX3dyaXRlKHByaXYt PnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMSwgMHgwMGZjKTsNCisNCisJLyogSW5jcmVh c2UgSFAgaW5wdXQgcGFpciBjdXJyZW50IHRvIEhQTSBzdGVwIGJ5IHN0ZXAgKi8NCisJaHBfaW5f cGFpcl9jdXJyZW50KHByaXYsIHRydWUpOw0KKw0KKwkvKiBFbmFibGUgSFAgbWFpbiBDTUZCIGxv b3AgKi8NCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09O OSwgMHgwZTAwKTsNCisJLyogRGlzYWJsZSBIUCBhdXggQ01GQiBsb29wICovDQorCXJlZ21hcF93 cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjksIDB4MDIwMCk7DQorDQor CS8qIEVuYWJsZSBIUCBtYWluIG91dHB1dCBzdGFnZSAqLw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+ cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04xLCAweDAwZmYpOw0KKwkvKiBFbmFibGUgSFBS L0wgbWFpbiBvdXRwdXQgc3RhZ2Ugc3RlcCBieSBzdGVwICovDQorCWhwX21haW5fb3V0cHV0X3Jh bXAocHJpdiwgdHJ1ZSk7DQorDQorCS8qIFJlZHVjZSBIUCBhdXggZmVlZGJhY2sgbG9vcCBnYWlu ICovDQorCWhwX2F1eF9mZWVkYmFja19sb29wX2dhaW5fcmFtcChwcml2LCB0cnVlKTsNCisJLyog RGlzYWJsZSBIUCBhdXggZmVlZGJhY2sgbG9vcCAqLw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVn bWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04xLCAweDc3Y2YpOw0KKw0KKwkvKiBhcHBseSB2b2x1 bWUgc2V0dGluZyAqLw0KKwloZWFkc2V0X3ZvbHVtZV9yYW1wKHByaXYsDQorCQkJICAgIERMX0dB SU5fTl8yMkRCLA0KKwkJCSAgICBwcml2LT5hbmFfZ2FpbltBVURJT19BTkFMT0dfVk9MVU1FX0hQ T1VUTF0pOw0KKw0KKwkvKiBEaXNhYmxlIEhQIGF1eCBvdXRwdXQgc3RhZ2UgKi8NCisJcmVnbWFw X3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMSwgMHg3N2MzKTsNCisJ LyogVW5zaG9ydCBIUCBtYWluIG91dHB1dCB0byBIUCBhdXggb3V0cHV0IHN0YWdlICovDQorCXJl Z21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjEsIDB4NzcwMyk7 DQorCXVzbGVlcF9yYW5nZSgxMDAsIDEyMCk7DQorDQorCS8qIEVuYWJsZSBBVURfQ0xLICovDQor CW10NjM1OV9zZXRfZGVjb2Rlcl9jbGsocHJpdiwgdHJ1ZSk7DQorDQorCS8qIEVuYWJsZSBBdWRp byBEQUMgICovDQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5B X0NPTjAsIDB4MzBmZik7DQorCWlmIChwcml2LT5ocF9oaWZpX21vZGUpIHsNCisJCS8qIEVuYWJs ZSBsb3ctbm9pc2UgbW9kZSBvZiBEQUMgKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAs IE1UNjM1OV9BVURERUNfQU5BX0NPTjksIDB4ZjIwMSk7DQorCX0gZWxzZSB7DQorCQkvKiBEaXNh YmxlIGxvdy1ub2lzZSBtb2RlIG9mIERBQyAqLw0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21h cCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OOSwgMHhmMjAwKTsNCisJfQ0KKwl1c2xlZXBfcmFuZ2Uo MTAwLCAxMjApOw0KKw0KKwkvKiBTd2l0Y2ggSFBMIE1VWCB0byBhdWRpbyBEQUMgKi8NCisJcmVn bWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMCwgMHgzMmZmKTsN CisJLyogU3dpdGNoIEhQUiBNVVggdG8gYXVkaW8gREFDICovDQorCXJlZ21hcF93cml0ZShwcml2 LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjAsIDB4M2FmZik7DQorDQorCS8qIERpc2Fi bGUgUHVsbC1kb3duIEhQTC9SIHRvIEFWU1MyOF9BVUQgKi8NCisJaHBfcHVsbF9kb3duKHByaXYs IGZhbHNlKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRrX2hwX2Rpc2Fi bGUoc3RydWN0IG10NjM1OV9wcml2ICpwcml2KQ0KK3sNCisJLyogUHVsbC1kb3duIEhQTC9SIHRv IEFWU1MyOF9BVUQgKi8NCisJaHBfcHVsbF9kb3duKHByaXYsIHRydWUpOw0KKw0KKwkvKiBIUFIv SFBMIG11eCB0byBvcGVuICovDQorCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1U NjM1OV9BVURERUNfQU5BX0NPTjAsDQorCQkJICAgMHgwZjAwLCAweDAwMDApOw0KKw0KKwkvKiBE aXNhYmxlIGxvdy1ub2lzZSBtb2RlIG9mIERBQyAqLw0KKwlyZWdtYXBfdXBkYXRlX2JpdHMocHJp di0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT045LA0KKwkJCSAgIDB4MDAwMSwgMHgwMDAw KTsNCisNCisJLyogRGlzYWJsZSBBdWRpbyBEQUMgKi8NCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHBy aXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMCwNCisJCQkgICAweDAwMGYsIDB4MDAw MCk7DQorDQorCS8qIERpc2FibGUgQVVEX0NMSyAqLw0KKwltdDYzNTlfc2V0X2RlY29kZXJfY2xr KHByaXYsIGZhbHNlKTsNCisNCisJLyogU2hvcnQgSFAgbWFpbiBvdXRwdXQgdG8gSFAgYXV4IG91 dHB1dCBzdGFnZSAqLw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVD X0FOQV9DT04xLCAweDc3YzMpOw0KKwkvKiBFbmFibGUgSFAgYXV4IG91dHB1dCBzdGFnZSAqLw0K KwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04xLCAweDc3 Y2YpOw0KKw0KKwkvKiBkZWNyZWFzZSBIUEwvUiBnYWluIHRvIG5vcm1hbCBnYWluIHN0ZXAgYnkg c3RlcCAqLw0KKwloZWFkc2V0X3ZvbHVtZV9yYW1wKHByaXYsDQorCQkJICAgIHByaXYtPmFuYV9n YWluW0FVRElPX0FOQUxPR19WT0xVTUVfSFBPVVRMXSwNCisJCQkgICAgRExfR0FJTl9OXzIyREIp Ow0KKw0KKwkvKiBFbmFibGUgSFAgYXV4IGZlZWRiYWNrIGxvb3AgKi8NCisJcmVnbWFwX3dyaXRl KHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMSwgMHg3N2ZmKTsNCisNCisJLyog UmVkdWNlIEhQIGF1eCBmZWVkYmFjayBsb29wIGdhaW4gKi8NCisJaHBfYXV4X2ZlZWRiYWNrX2xv b3BfZ2Fpbl9yYW1wKHByaXYsIGZhbHNlKTsNCisNCisJLyogZGVjcmVhc2UgSFBSL0wgbWFpbiBv dXRwdXQgc3RhZ2Ugc3RlcCBieSBzdGVwICovDQorCWhwX21haW5fb3V0cHV0X3JhbXAocHJpdiwg ZmFsc2UpOw0KKw0KKwkvKiBEaXNhYmxlIEhQIG1haW4gb3V0cHV0IHN0YWdlICovDQorCXJlZ21h cF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjEsIDB4Mywg MHgwKTsNCisNCisJLyogRW5hYmxlIEhQIGF1eCBDTUZCIGxvb3AgKi8NCisJcmVnbWFwX3dyaXRl KHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OOSwgMHgwZTAxKTsNCisNCisJLyog RGlzYWJsZSBIUCBtYWluIENNRkIgbG9vcCAqLw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFw LCBNVDYzNTlfQVVEREVDX0FOQV9DT045LCAweDBjMDEpOw0KKw0KKwkvKiBEZWNyZWFzZSBIUCBp bnB1dCBwYWlyIGN1cnJlbnQgdG8gMidiMDAgc3RlcCBieSBzdGVwICovDQorCWhwX2luX3BhaXJf Y3VycmVudChwcml2LCBmYWxzZSk7DQorDQorCS8qIFVuc2hvcnQgSFAgbWFpbiBvdXRwdXQgdG8g SFAgYXV4IG91dHB1dCBzdGFnZSAqLw0KKwlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFw LCBNVDYzNTlfQVVEREVDX0FOQV9DT04xLA0KKwkJCSAgIDB4MyA8PCA2LCAweDApOw0KKw0KKwkv KiBEaXNhYmxlIEhQIGRyaXZlciBjb3JlIGNpcmN1aXRzICovDQorCXJlZ21hcF91cGRhdGVfYml0 cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjAsDQorCQkJICAgMHgzIDw8IDQs IDB4MCk7DQorDQorCS8qIERpc2FibGUgSFAgZHJpdmVyIGJpYXMgY2lyY3VpdHMgKi8NCisJcmVn bWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMCwNCisJ CQkgICAweDMgPDwgNiwgMHgwKTsNCisNCisJLyogRGlzYWJsZSBIUCBhdXggQ01GQiBsb29wICov DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjksIDB4 MjAxKTsNCisNCisJLyogRGlzYWJsZSBIUCBhdXggZmVlZGJhY2sgbG9vcCAqLw0KKwlyZWdtYXBf dXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04xLA0KKwkJCSAg IDB4MyA8PCA0LCAweDApOw0KKw0KKwkvKiBEaXNhYmxlIEhQIGF1eCBvdXRwdXQgc3RhZ2UgKi8N CisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09O MSwNCisJCQkgICAweDMgPDwgMiwgMHgwKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBp bnQgbXRfaHBfZXZlbnQoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQorCQkgICAgICAg c3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsDQorCQkgICAgICAgaW50IGV2ZW50KQ0KK3sN CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFwbV90b19jb21w b25lbnQody0+ZGFwbSk7DQorCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29t cG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisJdW5zaWduZWQgaW50IG11eCA9IGRhcG1fa2Nv bnRyb2xfZ2V0X3ZhbHVlKHctPmtjb250cm9sc1swXSk7DQorCWludCBkZXZpY2UgPSBERVZJQ0Vf SFA7DQorDQorCWRldl9pbmZvKHByaXYtPmRldiwgIiVzKCksIGV2ZW50IDB4JXgsIGRldl9jb3Vu dGVyW0RFVl9IUF0gJWQsIG11eCAldVxuIiwNCisJCSBfX2Z1bmNfXywNCisJCSBldmVudCwNCisJ CSBwcml2LT5kZXZfY291bnRlcltkZXZpY2VdLA0KKwkJIG11eCk7DQorDQorCXN3aXRjaCAoZXZl bnQpIHsNCisJY2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNVToNCisJCXByaXYtPmRldl9jb3VudGVy W2RldmljZV0rKzsNCisJCWlmIChwcml2LT5kZXZfY291bnRlcltkZXZpY2VdID4gMSkNCisJCQli cmVhazsJLyogYWxyZWFkeSBlbmFibGVkLCBkbyBub3RoaW5nICovDQorCQllbHNlIGlmIChwcml2 LT5kZXZfY291bnRlcltkZXZpY2VdIDw9IDApDQorCQkJZGV2X3dhcm4ocHJpdi0+ZGV2LCAiJXMo KSwgZGV2X2NvdW50ZXJbREVWX0hQXSAlZCA8PSAwXG4iLA0KKwkJCQkgX19mdW5jX18sDQorCQkJ CSBwcml2LT5kZXZfY291bnRlcltkZXZpY2VdKTsNCisNCisJCXByaXYtPm11eF9zZWxlY3RbTVVY X0hQX0xdID0gbXV4Ow0KKw0KKwkJaWYgKG11eCA9PSBIUF9NVVhfSFApDQorCQkJbXRrX2hwX2Vu YWJsZShwcml2KTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVfUE1EOg0KKwkJ cHJpdi0+ZGV2X2NvdW50ZXJbZGV2aWNlXS0tOw0KKwkJaWYgKHByaXYtPmRldl9jb3VudGVyW2Rl dmljZV0gPiAwKQ0KKwkJCWJyZWFrOwkvKiBzdGlsbCBiZWluZyB1c2VkLCBkb24ndCBjbG9zZSAq Lw0KKwkJZWxzZSBpZiAocHJpdi0+ZGV2X2NvdW50ZXJbZGV2aWNlXSA8IDApIHsNCisJCQlkZXZf d2Fybihwcml2LT5kZXYsICIlcygpLCBkZXZfY291bnRlcltERVZfSFBdICVkIDwgMFxuIiwNCisJ CQkJIF9fZnVuY19fLA0KKwkJCQkgcHJpdi0+ZGV2X2NvdW50ZXJbZGV2aWNlXSk7DQorCQkJcHJp di0+ZGV2X2NvdW50ZXJbZGV2aWNlXSA9IDA7DQorCQkJYnJlYWs7DQorCQl9DQorDQorCQlpZiAo cHJpdi0+bXV4X3NlbGVjdFtNVVhfSFBfTF0gPT0gSFBfTVVYX0hQKQ0KKwkJCW10a19ocF9kaXNh YmxlKHByaXYpOw0KKw0KKwkJcHJpdi0+bXV4X3NlbGVjdFtNVVhfSFBfTF0gPSBtdXg7DQorCQli cmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisN CitzdGF0aWMgaW50IG10X3Jjdl9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywN CisJCQlzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQlpbnQgZXZlbnQpDQorew0K KwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBv bmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10NjM1OV9wcml2ICpwcml2ID0gc25kX3NvY19jb21w b25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKw0KKwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygp LCBldmVudCAweCV4LCBtdXggJXVcbiIsDQorCQkgX19mdW5jX18sDQorCQkgZXZlbnQsDQorCQkg ZGFwbV9rY29udHJvbF9nZXRfdmFsdWUody0+a2NvbnRyb2xzWzBdKSk7DQorDQorCXN3aXRjaCAo ZXZlbnQpIHsNCisJY2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNVToNCisJCS8qIERpc2FibGUgaGFu ZHNldCBzaG9ydC1jaXJjdWl0IHByb3RlY3Rpb24gKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5y ZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjYsIDB4MDAxMCk7DQorDQorCQkvKiBTZXQgUkNW IERSIGJpYXMgY3VycmVudCBvcHRpbWl6YXRpb24sIDAxMDogNnVBICovDQorCQlyZWdtYXBfdXBk YXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04xMSwNCisJCQkJICAg RFJCSUFTX0hTX01BU0tfU0ZULA0KKwkJCQkgICBEUkJJQVNfNlVBIDw8IERSQklBU19IU19TRlQp Ow0KKwkJLyogU2V0IFJDViAmIFpDRCBiaWFzIGN1cnJlbnQgb3B0aW1pemF0aW9uICovDQorCQkv KiAwMTogWkNEOiA0dUEsIEhQL0hTL0xPOiA1dUEgKi8NCisJCXJlZ21hcF91cGRhdGVfYml0cyhw cml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjEyLA0KKwkJCQkgICBJQklBU19aQ0Rf TUFTS19TRlQsDQorCQkJCSAgIElCSUFTX1pDRF80VUEgPDwgSUJJQVNfWkNEX1NGVCk7DQorCQly ZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04xMiwN CisJCQkJICAgSUJJQVNfSFNfTUFTS19TRlQsDQorCQkJCSAgIElCSUFTXzVVQSA8PCBJQklBU19I U19TRlQpOw0KKw0KKwkJLyogU2V0IEhTIFNUQiBlbmhhbmNlIGNpcmN1aXRzICovDQorCQlyZWdt YXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT042LCAweDAwOTApOw0K Kw0KKwkJLyogU2V0IEhTIG91dHB1dCBzdGFnZSAoMydiMTExID0gOHgpICovDQorCQlyZWdtYXBf d3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04xMCwgMHg3MDAwKTsNCisN CisJCS8qIEVuYWJsZSBIUyBkcml2ZXIgYmlhcyBjaXJjdWl0cyAqLw0KKwkJcmVnbWFwX3dyaXRl KHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09ONiwgMHgwMDkyKTsNCisJCS8qIEVu YWJsZSBIUyBkcml2ZXIgY29yZSBjaXJjdWl0cyAqLw0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJl Z21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09ONiwgMHgwMDkzKTsNCisNCisJCS8qIFNldCBIUyBn YWluIHRvIG5vcm1hbCBnYWluIHN0ZXAgYnkgc3RlcCAqLw0KKwkJcmVnbWFwX3dyaXRlKHByaXYt PnJlZ21hcCwgTVQ2MzU5X1pDRF9DT04zLA0KKwkJCSAgICAgcHJpdi0+YW5hX2dhaW5bQVVESU9f QU5BTE9HX1ZPTFVNRV9IU09VVExdKTsNCisNCisJCS8qIEVuYWJsZSBBVURfQ0xLICovDQorCQlt dDYzNTlfc2V0X2RlY29kZXJfY2xrKHByaXYsIHRydWUpOw0KKw0KKwkJLyogRW5hYmxlIEF1ZGlv IERBQyAgKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5B X0NPTjAsIDB4MDAwOSk7DQorCQkvKiBFbmFibGUgbG93LW5vaXNlIG1vZGUgb2YgREFDICovDQor CQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT045LCAweDAw MDEpOw0KKwkJLyogU3dpdGNoIEhTIE1VWCB0byBhdWRpbyBEQUMgKi8NCisJCXJlZ21hcF93cml0 ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjYsIDB4MDA5Yik7DQorCQlicmVh azsNCisJY2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNRDoNCisJCS8qIEhTIG11eCB0byBvcGVuICov DQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9D T042LA0KKwkJCQkgICBSR19BVURIU01VWElOUFVUU0VMX1ZBVURQMzJfTUFTS19TRlQsDQorCQkJ CSAgIFJDVl9NVVhfT1BFTik7DQorDQorCQkvKiBEaXNhYmxlIEF1ZGlvIERBQyAqLw0KKwkJcmVn bWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMCwNCisJ CQkJICAgMHgwMDBmLCAweDAwMDApOw0KKw0KKwkJLyogRGlzYWJsZSBBVURfQ0xLICovDQorCQlt dDYzNTlfc2V0X2RlY29kZXJfY2xrKHByaXYsIGZhbHNlKTsNCisNCisJCS8qIGRlY3JlYXNlIEhT IGdhaW4gdG8gbWluaW11bSBnYWluIHN0ZXAgYnkgc3RlcCAqLw0KKwkJcmVnbWFwX3dyaXRlKHBy aXYtPnJlZ21hcCwgTVQ2MzU5X1pDRF9DT04zLCBETF9HQUlOX05fNDBEQik7DQorDQorCQkvKiBE aXNhYmxlIEhTIGRyaXZlciBjb3JlIGNpcmN1aXRzICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMo cHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT042LA0KKwkJCQkgICBSR19BVURIU1BX UlVQX1ZBVURQMzJfTUFTS19TRlQsIDB4MCk7DQorDQorCQkvKiBEaXNhYmxlIEhTIGRyaXZlciBi aWFzIGNpcmN1aXRzICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYz NTlfQVVEREVDX0FOQV9DT042LA0KKwkJCQkgICBSR19BVURIU1BXUlVQX0lCSUFTX1ZBVURQMzJf TUFTS19TRlQsIDB4MCk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQor DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10X2xvX2V2ZW50KHN0cnVjdCBzbmRf c29jX2RhcG1fd2lkZ2V0ICp3LA0KKwkJICAgICAgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250 cm9sLA0KKwkJICAgICAgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVu dCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3Qg bXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7 DQorDQorCWRldl9pbmZvKHByaXYtPmRldiwgIiVzKCksIGV2ZW50IDB4JXgsIG11eCAldVxuIiwN CisJCSBfX2Z1bmNfXywNCisJCSBldmVudCwNCisJCSBkYXBtX2tjb250cm9sX2dldF92YWx1ZSh3 LT5rY29udHJvbHNbMF0pKTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0Nf REFQTV9QUkVfUE1VOg0KKwkJLyogRGlzYWJsZSBoYW5kc2V0IHNob3J0LWNpcmN1aXQgcHJvdGVj dGlvbiAqLw0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFf Q09ONywgMHgwMDEwKTsNCisNCisJCS8qIFNldCBMTyBEUiBiaWFzIGN1cnJlbnQgb3B0aW1pemF0 aW9uLCAwMTA6IDZ1QSAqLw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2 MzU5X0FVRERFQ19BTkFfQ09OMTEsDQorCQkJCSAgIERSQklBU19MT19NQVNLX1NGVCwNCisJCQkJ ICAgRFJCSUFTXzZVQSA8PCBEUkJJQVNfTE9fU0ZUKTsNCisJCS8qIFNldCBMTyAmIFpDRCBiaWFz IGN1cnJlbnQgb3B0aW1pemF0aW9uICovDQorCQkvKiAwMTogWkNEOiA0dUEsIEhQL0hTL0xPOiA1 dUEgKi8NCisJCWlmIChwcml2LT5kZXZfY291bnRlcltERVZJQ0VfSFBdID09IDApDQorCQkJcmVn bWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJCSAgIE1UNjM1OV9BVURERUNfQU5B X0NPTjEyLA0KKwkJCQkJICAgSUJJQVNfWkNEX01BU0tfU0ZULA0KKwkJCQkJICAgSUJJQVNfWkNE XzRVQSA8PCBJQklBU19aQ0RfU0ZUKTsNCisNCisJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5y ZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjEyLA0KKwkJCQkgICBJQklBU19MT19NQVNLX1NG VCwNCisJCQkJICAgSUJJQVNfNVVBIDw8IElCSUFTX0xPX1NGVCk7DQorDQorCQkvKiBTZXQgTE8g U1RCIGVuaGFuY2UgY2lyY3VpdHMgKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1U NjM1OV9BVURERUNfQU5BX0NPTjcsIDB4MDExMCk7DQorDQorCQkvKiBFbmFibGUgTE8gZHJpdmVy IGJpYXMgY2lyY3VpdHMgKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9B VURERUNfQU5BX0NPTjcsIDB4MDExMik7DQorCQkvKiBFbmFibGUgTE8gZHJpdmVyIGNvcmUgY2ly Y3VpdHMgKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5B X0NPTjcsIDB4MDExMyk7DQorDQorCQkvKiBTZXQgTE8gZ2FpbiB0byBub3JtYWwgZ2FpbiBzdGVw IGJ5IHN0ZXAgKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9aQ0RfQ09O MSwNCisJCQkgICAgIHByaXYtPmFuYV9nYWluW0FVRElPX0FOQUxPR19WT0xVTUVfTElORU9VVExd KTsNCisNCisJCS8qIEVuYWJsZSBBVURfQ0xLICovDQorCQltdDYzNTlfc2V0X2RlY29kZXJfY2xr KHByaXYsIHRydWUpOw0KKw0KKwkJLyogRW5hYmxlIEF1ZGlvIERBQyAoM3JkIERBQykgKi8NCisJ CXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjcsIDB4MzEx Myk7DQorCQkvKiBFbmFibGUgbG93LW5vaXNlIG1vZGUgb2YgREFDICovDQorCQlpZiAocHJpdi0+ ZGV2X2NvdW50ZXJbREVWSUNFX0hQXSA9PSAwKQ0KKwkJCXJlZ21hcF93cml0ZShwcml2LT5yZWdt YXAsDQorCQkJCSAgICAgTVQ2MzU5X0FVRERFQ19BTkFfQ09OOSwgMHgwMDAxKTsNCisJCS8qIFN3 aXRjaCBMT0wgTVVYIHRvIGF1ZGlvIDNyZCBEQUMgKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5y ZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjcsIDB4MzExYik7DQorCQlicmVhazsNCisJY2Fz ZSBTTkRfU09DX0RBUE1fUFJFX1BNRDoNCisJCS8qIFN3aXRjaCBMT0wgTVVYIHRvIG9wZW4gKi8N CisJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NP TjcsDQorCQkJCSAgIFJHX0FVRExPTE1VWElOUFVUU0VMX1ZBVURQMzJfTUFTS19TRlQsDQorCQkJ CSAgIExPX01VWF9PUEVOKTsNCisNCisJCS8qIERpc2FibGUgQXVkaW8gREFDICovDQorCQlyZWdt YXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVEREVDX0FOQV9DT04wLA0KKwkJ CQkgICAweDAwMGYsIDB4MDAwMCk7DQorDQorCQkvKiBEaXNhYmxlIEFVRF9DTEsgKi8NCisJCW10 NjM1OV9zZXRfZGVjb2Rlcl9jbGsocHJpdiwgZmFsc2UpOw0KKw0KKwkJLyogZGVjcmVhc2UgTE8g Z2FpbiB0byBtaW5pbXVtIGdhaW4gc3RlcCBieSBzdGVwICovDQorCQlyZWdtYXBfd3JpdGUocHJp di0+cmVnbWFwLCBNVDYzNTlfWkNEX0NPTjEsIERMX0dBSU5fTl80MERCKTsNCisNCisJCS8qIERp c2FibGUgTE8gZHJpdmVyIGNvcmUgY2lyY3VpdHMgKi8NCisJCXJlZ21hcF91cGRhdGVfYml0cyhw cml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjcsDQorCQkJCSAgIFJHX0FVRExPTFBX UlVQX1ZBVURQMzJfTUFTS19TRlQsIDB4MCk7DQorDQorCQkvKiBEaXNhYmxlIExPIGRyaXZlciBi aWFzIGNpcmN1aXRzICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYz NTlfQVVEREVDX0FOQV9DT043LA0KKwkJCQkgICBSR19BVURMT0xQV1JVUF9JQklBU19WQVVEUDMy X01BU0tfU0ZULCAweDApOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJfQ0K Kw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdF9hZGNfY2xrX2dlbl9ldmVudChz dHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkJc3RydWN0IHNuZF9rY29udHJvbCAq a2NvbnRyb2wsDQorCQkJCWludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVu dCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3Qg bXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7 DQorDQorCWRldl9pbmZvKHByaXYtPmRldiwgIiVzKCksIGV2ZW50IDB4JXgsIHZvd19lbmFibGUg JWRcbiIsDQorCQkgX19mdW5jX18sIGV2ZW50LCBwcml2LT52b3dfZW5hYmxlKTsNCisNCisJc3dp dGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNVToNCisJCWlmIChwcml2 LT52b3dfZW5hYmxlKSB7DQorCQkJLyogQURDIENMSyBmcm9tIENMS0dFTiAoMy4yNU1IeikgKi8N CisJCQlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCB2b3cgbW9kZVxuIiwgX19mdW5jX18pOw0K KwkJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NP TjUsDQorCQkJCQkgICBSR19BVURBRENDTEtSU1RCX01BU0tfU0ZULCAweDApOw0KKwkJCXJlZ21h cF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NPTjUsDQorCQkJ CQkgICBSR19BVURBRENDTEtTT1VSQ0VfTUFTS19TRlQsDQorCQkJCQkgICAweDEgPDwgUkdfQVVE QURDQ0xLU09VUkNFX1NGVCk7DQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwg TVQ2MzU5X0FVREVOQ19BTkFfQ09ONSwNCisJCQkJCSAgIFJHX0FVREFEQ0NMS1NFTF9NQVNLX1NG VCwNCisJCQkJCSAgIDB4MSA8PCBSR19BVURBRENDTEtTRUxfU0ZUKTsNCisJCQlyZWdtYXBfdXBk YXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9DT041LA0KKwkJCQkJICAg UkdfQVVEQURDQ0xLR0VOTU9ERV9NQVNLX1NGVCwgMHgwKTsNCisJCX0gZWxzZSB7DQorCQkJLyog QURDIENMSyBmcm9tIENMS0dFTiAoNi41TUh6KSAqLw0KKwkJCXJlZ21hcF91cGRhdGVfYml0cyhw cml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NPTjUsDQorCQkJCQkgICBSR19BVURBREND TEtSU1RCX01BU0tfU0ZULA0KKwkJCQkJICAgMHgxIDw8IFJHX0FVREFEQ0NMS1JTVEJfU0ZUKTsN CisJCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9D T041LA0KKwkJCQkJICAgUkdfQVVEQURDQ0xLU09VUkNFX01BU0tfU0ZULCAweDApOw0KKwkJCXJl Z21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NPTjUsDQor CQkJCQkgICBSR19BVURBRENDTEtTRUxfTUFTS19TRlQsIDB4MCk7DQorCQkJcmVnbWFwX3VwZGF0 ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVREVOQ19BTkFfQ09ONSwNCisJCQkJCSAgIFJH X0FVREFEQ0NMS0dFTk1PREVfTUFTS19TRlQsDQorCQkJCQkgICAweDEgPDwgUkdfQVVEQURDQ0xL R0VOTU9ERV9TRlQpOw0KKwkJfQ0KKwkJYnJlYWs7DQorCWNhc2UgU05EX1NPQ19EQVBNX1BSRV9Q TUQ6DQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FO QV9DT041LA0KKwkJCQkgICBSR19BVURBRENDTEtTT1VSQ0VfTUFTS19TRlQsIDB4MCk7DQorCQly ZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9DT041LA0K KwkJCQkgICBSR19BVURBRENDTEtTRUxfTUFTS19TRlQsIDB4MCk7DQorCQlyZWdtYXBfdXBkYXRl X2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9DT041LA0KKwkJCQkgICBSR19B VURBRENDTEtHRU5NT0RFX01BU0tfU0ZULCAweDApOw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHBy aXYtPnJlZ21hcCwgTVQ2MzU5X0FVREVOQ19BTkFfQ09ONSwNCisJCQkJICAgUkdfQVVEQURDQ0xL UlNUQl9NQVNLX1NGVCwgMHgwKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQor CX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRfZGNjX2Nsa19ldmVudChz dHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkgICAgc3RydWN0IHNuZF9rY29udHJv bCAqa2NvbnRyb2wsDQorCQkJICAgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2Nv bXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlz dHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShj bXBudCk7DQorDQorCWRldl9pbmZvKHByaXYtPmRldiwgIiVzKCksIGV2ZW50IDB4JXhcbiIsIF9f ZnVuY19fLCBldmVudCk7DQorDQorCXN3aXRjaCAoZXZlbnQpIHsNCisJY2FzZSBTTkRfU09DX0RB UE1fUFJFX1BNVToNCisJCS8qIERDQyA1MGsgQ0xLIChmcm9tIDI2TSkgKi8NCisJCS8qIE1UNjM1 OV9BRkVfRENDTEtfQ0ZHMCwgYml0IDMgZm9yIGRtIGNrIHN3YXAgKi8NCisJCXJlZ21hcF91cGRh dGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfRENDTEtfQ0ZHMCwNCisJCQkJICAgMHhm ZmY3LCAweDIwNjIpOw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5 X0FGRV9EQ0NMS19DRkcwLA0KKwkJCQkgICAweGZmZjcsIDB4MjA2MCk7DQorCQlpZiAocHJpdi0+ dm93X2VuYWJsZSkNCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlf QUZFX0RDQ0xLX0NGRzAsDQorCQkJCQkgICAweGZmZjcsIDB4MjA2NSk7DQorCQllbHNlDQorCQkJ cmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9EQ0NMS19DRkcwLA0K KwkJCQkJICAgMHhmZmY3LCAweDIwNjEpOw0KKw0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21h cCwgTVQ2MzU5X0FGRV9EQ0NMS19DRkcxLCAweDAxMDApOw0KKwkJYnJlYWs7DQorCWNhc2UgU05E X1NPQ19EQVBNX1BPU1RfUE1EOg0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwg TVQ2MzU5X0FGRV9EQ0NMS19DRkcwLA0KKwkJCQkgICAweGZmZjcsIDB4MjA2MCk7DQorCQlyZWdt YXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX0RDQ0xLX0NGRzAsDQorCQkJ CSAgIDB4ZmZmNywgMHgyMDYyKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQor CX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRfbWljX2JpYXNfMF9ldmVu dChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkgICAgICAgc3RydWN0IHNuZF9r Y29udHJvbCAqa2NvbnRyb2wsDQorCQkJICAgICAgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBz bmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRh cG0pOw0KKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRf ZHJ2ZGF0YShjbXBudCk7DQorCXVuc2lnbmVkIGludCBtaWNfdHlwZSA9IHByaXYtPm11eF9zZWxl Y3RbTVVYX01JQ19UWVBFXzBdOw0KKw0KKwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCBldmVu dCAweCV4LCBtaWNfdHlwZSAlZFxuIiwNCisJCSBfX2Z1bmNfXywgZXZlbnQsIG1pY190eXBlKTsN CisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVfUE1VOg0KKwkJ c3dpdGNoIChtaWNfdHlwZSkgew0KKwkJY2FzZSBNSUNfVFlQRV9NVVhfRENDX0VDTV9ESUZGOg0K KwkJY2FzZSBNSUNfVFlQRV9NVVhfVk9XX0RDQ19FQ01fRElGRjoNCisJCQlyZWdtYXBfdXBkYXRl X2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkJICAgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMTUsDQor CQkJCQkgICAweGZmMDAsIDB4NzcwMCk7DQorCQkJYnJlYWs7DQorCQljYXNlIE1JQ19UWVBFX01V WF9EQ0NfRUNNX1NJTkdMRToNCisJCWNhc2UgTUlDX1RZUEVfTVVYX1ZPV19EQ0NfRUNNX1NJTkdM RToNCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkJICAgTVQ2MzU5 X0FVREVOQ19BTkFfQ09OMTUsDQorCQkJCQkgICAweGZmMDAsIDB4MTEwMCk7DQorCQkJYnJlYWs7 DQorCQlkZWZhdWx0Og0KKwkJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsDQorCQkJ CQkgICBNVDYzNTlfQVVERU5DX0FOQV9DT04xNSwNCisJCQkJCSAgIDB4ZmYwMCwgMHgwMDAwKTsN CisJCQlicmVhazsNCisJCX0NCisNCisJCS8qIE1JU0JJQVMwID0gMVA5ViAqLw0KKwkJcmVnbWFw X3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMTUsDQorCQkJ CSAgIFJHX0FVRE1JQ0JJQVMwVlJFRl9NQVNLX1NGVCwNCisJCQkJICAgTUlDX0JJQVNfMVA5IDw8 IFJHX0FVRE1JQ0JJQVMwVlJFRl9TRlQpOw0KKwkJLyogdm93IGxvdyBwb3dlciBzZWxlY3QgKi8N CisJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NP TjE1LA0KKwkJCQkgICBSR19BVURNSUNCSUFTMExPV1BFTl9NQVNLX1NGVCwNCisJCQkJICAgKElT X1ZPV19BTUlDX0JBU0UobWljX3R5cGUpID8gMSA6IDApIDw8DQorCQkJCSAgIFJHX0FVRE1JQ0JJ QVMwTE9XUEVOX1NGVCk7DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9QTUQ6 DQorCQkvKiBEaXNhYmxlIE1JQ0JJQVMwLCBNSVNCSUFTMCA9IDFQN1YgKi8NCisJCXJlZ21hcF93 cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NPTjE1LCAweDAwMDApOw0KKwkJ YnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQor DQorc3RhdGljIGludCBtdF9taWNfYmlhc18xX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lk Z2V0ICp3LA0KKwkJCSAgICAgICBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQkg ICAgICAgaW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9 IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQorCXN0cnVjdCBtdDYzNTlfcHJp diAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisJdW5zaWdu ZWQgaW50IG1pY190eXBlID0gcHJpdi0+bXV4X3NlbGVjdFtNVVhfTUlDX1RZUEVfMV07DQorDQor CWRldl9pbmZvKHByaXYtPmRldiwgIiVzKCksIGV2ZW50IDB4JXgsIG1pY190eXBlICVkXG4iLA0K KwkJIF9fZnVuY19fLCBldmVudCwgbWljX3R5cGUpOw0KKw0KKwlzd2l0Y2ggKGV2ZW50KSB7DQor CWNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTVU6DQorCQkvKiBNSVNCSUFTMSA9IDJQNlYgKi8NCisJ CWlmIChtaWNfdHlwZSA9PSBNSUNfVFlQRV9NVVhfRENDX0VDTV9TSU5HTEUpDQorCQkJcmVnbWFw X3dyaXRlKHByaXYtPnJlZ21hcCwNCisJCQkJICAgICBNVDYzNTlfQVVERU5DX0FOQV9DT04xNiwg MHgwMTYwKTsNCisJCWVsc2UNCisJCQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLA0KKwkJCQkg ICAgIE1UNjM1OV9BVURFTkNfQU5BX0NPTjE2LCAweDAwNjApOw0KKw0KKwkJLyogdm93IGxvdyBw b3dlciBzZWxlY3QgKi8NCisJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1 OV9BVURFTkNfQU5BX0NPTjE2LA0KKwkJCQkgICBSR19BVURNSUNCSUFTMUxPV1BFTl9NQVNLX1NG VCwNCisJCQkJICAgKElTX1ZPV19BTUlDX0JBU0UobWljX3R5cGUpID8gMSA6IDApIDw8DQorCQkJ CSAgIFJHX0FVRE1JQ0JJQVMxTE9XUEVOX1NGVCk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJ CWJyZWFrOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10X21pY19i aWFzXzJfZXZlbnQoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQorCQkJICAgICAgIHN0 cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAgICAgICBpbnQgZXZlbnQpDQorew0K KwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBv bmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10NjM1OV9wcml2ICpwcml2ID0gc25kX3NvY19jb21w b25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKwl1bnNpZ25lZCBpbnQgbWljX3R5cGUgPSBwcml2 LT5tdXhfc2VsZWN0W01VWF9NSUNfVFlQRV8yXTsNCisNCisJZGV2X2luZm8ocHJpdi0+ZGV2LCAi JXMoKSwgZXZlbnQgMHgleCwgbWljX3R5cGUgJWRcbiIsDQorCQkgX19mdW5jX18sIGV2ZW50LCBt aWNfdHlwZSk7DQorDQorCXN3aXRjaCAoZXZlbnQpIHsNCisJY2FzZSBTTkRfU09DX0RBUE1fUFJF X1BNVToNCisJCXN3aXRjaCAobWljX3R5cGUpIHsNCisJCWNhc2UgTUlDX1RZUEVfTVVYX0RDQ19F Q01fRElGRjoNCisJCWNhc2UgTUlDX1RZUEVfTVVYX1ZPV19EQ0NfRUNNX0RJRkY6DQorCQkJcmVn bWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJCSAgIE1UNjM1OV9BVURFTkNfQU5B X0NPTjE3LA0KKwkJCQkJICAgMHhmZjAwLCAweDc3MDApOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBN SUNfVFlQRV9NVVhfRENDX0VDTV9TSU5HTEU6DQorCQljYXNlIE1JQ19UWVBFX01VWF9WT1dfREND X0VDTV9TSU5HTEU6DQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJ CSAgIE1UNjM1OV9BVURFTkNfQU5BX0NPTjE3LA0KKwkJCQkJICAgMHhmZjAwLCAweDExMDApOw0K KwkJCWJyZWFrOw0KKwkJZGVmYXVsdDoNCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVn bWFwLA0KKwkJCQkJICAgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMTcsDQorCQkJCQkgICAweGZmMDAs IDB4MDAwMCk7DQorCQkJYnJlYWs7DQorCQl9DQorDQorCQkvKiBNSVNCSUFTMiA9IDFQOVYgKi8N CisJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NP TjE3LA0KKwkJCQkgICBSR19BVURNSUNCSUFTMlZSRUZfTUFTS19TRlQsDQorCQkJCSAgIE1JQ19C SUFTXzFQOSA8PCBSR19BVURNSUNCSUFTMlZSRUZfU0ZUKTsNCisJCS8qIHZvdyBsb3cgcG93ZXIg c2VsZWN0ICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVE RU5DX0FOQV9DT04xNywNCisJCQkJICAgUkdfQVVETUlDQklBUzJMT1dQRU5fTUFTS19TRlQsDQor CQkJCSAgIChJU19WT1dfQkFTRShtaWNfdHlwZSkgPyAxIDogMCkgPDwNCisJCQkJICAgUkdfQVVE TUlDQklBUzJMT1dQRU5fU0ZUKTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NU X1BNRDoNCisJCS8qIERpc2FibGUgTUlDQklBUzIsIE1JU0JJQVMwID0gMVA3ViAqLw0KKwkJcmVn bWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMTcsIDB4MDAwMCk7 DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCXJldHVybiAwOw0K K30NCisNCitzdGF0aWMgaW50IG10X3Zvd19hdWRfbHB3X2V2ZW50KHN0cnVjdCBzbmRfc29jX2Rh cG1fd2lkZ2V0ICp3LA0KKwkJCQlzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQkJ aW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9z b2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQorCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJp diA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisNCisJZGV2X2luZm8o cHJpdi0+ZGV2LCAiJXMoKSwgZXZlbnQgMHgleFxuIiwgX19mdW5jX18sIGV2ZW50KTsNCisNCisJ c3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVfUE1VOg0KKwkJLyogRW5h YmxlIGF1ZGlvIHVwbGluayBMUFcgbW9kZSAqLw0KKwkJLyogRW5hYmxlIEF1ZGlvIEFEQyAxc3Qg U3RhZ2UgTFBXICovDQorCQkvKiBFbmFibGUgQXVkaW8gQURDIDJuZCAmIDNyZCBMUFcgKi8NCisJ CS8qIEVuYWJsZSBBdWRpbyBBREMgZmxhc2ggQXVkaW8gQURDIGZsYXNoICovDQorCQlyZWdtYXBf dXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9DT04zLA0KKwkJCQkg ICAweDAwMzksIDB4MDAzOSk7DQorCQlpZiAocHJpdi0+dm93X2NoYW5uZWwgPT0gMikNCisJCQly ZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9DT040LA0K KwkJCQkJICAgMHgwMDM5LCAweDAwMzkpOw0KKwkJYnJlYWs7DQorCWNhc2UgU05EX1NPQ19EQVBN X1BPU1RfUE1EOg0KKwkJLyogRGlzYWJsZSBhdWRpbyB1cGxpbmsgTFBXIG1vZGUgKi8NCisJCS8q IERpc2FibGUgQXVkaW8gQURDIDFzdCBTdGFnZSBMUFcgKi8NCisJCS8qIERpc2FibGUgQXVkaW8g QURDIDJuZCAmIDNyZCBMUFcgKi8NCisJCS8qIERpc2FibGUgQXVkaW8gQURDIGZsYXNoIEF1ZGlv IEFEQyBmbGFzaCAqLw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5 X0FVREVOQ19BTkFfQ09OMywNCisJCQkJICAgMHgwMDM5LCAweDAwMDApOw0KKwkJaWYgKHByaXYt PnZvd19jaGFubmVsID09IDIpDQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwg TVQ2MzU5X0FVREVOQ19BTkFfQ09ONCwNCisJCQkJCSAgIDB4MDAzOSwgMHgwMDAwKTsNCisJCWJy ZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0 YXRpYyB2b2lkIHZvd19wZXJpb2RpY19vbl9vZmZfc2V0KHN0cnVjdCBtdDYzNTlfcHJpdiAqcHJp dikNCit7DQorCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsDQorCQkJICAgTVQ2MzU5 X0FVRF9UT1BfQ0tQRE5fQ09OMCwNCisJCQkgICBSR19WT1czMktfQ0tfUEROX01BU0tfU0ZULA0K KwkJCSAgIDB4MCk7DQorCS8qIFByZSBPbiAqLw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFw LCBNVDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19DRkcyLA0KKwkJICAgICBwcml2LT52b3dfcGVyaW9k aWNfcGFyYW0ucGdhX29uKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FG RV9WT1dfUEVSSU9ESUNfQ0ZHMywNCisJCSAgICAgcHJpdi0+dm93X3BlcmlvZGljX3BhcmFtLnBy ZWNnX29uKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVS SU9ESUNfQ0ZHNCwNCisJCSAgICAgcHJpdi0+dm93X3BlcmlvZGljX3BhcmFtLmFkY19vbik7DQor CXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzcs DQorCQkgICAgIHByaXYtPnZvd19wZXJpb2RpY19wYXJhbS5taWNiaWFzMF9vbik7DQorCXJlZ21h cF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzgsDQorCQkg ICAgIHByaXYtPnZvd19wZXJpb2RpY19wYXJhbS5taWNiaWFzMV9vbik7DQorCXJlZ21hcF93cml0 ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzksDQorCQkgICAgIHBy aXYtPnZvd19wZXJpb2RpY19wYXJhbS5kY3hvX29uKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJl Z21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMTAsDQorCQkgICAgIHByaXYtPnZvd19w ZXJpb2RpY19wYXJhbS5hdWRnbGJfb24pOw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBN VDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19DRkcxMSwNCisJCSAgICAgcHJpdi0+dm93X3BlcmlvZGlj X3BhcmFtLnZvd19vbik7DQorCS8qIERlbGF5IE9mZiAqLw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+ cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19DRkcxMywNCisJCSAgICAgcHJpdi0+dm93 X3BlcmlvZGljX3BhcmFtLnBnYV9vZmYpOw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBN VDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19DRkcxNCwNCisJCSAgICAgcHJpdi0+dm93X3BlcmlvZGlj X3BhcmFtLnByZWNnX29mZik7DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9B RkVfVk9XX1BFUklPRElDX0NGRzE1LA0KKwkJICAgICBwcml2LT52b3dfcGVyaW9kaWNfcGFyYW0u YWRjX29mZik7DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1BF UklPRElDX0NGRzE4LA0KKwkJICAgICBwcml2LT52b3dfcGVyaW9kaWNfcGFyYW0ubWljYmlhczBf b2ZmKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9E SUNfQ0ZHMTksDQorCQkgICAgIHByaXYtPnZvd19wZXJpb2RpY19wYXJhbS5taWNiaWFzMV9vZmYp Ow0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19D RkcyMCwNCisJCSAgICAgcHJpdi0+dm93X3BlcmlvZGljX3BhcmFtLmRjeG9fb2ZmKTsNCisJcmVn bWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjEsDQor CQkgICAgIHByaXYtPnZvd19wZXJpb2RpY19wYXJhbS5hdWRnbGJfb2ZmKTsNCisJcmVnbWFwX3dy aXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjIsDQorCQkgICAg IHByaXYtPnZvd19wZXJpb2RpY19wYXJhbS52b3dfb2ZmKTsNCisNCisJaWYgKHByaXYtPnZvd19j aGFubmVsID09IDIpIHsNCisJCS8qIFByZSBPbiAqLw0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJl Z21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjQsDQorCQkJICAgICBwcml2LT52b3df cGVyaW9kaWNfcGFyYW0ucGdhX29uKTsNCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1U NjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzI1LA0KKwkJCSAgICAgcHJpdi0+dm93X3BlcmlvZGlj X3BhcmFtLnByZWNnX29uKTsNCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9B RkVfVk9XX1BFUklPRElDX0NGRzI2LA0KKwkJCSAgICAgcHJpdi0+dm93X3BlcmlvZGljX3BhcmFt LmFkY19vbik7DQorCQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19Q RVJJT0RJQ19DRkcyOSwNCisJCQkgICAgIHByaXYtPnZvd19wZXJpb2RpY19wYXJhbS5taWNiaWFz MV9vbik7DQorCQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJ T0RJQ19DRkczMCwNCisJCQkgICAgIHByaXYtPnZvd19wZXJpb2RpY19wYXJhbS52b3dfb24pOw0K KwkJLyogRGVsYXkgT2ZmICovDQorCQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlf QUZFX1ZPV19QRVJJT0RJQ19DRkczMiwNCisJCQkgICAgIHByaXYtPnZvd19wZXJpb2RpY19wYXJh bS5wZ2Ffb2ZmKTsNCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9X X1BFUklPRElDX0NGRzMzLA0KKwkJCSAgICAgcHJpdi0+dm93X3BlcmlvZGljX3BhcmFtLnByZWNn X29mZik7DQorCQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJ T0RJQ19DRkczNCwNCisJCQkgICAgIHByaXYtPnZvd19wZXJpb2RpY19wYXJhbS5hZGNfb2ZmKTsN CisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1BFUklPRElDX0NG RzM3LA0KKwkJCSAgICAgcHJpdi0+dm93X3BlcmlvZGljX3BhcmFtLm1pY2JpYXMxX29mZik7DQor CQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19DRkcz OCwNCisJCQkgICAgIHByaXYtPnZvd19wZXJpb2RpY19wYXJhbS52b3dfb2ZmKTsNCisJfQ0KKwkv KiB2b3cgcGVyaW9kaWMgZW5hYmxlICovDQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1U NjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzAsIDB4OTk5QSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lk IHZvd19wZXJpb2RpY19vbl9vZmZfcmVzZXQoc3RydWN0IG10NjM1OV9wcml2ICpwcml2KQ0KK3sN CisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkgICBNVDYzNTlfQVVEX1RP UF9DS1BETl9DT04wLA0KKwkJCSAgIFJHX1ZPVzMyS19DS19QRE5fTUFTS19TRlQsDQorCQkJICAg MHgxIDw8IFJHX1ZPVzMyS19DS19QRE5fU0ZUKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21h cCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMCwgMHgwKTsNCisJcmVnbWFwX3dyaXRlKHBy aXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMSwgMHgwKTsNCisJcmVnbWFw X3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMiwgMHgwKTsN CisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZH MywgMHgwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVS SU9ESUNfQ0ZHNCwgMHgwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FG RV9WT1dfUEVSSU9ESUNfQ0ZHNSwgMHgwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwg TVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHNiwgMHgwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYt PnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHNywgMHgwKTsNCisJcmVnbWFwX3dy aXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHOCwgMHgwKTsNCisJ cmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHOSwg MHgwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9E SUNfQ0ZHMTAsIDB4MCk7DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVf Vk9XX1BFUklPRElDX0NGRzExLCAweDApOw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBN VDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19DRkcxMiwgMHgwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYt PnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMTMsIDB4ODAwMCk7DQorCXJlZ21h cF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzE0LCAweDAp Ow0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19D RkcxNSwgMHgwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1df UEVSSU9ESUNfQ0ZHMTYsIDB4MCk7DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1 OV9BRkVfVk9XX1BFUklPRElDX0NGRzE3LCAweDApOw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVn bWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19DRkcxOCwgMHgwKTsNCisJcmVnbWFwX3dyaXRl KHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMTksIDB4MCk7DQorCXJl Z21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzIwLCAw eDApOw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJT0RJ Q19DRkcyMSwgMHgwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9W T1dfUEVSSU9ESUNfQ0ZHMjIsIDB4MCk7DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1U NjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzIzLCAweDApOw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+ cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19DRkcyNCwgMHgwKTsNCisJcmVnbWFwX3dy aXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjUsIDB4MCk7DQor CXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzI2 LCAweDApOw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJ T0RJQ19DRkcyNywgMHgwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FG RV9WT1dfUEVSSU9ESUNfQ0ZHMjgsIDB4MCk7DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAs IE1UNjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzI5LCAweDApOw0KKwlyZWdtYXBfd3JpdGUocHJp di0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19DRkczMCwgMHgwKTsNCisJcmVnbWFw X3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMzEsIDB4MCk7 DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1BFUklPRElDX0NG RzMyLCAweDApOw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19Q RVJJT0RJQ19DRkczMywgMHgwKTsNCisJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5 X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMzQsIDB4MCk7DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdt YXAsIE1UNjM1OV9BRkVfVk9XX1BFUklPRElDX0NGRzM1LCAweDApOw0KKwlyZWdtYXBfd3JpdGUo cHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19QRVJJT0RJQ19DRkczNiwgMHgwKTsNCisJcmVn bWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMzcsIDB4 MCk7DQorCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1BFUklPRElD X0NGRzM4LCAweDApOw0KKwlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZP V19QRVJJT0RJQ19DRkczOSwgMHgwKTsNCit9DQorDQorc3RhdGljIGludCBtdF92b3dfcGVyaW9k aWNfY2ZnX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0KKwkJCQkgICAgIHN0 cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCQkgICAgIGludCBldmVudCkNCit7DQor CXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9u ZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBv bmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorDQorCWRldl9pbmZvKHByaXYtPmRldiwgIiVzKCks IGV2ZW50IDB4JXhcbiIsIF9fZnVuY19fLCBldmVudCk7DQorCXN3aXRjaCAoZXZlbnQpIHsNCisJ Y2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNVToNCisJCS8qIFBlcmlvZGljIE9uL09mZiAqLw0KKwkJ aWYgKHByaXYtPnJlZ19hZmVfdm93X3BlcmlvZGljID09IDApDQorCQkJdm93X3BlcmlvZGljX29u X29mZl9yZXNldChwcml2KTsNCisJCWVsc2UNCisJCQl2b3dfcGVyaW9kaWNfb25fb2ZmX3NldChw cml2KTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNRDoNCisJCXZvd19w ZXJpb2RpY19vbl9vZmZfcmVzZXQocHJpdik7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJy ZWFrOw0KKwl9DQorCXJldHVybiAwOw0KK30NCisNCisvKiBWT1cgTVRLSUYgVFggc2V0dGluZyAq Lw0KK2VudW0gew0KKwlWT1dfTVRLSUZfVFhfU0VUX01PTk8gPSAxLA0KKwlWT1dfTVRLSUZfVFhf U0VUX1NURVJFTyA9IDAsDQorfTsNCisNCisjZGVmaW5lIFZPV19NQ0xLIDEzMDAwDQorI2RlZmlu ZSBWT1dfTVRLSUZfVFhfTU9OT19DTEsgNjUwDQorI2RlZmluZSBWT1dfTVRLSUZfVFhfU1RFUkVP X0NMSyAxMDgzDQorDQorc3RhdGljIGludCBtdF92b3dfZGlnaXRhbF9jZmdfZXZlbnQoc3RydWN0 IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQorCQkJCSAgICBzdHJ1Y3Qgc25kX2tjb250cm9sICpr Y29udHJvbCwNCisJCQkJICAgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBv bmVudCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1 Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBu dCk7DQorCXVuc2lnbmVkIGludCBtaWNfdHlwZTAgPSBwcml2LT5tdXhfc2VsZWN0W01VWF9NSUNf VFlQRV8wXTsNCisJdW5zaWduZWQgaW50IG1pY190eXBlMiA9IHByaXYtPm11eF9zZWxlY3RbTVVY X01JQ19UWVBFXzJdOw0KKwl1bnNpZ25lZCBpbnQgdm93X2NoID0gMDsNCisJdW5zaWduZWQgaW50 IHZvd19tdGtpZl90eF9kaXYgPSAwOw0KKwl1bnNpZ25lZCBpbnQgdm93X3RvcF9jb24zID0gMHgw MDAwOw0KKwl1bnNpZ25lZCBpbnQgaXNfZG1pYyA9IDA7DQorDQorCWRldl9pbmZvKHByaXYtPmRl diwgIiVzKCksIGV2ZW50IDB4JXhcbiIsIF9fZnVuY19fLCBldmVudCk7DQorDQorCXN3aXRjaCAo ZXZlbnQpIHsNCisJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9QTVU6DQorCQkvKiBBTUlDL0RNSUMg Vk9XIENvbmZpZyBTZXR0aW5nICovDQorCQlpZiAobWljX3R5cGUwID09IE1JQ19UWVBFX01VWF9W T1dfRE1JQ19MUCB8fA0KKwkJICAgIG1pY190eXBlMiA9PSBNSUNfVFlQRV9NVVhfVk9XX0RNSUNf TFApIHsNCisJCQkvKiBMUCBETUlDIHNldHRpbmdzIDogODEyLjVrICovDQorCQkJcmVnbWFwX3Vw ZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJCSAgIE1UNjM1OV9BRkVfVk9XX1RPUF9DT04w LA0KKwkJCQkJICAgMHg3QzAwLCAweDM4MDApOw0KKwkJCWlzX2RtaWMgPSAxOw0KKwkJfSBlbHNl IGlmICgobWljX3R5cGUwID09IE1JQ19UWVBFX01VWF9WT1dfRE1JQykgfHwNCisJCQkgICAobWlj X3R5cGUyID09IE1JQ19UWVBFX01VWF9WT1dfRE1JQykpIHsNCisJCQkvKiBETUlDIHNldHRpbmdz IDogMTYwMGsgKi8NCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkJ ICAgTVQ2MzU5X0FGRV9WT1dfVE9QX0NPTjAsDQorCQkJCQkgICAweDdDMDAsIDB4MTAwMCk7DQor CQkJaXNfZG1pYyA9IDE7DQorCQl9IGVsc2Ugew0KKwkJCS8qIEFNSUMgc2V0dGluZ3MgKi8NCisJ CQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkJICAgTVQ2MzU5X0FGRV9W T1dfVE9QX0NPTjAsDQorCQkJCQkgICAweDdDMDAsIDB4MDAwMCk7DQorCQkJaXNfZG1pYyA9IDA7 DQorCQl9DQorDQorCQkvKiBFbmFibGUgdm93IGNmZyBzZXR0aW5nICovDQorCQkvKiBWT1cgQ0gx IENvbmZpZyAqLw0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1df VkFEX0NGRzAsDQorCQkJICAgICBwcml2LT5yZWdfYWZlX3Zvd192YWRfY2ZnMCk7DQorCQlyZWdt YXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19WQURfQ0ZHMiwNCisJCQkgICAg IHByaXYtPnJlZ19hZmVfdm93X3ZhZF9jZmcxKTsNCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdt YXAsIE1UNjM1OV9BRkVfVk9XX1ZBRF9DRkc0LA0KKwkJCSAgICAgcHJpdi0+cmVnX2FmZV92b3df dmFkX2NmZzIpOw0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1df VkFEX0NGRzYsDQorCQkJICAgICBwcml2LT5yZWdfYWZlX3Zvd192YWRfY2ZnMyk7DQorCQlyZWdt YXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZFX1ZPV19WQURfQ0ZHMTIsDQor CQkJCSAgIEtfR0FNTUFfQ0gxX01BU0tfU0ZULA0KKwkJCQkgICBwcml2LT5yZWdfYWZlX3Zvd192 YWRfY2ZnNCA8PA0KKwkJCQkgICBLX0dBTU1BX0NIMV9TRlQpOw0KKwkJcmVnbWFwX3dyaXRlKHBy aXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfVkFEX0NGRzgsDQorCQkJICAgICBwcml2LT5yZWdf YWZlX3Zvd192YWRfY2ZnNSk7DQorCQlpZiAoaXNfZG1pYykgew0KKwkJCS8qIFZPVyBDSDEgKi8N CisJCQkvKiBWT1cgQURDIGNsayBnYXRlIHBvd2VyIG9mZiAqLw0KKwkJCXJlZ21hcF91cGRhdGVf Yml0cyhwcml2LT5yZWdtYXAsDQorCQkJCQkgICBNVDYzNTlfQUZFX1ZPV19UT1BfQ09OMSwNCisJ CQkJCSAgIFZPV19BRENfQ0tfUEROX0NIMV9NQVNLX1NGVCwNCisJCQkJCSAgIDB4MSA8PCBWT1df QURDX0NLX1BETl9DSDFfU0ZUKTsNCisJCQkvKiBWT1cgY2xrIGdhdGUgcG93ZXIgb24gKi8NCisJ CQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkJICAgTVQ2MzU5X0FGRV9W T1dfVE9QX0NPTjEsDQorCQkJCQkgICBWT1dfQ0tfUEROX0NIMV9NQVNLX1NGVCwNCisJCQkJCSAg IDB4MCk7DQorCQkJLyogRE1JQyBwb3dlciBvbiAqLw0KKwkJCS8qIERNSUMgc2VsZWN0OiBkbWlj ICovDQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJCSAgIE1UNjM1 OV9BRkVfVk9XX1RPUF9DT04xLA0KKwkJCQkJICAgMHgzIDw8IFZPV19ESUdNSUNfT05fQ0gxX1NG VCwNCisJCQkJCSAgIDB4MSA8PCBWT1dfRElHTUlDX09OX0NIMV9TRlQpOw0KKwkJfSBlbHNlIHsN CisJCQkvKiBWT1cgQ0gxICovDQorCQkJLyogVk9XIEFEQyBjbGsgZ2F0ZSBwb3dlciBvbiAqLw0K KwkJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsDQorCQkJCQkgICBNVDYzNTlfQUZF X1ZPV19UT1BfQ09OMSwNCisJCQkJCSAgIFZPV19BRENfQ0tfUEROX0NIMV9NQVNLX1NGVCwNCisJ CQkJCSAgIDB4MCk7DQorCQkJLyogVk9XIGNsayBnYXRlIHBvd2VyIG9uICovDQorCQkJcmVnbWFw X3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJCSAgIE1UNjM1OV9BRkVfVk9XX1RPUF9D T04xLA0KKwkJCQkJICAgVk9XX0NLX1BETl9DSDFfTUFTS19TRlQsDQorCQkJCQkgICAweDApOw0K KwkJCS8qIERNSUMgcG93ZXIgb2ZmICovDQorCQkJLyogRE1JQyBzZWxlY3Q6IGFtaWMgKi8NCisJ CQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkJICAgTVQ2MzU5X0FGRV9W T1dfVE9QX0NPTjEsDQorCQkJCQkgICAweDMgPDwgVk9XX0RJR01JQ19PTl9DSDFfU0ZULA0KKwkJ CQkJICAgMHgyIDw8IFZPV19ESUdNSUNfT05fQ0gxX1NGVCk7DQorCQl9DQorCQkvKiBNVEtJRiBU WCBTZXR0aW5nICovDQorCQl2b3dfY2ggPSBWT1dfTVRLSUZfVFhfU0VUX01PTk87ICAvKiBtb25v ICovDQorCQl2b3dfbXRraWZfdHhfZGl2ID0gVk9XX01DTEsgLyAoVk9XX01US0lGX1RYX01PTk9f Q0xLICogMik7DQorDQorCQkvKiBWT1cgQ0gyIENvbmZpZyAqLw0KKwkJaWYgKHByaXYtPnZvd19j aGFubmVsID09IDIpIHsNCisJCQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZF X1ZPV19WQURfQ0ZHMSwNCisJCQkJICAgICBwcml2LT5yZWdfYWZlX3Zvd192YWRfY2ZnMCk7DQor CQkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfVkFEX0NGRzMsDQor CQkJCSAgICAgcHJpdi0+cmVnX2FmZV92b3dfdmFkX2NmZzEpOw0KKwkJCXJlZ21hcF93cml0ZShw cml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVk9XX1ZBRF9DRkc1LA0KKwkJCQkgICAgIHByaXYtPnJl Z19hZmVfdm93X3ZhZF9jZmcyKTsNCisJCQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYz NTlfQUZFX1ZPV19WQURfQ0ZHNywNCisJCQkJICAgICBwcml2LT5yZWdfYWZlX3Zvd192YWRfY2Zn Myk7DQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJCSAgIE1UNjM1 OV9BRkVfVk9XX1ZBRF9DRkcxMiwNCisJCQkJCSAgIEtfR0FNTUFfQ0gyX01BU0tfU0ZULA0KKwkJ CQkJICAgcHJpdi0+cmVnX2FmZV92b3dfdmFkX2NmZzQgPDwNCisJCQkJCSAgIEtfR0FNTUFfQ0gy X1NGVCk7DQorCQkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfVkFE X0NGRzksDQorCQkJCSAgICAgcHJpdi0+cmVnX2FmZV92b3dfdmFkX2NmZzUpOw0KKwkJCWlmIChp c19kbWljKSB7DQorCQkJCS8qIFZPVyBDSDIgKi8NCisJCQkJLyogVk9XIEFEQyBjbGsgZ2F0ZSBw b3dlciBvZmYgKi8NCisJCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJ CQkgICBNVDYzNTlfQUZFX1ZPV19UT1BfQ09OMiwNCisJCQkJCQkgICBWT1dfQURDX0NLX1BETl9D SDJfTUFTS19TRlQsDQorCQkJCQkJICAgMHgxIDw8DQorCQkJCQkJICAgVk9XX0FEQ19DS19QRE5f Q0gyX1NGVCk7DQorCQkJCS8qIFZPVyBjbGsgZ2F0ZSBwb3dlciBvbiAqLw0KKwkJCQlyZWdtYXBf dXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkJCSAgIE1UNjM1OV9BRkVfVk9XX1RPUF9D T04yLA0KKwkJCQkJCSAgIFZPV19DS19QRE5fQ0gyX01BU0tfU0ZULA0KKwkJCQkJCSAgIDB4MCk7 DQorCQkJCS8qIERNSUMgcG93ZXIgb24gKi8NCisJCQkJLyogRE1JQyBzZWxlY3Q6IGRtaWMgKi8N CisJCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwNCisJCQkJCQkgICBNVDYzNTlf QUZFX1ZPV19UT1BfQ09OMiwNCisJCQkJCQkgICAweDMgPDwgVk9XX0RJR01JQ19PTl9DSDJfU0ZU LA0KKwkJCQkJCSAgIDB4MSA8PA0KKwkJCQkJCSAgIFZPV19ESUdNSUNfT05fQ0gyX1NGVCk7DQor CQkJfSBlbHNlIHsNCisJCQkJLyogVk9XIENIMiAqLw0KKwkJCQkvKiBWT1cgQURDIGNsayBnYXRl IHBvd2VyIG9uICovDQorCQkJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsDQorCQkJ CQkJICAgTVQ2MzU5X0FGRV9WT1dfVE9QX0NPTjIsDQorCQkJCQkJICAgVk9XX0FEQ19DS19QRE5f Q0gyX01BU0tfU0ZULA0KKwkJCQkJCSAgIDB4MCk7DQorCQkJCS8qIFZPVyBjbGsgZ2F0ZSBwb3dl ciBvbiAqLw0KKwkJCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkJCSAg IE1UNjM1OV9BRkVfVk9XX1RPUF9DT04yLA0KKwkJCQkJCSAgIFZPV19DS19QRE5fQ0gyX01BU0tf U0ZULA0KKwkJCQkJCSAgIDB4MCk7DQorCQkJCS8qIERNSUMgcG93ZXIgb2ZmICovDQorCQkJCS8q IERNSUMgc2VsZWN0OiBhbWljICovDQorCQkJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdt YXAsDQorCQkJCQkJICAgTVQ2MzU5X0FGRV9WT1dfVE9QX0NPTjIsDQorCQkJCQkJICAgMHgzIDw8 IFZPV19ESUdNSUNfT05fQ0gyX1NGVCwNCisJCQkJCQkgICAweDIgPDwNCisJCQkJCQkgICBWT1df RElHTUlDX09OX0NIMl9TRlQpOw0KKwkJCX0NCisJCQkvKiBNVEtJRiBUWCBTZXR0aW5nICovDQor CQkJdm93X2NoID0gVk9XX01US0lGX1RYX1NFVF9TVEVSRU87ICAvKiBzdGVyZW8gKi8NCisJCQkv KiBNVEtJRiBUWCBESVYgKi8NCisJCQl2b3dfbXRraWZfdHhfZGl2ID0gVk9XX01DTEsgLw0KKwkJ CQkJICAgKFZPV19NVEtJRl9UWF9TVEVSRU9fQ0xLICogMik7DQorCQl9DQorCQl2b3dfdG9wX2Nv bjMgPSAweDAwMDA7DQorCQkvKiBkaXNhYmxlIFNOUkRFVCBBdXRvIHBvd2VyIGRvd24gKi8NCisJ CXZvd190b3BfY29uMyB8PSAoMSA8PCBWT1dfUDJfU05SREVUX0FVVE9fUEROX1NGVCk7DQorCQl2 b3dfdG9wX2NvbjMgfD0gKHZvd19jaCA8PCBWT1dfVFhJRl9NT05PX1NGVCk7DQorCQl2b3dfdG9w X2NvbjMgfD0gKHZvd19tdGtpZl90eF9kaXYgPDwgVk9XX1RYSUZfU0NLX0RJVl9TRlQpOw0KKwkJ cmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGRV9WT1dfVE9QX0NPTjMsDQorCQkJ ICAgICB2b3dfdG9wX2NvbjMpOw0KKwkJYnJlYWs7DQorCWNhc2UgU05EX1NPQ19EQVBNX1BSRV9Q TUQ6DQorCQkvKiBBTUlDL0RNSUMgVk9XIENvbmZpZyBTZXR0aW5nICovDQorCQkvKiBBTUlDIHNl dHRpbmdzICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZF X1ZPV19UT1BfQ09OMCwNCisJCQkJICAgMHg3QzAwLCAweDAwMDApOw0KKwkJLyogVk9XIENIMSAq Lw0KKwkJLyogVk9XIEFEQyBjbGsgZ2F0ZSBwb3dlciBvZmYgKi8NCisJCXJlZ21hcF91cGRhdGVf Yml0cyhwcml2LT5yZWdtYXAsDQorCQkJCSAgIE1UNjM1OV9BRkVfVk9XX1RPUF9DT04xLA0KKwkJ CQkgICBWT1dfQURDX0NLX1BETl9DSDFfTUFTS19TRlQsDQorCQkJCSAgIDB4MSA8PCBWT1dfQURD X0NLX1BETl9DSDFfU0ZUKTsNCisJCS8qIFZPVyBjbGsgZ2F0ZSBwb3dlciBvZmYgKi8NCisJCXJl Z21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsDQorCQkJCSAgIE1UNjM1OV9BRkVfVk9XX1RP UF9DT04xLA0KKwkJCQkgICBWT1dfQ0tfUEROX0NIMV9NQVNLX1NGVCwNCisJCQkJICAgMHgxIDw8 IFZPV19DS19QRE5fQ0gxX1NGVCk7DQorCQkvKiBETUlDIHBvd2VyIG9mZiAqLw0KKwkJLyogRE1J QyBzZWxlY3Q6IGFtaWMgKi8NCisJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsDQor CQkJCSAgIE1UNjM1OV9BRkVfVk9XX1RPUF9DT04xLA0KKwkJCQkgICAweDMgPDwgVk9XX0RJR01J Q19PTl9DSDFfU0ZULA0KKwkJCQkgICAweDIgPDwgVk9XX0RJR01JQ19PTl9DSDFfU0ZUKTsNCisJ CS8qIFZPVyBDSDIgKi8NCisJCS8qIFZPVyBBREMgY2xrIGdhdGUgcG93ZXIgb2ZmICovDQorCQly ZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkgICBNVDYzNTlfQUZFX1ZPV19U T1BfQ09OMiwNCisJCQkJICAgVk9XX0FEQ19DS19QRE5fQ0gyX01BU0tfU0ZULA0KKwkJCQkgICAw eDEgPDwgVk9XX0FEQ19DS19QRE5fQ0gyX1NGVCk7DQorCQkvKiBWT1cgY2xrIGdhdGUgcG93ZXIg b2ZmICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLA0KKwkJCQkgICBNVDYz NTlfQUZFX1ZPV19UT1BfQ09OMiwNCisJCQkJICAgVk9XX0NLX1BETl9DSDJfTUFTS19TRlQsDQor CQkJCSAgIDB4MSA8PCBWT1dfQ0tfUEROX0NIMl9TRlQpOw0KKwkJLyogRE1JQyBwb3dlciBvZmYg Ki8NCisJCS8qIERNSUMgc2VsZWN0OiBhbWljICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJp di0+cmVnbWFwLA0KKwkJCQkgICBNVDYzNTlfQUZFX1ZPV19UT1BfQ09OMiwNCisJCQkJICAgMHgz IDw8IFZPV19ESUdNSUNfT05fQ0gyX1NGVCwNCisJCQkJICAgMHgyIDw8IFZPV19ESUdNSUNfT05f Q0gyX1NGVCk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorCXJldHVy biAwOw0KK30NCisNCitzdGF0aWMgaW50IG10X3Zvd19vdXRfZXZlbnQoc3RydWN0IHNuZF9zb2Nf ZGFwbV93aWRnZXQgKncsDQorCQkJICAgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0K KwkJCSAgICBpbnQgZXZlbnQpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50 ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10NjM1OV9w cml2ICpwcml2ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKw0KKwlk ZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCBldmVudCAweCV4XG4iLCBfX2Z1bmNfXywgZXZlbnQp Ow0KKw0KKwlzd2l0Y2ggKGV2ZW50KSB7DQorCWNhc2UgU05EX1NPQ19EQVBNX1dJTExfUE1VOg0K KwkJcHJpdi0+dm93X2VuYWJsZSA9IDE7DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RBUE1f UFJFX1BNVToNCisJCXZvd19ncGlvX3NldChwcml2KTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9T T0NfREFQTV9QT1NUX1BNRDoNCisJCXZvd19ncGlvX3Jlc2V0KHByaXYpOw0KKwkJcHJpdi0+dm93 X2VuYWJsZSA9IDA7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQor CXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10X210a2FpZl90eF9ldmVudChzdHJ1Y3Qg c25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkgICAgICBzdHJ1Y3Qgc25kX2tjb250cm9sICpr Y29udHJvbCwNCisJCQkgICAgICBpbnQgZXZlbnQpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21w b25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3Ry dWN0IG10NjM1OV9wcml2ICpwcml2ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21w bnQpOw0KKw0KKwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCBldmVudCA9IDB4JXhcbiIsIF9f ZnVuY19fLCBldmVudCk7DQorDQorCXN3aXRjaCAoZXZlbnQpIHsNCisJY2FzZSBTTkRfU09DX0RB UE1fUFJFX1BNVToNCisJCW10NjM1OV9tdGthaWZfdHhfZW5hYmxlKHByaXYpOw0KKwkJYnJlYWs7 DQorCWNhc2UgU05EX1NPQ19EQVBNX1BPU1RfUE1EOg0KKwkJbXQ2MzU5X210a2FpZl90eF9kaXNh YmxlKHByaXYpOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJfQ0KKw0KKwly ZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdF91bF9zcmNfZG1pY19ldmVudChzdHJ1Y3Qg c25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkJc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRy b2wsDQorCQkJCWludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21w bnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXQ2MzU5 X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorDQor CWRldl9pbmZvKHByaXYtPmRldiwgIiVzKCksIGV2ZW50ID0gMHgleFxuIiwgX19mdW5jX18sIGV2 ZW50KTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVfUE1V Og0KKwkJLyogZGVmYXVsdCB0d28gd2lyZSwgMy4yNU0gKi8NCisJCXJlZ21hcF93cml0ZShwcml2 LT5yZWdtYXAsIE1UNjM1OV9BRkVfVUxfU1JDX0NPTjBfSCwgMHgwMDgwKTsNCisJCXJlZ21hcF91 cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BRkVfVUxfU1JDX0NPTjBfTCwNCisJCQkJ ICAgMHhmZmZjLCAweDAwMDApOw0KKwkJYnJlYWs7DQorCWNhc2UgU05EX1NPQ19EQVBNX1BPU1Rf UE1EOg0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwNCisJCQkgICAgIE1UNjM1OV9BRkVf VUxfU1JDX0NPTjBfSCwgMHgwMDAwKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7 DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRfdWxfc3JjXzM0X2Rt aWNfZXZlbnQoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQorCQkJCSAgIHN0cnVjdCBz bmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCQkgICBpbnQgZXZlbnQpDQorew0KKwlzdHJ1Y3Qg c25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5k YXBtKTsNCisJc3RydWN0IG10NjM1OV9wcml2ICpwcml2ID0gc25kX3NvY19jb21wb25lbnRfZ2V0 X2RydmRhdGEoY21wbnQpOw0KKw0KKwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCBldmVudCA9 IDB4JXhcbiIsIF9fZnVuY19fLCBldmVudCk7DQorDQorCXN3aXRjaCAoZXZlbnQpIHsNCisJY2Fz ZSBTTkRfU09DX0RBUE1fUFJFX1BNVToNCisJCS8qIGRlZmF1bHQgdHdvIHdpcmUsIDMuMjVNICov DQorCQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLA0KKwkJCSAgICAgTVQ2MzU5X0FGRV9BRERB Nl9MX1NSQ19DT04wX0gsIDB4MDA4MCk7DQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVn bWFwLCBNVDYzNTlfQUZFX0FEREE2X1VMX1NSQ19DT04wX0wsDQorCQkJCSAgIDB4ZmZmYywgMHgw MDAwKTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNRDoNCisJCXJlZ21h cF93cml0ZShwcml2LT5yZWdtYXAsDQorCQkJICAgICBNVDYzNTlfQUZFX0FEREE2X0xfU1JDX0NP TjBfSCwgMHgwMDAwKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisN CisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRfYWRjX2xfZXZlbnQoc3RydWN0IHNu ZF9zb2NfZGFwbV93aWRnZXQgKncsDQorCQkJICBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJv bCwNCisJCQkgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21w bnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXQ2MzU5 X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorDQor CWRldl9pbmZvKHByaXYtPmRldiwgIiVzKCksIGV2ZW50ID0gMHgleFxuIiwgX19mdW5jX18sIGV2 ZW50KTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BN VToNCisJCXVzbGVlcF9yYW5nZSgxMDAsIDEyMCk7DQorCQkvKiBBdWRpbyBMIHByZWFtcGxpZmll ciBEQ0MgcHJlY2hhcmdlIG9mZiAqLw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21h cCwgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMCwNCisJCQkJICAgUkdfQVVEUFJFQU1QTERDUFJFQ0hB UkdFX01BU0tfU0ZULA0KKwkJCQkgICAweDApOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQli cmVhazsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdF9hZGNfcl9l dmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkgIHN0cnVjdCBzbmRfa2Nv bnRyb2wgKmtjb250cm9sLA0KKwkJCSAgaW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9zb2Nf Y29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQor CXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRh KGNtcG50KTsNCisNCisJZGV2X2luZm8ocHJpdi0+ZGV2LCAiJXMoKSwgZXZlbnQgPSAweCV4XG4i LCBfX2Z1bmNfXywgZXZlbnQpOw0KKw0KKwlzd2l0Y2ggKGV2ZW50KSB7DQorCWNhc2UgU05EX1NP Q19EQVBNX1BPU1RfUE1VOg0KKwkJdXNsZWVwX3JhbmdlKDEwMCwgMTIwKTsNCisJCS8qIEF1ZGlv IFIgcHJlYW1wbGlmaWVyIERDQyBwcmVjaGFyZ2Ugb2ZmICovDQorCQlyZWdtYXBfdXBkYXRlX2Jp dHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9DT04xLA0KKwkJCQkgICBSR19BVURQ UkVBTVBSRENQUkVDSEFSR0VfTUFTS19TRlQsDQorCQkJCSAgIDB4MCk7DQorCQlicmVhazsNCisJ ZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMg aW50IG10X2FkY18zX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0KKwkJCSAg c3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsDQorCQkJICBpbnQgZXZlbnQpDQorew0KKwlz dHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVu dCh3LT5kYXBtKTsNCisJc3RydWN0IG10NjM1OV9wcml2ICpwcml2ID0gc25kX3NvY19jb21wb25l bnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKw0KKwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCBl dmVudCA9IDB4JXhcbiIsIF9fZnVuY19fLCBldmVudCk7DQorDQorCXN3aXRjaCAoZXZlbnQpIHsN CisJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9QTVU6DQorCQl1c2xlZXBfcmFuZ2UoMTAwLCAxMjAp Ow0KKwkJLyogQXVkaW8gUiBwcmVhbXBsaWZpZXIgRENDIHByZWNoYXJnZSBvZmYgKi8NCisJCXJl Z21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NPTjIsDQor CQkJCSAgIFJHX0FVRFBSRUFNUDNEQ1BSRUNIQVJHRV9NQVNLX1NGVCwNCisJCQkJICAgMHgwKTsN CisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7DQor fQ0KKw0KK3N0YXRpYyBpbnQgbXRfcGdhX2xfbXV4X2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1f d2lkZ2V0ICp3LA0KKwkJCSAgICAgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJ CSAgICAgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQg PSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXQ2MzU5X3By aXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorCXVuc2ln bmVkIGludCBtdXggPSBkYXBtX2tjb250cm9sX2dldF92YWx1ZSh3LT5rY29udHJvbHNbMF0pOw0K Kw0KKwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCBtdXggJWRcbiIsIF9fZnVuY19fLCBtdXgp Ow0KKwlwcml2LT5tdXhfc2VsZWN0W01VWF9QR0FfTF0gPSBtdXggPj4gUkdfQVVEUFJFQU1QTElO UFVUU0VMX1NGVDsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRfcGdhX3JfbXV4 X2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0KKwkJCSAgICAgIHN0cnVjdCBz bmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAgICAgIGludCBldmVudCkNCit7DQorCXN0cnVj dCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHct PmRhcG0pOw0KKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9n ZXRfZHJ2ZGF0YShjbXBudCk7DQorCXVuc2lnbmVkIGludCBtdXggPSBkYXBtX2tjb250cm9sX2dl dF92YWx1ZSh3LT5rY29udHJvbHNbMF0pOw0KKw0KKwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygp LCBtdXggJWRcbiIsIF9fZnVuY19fLCBtdXgpOw0KKwlwcml2LT5tdXhfc2VsZWN0W01VWF9QR0Ff Ul0gPSBtdXggPj4gUkdfQVVEUFJFQU1QUklOUFVUU0VMX1NGVDsNCisJcmV0dXJuIDA7DQorfQ0K Kw0KK3N0YXRpYyBpbnQgbXRfcGdhXzNfbXV4X2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lk Z2V0ICp3LA0KKwkJCSAgICAgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAg ICAgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBz bmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYg KnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorCXVuc2lnbmVk IGludCBtdXggPSBkYXBtX2tjb250cm9sX2dldF92YWx1ZSh3LT5rY29udHJvbHNbMF0pOw0KKw0K KwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCBtdXggJWRcbiIsIF9fZnVuY19fLCBtdXgpOw0K Kwlwcml2LT5tdXhfc2VsZWN0W01VWF9QR0FfM10gPSBtdXggPj4gUkdfQVVEUFJFQU1QM0lOUFVU U0VMX1NGVDsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRfcGdhX2xfZXZlbnQo c3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQorCQkJICBzdHJ1Y3Qgc25kX2tjb250cm9s ICprY29udHJvbCwNCisJCQkgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBv bmVudCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1 Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBu dCk7DQorCWludCBtaWNfZ2Fpbl9sID0gcHJpdi0+YW5hX2dhaW5bQVVESU9fQU5BTE9HX1ZPTFVN RV9NSUNBTVAxXTsNCisJdW5zaWduZWQgaW50IG11eF9wZ2EgPSBwcml2LT5tdXhfc2VsZWN0W01V WF9QR0FfTF07DQorCXVuc2lnbmVkIGludCBtaWNfdHlwZTsNCisNCisJc3dpdGNoIChtdXhfcGdh KSB7DQorCWNhc2UgUEdBX0xfTVVYX0FJTjA6DQorCQltaWNfdHlwZSA9IHByaXYtPm11eF9zZWxl Y3RbTVVYX01JQ19UWVBFXzBdOw0KKwkJYnJlYWs7DQorCWNhc2UgUEdBX0xfTVVYX0FJTjE6DQor CQltaWNfdHlwZSA9IHByaXYtPm11eF9zZWxlY3RbTVVYX01JQ19UWVBFXzFdOw0KKwkJYnJlYWs7 DQorCWRlZmF1bHQ6DQorCQlkZXZfZXJyKHByaXYtPmRldiwgIiVzKCksIGludmFsaWQgcGdhIG11 eCAlZFxuIiwNCisJCQlfX2Z1bmNfXywgbXV4X3BnYSk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJ fQ0KKwkvKiBpZiBpcyBWT1csIHRoZW4gZm9yY2UgMjRkQiAqLw0KKwlpZiAoSVNfVk9XX0JBU0Uo bWljX3R5cGUpKQ0KKwkJbWljX2dhaW5fbCA9IDQ7DQorCWRldl9kYmcocHJpdi0+ZGV2LCAiJXMo KSwgZXZlbnQgPSAweCV4LCBtaWNfdHlwZSAlZCwgbWljX2dhaW5fbCAlZCwgbXV4X3BnYSAlZFxu IiwNCisJCV9fZnVuY19fLCBldmVudCwgbWljX3R5cGUsIG1pY19nYWluX2wsIG11eF9wZ2EpOw0K Kw0KKwlzd2l0Y2ggKGV2ZW50KSB7DQorCWNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTVU6DQorCQlp ZiAoSVNfRENDX0JBU0UobWljX3R5cGUpKSB7DQorCQkJLyogQXVkaW8gTCBwcmVhbXBsaWZpZXIg RENDIHByZWNoYXJnZSAqLw0KKwkJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1U NjM1OV9BVURFTkNfQU5BX0NPTjAsDQorCQkJCQkgICBSR19BVURQUkVBTVBMRENQUkVDSEFSR0Vf TUFTS19TRlQsDQorCQkJCQkgICAweDEgPDwgUkdfQVVEUFJFQU1QTERDUFJFQ0hBUkdFX1NGVCk7 DQorCQl9DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9QTVU6DQorCQkvKiBz ZXQgbWljIHBnYSBnYWluICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBN VDYzNTlfQVVERU5DX0FOQV9DT04wLA0KKwkJCQkgICBSR19BVURQUkVBTVBMR0FJTl9NQVNLX1NG VCwNCisJCQkJICAgbWljX2dhaW5fbCA8PCBSR19BVURQUkVBTVBMR0FJTl9TRlQpOw0KKw0KKwkJ aWYgKElTX0RDQ19CQVNFKG1pY190eXBlKSkgew0KKwkJCS8qIEwgcHJlYW1wbGlmaWVyIERDQ0VO ICovDQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVREVOQ19B TkFfQ09OMCwNCisJCQkJCSAgIFJHX0FVRFBSRUFNUExEQ0NFTl9NQVNLX1NGVCwNCisJCQkJCSAg IDB4MSA8PCBSR19BVURQUkVBTVBMRENDRU5fU0ZUKTsNCisJCX0NCisJCWJyZWFrOw0KKwljYXNl IFNORF9TT0NfREFQTV9QT1NUX1BNRDoNCisJCS8qIEwgcHJlYW1wbGlmaWVyIERDQ0VOICovDQor CQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9DT04w LA0KKwkJCQkgICBSR19BVURQUkVBTVBMRENDRU5fTUFTS19TRlQsDQorCQkJCSAgIDB4MCA8PCBS R19BVURQUkVBTVBMRENDRU5fU0ZUKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7 DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRfcGdhX3JfZXZlbnQo c3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQorCQkJICBzdHJ1Y3Qgc25kX2tjb250cm9s ICprY29udHJvbCwNCisJCQkgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBv bmVudCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1 Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBu dCk7DQorCWludCBtaWNfZ2Fpbl9yID0gcHJpdi0+YW5hX2dhaW5bQVVESU9fQU5BTE9HX1ZPTFVN RV9NSUNBTVAyXTsNCisJdW5zaWduZWQgaW50IG11eF9wZ2EgPSBwcml2LT5tdXhfc2VsZWN0W01V WF9QR0FfUl07DQorCXVuc2lnbmVkIGludCBtaWNfdHlwZTsNCisNCisJc3dpdGNoIChtdXhfcGdh KSB7DQorCWNhc2UgUEdBX1JfTVVYX0FJTjA6DQorCQltaWNfdHlwZSA9IHByaXYtPm11eF9zZWxl Y3RbTVVYX01JQ19UWVBFXzBdOw0KKwkJYnJlYWs7DQorCWNhc2UgUEdBX1JfTVVYX0FJTjI6DQor CWNhc2UgUEdBX1JfTVVYX0FJTjM6DQorCQltaWNfdHlwZSA9IHByaXYtPm11eF9zZWxlY3RbTVVY X01JQ19UWVBFXzJdOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlkZXZfZXJyKHByaXYtPmRl diwgIiVzKCksIGludmFsaWQgcGdhIG11eCAlZFxuIiwNCisJCQlfX2Z1bmNfXywgbXV4X3BnYSk7 DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKwkvKiBpZiBpcyBWT1csIHRoZW4gZm9yY2UgMjRk QiAqLw0KKwlpZiAoSVNfVk9XX0JBU0UobWljX3R5cGUpKQ0KKwkJbWljX2dhaW5fciA9IDQ7DQor CWRldl9kYmcocHJpdi0+ZGV2LCAiJXMoKSwgZXZlbnQgPSAweCV4LCBtaWNfdHlwZSAlZCwgbWlj X2dhaW5fciAlZCwgbXV4X3BnYSAlZFxuIiwNCisJCV9fZnVuY19fLCBldmVudCwgbWljX3R5cGUs IG1pY19nYWluX3IsIG11eF9wZ2EpOw0KKw0KKwlzd2l0Y2ggKGV2ZW50KSB7DQorCWNhc2UgU05E X1NPQ19EQVBNX1BSRV9QTVU6DQorCQlpZiAoSVNfRENDX0JBU0UobWljX3R5cGUpKSB7DQorCQkJ LyogQXVkaW8gUiBwcmVhbXBsaWZpZXIgRENDIHByZWNoYXJnZSAqLw0KKwkJCXJlZ21hcF91cGRh dGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NPTjEsDQorCQkJCQkgICBS R19BVURQUkVBTVBSRENQUkVDSEFSR0VfTUFTS19TRlQsDQorCQkJCQkgICAweDEgPDwgUkdfQVVE UFJFQU1QUkRDUFJFQ0hBUkdFX1NGVCk7DQorCQl9DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09D X0RBUE1fUE9TVF9QTVU6DQorCQkvKiBzZXQgbWljIHBnYSBnYWluICovDQorCQlyZWdtYXBfdXBk YXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9DT04xLA0KKwkJCQkgICBS R19BVURQUkVBTVBSR0FJTl9NQVNLX1NGVCwNCisJCQkJICAgbWljX2dhaW5fciA8PCBSR19BVURQ UkVBTVBSR0FJTl9TRlQpOw0KKw0KKwkJaWYgKElTX0RDQ19CQVNFKG1pY190eXBlKSkgew0KKwkJ CS8qIFIgcHJlYW1wbGlmaWVyIERDQ0VOICovDQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYt PnJlZ21hcCwgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMSwNCisJCQkJCSAgIFJHX0FVRFBSRUFNUFJE Q0NFTl9NQVNLX1NGVCwNCisJCQkJCSAgIDB4MSA8PCBSR19BVURQUkVBTVBSRENDRU5fU0ZUKTsN CisJCX0NCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNRDoNCisJCS8qIFIg cHJlYW1wbGlmaWVyIERDQ0VOICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFw LCBNVDYzNTlfQVVERU5DX0FOQV9DT04xLA0KKwkJCQkgICBSR19BVURQUkVBTVBSRENDRU5fTUFT S19TRlQsDQorCQkJCSAgIDB4MCA8PCBSR19BVURQUkVBTVBSRENDRU5fU0ZUKTsNCisJCWJyZWFr Ow0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0 YXRpYyBpbnQgbXRfcGdhXzNfZXZlbnQoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQor CQkJICBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQkgIGludCBldmVudCkNCit7 DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29t cG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2Nv bXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorCWludCBtaWNfZ2Fpbl8zID0gcHJpdi0+YW5h X2dhaW5bQVVESU9fQU5BTE9HX1ZPTFVNRV9NSUNBTVAzXTsNCisJdW5zaWduZWQgaW50IG11eF9w Z2EgPSBwcml2LT5tdXhfc2VsZWN0W01VWF9QR0FfM107DQorCXVuc2lnbmVkIGludCBtaWNfdHlw ZTsNCisNCisJc3dpdGNoIChtdXhfcGdhKSB7DQorCWNhc2UgUEdBXzNfTVVYX0FJTjI6DQorCWNh c2UgUEdBXzNfTVVYX0FJTjM6DQorCQltaWNfdHlwZSA9IHByaXYtPm11eF9zZWxlY3RbTVVYX01J Q19UWVBFXzJdOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlkZXZfZXJyKHByaXYtPmRldiwg IiVzKCksIGludmFsaWQgcGdhIG11eCAlZFxuIiwNCisJCQlfX2Z1bmNfXywgbXV4X3BnYSk7DQor CQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKwkvKiBpZiBpcyBWT1csIHRoZW4gZm9yY2UgMjRkQiAq Lw0KKwlpZiAoSVNfVk9XX0JBU0UobWljX3R5cGUpKQ0KKwkJbWljX2dhaW5fMyA9IDQ7DQorCWRl dl9kYmcocHJpdi0+ZGV2LCAiJXMoKSwgZXZlbnQgPSAweCV4LCBtaWNfdHlwZSAlZCwgbWljX2dh aW5fMyAlZCwgbXV4X3BnYSAlZFxuIiwNCisJCV9fZnVuY19fLCBldmVudCwgbWljX3R5cGUsIG1p Y19nYWluXzMsIG11eF9wZ2EpOw0KKw0KKwlzd2l0Y2ggKGV2ZW50KSB7DQorCWNhc2UgU05EX1NP Q19EQVBNX1BSRV9QTVU6DQorCQlpZiAoSVNfRENDX0JBU0UobWljX3R5cGUpKSB7DQorCQkJLyog QXVkaW8gMyBwcmVhbXBsaWZpZXIgRENDIHByZWNoYXJnZSAqLw0KKwkJCXJlZ21hcF91cGRhdGVf Yml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURFTkNfQU5BX0NPTjIsDQorCQkJCQkgICBSR19B VURQUkVBTVAzRENQUkVDSEFSR0VfTUFTS19TRlQsDQorCQkJCQkgICAweDEgPDwgUkdfQVVEUFJF QU1QM0RDUFJFQ0hBUkdFX1NGVCk7DQorCQl9DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RB UE1fUE9TVF9QTVU6DQorCQkvKiBzZXQgbWljIHBnYSBnYWluICovDQorCQlyZWdtYXBfdXBkYXRl X2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQVVERU5DX0FOQV9DT04yLA0KKwkJCQkgICBSR19B VURQUkVBTVAzR0FJTl9NQVNLX1NGVCwNCisJCQkJICAgbWljX2dhaW5fMyA8PCBSR19BVURQUkVB TVAzR0FJTl9TRlQpOw0KKw0KKwkJaWYgKElTX0RDQ19CQVNFKG1pY190eXBlKSkgew0KKwkJCS8q IDMgcHJlYW1wbGlmaWVyIERDQ0VOICovDQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJl Z21hcCwgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMiwNCisJCQkJCSAgIFJHX0FVRFBSRUFNUDNEQ0NF Tl9NQVNLX1NGVCwNCisJCQkJCSAgIDB4MSA8PCBSR19BVURQUkVBTVAzRENDRU5fU0ZUKTsNCisJ CX0NCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNRDoNCisJCS8qIDMgcHJl YW1wbGlmaWVyIERDQ0VOICovDQorCQlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBN VDYzNTlfQVVERU5DX0FOQV9DT04yLA0KKwkJCQkgICBSR19BVURQUkVBTVAzRENDRU5fTUFTS19T RlQsDQorCQkJCSAgIDB4MCA8PCBSR19BVURQUkVBTVAzRENDRU5fU0ZUKTsNCisJCWJyZWFrOw0K KwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRp YyBpbnQgbXRfZGVsYXlfMjUwX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0K KwkJCSAgICAgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAgICAgIGludCBl dmVudCkNCit7DQorCXN3aXRjaCAoZXZlbnQpIHsNCisJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9Q TVU6DQorCWNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTUQ6DQorCQl1c2xlZXBfcmFuZ2UoMjUwLCAy NzApOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJfQ0KKw0KKwlyZXR1cm4g MDsNCit9DQorDQorc3RhdGljIGludCBtdF9kZWxheV8xMDBfZXZlbnQoc3RydWN0IHNuZF9zb2Nf ZGFwbV93aWRnZXQgKncsDQorCQkJICAgICAgc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2ws DQorCQkJICAgICAgaW50IGV2ZW50KQ0KK3sNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNO RF9TT0NfREFQTV9QT1NUX1BNVToNCisJY2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNRDoNCisJCXVz bGVlcF9yYW5nZSgxMDAsIDEyMCk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0K Kwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10X2hwX3B1bGxfZG93bl9l dmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkJIHN0cnVjdCBzbmRfa2Nv bnRyb2wgKmtjb250cm9sLA0KKwkJCQkgaW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9zb2Nf Y29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQor CXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRh KGNtcG50KTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVf UE1VOg0KKwkJaHBfcHVsbF9kb3duKHByaXYsIHRydWUpOw0KKwkJYnJlYWs7DQorCWNhc2UgU05E X1NPQ19EQVBNX1BPU1RfUE1EOg0KKwkJaHBfcHVsbF9kb3duKHByaXYsIGZhbHNlKTsNCisJCWJy ZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0K K3N0YXRpYyBpbnQgbXRfaHBfbXV0ZV9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAq dywNCisJCQkgICAgc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsDQorCQkJICAgIGludCBl dmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2Rh cG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBz bmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorDQorCXN3aXRjaCAoZXZlbnQp IHsNCisJY2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNVToNCisJCS8qIFNldCBIUFIvSFBMIGdhaW4g dG8gLTIyZEIgKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9aQ0RfQ09O MiwgRExfR0FJTl9OXzIyREJfUkVHKTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9Q T1NUX1BNRDoNCisJCS8qIFNldCBIUEwvSFBSIGdhaW4gdG8gbXV0ZSAqLw0KKwkJcmVnbWFwX3dy aXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X1pDRF9DT04yLCBETF9HQUlOX05fNDBEQl9SRUcpOw0K KwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9 DQorDQorc3RhdGljIGludCBtdF9ocF9kYW1wX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lk Z2V0ICp3LA0KKwkJCSAgICBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQkgICAg aW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9z b2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQorCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJp diA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisNCisJc3dpdGNoIChl dmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNRDoNCisJCS8qIERpc2FibGUgSFAg ZGFtcGluZyBjaXJjdWl0ICYgSFBOIDRLIGxvYWQgKi8NCisJCS8qIHJlc2V0IENNRkIgUFcgbGV2 ZWwgKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NP TjEwLCAweDAwMDApOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJfQ0KKw0K KwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdF9lc2RfcmVzaXN0X2V2ZW50KHN0cnVj dCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0KKwkJCSAgICAgICBzdHJ1Y3Qgc25kX2tjb250cm9s ICprY29udHJvbCwNCisJCQkgICAgICAgaW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9zb2Nf Y29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQor CXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRh KGNtcG50KTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVf UE1VOg0KKwkJLyogUmVkdWNlIEVTRCByZXNpc3RhbmNlIG9mIEFVX1JFRk4gKi8NCisJCXJlZ21h cF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjIsDQorCQkJ CSAgIFJHX0FVRFJFRk5fREVSRVNfRU5fVkFVRFAzMl9NQVNLX1NGVCwNCisJCQkJICAgMHgxIDw8 IFJHX0FVRFJFRk5fREVSRVNfRU5fVkFVRFAzMl9TRlQpOw0KKwkJdXNsZWVwX3JhbmdlKDI1MCwg MjcwKTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNRDoNCisJCS8qIElu Y3JlYXNlIEVTRCByZXNpc3RhbmNlIG9mIEFVX1JFRk4gKi8NCisJCXJlZ21hcF91cGRhdGVfYml0 cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9BVURERUNfQU5BX0NPTjIsDQorCQkJCSAgIFJHX0FVRFJF Rk5fREVSRVNfRU5fVkFVRFAzMl9NQVNLX1NGVCwgMHgwKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0 Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRf c2RtX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0KKwkJCXN0cnVjdCBzbmRf a2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCWludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29j X2NvbXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0K KwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0 YShjbXBudCk7DQorDQorCXN3aXRjaCAoZXZlbnQpIHsNCisJY2FzZSBTTkRfU09DX0RBUE1fUFJF X1BNVToNCisJCS8qIHNkbSBhdWRpbyBmaWZvIGNsb2NrIHBvd2VyIG9uICovDQorCQlyZWdtYXBf dXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZVTkNfQVVEX0NPTjIsDQorCQkJCSAg IDB4ZmZmZCwgMHgwMDA2KTsNCisJCS8qIHNjcmFtYmxlciBjbG9jayBvbiBlbmFibGUgKi8NCisJ CXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRlVOQ19BVURfQ09OMCwgMHhDQkEx KTsNCisJCS8qIHNkbSBwb3dlciBvbiAqLw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJl Z21hcCwgTVQ2MzU5X0FGVU5DX0FVRF9DT04yLA0KKwkJCQkgICAweGZmZmQsIDB4MDAwMyk7DQor CQkvKiBzZG0gZmlmbyBlbmFibGUgKi8NCisJCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdt YXAsIE1UNjM1OV9BRlVOQ19BVURfQ09OMiwNCisJCQkJICAgMHhmZmZkLCAweDAwMEIpOw0KKwkJ YnJlYWs7DQorCWNhc2UgU05EX1NPQ19EQVBNX1BPU1RfUE1EOg0KKwkJLyogREwgc2NyYW1ibGVy IGRpc2FibGluZyBzZXF1ZW5jZSAqLw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21h cCwgTVQ2MzU5X0FGVU5DX0FVRF9DT04yLA0KKwkJCQkgICAweGZmZmQsIDB4MDAwMCk7DQorCQly ZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZVTkNfQVVEX0NPTjAsIDB4Y2JhMCk7 DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorCXJldHVybiAwOw0KK30N CisNCitzdGF0aWMgaW50IG10X3NkbV8zcmRfZXZlbnQoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRn ZXQgKncsDQorCQkJICAgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAgICBp bnQgZXZlbnQpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3Nv Y19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10NjM1OV9wcml2ICpwcml2 ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKw0KKwlzd2l0Y2ggKGV2 ZW50KSB7DQorCWNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTVU6DQorCQkvKiBzZG0gYXVkaW8gZmlm byBjbG9jayBwb3dlciBvbiAqLw0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5 X0FGVU5DX0FVRF9DT04xMSwgMHgwMDA2KTsNCisJCS8qIHNjcmFtYmxlciBjbG9jayBvbiBlbmFi bGUgKi8NCisJCXJlZ21hcF93cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRlVOQ19BVURfQ09O OSwgMHhDQkExKTsNCisJCS8qIHNkbSBwb3dlciBvbiAqLw0KKwkJcmVnbWFwX3dyaXRlKHByaXYt PnJlZ21hcCwgTVQ2MzU5X0FGVU5DX0FVRF9DT04xMSwgMHgwMDAzKTsNCisJCS8qIHNkbSBmaWZv IGVuYWJsZSAqLw0KKwkJcmVnbWFwX3dyaXRlKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FGVU5DX0FV RF9DT04xMSwgMHgwMDBCKTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BN RDoNCisJCS8qIERMIHNjcmFtYmxlciBkaXNhYmxpbmcgc2VxdWVuY2UgKi8NCisJCXJlZ21hcF93 cml0ZShwcml2LT5yZWdtYXAsIE1UNjM1OV9BRlVOQ19BVURfQ09OMTEsIDB4MDAwMCk7DQorCQly ZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBNVDYzNTlfQUZVTkNfQVVEX0NPTjksIDB4Y2JhMCk7 DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorCXJldHVybiAwOw0KK30N CisNCitzdGF0aWMgaW50IG10X25jcF9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAq dywNCisJCQlzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQlpbnQgZXZlbnQpDQor ew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2Nv bXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10NjM1OV9wcml2ICpwcml2ID0gc25kX3NvY19j b21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKw0KKwlzd2l0Y2ggKGV2ZW50KSB7DQorCWNh c2UgU05EX1NPQ19EQVBNX1BSRV9QTVU6DQorCQlyZWdtYXBfd3JpdGUocHJpdi0+cmVnbWFwLCBN VDYzNTlfQUZFX05DUF9DRkcwLCAweGM4MDApOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQli cmVhazsNCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdF9kbF9ncGlvX2V2 ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0KKwkJCSAgICBzdHJ1Y3Qgc25kX2tj b250cm9sICprY29udHJvbCwNCisJCQkgICAgaW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9z b2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7 DQorCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZk YXRhKGNtcG50KTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9Q UkVfUE1VOg0KKwkJcGxheWJhY2tfZ3Bpb19zZXQocHJpdik7DQorCQlicmVhazsNCisJY2FzZSBT TkRfU09DX0RBUE1fUE9TVF9QTUQ6DQorCQlwbGF5YmFja19ncGlvX3Jlc2V0KHByaXYpOw0KKwkJ YnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorDQor c3RhdGljIGludCBtdF91bF9ncGlvX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3 LA0KKwkJCSAgICBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQkgICAgaW50IGV2 ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFw bV90b19jb21wb25lbnQody0+ZGFwbSk7DQorCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNu ZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisNCisJc3dpdGNoIChldmVudCkg ew0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVfUE1VOg0KKwkJY2FwdHVyZV9ncGlvX3NldChwcml2 KTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNRDoNCisJCWNhcHR1cmVf Z3Bpb19yZXNldChwcml2KTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0N CisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qIERBUE0gV2lkZ2V0cyAqLw0KK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCBtdDYzNTlfZGFwbV93aWRnZXRzW10gPSB7DQorCS8q IEdsb2JhbCBTdXBwbHkqLw0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIkNMS19CVUYiLCBTVVBQ TFlfU0VRX0NMS19CVUYsDQorCQkJICAgICAgTVQ2MzU5X0RDWE9fQ1cxMiwNCisJCQkgICAgICBS R19YT19BVURJT19FTl9NX1NGVCwgMCwgTlVMTCwgMCksDQorCVNORF9TT0NfREFQTV9TVVBQTFlf UygiTERPX1ZBVUQxOCIsIFNVUFBMWV9TRVFfTERPX1ZBVUQxOCwNCisJCQkgICAgICBNVDYzNTlf TERPX1ZBVUQxOF9DT04wLA0KKwkJCSAgICAgIFJHX0xET19WQVVEMThfRU5fU0ZULCAwLCBOVUxM LCAwKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBVURHTEIiLCBTVVBQTFlfU0VRX0FVRF9H TEIsDQorCQkJICAgICAgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMTMsDQorCQkJICAgICAgUkdfQVVE R0xCX1BXUkROX1ZBMzJfU0ZULCAxLCBOVUxMLCAwKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9T KCJBVURHTEJfVk9XIiwgU1VQUExZX1NFUV9BVURfR0xCX1ZPVywNCisJCQkgICAgICBNVDYzNTlf QVVEREVDX0FOQV9DT04xMywNCisJCQkgICAgICBSR19BVURHTEJfTFAyX1ZPV19FTl9WQTMyX1NG VCwgMCwgTlVMTCwgMCksDQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygiQ0xLU1EgQXVkaW8iLCBT VVBQTFlfU0VRX0NMS1NRLA0KKwkJCSAgICAgIE1UNjM1OV9BVURFTkNfQU5BX0NPTjIzLA0KKwkJ CSAgICAgIFJHX0NMS1NRX0VOX1NGVCwgMCwNCisJCQkgICAgICBtdF9jbGtzcV9ldmVudCwNCisJ CQkgICAgICBTTkRfU09DX0RBUE1fUFJFX1BNVSksDQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygi QVVETkNQX0NLIiwgU1VQUExZX1NFUV9UT1BfQ0ssDQorCQkJICAgICAgTVQ2MzU5X0FVRF9UT1Bf Q0tQRE5fQ09OMCwNCisJCQkgICAgICBSR19BVUROQ1BfQ0tfUEROX1NGVCwgMSwgTlVMTCwgMCks DQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygiWkNEMTNNX0NLIiwgU1VQUExZX1NFUV9UT1BfQ0ss DQorCQkJICAgICAgTVQ2MzU5X0FVRF9UT1BfQ0tQRE5fQ09OMCwNCisJCQkgICAgICBSR19aQ0Qx M01fQ0tfUEROX1NGVCwgMSwgTlVMTCwgMCksDQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygiQVVE X0NLIiwgU1VQUExZX1NFUV9UT1BfQ0tfTEFTVCwNCisJCQkgICAgICBNVDYzNTlfQVVEX1RPUF9D S1BETl9DT04wLA0KKwkJCSAgICAgIFJHX0FVRF9DS19QRE5fU0ZULCAxLA0KKwkJCSAgICAgIG10 X2RlbGF5XzI1MF9ldmVudCwNCisJCQkgICAgICBTTkRfU09DX0RBUE1fUE9TVF9QTVUgfCBTTkRf U09DX0RBUE1fUFJFX1BNRCksDQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygiQVVESUZfQ0siLCBT VVBQTFlfU0VRX1RPUF9DSywNCisJCQkgICAgICBNVDYzNTlfQVVEX1RPUF9DS1BETl9DT04wLA0K KwkJCSAgICAgIFJHX0FVRElGX0NLX1BETl9TRlQsIDEsIE5VTEwsIDApLA0KKwkvKiB2b3cgKi8N CisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJWT1dfQVVEX0xQVyIsIFNVUFBMWV9TRVFfVk9XX0FV RF9MUFcsDQorCQkJICAgICAgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAgICAgIG10X3Zvd19h dWRfbHB3X2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19E QVBNX1BPU1RfUE1EKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBVURfVk9XIiwgU1VQUExZ X1NFUV9BVURfVk9XLA0KKwkJCSAgICAgIE1UNjM1OV9BVURFTkNfQU5BX0NPTjIzLA0KKwkJCSAg ICAgIFJHX0FVRElPX1ZPV19FTl9TRlQsIDAsIE5VTEwsIDApLA0KKwlTTkRfU09DX0RBUE1fU1VQ UExZX1MoIlZPV19DTEsiLCBTVVBQTFlfU0VRX1ZPV19DTEssDQorCQkJICAgICAgTVQ2MzU5X0RD WE9fQ1cxMSwNCisJCQkgICAgICBSR19YT19WT1dfRU5fU0ZULCAwLCBOVUxMLCAwKSwNCisJU05E X1NPQ19EQVBNX1NVUFBMWV9TKCJWT1dfTERPIiwgU1VQUExZX1NFUV9WT1dfTERPLA0KKwkJCSAg ICAgIE1UNjM1OV9BVURFTkNfQU5BX0NPTjIzLA0KKwkJCSAgICAgIFJHX0NMS1NRX0VOX1ZPV19T RlQsIDAsIE5VTEwsIDApLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIlZPV19ESUdfQ0ZHIiwg U1VQUExZX1NFUV9WT1dfRElHX0NGRywNCisJCQkgICAgICBNVDYzNTlfQVVEX1RPUF9DS1BETl9D T04wLA0KKwkJCSAgICAgIFJHX1ZPVzEzTV9DS19QRE5fU0ZULCAxLA0KKwkJCSAgICAgIG10X3Zv d19kaWdpdGFsX2NmZ19ldmVudCwNCisJCQkgICAgICBTTkRfU09DX0RBUE1fUE9TVF9QTVUgfCBT TkRfU09DX0RBUE1fUFJFX1BNRCksDQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygiVk9XX1BFUklP RElDX0NGRyIsIFNVUFBMWV9TRVFfVk9XX1BFUklPRElDX0NGRywNCisJCQkgICAgICBTTkRfU09D X05PUE0sIDAsIDAsDQorCQkJICAgICAgbXRfdm93X3BlcmlvZGljX2NmZ19ldmVudCwNCisJCQkg ICAgICBTTkRfU09DX0RBUE1fUFJFX1BNVSB8IFNORF9TT0NfREFQTV9QT1NUX1BNRCksDQorCS8q IERpZ2l0YWwgQ2xvY2sgKi8NCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBVURJT19UT1BfQUZF X0NUTCIsIFNVUFBMWV9TRVFfQVVEX1RPUF9MQVNULA0KKwkJCSAgICAgIE1UNjM1OV9BVURJT19U T1BfQ09OMCwNCisJCQkgICAgICBQRE5fQUZFX0NUTF9TRlQsIDEsDQorCQkJICAgICAgbXRfZGVs YXlfMjUwX2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QT1NUX1BNVSB8IFNORF9TT0Nf REFQTV9QUkVfUE1EKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBVURJT19UT1BfREFDX0NU TCIsIFNVUFBMWV9TRVFfQVVEX1RPUCwNCisJCQkgICAgICBNVDYzNTlfQVVESU9fVE9QX0NPTjAs DQorCQkJICAgICAgUEROX0RBQ19DVExfU0ZULCAxLCBOVUxMLCAwKSwNCisJU05EX1NPQ19EQVBN X1NVUFBMWV9TKCJBVURJT19UT1BfQURDX0NUTCIsIFNVUFBMWV9TRVFfQVVEX1RPUCwNCisJCQkg ICAgICBNVDYzNTlfQVVESU9fVE9QX0NPTjAsDQorCQkJICAgICAgUEROX0FEQ19DVExfU0ZULCAx LCBOVUxMLCAwKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBVURJT19UT1BfQUREQTZfQURD X0NUTCIsIFNVUFBMWV9TRVFfQVVEX1RPUCwNCisJCQkgICAgICBNVDYzNTlfQVVESU9fVE9QX0NP TjAsDQorCQkJICAgICAgUEROX0FEREE2X0FEQ19DVExfU0ZULCAxLCBOVUxMLCAwKSwNCisJU05E X1NPQ19EQVBNX1NVUFBMWV9TKCJBVURJT19UT1BfSTJTX0RMIiwgU1VQUExZX1NFUV9BVURfVE9Q LA0KKwkJCSAgICAgIE1UNjM1OV9BVURJT19UT1BfQ09OMCwNCisJCQkgICAgICBQRE5fSTJTX0RM X0NUTF9TRlQsIDEsIE5VTEwsIDApLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIkFVRElPX1RP UF9QV1JfQ0xLIiwgU1VQUExZX1NFUV9BVURfVE9QLA0KKwkJCSAgICAgIE1UNjM1OV9BVURJT19U T1BfQ09OMCwNCisJCQkgICAgICBQV1JfQ0xLX0RJU19DVExfU0ZULCAxLCBOVUxMLCAwKSwNCisJ U05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBVURJT19UT1BfUEROX0FGRV9URVNUTU9ERUwiLCBTVVBQ TFlfU0VRX0FVRF9UT1AsDQorCQkJICAgICAgTVQ2MzU5X0FVRElPX1RPUF9DT04wLA0KKwkJCSAg ICAgIFBETl9BRkVfVEVTVE1PREVMX0NUTF9TRlQsIDEsIE5VTEwsIDApLA0KKwlTTkRfU09DX0RB UE1fU1VQUExZX1MoIkFVRElPX1RPUF9QRE5fUkVTRVJWRUQiLCBTVVBQTFlfU0VRX0FVRF9UT1As DQorCQkJICAgICAgTVQ2MzU5X0FVRElPX1RPUF9DT04wLA0KKwkJCSAgICAgIFBETl9SRVNFUlZF RF9TRlQsIDEsIE5VTEwsIDApLA0KKw0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIlNETSIsIFNV UFBMWV9TRVFfRExfU0RNLA0KKwkJCSAgICAgIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgICAg ICBtdF9zZG1fZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09D X0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIlNETV8zUkQiLCBTVVBQ TFlfU0VRX0RMX1NETSwNCisJCQkgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgICAg bXRfc2RtXzNyZF9ldmVudCwNCisJCQkgICAgICBTTkRfU09DX0RBUE1fUFJFX1BNVSB8IFNORF9T T0NfREFQTV9QT1NUX1BNRCksDQorDQorCS8qIGNoMTIzIHNoYXJlIFNETSBGSUZPIENMSyAqLw0K KwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIlNETV9GSUZPX0NMSyIsIFNVUFBMWV9TRVFfRExfU0RN X0ZJRk9fQ0xLLA0KKwkJCSAgICAgIE1UNjM1OV9BRlVOQ19BVURfQ09OMiwNCisJCQkgICAgICBD Q0lfQUZJRk9fQ0xLX1BXREJfU0ZULCAwLA0KKwkJCSAgICAgIE5VTEwsIDApLA0KKw0KKwlTTkRf U09DX0RBUE1fU1VQUExZX1MoIk5DUCIsIFNVUFBMWV9TRVFfRExfTkNQLA0KKwkJCSAgICAgIE1U NjM1OV9BRkVfTkNQX0NGRzAsDQorCQkJICAgICAgUkdfTkNQX09OX1NGVCwgMCwNCisJCQkgICAg ICBtdF9uY3BfZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUpLA0KKw0KKwlT TkRfU09DX0RBUE1fU1VQUExZKCJETCBEaWdpdGFsIENsb2NrIiwgU05EX1NPQ19OT1BNLA0KKwkJ CSAgICAwLCAwLCBOVUxMLCAwKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWSgiREwgRGlnaXRhbCBD bG9jayBDSF8xXzIiLCBTTkRfU09DX05PUE0sDQorCQkJICAgIDAsIDAsIE5VTEwsIDApLA0KKwlT TkRfU09DX0RBUE1fU1VQUExZKCJETCBEaWdpdGFsIENsb2NrIENIXzMiLCBTTkRfU09DX05PUE0s DQorCQkJICAgIDAsIDAsIE5VTEwsIDApLA0KKw0KKwkvKiBBRkUgT04gKi8NCisJU05EX1NPQ19E QVBNX1NVUFBMWV9TKCJBRkVfT04iLCBTVVBQTFlfU0VRX0FGRSwNCisJCQkgICAgICBNVDYzNTlf QUZFX1VMX0RMX0NPTjAsIEFGRV9PTl9TRlQsIDAsDQorCQkJICAgICAgTlVMTCwgMCksDQorDQor CS8qIEdQSU8gKi8NCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJETF9HUElPIiwgU1VQUExZX1NF UV9ETF9HUElPLA0KKwkJCSAgICAgIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgICAgICBtdF9k bF9ncGlvX2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19E QVBNX1BPU1RfUE1EKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJVTF9HUElPIiwgU1VQUExZ X1NFUV9VTF9HUElPLA0KKwkJCSAgICAgIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgICAgICBt dF91bF9ncGlvX2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NP Q19EQVBNX1BPU1RfUE1EKSwNCisNCisJLyogQUlGIFJ4Ki8NCisJU05EX1NPQ19EQVBNX0FJRl9J TigiQUlGX1JYIiwgIkFJRjEgUGxheWJhY2siLCAwLA0KKwkJCSAgICBTTkRfU09DX05PUE0sIDAs IDApLA0KKw0KKwlTTkRfU09DX0RBUE1fQUlGX0lOKCJBSUYyX1JYIiwgIkFJRjIgUGxheWJhY2si LCAwLA0KKwkJCSAgICBTTkRfU09DX05PUE0sIDAsIDApLA0KKw0KKwlTTkRfU09DX0RBUE1fU1VQ UExZX1MoIkFGRV9ETF9TUkMiLCBTVVBQTFlfU0VRX0RMX1NSQywNCisJCQkgICAgICBNVDYzNTlf QUZFX0RMX1NSQzJfQ09OMF9MLA0KKwkJCSAgICAgIERMXzJfU1JDX09OX1RNUF9DVExfUFJFX1NG VCwgMCwNCisJCQkgICAgICBOVUxMLCAwKSwNCisNCisJLyogREwgU3VwcGx5ICovDQorCVNORF9T T0NfREFQTV9TVVBQTFkoIkRMIFBvd2VyIFN1cHBseSIsIFNORF9TT0NfTk9QTSwNCisJCQkgICAg MCwgMCwgTlVMTCwgMCksDQorDQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygiRVNEX1JFU0lTVCIs IFNVUFBMWV9TRVFfRExfRVNEX1JFU0lTVCwNCisJCQkgICAgICBTTkRfU09DX05PUE0sDQorCQkJ ICAgICAgMCwgMCwNCisJCQkgICAgICBtdF9lc2RfcmVzaXN0X2V2ZW50LA0KKwkJCSAgICAgIFNO RF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BPU1RfUE1EKSwNCisJU05EX1NPQ19E QVBNX1NVUFBMWV9TKCJMRE8iLCBTVVBQTFlfU0VRX0RMX0xETywNCisJCQkgICAgICBNVDYzNTlf QVVEREVDX0FOQV9DT04xNCwNCisJCQkgICAgICBSR19MQ0xET19ERUNfRU5fVkEzMl9TRlQsIDAs DQorCQkJICAgICAgTlVMTCwgMCksDQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygiTERPX1JFTU9U RSIsIFNVUFBMWV9TRVFfRExfTERPX1JFTU9URV9TRU5TRSwNCisJCQkgICAgICBNVDYzNTlfQVVE REVDX0FOQV9DT04xNCwNCisJCQkgICAgICBSR19MQ0xET19ERUNfUkVNT1RFX1NFTlNFX1ZBMThf U0ZULCAwLA0KKwkJCSAgICAgIE5VTEwsIDApLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIk5W X1JFR1VMQVRPUiIsIFNVUFBMWV9TRVFfRExfTlYsDQorCQkJICAgICAgTVQ2MzU5X0FVRERFQ19B TkFfQ09OMTQsDQorCQkJICAgICAgUkdfTlZSRUdfRU5fVkFVRFAzMl9TRlQsIDAsDQorCQkJICAg ICAgbXRfZGVsYXlfMTAwX2V2ZW50LCBTTkRfU09DX0RBUE1fUE9TVF9QTVUpLA0KKwlTTkRfU09D X0RBUE1fU1VQUExZX1MoIklCSVNUIiwgU1VQUExZX1NFUV9ETF9JQklTVCwNCisJCQkgICAgICBN VDYzNTlfQVVEREVDX0FOQV9DT04xMiwNCisJCQkgICAgICBSR19BVURJQklBU1BXUkROX1ZBVURQ MzJfU0ZULCAxLA0KKwkJCSAgICAgIE5VTEwsIDApLA0KKw0KKwkvKiBEQUMgKi8NCisJU05EX1NP Q19EQVBNX01VWCgiREFDIEluIE11eCIsIFNORF9TT0NfTk9QTSwgMCwgMCwgJmRhY19pbl9tdXhf Y29udHJvbCksDQorDQorCVNORF9TT0NfREFQTV9EQUMoIkRBQ0wiLCBOVUxMLCBTTkRfU09DX05P UE0sIDAsIDApLA0KKw0KKwlTTkRfU09DX0RBUE1fREFDKCJEQUNSIiwgTlVMTCwgU05EX1NPQ19O T1BNLCAwLCAwKSwNCisNCisJU05EX1NPQ19EQVBNX0RBQygiREFDXzNSRCIsIE5VTEwsIFNORF9T T0NfTk9QTSwgMCwgMCksDQorDQorCS8qIEhlYWRwaG9uZSAqLw0KKwlTTkRfU09DX0RBUE1fTVVY X0UoIkhQTCBNdXgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgJmhwbF9pbl9tdXhfY29u dHJvbCwNCisJCQkgICBtdF9ocF9ldmVudCwNCisJCQkgICBTTkRfU09DX0RBUE1fUFJFX1BNVSB8 IFNORF9TT0NfREFQTV9QUkVfUE1EKSwNCisNCisJU05EX1NPQ19EQVBNX01VWF9FKCJIUFIgTXV4 IiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAgICZocHJfaW5fbXV4X2NvbnRyb2wsDQorCQkJ ICAgbXRfaHBfZXZlbnQsDQorCQkJICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RB UE1fUFJFX1BNRCksDQorDQorCVNORF9TT0NfREFQTV9TVVBQTFkoIkhQX1N1cHBseSIsIFNORF9T T0NfTk9QTSwNCisJCQkgICAgMCwgMCwgTlVMTCwgMCksDQorCVNORF9TT0NfREFQTV9TVVBQTFlf UygiSFBfUFVMTF9ET1dOIiwgU1VQUExZX1NFUV9IUF9QVUxMX0RPV04sDQorCQkJICAgICAgU05E X1NPQ19OT1BNLA0KKwkJCSAgICAgIDAsIDAsDQorCQkJICAgICAgbXRfaHBfcHVsbF9kb3duX2V2 ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BPU1Rf UE1EKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJIUF9NVVRFIiwgU1VQUExZX1NFUV9IUF9N VVRFLA0KKwkJCSAgICAgIFNORF9TT0NfTk9QTSwNCisJCQkgICAgICAwLCAwLA0KKwkJCSAgICAg IG10X2hwX211dGVfZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRf U09DX0RBUE1fUE9TVF9QTUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIkhQX0RBTVAiLCBT VVBQTFlfU0VRX0hQX0RBTVBJTkdfT0ZGX1JFU0VUX0NNRkIsDQorCQkJICAgICAgU05EX1NPQ19O T1BNLA0KKwkJCSAgICAgIDAsIDAsDQorCQkJICAgICAgbXRfaHBfZGFtcF9ldmVudCwNCisJCQkg ICAgICBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKw0KKwkvKiBSZWNlaXZlciAqLw0KKwlTTkRf U09DX0RBUE1fTVVYX0UoIlJDViBNdXgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgJnJj dl9pbl9tdXhfY29udHJvbCwNCisJCQkgICBtdF9yY3ZfZXZlbnQsDQorCQkJICAgU05EX1NPQ19E QVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUFJFX1BNRCksDQorDQorCS8qIExPTCAqLw0KKwlT TkRfU09DX0RBUE1fTVVYX0UoIkxPTCBNdXgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAg JmxvX2luX211eF9jb250cm9sLA0KKwkJCSAgIG10X2xvX2V2ZW50LA0KKwkJCSAgIFNORF9TT0Nf REFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BSRV9QTUQpLA0KKw0KKwkvKiBPdXRwdXRzICov DQorCVNORF9TT0NfREFQTV9PVVRQVVQoIlJlY2VpdmVyIiksDQorCVNORF9TT0NfREFQTV9PVVRQ VVQoIkhlYWRwaG9uZSBMIiksDQorCVNORF9TT0NfREFQTV9PVVRQVVQoIkhlYWRwaG9uZSBSIiks DQorCVNORF9TT0NfREFQTV9PVVRQVVQoIkhlYWRwaG9uZSBMIEV4dCBTcGsgQW1wIiksDQorCVNO RF9TT0NfREFQTV9PVVRQVVQoIkhlYWRwaG9uZSBSIEV4dCBTcGsgQW1wIiksDQorCVNORF9TT0Nf REFQTV9PVVRQVVQoIkxJTkVPVVQgTCIpLA0KKw0KKwkvKiBTR0VOICovDQorCVNORF9TT0NfREFQ TV9TVVBQTFkoIlNHRU4gREwgRW5hYmxlIiwgTVQ2MzU5X0FGRV9TR0VOX0NGRzAsDQorCQkJICAg IFNHRU5fREFDX0VOX0NUTF9TRlQsIDAsIE5VTEwsIDApLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZ KCJTR0VOIE1VVEUiLCBNVDYzNTlfQUZFX1NHRU5fQ0ZHMCwNCisJCQkgICAgU0dFTl9NVVRFX1NX X0NUTF9TRlQsIDEsDQorCQkJICAgIG10X3NnZW5fZXZlbnQsDQorCQkJICAgIFNORF9TT0NfREFQ TV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BPU1RfUE1EKSwNCisJU05EX1NPQ19EQVBNX1NVUFBM WSgiU0dFTiBETCBTUkMiLCBNVDYzNTlfQUZFX0RMX1NSQzJfQ09OMF9MLA0KKwkJCSAgICBETF8y X1NSQ19PTl9UTVBfQ1RMX1BSRV9TRlQsIDAsIE5VTEwsIDApLA0KKw0KKwlTTkRfU09DX0RBUE1f SU5QVVQoIlNHRU4gREwiKSwNCisNCisJLyogVXBsaW5rcyAqLw0KKwlTTkRfU09DX0RBUE1fQUlG X09VVCgiQUlGMVRYIiwgIkFJRjEgQ2FwdHVyZSIsIDAsDQorCQkJICAgICBTTkRfU09DX05PUE0s IDAsIDApLA0KKwlTTkRfU09DX0RBUE1fQUlGX09VVCgiQUlGMlRYIiwgIkFJRjIgQ2FwdHVyZSIs IDAsDQorCQkJICAgICBTTkRfU09DX05PUE0sIDAsIDApLA0KKw0KKwlTTkRfU09DX0RBUE1fU1VQ UExZX1MoIkFEQ19DTEtHRU4iLCBTVVBQTFlfU0VRX0FEQ19DTEtHRU4sDQorCQkJICAgICAgU05E X1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAgICAgIG10X2FkY19jbGtfZ2VuX2V2ZW50LA0KKwkJCSAg ICAgIFNORF9TT0NfREFQTV9QT1NUX1BNVSB8IFNORF9TT0NfREFQTV9QUkVfUE1EKSwNCisNCisJ U05EX1NPQ19EQVBNX1NVUFBMWV9TKCJEQ0NfQ0xLIiwgU1VQUExZX1NFUV9EQ0NfQ0xLLA0KKwkJ CSAgICAgIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgICAgICBtdF9kY2NfY2xrX2V2ZW50LA0K KwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BPU1RfUE1EKSwN CisNCisJLyogVXBsaW5rcyBNVVggKi8NCisJU05EX1NPQ19EQVBNX01VWCgiQUlGIE91dCBNdXgi LCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICZhaWZfb3V0X211eF9jb250cm9sKSwNCisNCisJ U05EX1NPQ19EQVBNX01VWCgiQUlGMiBPdXQgTXV4IiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJ CSAmYWlmMl9vdXRfbXV4X2NvbnRyb2wpLA0KKw0KKwlTTkRfU09DX0RBUE1fU1VQUExZKCJBSUZU WF9TdXBwbHkiLCBTTkRfU09DX05PUE0sIDAsIDAsIE5VTEwsIDApLA0KKw0KKwlTTkRfU09DX0RB UE1fU1VQUExZX1MoIk1US0FJRl9UWCIsIFNVUFBMWV9TRVFfVUxfTVRLQUlGLA0KKwkJCSAgICAg IFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgICAgICBtdF9tdGthaWZfdHhfZXZlbnQsDQorCQkJ ICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQpLA0KKw0K KwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIlVMX1NSQyIsIFNVUFBMWV9TRVFfVUxfU1JDLA0KKwkJ CSAgICAgIE1UNjM1OV9BRkVfVUxfU1JDX0NPTjBfTCwNCisJCQkgICAgICBVTF9TUkNfT05fVE1Q X0NUTF9TRlQsIDAsDQorCQkJICAgICAgTlVMTCwgMCksDQorDQorCVNORF9TT0NfREFQTV9TVVBQ TFlfUygiVUxfU1JDX0RNSUMiLCBTVVBQTFlfU0VRX1VMX1NSQ19ETUlDLA0KKwkJCSAgICAgIFNO RF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgICAgICBtdF91bF9zcmNfZG1pY19ldmVudCwNCisJCQkg ICAgICBTTkRfU09DX0RBUE1fUFJFX1BNVSB8IFNORF9TT0NfREFQTV9QT1NUX1BNRCksDQorDQor CVNORF9TT0NfREFQTV9TVVBQTFlfUygiVUxfU1JDXzM0IiwgU1VQUExZX1NFUV9VTF9TUkMsDQor CQkJICAgICAgTVQ2MzU5X0FGRV9BRERBNl9VTF9TUkNfQ09OMF9MLA0KKwkJCSAgICAgIEFEREE2 X1VMX1NSQ19PTl9UTVBfQ1RMX1NGVCwgMCwNCisJCQkgICAgICBOVUxMLCAwKSwNCisNCisJU05E X1NPQ19EQVBNX1NVUFBMWV9TKCJVTF9TUkNfMzRfRE1JQyIsIFNVUFBMWV9TRVFfVUxfU1JDX0RN SUMsDQorCQkJICAgICAgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAgICAgIG10X3VsX3NyY18z NF9kbWljX2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19E QVBNX1BPU1RfUE1EKSwNCisNCisJU05EX1NPQ19EQVBNX01VWCgiTUlTTzBfTVVYIiwgU05EX1NP Q19OT1BNLCAwLCAwLCAmbWlzbzBfbXV4X2NvbnRyb2wpLA0KKwlTTkRfU09DX0RBUE1fTVVYKCJN SVNPMV9NVVgiLCBTTkRfU09DX05PUE0sIDAsIDAsICZtaXNvMV9tdXhfY29udHJvbCksDQorCVNO RF9TT0NfREFQTV9NVVgoIk1JU08yX01VWCIsIFNORF9TT0NfTk9QTSwgMCwgMCwgJm1pc28yX211 eF9jb250cm9sKSwNCisNCisJU05EX1NPQ19EQVBNX01VWCgiVUxfU1JDX01VWCIsIFNORF9TT0Nf Tk9QTSwgMCwgMCwNCisJCQkgJnVsX3NyY19tdXhfY29udHJvbCksDQorCVNORF9TT0NfREFQTV9N VVgoIlVMMl9TUkNfTVVYIiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAmdWwyX3NyY19tdXhf Y29udHJvbCksDQorCVNORF9TT0NfREFQTV9NVVgoIlZPV19VTF9TUkNfTVVYIiwgU05EX1NPQ19O T1BNLCAwLCAwLA0KKwkJCSAmdm93X3VsX3NyY19tdXhfY29udHJvbCksDQorDQorCVNORF9TT0Nf REFQTV9NVVgoIkRNSUMwX01VWCIsIFNORF9TT0NfTk9QTSwgMCwgMCwgJmRtaWMwX211eF9jb250 cm9sKSwNCisJU05EX1NPQ19EQVBNX01VWCgiRE1JQzFfTVVYIiwgU05EX1NPQ19OT1BNLCAwLCAw LCAmZG1pYzFfbXV4X2NvbnRyb2wpLA0KKwlTTkRfU09DX0RBUE1fTVVYKCJETUlDMl9NVVgiLCBT TkRfU09DX05PUE0sIDAsIDAsICZkbWljMl9tdXhfY29udHJvbCksDQorDQorCVNORF9TT0NfREFQ TV9NVVgoIlZPV19BTUlDMF9NVVgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICZ2b3dfYW1p YzBfbXV4X2NvbnRyb2wpLA0KKwlTTkRfU09DX0RBUE1fTVVYKCJWT1dfQU1JQzFfTVVYIiwgU05E X1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAmdm93X2FtaWMxX211eF9jb250cm9sKSwNCisNCisJU05E X1NPQ19EQVBNX01VWF9FKCJBRENfTF9NdXgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAg JmFkY19sZWZ0X211eF9jb250cm9sLCBOVUxMLCAwKSwNCisJU05EX1NPQ19EQVBNX01VWF9FKCJB RENfUl9NdXgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgJmFkY19yaWdodF9tdXhfY29u dHJvbCwgTlVMTCwgMCksDQorCVNORF9TT0NfREFQTV9NVVhfRSgiQURDXzNfTXV4IiwgU05EX1NP Q19OT1BNLCAwLCAwLA0KKwkJCSAgICZhZGNfM19tdXhfY29udHJvbCwgTlVMTCwgMCksDQorDQor CVNORF9TT0NfREFQTV9BREMoIkFEQ19MIiwgTlVMTCwgU05EX1NPQ19OT1BNLCAwLCAwKSwNCisJ U05EX1NPQ19EQVBNX0FEQygiQURDX1IiLCBOVUxMLCBTTkRfU09DX05PUE0sIDAsIDApLA0KKwlT TkRfU09DX0RBUE1fQURDKCJBRENfMyIsIE5VTEwsIFNORF9TT0NfTk9QTSwgMCwgMCksDQorDQor CVNORF9TT0NfREFQTV9TVVBQTFlfUygiQURDX0xfRU4iLCBTVVBQTFlfU0VRX1VMX0FEQywNCisJ CQkgICAgICBNVDYzNTlfQVVERU5DX0FOQV9DT04wLA0KKwkJCSAgICAgIFJHX0FVREFEQ0xQV1JV UF9TRlQsIDAsDQorCQkJICAgICAgbXRfYWRjX2xfZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19E QVBNX1BPU1RfUE1VKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBRENfUl9FTiIsIFNVUFBM WV9TRVFfVUxfQURDLA0KKwkJCSAgICAgIE1UNjM1OV9BVURFTkNfQU5BX0NPTjEsDQorCQkJICAg ICAgUkdfQVVEQURDUlBXUlVQX1NGVCwgMCwNCisJCQkgICAgICBtdF9hZGNfcl9ldmVudCwNCisJ CQkgICAgICBTTkRfU09DX0RBUE1fUE9TVF9QTVUpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1Mo IkFEQ18zX0VOIiwgU1VQUExZX1NFUV9VTF9BREMsDQorCQkJICAgICAgTVQ2MzU5X0FVREVOQ19B TkFfQ09OMiwNCisJCQkgICAgICBSR19BVURBREMzUFdSVVBfU0ZULCAwLA0KKwkJCSAgICAgIG10 X2FkY18zX2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QT1NUX1BNVSksDQorDQorCVNO RF9TT0NfREFQTV9NVVhfRSgiUEdBX0xfTXV4IiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAg ICZwZ2FfbGVmdF9tdXhfY29udHJvbCwNCisJCQkgICBtdF9wZ2FfbF9tdXhfZXZlbnQsDQorCQkJ ICAgU05EX1NPQ19EQVBNX1dJTExfUE1VKSwNCisJU05EX1NPQ19EQVBNX01VWF9FKCJQR0FfUl9N dXgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgJnBnYV9yaWdodF9tdXhfY29udHJvbCwN CisJCQkgICBtdF9wZ2Ffcl9tdXhfZXZlbnQsDQorCQkJICAgU05EX1NPQ19EQVBNX1dJTExfUE1V KSwNCisJU05EX1NPQ19EQVBNX01VWF9FKCJQR0FfM19NdXgiLCBTTkRfU09DX05PUE0sIDAsIDAs DQorCQkJICAgJnBnYV8zX211eF9jb250cm9sLA0KKwkJCSAgIG10X3BnYV8zX211eF9ldmVudCwN CisJCQkgICBTTkRfU09DX0RBUE1fV0lMTF9QTVUpLA0KKw0KKwlTTkRfU09DX0RBUE1fUEdBKCJQ R0FfTCIsIFNORF9TT0NfTk9QTSwgMCwgMCwgTlVMTCwgMCksDQorCVNORF9TT0NfREFQTV9QR0Eo IlBHQV9SIiwgU05EX1NPQ19OT1BNLCAwLCAwLCBOVUxMLCAwKSwNCisJU05EX1NPQ19EQVBNX1BH QSgiUEdBXzMiLCBTTkRfU09DX05PUE0sIDAsIDAsIE5VTEwsIDApLA0KKw0KKwlTTkRfU09DX0RB UE1fU1VQUExZX1MoIlBHQV9MX0VOIiwgU1VQUExZX1NFUV9VTF9QR0EsDQorCQkJICAgICAgTVQ2 MzU5X0FVREVOQ19BTkFfQ09OMCwNCisJCQkgICAgICBSR19BVURQUkVBTVBMT05fU0ZULCAwLA0K KwkJCSAgICAgIG10X3BnYV9sX2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1V IHwNCisJCQkgICAgICBTTkRfU09DX0RBUE1fUE9TVF9QTVUgfA0KKwkJCSAgICAgIFNORF9TT0Nf REFQTV9QT1NUX1BNRCksDQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygiUEdBX1JfRU4iLCBTVVBQ TFlfU0VRX1VMX1BHQSwNCisJCQkgICAgICBNVDYzNTlfQVVERU5DX0FOQV9DT04xLA0KKwkJCSAg ICAgIFJHX0FVRFBSRUFNUFJPTl9TRlQsIDAsDQorCQkJICAgICAgbXRfcGdhX3JfZXZlbnQsDQor CQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9Q T1NUX1BNVSB8DQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BPU1RfUE1EKSwNCisJU05EX1NPQ19E QVBNX1NVUFBMWV9TKCJQR0FfM19FTiIsIFNVUFBMWV9TRVFfVUxfUEdBLA0KKwkJCSAgICAgIE1U NjM1OV9BVURFTkNfQU5BX0NPTjIsDQorCQkJICAgICAgUkdfQVVEUFJFQU1QM09OX1NGVCwgMCwN CisJCQkgICAgICBtdF9wZ2FfM19ldmVudCwNCisJCQkgICAgICBTTkRfU09DX0RBUE1fUFJFX1BN VSB8DQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BPU1RfUE1VIHwNCisJCQkgICAgICBTTkRfU09D X0RBUE1fUE9TVF9QTUQpLA0KKw0KKwkvKiBVTCBpbnB1dCAqLw0KKwlTTkRfU09DX0RBUE1fSU5Q VVQoIkFJTjAiKSwNCisJU05EX1NPQ19EQVBNX0lOUFVUKCJBSU4xIiksDQorCVNORF9TT0NfREFQ TV9JTlBVVCgiQUlOMiIpLA0KKwlTTkRfU09DX0RBUE1fSU5QVVQoIkFJTjMiKSwNCisNCisJU05E X1NPQ19EQVBNX0lOUFVUKCJBSU4wX0RNSUMiKSwNCisJU05EX1NPQ19EQVBNX0lOUFVUKCJBSU4y X0RNSUMiKSwNCisJU05EX1NPQ19EQVBNX0lOUFVUKCJBSU4zX0RNSUMiKSwNCisNCisJLyogbWlj IGJpYXMgKi8NCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJNSUNfQklBU18wIiwgU1VQUExZX1NF UV9NSUNfQklBUywNCisJCQkgICAgICBNVDYzNTlfQVVERU5DX0FOQV9DT04xNSwNCisJCQkgICAg ICBSR19BVURQV0RCTUlDQklBUzBfU0ZULCAwLA0KKwkJCSAgICAgIG10X21pY19iaWFzXzBfZXZl bnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9Q TUQpLA0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIk1JQ19CSUFTXzEiLCBTVVBQTFlfU0VRX01J Q19CSUFTLA0KKwkJCSAgICAgIE1UNjM1OV9BVURFTkNfQU5BX0NPTjE2LA0KKwkJCSAgICAgIFJH X0FVRFBXREJNSUNCSUFTMV9TRlQsIDAsDQorCQkJICAgICAgbXRfbWljX2JpYXNfMV9ldmVudCwN CisJCQkgICAgICBTTkRfU09DX0RBUE1fUFJFX1BNVSksDQorCVNORF9TT0NfREFQTV9TVVBQTFlf UygiTUlDX0JJQVNfMiIsIFNVUFBMWV9TRVFfTUlDX0JJQVMsDQorCQkJICAgICAgTVQ2MzU5X0FV REVOQ19BTkFfQ09OMTcsDQorCQkJICAgICAgUkdfQVVEUFdEQk1JQ0JJQVMyX1NGVCwgMCwNCisJ CQkgICAgICBtdF9taWNfYmlhc18yX2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVf UE1VIHwgU05EX1NPQ19EQVBNX1BPU1RfUE1EKSwNCisNCisJLyogZG1pYyAqLw0KKwlTTkRfU09D X0RBUE1fU1VQUExZX1MoIkRNSUNfMCIsIFNVUFBMWV9TRVFfRE1JQywNCisJCQkgICAgICBNVDYz NTlfQVVERU5DX0FOQV9DT04xMywNCisJCQkgICAgICBSR19BVURESUdNSUNFTl9TRlQsIDAsDQor CQkJICAgICAgTlVMTCwgMCksDQorCVNORF9TT0NfREFQTV9TVVBQTFlfUygiRE1JQ18xIiwgU1VQ UExZX1NFUV9ETUlDLA0KKwkJCSAgICAgIE1UNjM1OV9BVURFTkNfQU5BX0NPTjE0LA0KKwkJCSAg ICAgIFJHX0FVRERJR01JQzFFTl9TRlQsIDAsDQorCQkJICAgICAgTlVMTCwgMCksDQorDQorCS8q IFZPVyAqLw0KKwlTTkRfU09DX0RBUE1fQUlGX09VVF9FKCJWT1cgVFgiLCAiVk9XIENhcHR1cmUi LCAwLA0KKwkJCSAgICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgICAgIG10X3Zvd19v dXRfZXZlbnQsDQorCQkJICAgICAgIFNORF9TT0NfREFQTV9XSUxMX1BNVSB8DQorCQkJICAgICAg IFNORF9TT0NfREFQTV9QUkVfUE1VIHwNCisJCQkgICAgICAgU05EX1NPQ19EQVBNX1BPU1RfUE1E KSwNCit9Ow0KKw0KK3N0YXRpYyBpbnQgbXRfdm93X2FtaWNfY29ubmVjdChzdHJ1Y3Qgc25kX3Nv Y19kYXBtX3dpZGdldCAqc291cmNlLA0KKwkJCSAgICAgICBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dp ZGdldCAqc2luaykNCit7DQorCXN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3ID0gc2luazsN CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFwbV90b19jb21w b25lbnQody0+ZGFwbSk7DQorCXN0cnVjdCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29t cG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisNCisJaWYgKElTX1ZPV19BTUlDX0JBU0UocHJp di0+bXV4X3NlbGVjdFtNVVhfTUlDX1RZUEVfMF0pIHx8DQorCSAgICBJU19WT1dfQU1JQ19CQVNF KHByaXYtPm11eF9zZWxlY3RbTVVYX01JQ19UWVBFXzFdKSB8fA0KKwkgICAgSVNfVk9XX0FNSUNf QkFTRShwcml2LT5tdXhfc2VsZWN0W01VWF9NSUNfVFlQRV8yXSkpDQorCQlyZXR1cm4gMTsNCisJ ZWxzZQ0KKwkJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRfdm93X2FtaWNfZGNjX2Nv bm5lY3Qoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKnNvdXJjZSwNCisJCQkJICAgc3RydWN0 IHNuZF9zb2NfZGFwbV93aWRnZXQgKnNpbmspDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19kYXBtX3dp ZGdldCAqdyA9IHNpbms7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRf c29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnBy aXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorDQorCWlmIChJU19W T1dfRENDX0JBU0UocHJpdi0+bXV4X3NlbGVjdFtNVVhfTUlDX1RZUEVfMF0pIHx8DQorCSAgICBJ U19WT1dfRENDX0JBU0UocHJpdi0+bXV4X3NlbGVjdFtNVVhfTUlDX1RZUEVfMV0pIHx8DQorCSAg ICBJU19WT1dfRENDX0JBU0UocHJpdi0+bXV4X3NlbGVjdFtNVVhfTUlDX1RZUEVfMl0pKQ0KKwkJ cmV0dXJuIDE7DQorCWVsc2UNCisJCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10X2Rj Y19jbGtfY29ubmVjdChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqc291cmNlLA0KKwkJCSAg ICAgIHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICpzaW5rKQ0KK3sNCisJc3RydWN0IHNuZF9z b2NfZGFwbV93aWRnZXQgKncgPSBzaW5rOw0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNt cG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10NjM1 OV9wcml2ICpwcml2ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKw0K KwlpZiAoSVNfRENDX0JBU0UocHJpdi0+bXV4X3NlbGVjdFtNVVhfTUlDX1RZUEVfMF0pIHx8DQor CSAgICBJU19EQ0NfQkFTRShwcml2LT5tdXhfc2VsZWN0W01VWF9NSUNfVFlQRV8xXSkgfHwNCisJ ICAgIElTX0RDQ19CQVNFKHByaXYtPm11eF9zZWxlY3RbTVVYX01JQ19UWVBFXzJdKSkNCisJCXJl dHVybiAxOw0KKwllbHNlDQorCQlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVj dCBzbmRfc29jX2RhcG1fcm91dGUgbXQ2MzU5X2RhcG1fcm91dGVzW10gPSB7DQorCS8qIENhcHR1 cmUgKi8NCisJeyJBSUZUWF9TdXBwbHkiLCBOVUxMLCAiQ0xLX0JVRiJ9LA0KKwl7IkFJRlRYX1N1 cHBseSIsIE5VTEwsICJMRE9fVkFVRDE4In0sDQorCXsiQUlGVFhfU3VwcGx5IiwgTlVMTCwgIkFV REdMQiJ9LA0KKwl7IkFJRlRYX1N1cHBseSIsIE5VTEwsICJDTEtTUSBBdWRpbyJ9LA0KKwl7IkFJ RlRYX1N1cHBseSIsIE5VTEwsICJBVURfQ0sifSwNCisJeyJBSUZUWF9TdXBwbHkiLCBOVUxMLCAi QVVESUZfQ0sifSwNCisJeyJBSUZUWF9TdXBwbHkiLCBOVUxMLCAiQVVESU9fVE9QX0FGRV9DVEwi fSwNCisJeyJBSUZUWF9TdXBwbHkiLCBOVUxMLCAiQVVESU9fVE9QX1BXUl9DTEsifSwNCisJeyJB SUZUWF9TdXBwbHkiLCBOVUxMLCAiQVVESU9fVE9QX1BETl9SRVNFUlZFRCJ9LA0KKwl7IkFJRlRY X1N1cHBseSIsIE5VTEwsICJBVURJT19UT1BfSTJTX0RMIn0sDQorCS8qDQorCSAqICpfQURDX0NU TCBzaG91bGQgZW5hYmxlIG9ubHkgaWYgVUxfU1JDIGluIHVzZSwNCisJICogYnV0IGRtIGNrIG1h eSBiZSBuZWVkZWQgZXZlbiBVTF9TUkNfeCBub3QgaW4gdXNlDQorCSAqLw0KKwl7IkFJRlRYX1N1 cHBseSIsIE5VTEwsICJBVURJT19UT1BfQURDX0NUTCJ9LA0KKwl7IkFJRlRYX1N1cHBseSIsIE5V TEwsICJBVURJT19UT1BfQUREQTZfQURDX0NUTCJ9LA0KKwl7IkFJRlRYX1N1cHBseSIsIE5VTEws ICJBRkVfT04ifSwNCisNCisJLyogdWwgY2ggMTIgKi8NCisJeyJBSUYxVFgiLCBOVUxMLCAiQUlG IE91dCBNdXgifSwNCisJeyJBSUYxVFgiLCBOVUxMLCAiQUlGVFhfU3VwcGx5In0sDQorCXsiQUlG MVRYIiwgTlVMTCwgIlVMX0dQSU8ifSwNCisJeyJBSUYxVFgiLCBOVUxMLCAiTVRLQUlGX1RYIn0s DQorDQorCXsiQUlGMlRYIiwgTlVMTCwgIkFJRjIgT3V0IE11eCJ9LA0KKwl7IkFJRjJUWCIsIE5V TEwsICJBSUZUWF9TdXBwbHkifSwNCisJeyJBSUYyVFgiLCBOVUxMLCAiVUxfR1BJTyJ9LA0KKwl7 IkFJRjJUWCIsIE5VTEwsICJNVEtBSUZfVFgifSwNCisNCisJeyJBSUYgT3V0IE11eCIsICJOb3Jt YWwgUGF0aCIsICJNSVNPMF9NVVgifSwNCisJeyJBSUYgT3V0IE11eCIsICJOb3JtYWwgUGF0aCIs ICJNSVNPMV9NVVgifSwNCisJeyJBSUYyIE91dCBNdXgiLCAiTm9ybWFsIFBhdGgiLCAiTUlTTzJf TVVYIn0sDQorDQorCXsiTUlTTzBfTVVYIiwgIlVMMV9DSDEiLCAiVUxfU1JDX01VWCJ9LA0KKwl7 Ik1JU08wX01VWCIsICJVTDFfQ0gyIiwgIlVMX1NSQ19NVVgifSwNCisJeyJNSVNPMF9NVVgiLCAi VUwyX0NIMSIsICJVTDJfU1JDX01VWCJ9LA0KKwl7Ik1JU08wX01VWCIsICJVTDJfQ0gyIiwgIlVM Ml9TUkNfTVVYIn0sDQorDQorCXsiTUlTTzFfTVVYIiwgIlVMMV9DSDEiLCAiVUxfU1JDX01VWCJ9 LA0KKwl7Ik1JU08xX01VWCIsICJVTDFfQ0gyIiwgIlVMX1NSQ19NVVgifSwNCisJeyJNSVNPMV9N VVgiLCAiVUwyX0NIMSIsICJVTDJfU1JDX01VWCJ9LA0KKwl7Ik1JU08xX01VWCIsICJVTDJfQ0gy IiwgIlVMMl9TUkNfTVVYIn0sDQorDQorCXsiTUlTTzJfTVVYIiwgIlVMMV9DSDEiLCAiVUxfU1JD X01VWCJ9LA0KKwl7Ik1JU08yX01VWCIsICJVTDFfQ0gyIiwgIlVMX1NSQ19NVVgifSwNCisJeyJN SVNPMl9NVVgiLCAiVUwyX0NIMSIsICJVTDJfU1JDX01VWCJ9LA0KKwl7Ik1JU08yX01VWCIsICJV TDJfQ0gyIiwgIlVMMl9TUkNfTVVYIn0sDQorDQorCXsiVUxfU1JDX01VWCIsICJBTUlDIiwgIkFE Q19MIn0sDQorCXsiVUxfU1JDX01VWCIsICJBTUlDIiwgIkFEQ19SIn0sDQorCXsiVUxfU1JDX01V WCIsICJETUlDIiwgIkRNSUMwX01VWCJ9LA0KKwl7IlVMX1NSQ19NVVgiLCAiRE1JQyIsICJETUlD MV9NVVgifSwNCisJeyJVTF9TUkNfTVVYIiwgTlVMTCwgIlVMX1NSQyJ9LA0KKw0KKwl7IlVMMl9T UkNfTVVYIiwgIkFNSUMiLCAiQURDXzMifSwNCisJeyJVTDJfU1JDX01VWCIsICJETUlDIiwgIkRN SUMyX01VWCJ9LA0KKwl7IlVMMl9TUkNfTVVYIiwgTlVMTCwgIlVMX1NSQ18zNCJ9LA0KKw0KKwl7 IkRNSUMwX01VWCIsICJETUlDX0RBVEEwIiwgIkFJTjBfRE1JQyJ9LA0KKwl7IkRNSUMwX01VWCIs ICJETUlDX0RBVEExX0wiLCAiQUlOMl9ETUlDIn0sDQorCXsiRE1JQzBfTVVYIiwgIkRNSUNfREFU QTFfTF8xIiwgIkFJTjJfRE1JQyJ9LA0KKwl7IkRNSUMwX01VWCIsICJETUlDX0RBVEExX1IiLCAi QUlOM19ETUlDIn0sDQorCXsiRE1JQzFfTVVYIiwgIkRNSUNfREFUQTAiLCAiQUlOMF9ETUlDIn0s DQorCXsiRE1JQzFfTVVYIiwgIkRNSUNfREFUQTFfTCIsICJBSU4yX0RNSUMifSwNCisJeyJETUlD MV9NVVgiLCAiRE1JQ19EQVRBMV9MXzEiLCAiQUlOMl9ETUlDIn0sDQorCXsiRE1JQzFfTVVYIiwg IkRNSUNfREFUQTFfUiIsICJBSU4zX0RNSUMifSwNCisJeyJETUlDMl9NVVgiLCAiRE1JQ19EQVRB MCIsICJBSU4wX0RNSUMifSwNCisJeyJETUlDMl9NVVgiLCAiRE1JQ19EQVRBMV9MIiwgIkFJTjJf RE1JQyJ9LA0KKwl7IkRNSUMyX01VWCIsICJETUlDX0RBVEExX0xfMSIsICJBSU4yX0RNSUMifSwN CisJeyJETUlDMl9NVVgiLCAiRE1JQ19EQVRBMV9SIiwgIkFJTjNfRE1JQyJ9LA0KKw0KKwl7IkRN SUMwX01VWCIsIE5VTEwsICJVTF9TUkNfRE1JQyJ9LA0KKwl7IkRNSUMxX01VWCIsIE5VTEwsICJV TF9TUkNfRE1JQyJ9LA0KKwl7IkRNSUMyX01VWCIsIE5VTEwsICJVTF9TUkNfMzRfRE1JQyJ9LA0K Kw0KKwl7IkFJTjBfRE1JQyIsIE5VTEwsICJETUlDXzAifSwNCisJeyJBSU4yX0RNSUMiLCBOVUxM LCAiRE1JQ18xIn0sDQorCXsiQUlOM19ETUlDIiwgTlVMTCwgIkRNSUNfMSJ9LA0KKwl7IkFJTjJf RE1JQyIsIE5VTEwsICJNSUNfQklBU18yIn0sDQorCXsiQUlOM19ETUlDIiwgTlVMTCwgIk1JQ19C SUFTXzIifSwNCisNCisJLyogYWRjICovDQorCXsiQURDX0wiLCBOVUxMLCAiQURDX0xfTXV4In0s DQorCXsiQURDX0wiLCBOVUxMLCAiQURDX0NMS0dFTiJ9LA0KKwl7IkFEQ19MIiwgTlVMTCwgIkFE Q19MX0VOIn0sDQorCXsiQURDX1IiLCBOVUxMLCAiQURDX1JfTXV4In0sDQorCXsiQURDX1IiLCBO VUxMLCAiQURDX0NMS0dFTiJ9LA0KKwl7IkFEQ19SIiwgTlVMTCwgIkFEQ19SX0VOIn0sDQorCS8q DQorCSAqIGFtaWMgZmlmbyBjaDEvMiBjbGsgZnJvbSBBRENfTCwNCisJICogZW5hYmxlIEFEQ19M IGV2ZW4gdXNlIEFEQ19SIG9ubHkNCisJICovDQorCXsiQURDX1IiLCBOVUxMLCAiQURDX0xfRU4i fSwNCisJeyJBRENfMyIsIE5VTEwsICJBRENfM19NdXgifSwNCisJeyJBRENfMyIsIE5VTEwsICJB RENfQ0xLR0VOIn0sDQorCXsiQURDXzMiLCBOVUxMLCAiQURDXzNfRU4ifSwNCisNCisJeyJBRENf TF9NdXgiLCAiTGVmdCBQcmVhbXBsaWZpZXIiLCAiUEdBX0wifSwNCisJeyJBRENfUl9NdXgiLCAi UmlnaHQgUHJlYW1wbGlmaWVyIiwgIlBHQV9SIn0sDQorCXsiQURDXzNfTXV4IiwgIlByZWFtcGxp ZmllciIsICJQR0FfMyJ9LA0KKw0KKwl7IlBHQV9MIiwgTlVMTCwgIlBHQV9MX011eCJ9LA0KKwl7 IlBHQV9MIiwgTlVMTCwgIlBHQV9MX0VOIn0sDQorCXsiUEdBX1IiLCBOVUxMLCAiUEdBX1JfTXV4 In0sDQorCXsiUEdBX1IiLCBOVUxMLCAiUEdBX1JfRU4ifSwNCisJeyJQR0FfMyIsIE5VTEwsICJQ R0FfM19NdXgifSwNCisJeyJQR0FfMyIsIE5VTEwsICJQR0FfM19FTiJ9LA0KKw0KKwl7IlBHQV9M IiwgTlVMTCwgIkRDQ19DTEsiLCBtdF9kY2NfY2xrX2Nvbm5lY3R9LA0KKwl7IlBHQV9SIiwgTlVM TCwgIkRDQ19DTEsiLCBtdF9kY2NfY2xrX2Nvbm5lY3R9LA0KKwl7IlBHQV8zIiwgTlVMTCwgIkRD Q19DTEsiLCBtdF9kY2NfY2xrX2Nvbm5lY3R9LA0KKw0KKwl7IlBHQV9MX011eCIsICJBSU4wIiwg IkFJTjAifSwNCisJeyJQR0FfTF9NdXgiLCAiQUlOMSIsICJBSU4xIn0sDQorDQorCXsiUEdBX1Jf TXV4IiwgIkFJTjAiLCAiQUlOMCJ9LA0KKwl7IlBHQV9SX011eCIsICJBSU4yIiwgIkFJTjIifSwN CisJeyJQR0FfUl9NdXgiLCAiQUlOMyIsICJBSU4zIn0sDQorDQorCXsiUEdBXzNfTXV4IiwgIkFJ TjIiLCAiQUlOMiJ9LA0KKwl7IlBHQV8zX011eCIsICJBSU4zIiwgIkFJTjMifSwNCisNCisJeyJB SU4wIiwgTlVMTCwgIk1JQ19CSUFTXzAifSwNCisJeyJBSU4xIiwgTlVMTCwgIk1JQ19CSUFTXzEi fSwNCisJeyJBSU4yIiwgTlVMTCwgIk1JQ19CSUFTXzAifSwNCisJeyJBSU4yIiwgTlVMTCwgIk1J Q19CSUFTXzIifSwNCisJeyJBSU4zIiwgTlVMTCwgIk1JQ19CSUFTXzIifSwNCisNCisJLyogREwg U3VwcGx5ICovDQorCXsiREwgUG93ZXIgU3VwcGx5IiwgTlVMTCwgIkNMS19CVUYifSwNCisJeyJE TCBQb3dlciBTdXBwbHkiLCBOVUxMLCAiTERPX1ZBVUQxOCJ9LA0KKwl7IkRMIFBvd2VyIFN1cHBs eSIsIE5VTEwsICJBVURHTEIifSwNCisJeyJETCBQb3dlciBTdXBwbHkiLCBOVUxMLCAiQ0xLU1Eg QXVkaW8ifSwNCisNCisJeyJETCBQb3dlciBTdXBwbHkiLCBOVUxMLCAiQVVETkNQX0NLIn0sDQor CXsiREwgUG93ZXIgU3VwcGx5IiwgTlVMTCwgIlpDRDEzTV9DSyJ9LA0KKwl7IkRMIFBvd2VyIFN1 cHBseSIsIE5VTEwsICJBVURfQ0sifSwNCisJeyJETCBQb3dlciBTdXBwbHkiLCBOVUxMLCAiQVVE SUZfQ0sifSwNCisNCisJeyJETCBQb3dlciBTdXBwbHkiLCBOVUxMLCAiRVNEX1JFU0lTVCJ9LA0K Kwl7IkRMIFBvd2VyIFN1cHBseSIsIE5VTEwsICJMRE8ifSwNCisJeyJETCBQb3dlciBTdXBwbHki LCBOVUxMLCAiTERPX1JFTU9URSJ9LA0KKwl7IkRMIFBvd2VyIFN1cHBseSIsIE5VTEwsICJOVl9S RUdVTEFUT1IifSwNCisJeyJETCBQb3dlciBTdXBwbHkiLCBOVUxMLCAiSUJJU1QifSwNCisNCisJ LyogREwgRGlnaXRhbCBTdXBwbHkgKi8NCisJeyJETCBEaWdpdGFsIENsb2NrIiwgTlVMTCwgIkFV RElPX1RPUF9BRkVfQ1RMIn0sDQorCXsiREwgRGlnaXRhbCBDbG9jayIsIE5VTEwsICJBVURJT19U T1BfREFDX0NUTCJ9LA0KKwl7IkRMIERpZ2l0YWwgQ2xvY2siLCBOVUxMLCAiQVVESU9fVE9QX1BX Ul9DTEsifSwNCisJeyJETCBEaWdpdGFsIENsb2NrIiwgTlVMTCwgIkFVRElPX1RPUF9QRE5fUkVT RVJWRUQifSwNCisNCisJeyJETCBEaWdpdGFsIENsb2NrIiwgTlVMTCwgIlNETV9GSUZPX0NMSyJ9 LA0KKwl7IkRMIERpZ2l0YWwgQ2xvY2siLCBOVUxMLCAiTkNQIn0sDQorDQorCXsiREwgRGlnaXRh bCBDbG9jayIsIE5VTEwsICJBRkVfT04ifSwNCisJeyJETCBEaWdpdGFsIENsb2NrIiwgTlVMTCwg IkFGRV9ETF9TUkMifSwNCisNCisJeyJETCBEaWdpdGFsIENsb2NrIENIXzFfMiIsIE5VTEwsICJE TCBEaWdpdGFsIENsb2NrIn0sDQorCXsiREwgRGlnaXRhbCBDbG9jayBDSF8xXzIiLCBOVUxMLCAi U0RNIn0sDQorDQorCXsiREwgRGlnaXRhbCBDbG9jayBDSF8zIiwgTlVMTCwgIkRMIERpZ2l0YWwg Q2xvY2sifSwNCisJeyJETCBEaWdpdGFsIENsb2NrIENIXzMiLCBOVUxMLCAiU0RNXzNSRCJ9LA0K Kw0KKwl7IkFJRl9SWCIsIE5VTEwsICJETCBEaWdpdGFsIENsb2NrIENIXzFfMiJ9LA0KKwl7IkFJ Rl9SWCIsIE5VTEwsICJETF9HUElPIn0sDQorDQorCXsiQUlGMl9SWCIsIE5VTEwsICJETCBEaWdp dGFsIENsb2NrIENIXzMifSwNCisJeyJBSUYyX1JYIiwgTlVMTCwgIkRMX0dQSU8ifSwNCisNCisJ LyogREwgUGF0aCAqLw0KKwl7IkRBQyBJbiBNdXgiLCAiTm9ybWFsIFBhdGgiLCAiQUlGX1JYIn0s DQorCXsiREFDIEluIE11eCIsICJTZ2VuIiwgIlNHRU4gREwifSwNCisJeyJTR0VOIERMIiwgTlVM TCwgIlNHRU4gREwgU1JDIn0sDQorCXsiU0dFTiBETCIsIE5VTEwsICJTR0VOIE1VVEUifSwNCisJ eyJTR0VOIERMIiwgTlVMTCwgIlNHRU4gREwgRW5hYmxlIn0sDQorCXsiU0dFTiBETCIsIE5VTEws ICJETCBEaWdpdGFsIENsb2NrIENIXzFfMiJ9LA0KKwl7IlNHRU4gREwiLCBOVUxMLCAiREwgRGln aXRhbCBDbG9jayBDSF8zIn0sDQorCXsiU0dFTiBETCIsIE5VTEwsICJBVURJT19UT1BfUEROX0FG RV9URVNUTU9ERUwifSwNCisNCisJeyJEQUNMIiwgTlVMTCwgIkRBQyBJbiBNdXgifSwNCisJeyJE QUNMIiwgTlVMTCwgIkRMIFBvd2VyIFN1cHBseSJ9LA0KKw0KKwl7IkRBQ1IiLCBOVUxMLCAiREFD IEluIE11eCJ9LA0KKwl7IkRBQ1IiLCBOVUxMLCAiREwgUG93ZXIgU3VwcGx5In0sDQorDQorCS8q IERBQyAzUkQgKi8NCisJeyJEQUMgSW4gTXV4IiwgIk5vcm1hbCBQYXRoIiwgIkFJRjJfUlgifSwN CisJeyJEQUNfM1JEIiwgTlVMTCwgIkRBQyBJbiBNdXgifSwNCisJeyJEQUNfM1JEIiwgTlVMTCwg IkRMIFBvd2VyIFN1cHBseSJ9LA0KKw0KKwkvKiBMaW5lb3V0IFBhdGggKi8NCisJeyJMT0wgTXV4 IiwgIlBsYXliYWNrIiwgIkRBQ18zUkQifSwNCisJeyJMSU5FT1VUIEwiLCBOVUxMLCAiTE9MIE11 eCJ9LA0KKw0KKwkvKiBIZWFkcGhvbmUgUGF0aCAqLw0KKwl7IkhQX1N1cHBseSIsIE5VTEwsICJI UF9QVUxMX0RPV04ifSwNCisJeyJIUF9TdXBwbHkiLCBOVUxMLCAiSFBfTVVURSJ9LA0KKwl7IkhQ X1N1cHBseSIsIE5VTEwsICJIUF9EQU1QIn0sDQorCXsiSFBMIE11eCIsIE5VTEwsICJIUF9TdXBw bHkifSwNCisJeyJIUFIgTXV4IiwgTlVMTCwgIkhQX1N1cHBseSJ9LA0KKw0KKwl7IkhQTCBNdXgi LCAiQXVkaW8gUGxheWJhY2siLCAiREFDTCJ9LA0KKwl7IkhQUiBNdXgiLCAiQXVkaW8gUGxheWJh Y2siLCAiREFDUiJ9LA0KKwl7IkhQTCBNdXgiLCAiSFAgSW1wZWRhbmNlIiwgIkRBQ0wifSwNCisJ eyJIUFIgTXV4IiwgIkhQIEltcGVkYW5jZSIsICJEQUNSIn0sDQorCXsiSFBMIE11eCIsICJMb3Vk U1BLIFBsYXliYWNrIiwgIkRBQ0wifSwNCisJeyJIUFIgTXV4IiwgIkxvdWRTUEsgUGxheWJhY2si LCAiREFDUiJ9LA0KKw0KKwl7IkhlYWRwaG9uZSBMIiwgTlVMTCwgIkhQTCBNdXgifSwNCisJeyJI ZWFkcGhvbmUgUiIsIE5VTEwsICJIUFIgTXV4In0sDQorCXsiSGVhZHBob25lIEwgRXh0IFNwayBB bXAiLCBOVUxMLCAiSFBMIE11eCJ9LA0KKwl7IkhlYWRwaG9uZSBSIEV4dCBTcGsgQW1wIiwgTlVM TCwgIkhQUiBNdXgifSwNCisNCisJLyogUmVjZWl2ZXIgUGF0aCAqLw0KKwl7IlJDViBNdXgiLCAi Vm9pY2UgUGxheWJhY2siLCAiREFDTCJ9LA0KKwl7IlJlY2VpdmVyIiwgTlVMTCwgIlJDViBNdXgi fSwNCisNCisJLyogVk9XICovDQorCXsiVk9XIFRYIiwgTlVMTCwgIlZPV19VTF9TUkNfTVVYIn0s DQorCXsiVk9XIFRYIiwgTlVMTCwgIkNMS19CVUYifSwNCisJeyJWT1cgVFgiLCBOVUxMLCAiTERP X1ZBVUQxOCJ9LA0KKwl7IlZPVyBUWCIsIE5VTEwsICJBVURHTEIifSwNCisJeyJWT1cgVFgiLCBO VUxMLCAiQVVER0xCX1ZPVyIsIG10X3Zvd19hbWljX2Nvbm5lY3R9LA0KKwl7IlZPVyBUWCIsIE5V TEwsICJBVURfQ0siLCBtdF92b3dfYW1pY19jb25uZWN0fSwNCisJeyJWT1cgVFgiLCBOVUxMLCAi Vk9XX0FVRF9MUFciLCBtdF92b3dfYW1pY19jb25uZWN0fSwNCisJeyJWT1cgVFgiLCBOVUxMLCAi Vk9XX0NMSyJ9LA0KKwl7IlZPVyBUWCIsIE5VTEwsICJBVURfVk9XIn0sDQorCXsiVk9XIFRYIiwg TlVMTCwgIlZPV19MRE8iLCBtdF92b3dfYW1pY19jb25uZWN0fSwNCisJeyJWT1cgVFgiLCBOVUxM LCAiVk9XX0RJR19DRkcifSwNCisJeyJWT1cgVFgiLCBOVUxMLCAiVk9XX1BFUklPRElDX0NGRyIs IG10X3Zvd19hbWljX2RjY19jb25uZWN0fSwNCisJeyJWT1dfVUxfU1JDX01VWCIsICJBTUlDIiwg IlZPV19BTUlDMF9NVVgifSwNCisJeyJWT1dfVUxfU1JDX01VWCIsICJBTUlDIiwgIlZPV19BTUlD MV9NVVgifSwNCisJeyJWT1dfVUxfU1JDX01VWCIsICJETUlDIiwgIkRNSUMwX01VWCJ9LA0KKwl7 IlZPV19VTF9TUkNfTVVYIiwgIkRNSUMiLCAiRE1JQzFfTVVYIn0sDQorCXsiVk9XX0FNSUMwX01V WCIsICJBRENfTCIsICJBRENfTCJ9LA0KKwl7IlZPV19BTUlDMF9NVVgiLCAiQURDX1IiLCAiQURD X1IifSwNCisJeyJWT1dfQU1JQzBfTVVYIiwgIkFEQ19UIiwgIkFEQ18zIn0sDQorCXsiVk9XX0FN SUMxX01VWCIsICJBRENfTCIsICJBRENfTCJ9LA0KKwl7IlZPV19BTUlDMV9NVVgiLCAiQURDX1Ii LCAiQURDX1IifSwNCisJeyJWT1dfQU1JQzFfTVVYIiwgIkFEQ19UIiwgIkFEQ18zIn0sDQorfTsN CisNCitzdGF0aWMgaW50IG10NjM1OV9jb2RlY19kYWlfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNt X3N1YnN0cmVhbSAqc3Vic3RyZWFtLA0KKwkJCQkgICAgICBzdHJ1Y3Qgc25kX3BjbV9od19wYXJh bXMgKnBhcmFtcywNCisJCQkJICAgICAgc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpDQorew0KKwlz dHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gZGFpLT5jb21wb25lbnQ7DQorCXN0cnVj dCBtdDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50 KTsNCisJdW5zaWduZWQgaW50IHJhdGUgPSBwYXJhbXNfcmF0ZShwYXJhbXMpOw0KKwlpbnQgaWQg PSBkYWktPmlkOw0KKw0KKwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCBpZCAlZCwgc3Vic3Ry ZWFtLT5zdHJlYW0gJWQsIHJhdGUgJWQsIG51bWJlciAlZFxuIiwNCisJCSBfX2Z1bmNfXywNCisJ CSBpZCwNCisJCSBzdWJzdHJlYW0tPnN0cmVhbSwNCisJCSByYXRlLA0KKwkJIHN1YnN0cmVhbS0+ bnVtYmVyKTsNCisNCisJaWYgKHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1f UExBWUJBQ0spDQorCQlwcml2LT5kbF9yYXRlW2lkXSA9IHJhdGU7DQorCWVsc2UgaWYgKHN1YnN0 cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSkNCisJCXByaXYtPnVsX3Jh dGVbaWRdID0gcmF0ZTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgc25kX3NvY19kYWlfb3BzIG10NjM1OV9jb2RlY19kYWlfb3BzID0gew0KKwkuaHdfcGFyYW1z ID0gbXQ2MzU5X2NvZGVjX2RhaV9od19wYXJhbXMsDQorfTsNCisNCitzdGF0aWMgaW50IG10NjM1 OV9jb2RlY19kYWlfdm93X2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0 cmVhbSwNCisJCQkJCSAgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsDQorCQkJCQkg IHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50 ICpjbXBudCA9IGRhaS0+Y29tcG9uZW50Ow0KKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBz bmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorCXVuc2lnbmVkIGludCBjaGFu bmVsID0gcGFyYW1zX2NoYW5uZWxzKHBhcmFtcyk7DQorDQorCWRldl9pbmZvKHByaXYtPmRldiwg IiVzKCksIHN1YnN0cmVhbS0+c3RyZWFtICVkLCBjaGFubmVsICVkLCBudW1iZXIgJWRcbiIsDQor CQkgX19mdW5jX18sDQorCQkgc3Vic3RyZWFtLT5zdHJlYW0sDQorCQkgY2hhbm5lbCwNCisJCSBz dWJzdHJlYW0tPm51bWJlcik7DQorDQorCXByaXYtPnZvd19jaGFubmVsID0gY2hhbm5lbDsNCisN CisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYWlfb3Bz IG10NjM1OV9jb2RlY19kYWlfdm93X29wcyA9IHsNCisJLmh3X3BhcmFtcyA9IG10NjM1OV9jb2Rl Y19kYWlfdm93X2h3X3BhcmFtcywNCit9Ow0KKw0KKyNkZWZpbmUgTVQ2MzU5X0ZPUk1BVFMgKFNO RFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwgU05EUlZfUENNX0ZNVEJJVF9TMTZfQkUgfFwNCisJCQlT TkRSVl9QQ01fRk1UQklUX1UxNl9MRSB8IFNORFJWX1BDTV9GTVRCSVRfVTE2X0JFIHxcDQorCQkJ U05EUlZfUENNX0ZNVEJJVF9TMjRfTEUgfCBTTkRSVl9QQ01fRk1UQklUX1MyNF9CRSB8XA0KKwkJ CVNORFJWX1BDTV9GTVRCSVRfVTI0X0xFIHwgU05EUlZfUENNX0ZNVEJJVF9VMjRfQkUgfFwNCisJ CQlTTkRSVl9QQ01fRk1UQklUX1MzMl9MRSB8IFNORFJWX1BDTV9GTVRCSVRfUzMyX0JFIHxcDQor CQkJU05EUlZfUENNX0ZNVEJJVF9VMzJfTEUgfCBTTkRSVl9QQ01fRk1UQklUX1UzMl9CRSkNCisN CitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2RyaXZlciBtdDYzNTlfZGFpX2RyaXZlcltdID0g ew0KKwl7DQorCQkuaWQgPSBNVDYzNTlfQUlGXzEsDQorCQkubmFtZSA9ICJtdDYzNTktc25kLWNv ZGVjLWFpZjEiLA0KKwkJLnBsYXliYWNrID0gew0KKwkJCS5zdHJlYW1fbmFtZSA9ICJBSUYxIFBs YXliYWNrIiwNCisJCQkuY2hhbm5lbHNfbWluID0gMSwNCisJCQkuY2hhbm5lbHNfbWF4ID0gMiwN CisJCQkucmF0ZXMgPSBTTkRSVl9QQ01fUkFURV84MDAwXzQ4MDAwIHwNCisJCQkJIFNORFJWX1BD TV9SQVRFXzk2MDAwIHwNCisJCQkJIFNORFJWX1BDTV9SQVRFXzE5MjAwMCwNCisJCQkuZm9ybWF0 cyA9IE1UNjM1OV9GT1JNQVRTLA0KKwkJfSwNCisJCS5jYXB0dXJlID0gew0KKwkJCS5zdHJlYW1f bmFtZSA9ICJBSUYxIENhcHR1cmUiLA0KKwkJCS5jaGFubmVsc19taW4gPSAxLA0KKwkJCS5jaGFu bmVsc19tYXggPSAyLA0KKwkJCS5yYXRlcyA9IFNORFJWX1BDTV9SQVRFXzgwMDAgfA0KKwkJCQkg U05EUlZfUENNX1JBVEVfMTYwMDAgfA0KKwkJCQkgU05EUlZfUENNX1JBVEVfMzIwMDAgfA0KKwkJ CQkgU05EUlZfUENNX1JBVEVfNDgwMDAgfA0KKwkJCQkgU05EUlZfUENNX1JBVEVfOTYwMDAgfA0K KwkJCQkgU05EUlZfUENNX1JBVEVfMTkyMDAwLA0KKwkJCS5mb3JtYXRzID0gTVQ2MzU5X0ZPUk1B VFMsDQorCQl9LA0KKwkJLm9wcyA9ICZtdDYzNTlfY29kZWNfZGFpX29wcywNCisJfSwNCisJew0K KwkJLmlkID0gTVQ2MzU5X0FJRl8yLA0KKwkJLm5hbWUgPSAibXQ2MzU5LXNuZC1jb2RlYy1haWYy IiwNCisJCS5wbGF5YmFjayA9IHsNCisJCQkuc3RyZWFtX25hbWUgPSAiQUlGMiBQbGF5YmFjayIs DQorCQkJLmNoYW5uZWxzX21pbiA9IDEsDQorCQkJLmNoYW5uZWxzX21heCA9IDIsDQorCQkJLnJh dGVzID0gU05EUlZfUENNX1JBVEVfODAwMF80ODAwMCB8DQorCQkJCSBTTkRSVl9QQ01fUkFURV85 NjAwMCB8DQorCQkJCSBTTkRSVl9QQ01fUkFURV8xOTIwMDAsDQorCQkJLmZvcm1hdHMgPSBNVDYz NTlfRk9STUFUUywNCisJCX0sDQorCQkuY2FwdHVyZSA9IHsNCisJCQkuc3RyZWFtX25hbWUgPSAi QUlGMiBDYXB0dXJlIiwNCisJCQkuY2hhbm5lbHNfbWluID0gMSwNCisJCQkuY2hhbm5lbHNfbWF4 ID0gMiwNCisJCQkucmF0ZXMgPSBTTkRSVl9QQ01fUkFURV84MDAwIHwNCisJCQkJIFNORFJWX1BD TV9SQVRFXzE2MDAwIHwNCisJCQkJIFNORFJWX1BDTV9SQVRFXzMyMDAwIHwNCisJCQkJIFNORFJW X1BDTV9SQVRFXzQ4MDAwLA0KKwkJCS5mb3JtYXRzID0gTVQ2MzU5X0ZPUk1BVFMsDQorCQl9LA0K KwkJLm9wcyA9ICZtdDYzNTlfY29kZWNfZGFpX29wcywNCisJfSwNCisJew0KKwkJLmlkID0gTVQ2 MzU5X0FJRl9WT1csDQorCQkubmFtZSA9ICJtdDYzNTktc25kLWNvZGVjLXZvdyIsDQorCQkuY2Fw dHVyZSA9IHsNCisJCQkuc3RyZWFtX25hbWUgPSAiVk9XIENhcHR1cmUiLA0KKwkJCS5jaGFubmVs c19taW4gPSAxLA0KKwkJCS5jaGFubmVsc19tYXggPSAyLA0KKwkJCS5yYXRlcyA9IFNORFJWX1BD TV9SQVRFXzE2MDAwLA0KKwkJCS5mb3JtYXRzID0gTVQ2MzU5X0ZPUk1BVFMsDQorCQl9LA0KKwkJ Lm9wcyA9ICZtdDYzNTlfY29kZWNfZGFpX3Zvd19vcHMsDQorCX0sDQorfTsNCisNCisvKiB2b3cg Y29udHJvbCAqLw0KK3N0YXRpYyB2b2lkICpnZXRfdm93X2NvZWZmX2J5X25hbWUoc3RydWN0IG10 NjM1OV9wcml2ICpwcml2LA0KKwkJCQkgICBjb25zdCBjaGFyICpuYW1lKQ0KK3sNCisJaWYgKHN0 cmNtcChuYW1lLCAiQXVkaW8gVk9XQ0ZHMCBEYXRhIikgPT0gMCkNCisJCXJldHVybiAmcHJpdi0+ cmVnX2FmZV92b3dfdmFkX2NmZzA7DQorCWVsc2UgaWYgKHN0cmNtcChuYW1lLCAiQXVkaW8gVk9X Q0ZHMSBEYXRhIikgPT0gMCkNCisJCXJldHVybiAmcHJpdi0+cmVnX2FmZV92b3dfdmFkX2NmZzE7 DQorCWVsc2UgaWYgKHN0cmNtcChuYW1lLCAiQXVkaW8gVk9XQ0ZHMiBEYXRhIikgPT0gMCkNCisJ CXJldHVybiAmcHJpdi0+cmVnX2FmZV92b3dfdmFkX2NmZzI7DQorCWVsc2UgaWYgKHN0cmNtcChu YW1lLCAiQXVkaW8gVk9XQ0ZHMyBEYXRhIikgPT0gMCkNCisJCXJldHVybiAmcHJpdi0+cmVnX2Fm ZV92b3dfdmFkX2NmZzM7DQorCWVsc2UgaWYgKHN0cmNtcChuYW1lLCAiQXVkaW8gVk9XQ0ZHNCBE YXRhIikgPT0gMCkNCisJCXJldHVybiAmcHJpdi0+cmVnX2FmZV92b3dfdmFkX2NmZzQ7DQorCWVs c2UgaWYgKHN0cmNtcChuYW1lLCAiQXVkaW8gVk9XQ0ZHNSBEYXRhIikgPT0gMCkNCisJCXJldHVy biAmcHJpdi0+cmVnX2FmZV92b3dfdmFkX2NmZzU7DQorCWVsc2UgaWYgKHN0cmNtcChuYW1lLCAi QXVkaW9fVk9XX1BlcmlvZGljIikgPT0gMCkNCisJCXJldHVybiAmcHJpdi0+cmVnX2FmZV92b3df cGVyaW9kaWM7DQorCWVsc2UgaWYgKHN0cmNtcChuYW1lLCAiQXVkaW9fVk9XX1BlcmlvZGljX1Bh cmFtIikgPT0gMCkNCisJCXJldHVybiAodm9pZCAqKSZwcml2LT52b3dfcGVyaW9kaWNfcGFyYW07 DQorCWVsc2UNCisJCXJldHVybiBOVUxMOw0KK30NCisNCitzdGF0aWMgaW50IGF1ZGlvX3Zvd19j ZmdfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAgICAgc3RydWN0IHNu ZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25l bnQgKmNtcG50ID0gc25kX3NvY19rY29udHJvbF9jb21wb25lbnQoa2NvbnRyb2wpOw0KKwlzdHJ1 Y3QgbXQ2MzU5X3ByaXYgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBu dCk7DQorCWludCAqdm93X2NmZzsNCisNCisJdm93X2NmZyA9IChpbnQgKilnZXRfdm93X2NvZWZm X2J5X25hbWUocHJpdiwga2NvbnRyb2wtPmlkLm5hbWUpOw0KKwlpZiAoIXZvd19jZmcpIHsNCisJ CWRldl9lcnIocHJpdi0+ZGV2LCAiJXMoKSwgdm93X2NmZyA9PSBOVUxMXG4iLCBfX2Z1bmNfXyk7 DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKwlkZXZfaW5mbyhwcml2LT5kZXYsICIlcygpLCAl cyA9IDB4JXhcbiIsDQorCQkgX19mdW5jX18sIGtjb250cm9sLT5pZC5uYW1lLCAqdm93X2NmZyk7 DQorDQorCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdID0gKnZvd19jZmc7DQorCXJl dHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IGF1ZGlvX3Zvd19jZmdfc2V0KHN0cnVjdCBzbmRf a2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAq dWNvbnRyb2wpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3Nv Y19rY29udHJvbF9jb21wb25lbnQoa2NvbnRyb2wpOw0KKwlzdHJ1Y3QgbXQ2MzU5X3ByaXYgKnBy aXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorCWludCBpbmRleCA9 IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdOw0KKwlpbnQgKnZvd19jZmc7DQorDQor CXZvd19jZmcgPSAoaW50ICopZ2V0X3Zvd19jb2VmZl9ieV9uYW1lKHByaXYsIGtjb250cm9sLT5p ZC5uYW1lKTsNCisJaWYgKCF2b3dfY2ZnKSB7DQorCQlkZXZfZXJyKHByaXYtPmRldiwgIiVzKCks IHZvd19jZmcgPT0gTlVMTFxuIiwgX19mdW5jX18pOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0N CisJZGV2X2luZm8ocHJpdi0+ZGV2LCAiJXMoKSwgJXMgPSAweCV4XG4iLA0KKwkJIF9fZnVuY19f LCBrY29udHJvbC0+aWQubmFtZSwgaW5kZXgpOw0KKw0KKwkqdm93X2NmZyA9IGluZGV4Ow0KKwly ZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBhdWRpb192b3dfcGVyaW9kaWNfcGFybV9nZXQo c3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsDQorCQkJCSAgICAgICB1bnNpZ25lZCBpbnQg X191c2VyICpkYXRhLA0KKwkJCQkgICAgICAgdW5zaWduZWQgaW50IHNpemUpDQorew0KKwlyZXR1 cm4gMDsNCit9DQorDQorc3RhdGljIGludCBhdWRpb192b3dfcGVyaW9kaWNfcGFybV9zZXQoc3Ry dWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsDQorCQkJCSAgICAgICBjb25zdCB1bnNpZ25lZCBp bnQgX191c2VyICpkYXRhLA0KKwkJCQkgICAgICAgdW5zaWduZWQgaW50IHNpemUpDQorew0KKwlp bnQgcmV0ID0gMDsNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2Nf a2NvbnRyb2xfY29tcG9uZW50KGtjb250cm9sKTsNCisJc3RydWN0IG10NjM1OV9wcml2ICpwcml2 ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKwlzdHJ1Y3QgbXQ2MzU5 X3Zvd19wZXJpb2RpY19vbl9vZmZfZGF0YSAqdm93X3BhcmFtX2NmZzsNCisNCisJZGV2X2luZm8o cHJpdi0+ZGV2LCAiJXMoKSwgc2l6ZSA9ICVkXG4iLCBfX2Z1bmNfXywgc2l6ZSk7DQorCWlmIChz aXplID4gc2l6ZW9mKHN0cnVjdCBtdDYzNTlfdm93X3BlcmlvZGljX29uX29mZl9kYXRhKSkNCisJ CXJldHVybiAtRUlOVkFMOw0KKwl2b3dfcGFyYW1fY2ZnID0gKHN0cnVjdCBtdDYzNTlfdm93X3Bl cmlvZGljX29uX29mZl9kYXRhICopDQorCQkJZ2V0X3Zvd19jb2VmZl9ieV9uYW1lKHByaXYsIGtj b250cm9sLT5pZC5uYW1lKTsNCisJaWYgKGNvcHlfZnJvbV91c2VyKHZvd19wYXJhbV9jZmcsIGRh dGEsDQorCQkJICAgc2l6ZW9mKHN0cnVjdCBtdDYzNTlfdm93X3BlcmlvZGljX29uX29mZl9kYXRh KSkpIHsNCisJCWRldl9pbmZvKHByaXYtPmRldiwgIiVzKCksRmFpbCBjb3B5IHRvIHVzZXIgUHRy OiVwLHJfc3o6JXp1XG4iLA0KKwkJCSBfX2Z1bmNfXywNCisJCQkgZGF0YSwNCisJCQkgc2l6ZW9m KHN0cnVjdCBtdDYzNTlfdm93X3BlcmlvZGljX29uX29mZl9kYXRhKSk7DQorCQlyZXQgPSAtRUZB VUxUOw0KKwl9DQorCXJldHVybiByZXQ7DQorfQ0KKw0KKy8qIHZvdyBjb250cm9sICovDQorc3Rh dGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG10NjM1OV9zbmRfdm93X2NvbnRyb2xz W10gPSB7DQorCVNPQ19TSU5HTEVfRVhUKCJBdWRpbyBWT1dDRkcwIERhdGEiLA0KKwkJICAgICAg IFNORF9TT0NfTk9QTSwgMCwgMHg4MDAwMCwgMCwNCisJCSAgICAgICBhdWRpb192b3dfY2ZnX2dl dCwgYXVkaW9fdm93X2NmZ19zZXQpLA0KKwlTT0NfU0lOR0xFX0VYVCgiQXVkaW8gVk9XQ0ZHMSBE YXRhIiwNCisJCSAgICAgICBTTkRfU09DX05PUE0sIDAsIDB4ODAwMDAsIDAsDQorCQkgICAgICAg YXVkaW9fdm93X2NmZ19nZXQsIGF1ZGlvX3Zvd19jZmdfc2V0KSwNCisJU09DX1NJTkdMRV9FWFQo IkF1ZGlvIFZPV0NGRzIgRGF0YSIsDQorCQkgICAgICAgU05EX1NPQ19OT1BNLCAwLCAweDgwMDAw LCAwLA0KKwkJICAgICAgIGF1ZGlvX3Zvd19jZmdfZ2V0LCBhdWRpb192b3dfY2ZnX3NldCksDQor CVNPQ19TSU5HTEVfRVhUKCJBdWRpbyBWT1dDRkczIERhdGEiLA0KKwkJICAgICAgIFNORF9TT0Nf Tk9QTSwgMCwgMHg4MDAwMCwgMCwNCisJCSAgICAgICBhdWRpb192b3dfY2ZnX2dldCwgYXVkaW9f dm93X2NmZ19zZXQpLA0KKwlTT0NfU0lOR0xFX0VYVCgiQXVkaW8gVk9XQ0ZHNCBEYXRhIiwNCisJ CSAgICAgICBTTkRfU09DX05PUE0sIDAsIDB4ODAwMDAsIDAsDQorCQkgICAgICAgYXVkaW9fdm93 X2NmZ19nZXQsIGF1ZGlvX3Zvd19jZmdfc2V0KSwNCisJU09DX1NJTkdMRV9FWFQoIkF1ZGlvIFZP V0NGRzUgRGF0YSIsDQorCQkgICAgICAgU05EX1NPQ19OT1BNLCAwLCAweDgwMDAwLCAwLA0KKwkJ ICAgICAgIGF1ZGlvX3Zvd19jZmdfZ2V0LCBhdWRpb192b3dfY2ZnX3NldCksDQorCVNPQ19TSU5H TEVfRVhUKCJBdWRpb19WT1dfUGVyaW9kaWMiLA0KKwkJICAgICAgIFNORF9TT0NfTk9QTSwgMCwg MHg4MDAwMCwgMCwNCisJCSAgICAgICBhdWRpb192b3dfY2ZnX2dldCwgYXVkaW9fdm93X2NmZ19z ZXQpLA0KKwlTTkRfU09DX0JZVEVTX1RMVigiQXVkaW9fVk9XX1BlcmlvZGljX1BhcmFtIiwNCisJ CQkgIHNpemVvZihzdHJ1Y3QgbXQ2MzU5X3Zvd19wZXJpb2RpY19vbl9vZmZfZGF0YSksDQorCQkJ ICBhdWRpb192b3dfcGVyaW9kaWNfcGFybV9nZXQsDQorCQkJICBhdWRpb192b3dfcGVyaW9kaWNf cGFybV9zZXQpLA0KK307DQorDQorc3RhdGljIGludCBtdDYzNTlfY29kZWNfaW5pdF9yZWcoc3Ry dWN0IG10NjM1OV9wcml2ICpwcml2KQ0KK3sNCisJaW50IHJldCA9IDA7DQorDQorCS8qIGVuYWJs ZSBjbGsgYnVmICovDQorCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1OV9E Q1hPX0NXMTIsDQorCQkJICAgMHgxIDw8IFJHX1hPX0FVRElPX0VOX01fU0ZULA0KKwkJCSAgIDB4 MSA8PCBSR19YT19BVURJT19FTl9NX1NGVCk7DQorDQorCS8qIHNldCB0aG9zZSBub3QgY29udHJv bGxlZCBieSBkYXBtIHdpZGdldCAqLw0KKw0KKwkvKiBhdWRpbyBjbGsgc291cmNlIGZyb20gaW50 ZXJuYWwgZGN4byAqLw0KKwlyZWdtYXBfdXBkYXRlX2JpdHMocHJpdi0+cmVnbWFwLCBNVDYzNTlf QVVERU5DX0FOQV9DT04yMywNCisJCQkgICBSR19DTEtTUV9JTl9TRUxfVEVTVF9NQVNLX1NGVCwN CisJCQkgICAweDApOw0KKw0KKwkvKiBEaXNhYmxlIEhlYWRwaG9uZUwvSGVhZHBob25lUiBzaG9y dCBjaXJjdWl0IHByb3RlY3Rpb24gKi8NCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21h cCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMCwNCisJCQkgICBSR19BVURIUExTQ0RJU0FCTEVfVkFV RFAzMl9NQVNLX1NGVCwNCisJCQkgICAweDEgPDwgUkdfQVVESFBMU0NESVNBQkxFX1ZBVURQMzJf U0ZUKTsNCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19B TkFfQ09OMCwNCisJCQkgICBSR19BVURIUFJTQ0RJU0FCTEVfVkFVRFAzMl9NQVNLX1NGVCwNCisJ CQkgICAweDEgPDwgUkdfQVVESFBSU0NESVNBQkxFX1ZBVURQMzJfU0ZUKTsNCisJLyogRGlzYWJs ZSB2b2ljZSBzaG9ydCBjaXJjdWl0IHByb3RlY3Rpb24gKi8NCisJcmVnbWFwX3VwZGF0ZV9iaXRz KHByaXYtPnJlZ21hcCwgTVQ2MzU5X0FVRERFQ19BTkFfQ09ONiwNCisJCQkgICBSR19BVURIU1ND RElTQUJMRV9WQVVEUDMyX01BU0tfU0ZULA0KKwkJCSAgIDB4MSA8PCBSR19BVURIU1NDRElTQUJM RV9WQVVEUDMyX1NGVCk7DQorCS8qIGRpc2FibGUgTE8gYnVmZmVyIGxlZnQgc2hvcnQgY2lyY3Vp dCBwcm90ZWN0aW9uICovDQorCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIE1UNjM1 OV9BVURERUNfQU5BX0NPTjcsDQorCQkJICAgUkdfQVVETE9MU0NESVNBQkxFX1ZBVURQMzJfTUFT S19TRlQsDQorCQkJICAgMHgxIDw8IFJHX0FVRExPTFNDRElTQUJMRV9WQVVEUDMyX1NGVCk7DQor DQorCS8qIHNldCBncGlvICovDQorCXBsYXliYWNrX2dwaW9fcmVzZXQocHJpdik7DQorCWNhcHR1 cmVfZ3Bpb19yZXNldChwcml2KTsNCisNCisJLyogaHAgZ2FpbiBjdGwgZGVmYXVsdCBjaG9vc2Ug WkNEICovDQorCXByaXYtPmhwX2dhaW5fY3RsID0gSFBfR0FJTl9DVExfWkNEOw0KKwlocF9nYWlu X2N0bF9zZWxlY3QocHJpdiwgcHJpdi0+aHBfZ2Fpbl9jdGwpOw0KKw0KKwkvKiBocCBoaWZpIG1v ZGUsIGRlZmF1bHQgbm9ybWFsIG1vZGUgKi8NCisJcHJpdi0+aHBfaGlmaV9tb2RlID0gMDsNCisN CisJLyogRGlzYWJsZSBBVURfWkNEICovDQorCXpjZF9kaXNhYmxlKHByaXYpOw0KKw0KKwkvKiBk aXNhYmxlIGNsayBidWYgKi8NCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPnJlZ21hcCwgTVQ2 MzU5X0RDWE9fQ1cxMiwNCisJCQkgICAweDEgPDwgUkdfWE9fQVVESU9fRU5fTV9TRlQsDQorCQkJ ICAgMHgwKTsNCisNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGludCBtdDYzNTlfY29k ZWNfcHJvYmUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCkNCit7DQorCXN0cnVjdCBt dDYzNTlfcHJpdiAqcHJpdiA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsN CisJaW50IHJldDsNCisNCisJc25kX3NvY19jb21wb25lbnRfaW5pdF9yZWdtYXAoY21wbnQsIHBy aXYtPnJlZ21hcCk7DQorDQorCXNuZF9zb2NfYWRkX2NvbXBvbmVudF9jb250cm9scyhjbXBudCwN CisJCQkJICAgICAgIG10NjM1OV9zbmRfdm93X2NvbnRyb2xzLA0KKwkJCQkgICAgICAgQVJSQVlf U0laRShtdDYzNTlfc25kX3Zvd19jb250cm9scykpOw0KKw0KKwltdDYzNTlfY29kZWNfaW5pdF9y ZWcocHJpdik7DQorDQorCXByaXYtPmFuYV9nYWluW0FVRElPX0FOQUxPR19WT0xVTUVfSFBPVVRM XSA9IDg7DQorCXByaXYtPmFuYV9nYWluW0FVRElPX0FOQUxPR19WT0xVTUVfSFBPVVRSXSA9IDg7 DQorCXByaXYtPmFuYV9nYWluW0FVRElPX0FOQUxPR19WT0xVTUVfTUlDQU1QMV0gPSAzOw0KKwlw cml2LT5hbmFfZ2FpbltBVURJT19BTkFMT0dfVk9MVU1FX01JQ0FNUDJdID0gMzsNCisJcHJpdi0+ YW5hX2dhaW5bQVVESU9fQU5BTE9HX1ZPTFVNRV9NSUNBTVAzXSA9IDM7DQorDQorCXByaXYtPmF2 ZGRfcmVnID0gZGV2bV9yZWd1bGF0b3JfZ2V0KHByaXYtPmRldiwgInZhdWQxOCIpOw0KKwlpZiAo SVNfRVJSKHByaXYtPmF2ZGRfcmVnKSkgew0KKwkJZGV2X2Vycihwcml2LT5kZXYsICIlcygpLCBo YXZlIG5vIHZhdWQxOCBzdXBwbHkiLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4gUFRSX0VSUihwcml2 LT5hdmRkX3JlZyk7DQorCX0NCisNCisJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShwcml2LT5hdmRk X3JlZyk7DQorCWlmIChyZXQpDQorCQlyZXR1cm4gcmV0Ow0KKw0KKwlyZXR1cm4gMDsNCit9DQor DQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudF9kcml2ZXIgbXQ2MzU5X3Nv Y19jb21wb25lbnRfZHJpdmVyID0gew0KKwkubmFtZSA9IENPREVDX01UNjM1OV9OQU1FLA0KKwku cHJvYmUgPSBtdDYzNTlfY29kZWNfcHJvYmUsDQorCS5jb250cm9scyA9IG10NjM1OV9zbmRfY29u dHJvbHMsDQorCS5udW1fY29udHJvbHMgPSBBUlJBWV9TSVpFKG10NjM1OV9zbmRfY29udHJvbHMp LA0KKwkuZGFwbV93aWRnZXRzID0gbXQ2MzU5X2RhcG1fd2lkZ2V0cywNCisJLm51bV9kYXBtX3dp ZGdldHMgPSBBUlJBWV9TSVpFKG10NjM1OV9kYXBtX3dpZGdldHMpLA0KKwkuZGFwbV9yb3V0ZXMg PSBtdDYzNTlfZGFwbV9yb3V0ZXMsDQorCS5udW1fZGFwbV9yb3V0ZXMgPSBBUlJBWV9TSVpFKG10 NjM1OV9kYXBtX3JvdXRlcyksDQorfTsNCisNCitzdGF0aWMgaW50IG10NjM1OV9wbGF0Zm9ybV9k cml2ZXJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCit7DQorCXN0cnVjdCBt dDYzNTlfcHJpdiAqcHJpdjsNCisJaW50IHJldDsNCisJc3RydWN0IG10NjM5N19jaGlwICptdDYz OTcgPSBkZXZfZ2V0X2RydmRhdGEocGRldi0+ZGV2LnBhcmVudCk7DQorDQorCXByaXYgPSBkZXZt X2t6YWxsb2MoJnBkZXYtPmRldiwNCisJCQkgICAgc2l6ZW9mKHN0cnVjdCBtdDYzNTlfcHJpdiks DQorCQkJICAgIEdGUF9LRVJORUwpOw0KKwlpZiAoIXByaXYpDQorCQlyZXR1cm4gLUVOT01FTTsN CisNCisJcHJpdi0+cmVnbWFwID0gbXQ2Mzk3LT5yZWdtYXA7DQorCWlmIChJU19FUlIocHJpdi0+ cmVnbWFwKSkNCisJCXJldHVybiBQVFJfRVJSKHByaXYtPnJlZ21hcCk7DQorDQorCWRldl9zZXRf ZHJ2ZGF0YSgmcGRldi0+ZGV2LCBwcml2KTsNCisJcHJpdi0+ZGV2ID0gJnBkZXYtPmRldjsNCisN CisJZGV2X2luZm8oJnBkZXYtPmRldiwgIiVzKCksIGRldiBuYW1lICVzXG4iLA0KKwkJIF9fZnVu Y19fLCBkZXZfbmFtZSgmcGRldi0+ZGV2KSk7DQorDQorCXJldCA9IGRldm1fc25kX3NvY19yZWdp c3Rlcl9jb21wb25lbnQoJnBkZXYtPmRldiwNCisJCQkJCSAgICAgICZtdDYzNTlfc29jX2NvbXBv bmVudF9kcml2ZXIsDQorCQkJCQkgICAgICBtdDYzNTlfZGFpX2RyaXZlciwNCisJCQkJCSAgICAg IEFSUkFZX1NJWkUobXQ2MzU5X2RhaV9kcml2ZXIpKTsNCisNCisJZGV2X2luZm8oJnBkZXYtPmRl diwgIiVzKCksIHJldCA9ICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsNCisJcmV0dXJuIHJldDsNCit9 DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXQ2MzU5X29mX21hdGNoW10g PSB7DQorCXsuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDYzNTktc291bmQiLH0sDQorCXt9DQor fTsNCitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDYzNTlfb2ZfbWF0Y2gpOw0KKw0KK3N0YXRp YyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10NjM1OV9wbGF0Zm9ybV9kcml2ZXIgPSB7DQorCS5k cml2ZXIgPSB7DQorCQkubmFtZSA9ICJtdDYzNTktc291bmQiLA0KKwkJLm9mX21hdGNoX3RhYmxl ID0gbXQ2MzU5X29mX21hdGNoLA0KKwl9LA0KKwkucHJvYmUgPSBtdDYzNTlfcGxhdGZvcm1fZHJp dmVyX3Byb2JlLA0KK307DQorDQorbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdDYzNTlfcGxhdGZv cm1fZHJpdmVyKQ0KKw0KKy8qIE1vZHVsZSBpbmZvcm1hdGlvbiAqLw0KK01PRFVMRV9ERVNDUklQ VElPTigiTVQ2MzU5IEFMU0EgU29DIGNvZGVjIGRyaXZlciIpOw0KK01PRFVMRV9BVVRIT1IoIkth aUNoaWVoIENodWFuZyA8a2FpY2hpZWguY2h1YW5nQG1lZGlhdGVrLmNvbT4iKTsNCitNT0RVTEVf QVVUSE9SKCJFYXNvbiBZZW4gPGVhc29uLnllbkBtZWRpYXRlay5jb20+Iik7DQorTU9EVUxFX0xJ Q0VOU0UoIkdQTCB2MiIpOw0KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvbXQ2MzU5Lmgg Yi9zb3VuZC9zb2MvY29kZWNzL210NjM1OS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMC4uZTMxOWQ2OQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvc291bmQvc29jL2NvZGVjcy9t dDYzNTkuaA0KQEAgLTAsMCArMSwzMjEyIEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgKi8NCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOSBNZWRpYVRlayBJbmMuDQor ICogQXV0aG9yOiBBcmd1cyBMaW4gPGFyZ3VzLmxpbkBtZWRpYXRlay5jb20+DQorICovDQorDQor I2lmbmRlZiBfTVQ2MzU5X0hfDQorI2RlZmluZSBfTVQ2MzU5X0hfDQorDQorLyoqKioqKioqKioq KipSZWdpc3RlciBCaXQgRGVmaW5lKioqKioqKioqKioqKi8NCisjZGVmaW5lIFBNSUNfQUNDREVU X0lSUV9TSElGVAkJCTANCisjZGVmaW5lIFBNSUNfQUNDREVUX0VJTlQwX0lSUV9TSElGVAkJMg0K KyNkZWZpbmUgUE1JQ19BQ0NERVRfRUlOVDFfSVJRX1NISUZUCQkzDQorI2RlZmluZSBQTUlDX0FD Q0RFVF9JUlFfQ0xSX1NISUZUCQk4DQorI2RlZmluZSBQTUlDX0FDQ0RFVF9FSU5UMF9JUlFfQ0xS X1NISUZUCQkxMA0KKyNkZWZpbmUgUE1JQ19BQ0NERVRfRUlOVDFfSVJRX0NMUl9TSElGVAkJMTEN CisjZGVmaW5lIFBNSUNfUkdfSU5UX1NUQVRVU19BQ0NERVRfU0hJRlQJCTUNCisjZGVmaW5lIFBN SUNfUkdfSU5UX1NUQVRVU19BQ0NERVRfRUlOVDBfU0hJRlQJNg0KKyNkZWZpbmUgUE1JQ19SR19J TlRfU1RBVFVTX0FDQ0RFVF9FSU5UMV9TSElGVAk3DQorI2RlZmluZSBQTUlDX1JHX0VJTlQwQ09O RklHQUNDREVUX1NISUZUCQkxMQ0KKyNkZWZpbmUgUE1JQ19SR19FSU5UMUNPTkZJR0FDQ0RFVF9T SElGVAkJMA0KKyNkZWZpbmUgUE1JQ19BQ0NERVRfRUlOVDBfSU5WRVJURVJfU1dfRU5fU0hJRlQJ Ng0KKyNkZWZpbmUgUE1JQ19BQ0NERVRfRUlOVDFfSU5WRVJURVJfU1dfRU5fU0hJRlQJOA0KKyNk ZWZpbmUgUE1JQ19SR19NVEVTVF9FTl9TSElGVAkJCTgNCisjZGVmaW5lIFBNSUNfUkdfTVRFU1Rf U0VMX1NISUZUCQkJOQ0KKyNkZWZpbmUgUE1JQ19BQ0NERVRfRUlOVDBfTV9TV19FTl9TSElGVAkJ MTANCisjZGVmaW5lIFBNSUNfQUNDREVUX0VJTlQxX01fU1dfRU5fU0hJRlQJCTExDQorI2RlZmlu ZSBQTUlDX0FDQ0RFVF9FSU5UMF9DRU5fU1RBQkxFX1NISUZUCTUNCisjZGVmaW5lIFBNSUNfQUND REVUX0VJTlQxX0NFTl9TVEFCTEVfU0hJRlQJMTANCisjZGVmaW5lIFBNSUNfQUNDREVUX0RBX1NU QUJMRV9TSElGVAkJMA0KKyNkZWZpbmUgUE1JQ19BQ0NERVRfRUlOVDBfRU5fU1RBQkxFX1NISUZU CTENCisjZGVmaW5lIFBNSUNfQUNDREVUX0VJTlQwX0NNUEVOX1NUQUJMRV9TSElGVAkyDQorI2Rl ZmluZSBQTUlDX0FDQ0RFVF9FSU5UMV9FTl9TVEFCTEVfU0hJRlQJNg0KKyNkZWZpbmUgUE1JQ19B Q0NERVRfRUlOVDFfQ01QRU5fU1RBQkxFX1NISUZUCTcNCisjZGVmaW5lIFBNSUNfQUNDREVUX0VJ TlRfQ1RVUkJPX1NFTF9TSElGVAk3DQorI2RlZmluZSBQTUlDX0FDQ0RFVF9FSU5UMF9DVFVSQk9f U1dfU0hJRlQJNw0KKyNkZWZpbmUgUE1JQ19SR19FSU5UQ09NUFZUSF9TSElGVAkJNA0KKyNkZWZp bmUgUE1JQ19SR19FSU5UMEhJUkVOQl9TSElGVAkJMTINCisjZGVmaW5lIFBNSUNfUkdfRUlOVDBO T0hZU19TSElGVAkJMTANCisjZGVmaW5lIFBNSUNfQUNDREVUX1NXX0VOX1NISUZUCQkJMA0KKyNk ZWZpbmUgUE1JQ19BQ0NERVRfRUlOVDBfTUVNX0lOX1NISUZUCQk2DQorI2RlZmluZSBQTUlDX0FD Q0RFVF9NRU1fSU5fU0hJRlQJCTYNCisjZGVmaW5lIFBNSUNfQUNDREVUX0VJTlRfREVCT1VOQ0Uw X1NISUZUCTANCisjZGVmaW5lIFBNSUNfQUNDREVUX0VJTlRfREVCT1VOQ0UxX1NISUZUCTQNCisj ZGVmaW5lIFBNSUNfQUNDREVUX0VJTlRfREVCT1VOQ0UyX1NISUZUCTgNCisjZGVmaW5lIFBNSUNf QUNDREVUX0VJTlRfREVCT1VOQ0UzX1NISUZUCTEyDQorI2RlZmluZSBQTUlDX1JHX0FDQ0RFVDJB VVhTV0VOX1NISUZUCQkxNA0KKyNkZWZpbmUgUE1JQ19BVURBQ0NERVRBVVhBRENTV0NUUkxfU0VM X1NISUZUCTkNCisjZGVmaW5lIFBNSUNfQVVEQUNDREVUQVVYQURDU1dDVFJMX1NXX1NISUZUCTEw DQorI2RlZmluZSBQTUlDX1JHX0VJTlQwQ1RVUkJPX1NISUZUCQk1DQorI2RlZmluZSBQTUlDX1JH X0VJTlQxQ1RVUkJPX1NISUZUCQkxMw0KKyNkZWZpbmUgUE1JQ19BQ0NERVRfRUlOVF9NX1BMVUdf SU5fTlVNX1NISUZUCTEyDQorI2RlZmluZSBQTUlDX0FDQ0RFVF9FSU5UX01fREVURUNUX0VOX1NI SUZUCTEyDQorI2RlZmluZSBQTUlDX0FDQ0RFVF9FSU5UMF9TV19FTl9TSElGVAkJMg0KKyNkZWZp bmUgUE1JQ19BQ0NERVRfRUlOVDFfU1dfRU5fU0hJRlQJCTQNCisjZGVmaW5lIFBNSUNfQUNDREVU X0VJTlRfQ01QTU9VVF9TRUxfU0hJRlQJMTINCisjZGVmaW5lIFBNSUNfQUNDREVUX0VJTlRfQ01Q TUVOX1NFTF9TSElGVAk2DQorI2RlZmluZSBQTUlDX1JHX0hQTE9VVFBVVFNUQkVOSF9WQVVEUDMy X1NISUZUCTANCisjZGVmaW5lIFBNSUNfUkdfSFBST1VUUFVUU1RCRU5IX1ZBVURQMzJfU0hJRlQJ NA0KKyNkZWZpbmUgUE1JQ19SR19FSU5UMEVOX1NISUZUCQkJMg0KKyNkZWZpbmUgUE1JQ19SR19F SU5UMUVOX1NISUZUCQkJMTANCisjZGVmaW5lIFBNSUNfUkdfTkNQX1BERElTX0VOX1NISUZUCQkw DQorI2RlZmluZSBQTUlDX1JHX0FDQ0RFVFNQQVJFX1NISUZUCQkwDQorI2RlZmluZSBQTUlDX1JH X0FDQ0RFVF9SU1RfU0hJRlQJCTENCisjZGVmaW5lIFBNSUNfUkdfQVVETUlDQklBUzFIVkVOX1NI SUZUCQkxMg0KKyNkZWZpbmUgUE1JQ19SR19BVURNSUNCSUFTMVZSRUZfU0hJRlQJCTQNCisjZGVm aW5lIFBNSUNfUkdfQU5BTE9HRkRFTl9TSElGVAkJMTINCisjZGVmaW5lIFBNSUNfUkdfQVVETUlD QklBUzFEQ1NXMVBFTl9TSElGVAk4DQorI2RlZmluZSBQTUlDX1JHX0FVRE1JQ0JJQVMxTE9XUEVO X1NISUZUCQkyDQorI2RlZmluZSBQTUlDX0FDQ0RFVF9TRVFfSU5JVF9TSElGVAkJMQ0KKw0KKyNk ZWZpbmUgUE1JQ19SR19FSU5UQ09NUFZUSF9NQVNLCQkweEYNCisjZGVmaW5lIFBNSUNfQUNDREVU X0VJTlQwX01FTV9JTl9NQVNLCQkweDMNCisjZGVmaW5lIFBNSUNfQUNDREVUX0VJTlRfREVCT1VO Q0UwX01BU0sJCTB4Rg0KKyNkZWZpbmUgUE1JQ19BQ0NERVRfRUlOVF9ERUJPVU5DRTFfTUFTSwkJ MHhGDQorI2RlZmluZSBQTUlDX0FDQ0RFVF9FSU5UX0RFQk9VTkNFMl9NQVNLCQkweEYNCisjZGVm aW5lIFBNSUNfQUNDREVUX0VJTlRfREVCT1VOQ0UzX01BU0sJCTB4Rg0KKw0KKyNkZWZpbmUgUE1J Q19BQ0NERVRfRUlOVDBfSVJRX1NISUZUCQkyDQorI2RlZmluZSBQTUlDX0FDQ0RFVF9FSU5UMV9J UlFfU0hJRlQJCTMNCisvKiBBVURFTkNfQU5BX0NPTjE2OiAqLw0KKyNkZWZpbmUgUkdfQVVEX01J Q0JJQVMxX0xPV1BfRU4JCUJJVChQTUlDX1JHX0FVRE1JQ0JJQVMxTE9XUEVOX1NISUZUKQ0KKw0K Ky8qIEFVREVOQ19BTkFfQ09OMTg6ICovDQorI2RlZmluZSBSR19BQ0NERVRfTU9ERV9BTkExMV9N T0RFMQkJKDB4MDAwRikNCisjZGVmaW5lIFJHX0FDQ0RFVF9NT0RFX0FOQTExX01PREUyCQkoMHgw MDhGKQ0KKyNkZWZpbmUgUkdfQUNDREVUX01PREVfQU5BMTFfTU9ERTYJCSgweDAwOEYpDQorDQor LyogQVVYQURDX0FEQzU6ICBBdXhhZGMgQ0g1IHJlYWQgZGF0YSAqLw0KKyNkZWZpbmUgQVVYQURD X0RBVEFfUkRZX0NINQkJCUJJVCgxNSkNCisjZGVmaW5lIEFVWEFEQ19EQVRBX1BST0NFRURfQ0g1 CQkJQklUKDE1KQ0KKyNkZWZpbmUgQVVYQURDX0RBVEFfTUFTSwkJCSgweDBGRkYpDQorDQorLyog QVVYQURDX1JRU1QwX1NFVDogIEF1eGFkYyBDSDUgcmVxdWVzdCwgcmVsZXZhbnQgMHgwN0VDICov DQorI2RlZmluZSBBVVhBRENfUlFTVF9DSDVfU0VUCQkJQklUKDUpDQorLyogQVVYQURDX1JRU1Qw X0NMUjogIEF1eGFkYyBDSDUgcmVxdWVzdCwgcmVsZXZhbnQgMHgwN0VDICovDQorI2RlZmluZSBB VVhBRENfUlFTVF9DSDVfQ0xSCQkJQklUKDUpDQorDQorI2RlZmluZSBBQ0NERVRfQ0FMSV9NQVNL MAkJCSgweEZGKQ0KKyNkZWZpbmUgQUNDREVUX0NBTElfTUFTSzEJCQkoMHhGRiA8PCA4KQ0KKyNk ZWZpbmUgQUNDREVUX0NBTElfTUFTSzIJCQkoMHhGRikNCisjZGVmaW5lIEFDQ0RFVF9DQUxJX01B U0szCQkJKDB4RkYgPDwgOCkNCisjZGVmaW5lIEFDQ0RFVF9DQUxJX01BU0s0CQkJKDB4RkYpDQor DQorI2RlZmluZSBBQ0NERVRfRUlOVDFfSVJRX0NMUl9CMTEJQklUKFBNSUNfQUNDREVUX0VJTlQx X0lSUV9DTFJfU0hJRlQpDQorI2RlZmluZSBBQ0NERVRfRUlOVDBfSVJRX0NMUl9CMTAJQklUKFBN SUNfQUNDREVUX0VJTlQwX0lSUV9DTFJfU0hJRlQpDQorI2RlZmluZSBBQ0NERVRfRUlOVF9JUlFf Q0xSX0IxMF8xMQkoMHgwMyA8PCBcDQorCQkJCQkgUE1JQ19BQ0NERVRfRUlOVDBfSVJRX0NMUl9T SElGVCkNCisjZGVmaW5lIEFDQ0RFVF9JUlFfQ0xSX0I4CQlCSVQoUE1JQ19BQ0NERVRfSVJRX0NM Ul9TSElGVCkNCisNCisjZGVmaW5lIEFDQ0RFVF9FSU5UMV9JUlFfQjMJCUJJVChQTUlDX0FDQ0RF VF9FSU5UMV9JUlFfU0hJRlQpDQorI2RlZmluZSBBQ0NERVRfRUlOVDBfSVJRX0IyCQlCSVQoUE1J Q19BQ0NERVRfRUlOVDBfSVJRX1NISUZUKQ0KKyNkZWZpbmUgQUNDREVUX0VJTlRfSVJRX0IyX0Iz CQkoMHgwMyA8PCBQTUlDX0FDQ0RFVF9FSU5UMF9JUlFfU0hJRlQpDQorI2RlZmluZSBBQ0NERVRf SVJRX0IwCQkJQklUKFBNSUNfQUNDREVUX0lSUV9TSElGVCkNCisNCisvKiBBQ0NERVRfQ09OMjU6 IFJPLCBhY2NkZXQgRlNNIHN0YXRlLGV0Yy4qLw0KKyNkZWZpbmUgQUNDREVUX1NUQVRFX01FTV9J Tl9PRkZTRVQJKFBNSUNfQUNDREVUX01FTV9JTl9TSElGVCkNCisjZGVmaW5lIEFDQ0RFVF9TVEFU RV9BQl9NQVNLCQkoMHgwMykNCisjZGVmaW5lIEFDQ0RFVF9TVEFURV9BQl8wMAkJCSgweDAwKQ0K KyNkZWZpbmUgQUNDREVUX1NUQVRFX0FCXzAxCQkJKDB4MDEpDQorI2RlZmluZSBBQ0NERVRfU1RB VEVfQUJfMTAJCQkoMHgwMikNCisjZGVmaW5lIEFDQ0RFVF9TVEFURV9BQl8xMQkJCSgweDAzKQ0K Kw0KKy8qIEFDQ0RFVF9DT04xOSAqLw0KKyNkZWZpbmUgQUNDREVUX0VJTlQwX1NUQUJMRV9WQUwg KCgxIDw8IFBNSUNfQUNDREVUX0RBX1NUQUJMRV9TSElGVCkgfCBcDQorCQkJCSgxIDw8IFBNSUNf QUNDREVUX0VJTlQwX0VOX1NUQUJMRV9TSElGVCkgfCBcDQorCQkJCSgxIDw8IFBNSUNfQUNDREVU X0VJTlQwX0NNUEVOX1NUQUJMRV9TSElGVCkgfCBcDQorCQkJCSgxIDw8IFBNSUNfQUNDREVUX0VJ TlQwX0NFTl9TVEFCTEVfU0hJRlQpKQ0KKw0KKyNkZWZpbmUgQUNDREVUX0VJTlQxX1NUQUJMRV9W QUwgKCgxIDw8IFBNSUNfQUNDREVUX0RBX1NUQUJMRV9TSElGVCkgfCBcDQorCQkJCSgxIDw8IFBN SUNfQUNDREVUX0VJTlQxX0VOX1NUQUJMRV9TSElGVCkgfCBcDQorCQkJCSgxIDw8IFBNSUNfQUND REVUX0VJTlQxX0NNUEVOX1NUQUJMRV9TSElGVCkgfCBcDQorCQkJCSgxIDw8IFBNSUNfQUNDREVU X0VJTlQxX0NFTl9TVEFCTEVfU0hJRlQpKQ0KKw0KKy8qIFRoZSBmb2xsb3dpbmcgYXJlIHVzZWQg Zm9yIG10NjM1OS5jICovDQorLyogTVQ2MzU5X0RDWE9fQ1cxMiAqLw0KKyNkZWZpbmUgUkdfWE9f QVVESU9fRU5fTV9TRlQgMTMNCisNCisvKiBNVDYzNTlfRENYT19DVzExICovDQorI2RlZmluZSBS R19YT19WT1dfRU5fU0ZUIDkNCisNCisvKiBMRE9fVkFVRDE4X0NPTjAgKi8NCisjZGVmaW5lIFJH X0xET19WQVVEMThfRU5fU0ZUICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdf TERPX1ZBVUQxOF9FTl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJH X0xET19WQVVEMThfRU5fTUFTS19TRlQgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAwKQ0KKw0K Ky8qIEFVRF9UT1BfQ0tQRE5fQ09OMCAqLw0KKyNkZWZpbmUgUkdfVk9XMTNNX0NLX1BETl9TRlQg ICAgICAgICAgICAgICAgICAgICAgICAxMw0KKyNkZWZpbmUgUkdfVk9XMTNNX0NLX1BETl9NQVNL ICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX1ZPVzEzTV9DS19QRE5fTUFT S19TRlQgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAxMykNCisjZGVmaW5lIFJHX1ZPVzMyS19D S19QRE5fU0ZUICAgICAgICAgICAgICAgICAgICAgICAgMTINCisjZGVmaW5lIFJHX1ZPVzMyS19D S19QRE5fTUFTSyAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19WT1czMktf Q0tfUEROX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICgweDEgPDwgMTIpDQorI2RlZmluZSBS R19BVURfSU5UUlBfQ0tfUEROX1NGVCAgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJH X0FVRF9JTlRSUF9DS19QRE5fTUFTSyAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBS R19BVURfSU5UUlBfQ0tfUEROX01BU0tfU0ZUICAgICAgICAgICAgICAgICgweDEgPDwgOCkNCisj ZGVmaW5lIFJHX1BBRF9BVURfQ0xLX01JU09fQ0tfUEROX1NGVCAgICAgICAgICAgICAgNw0KKyNk ZWZpbmUgUkdfUEFEX0FVRF9DTEtfTUlTT19DS19QRE5fTUFTSyAgICAgICAgICAgICAweDENCisj ZGVmaW5lIFJHX1BBRF9BVURfQ0xLX01JU09fQ0tfUEROX01BU0tfU0ZUICAgICAgICAgKDB4MSA8 PCA3KQ0KKyNkZWZpbmUgUkdfQVVETkNQX0NLX1BETl9TRlQgICAgICAgICAgICAgICAgICAgICAg ICA2DQorI2RlZmluZSBSR19BVUROQ1BfQ0tfUEROX01BU0sgICAgICAgICAgICAgICAgICAgICAg IDB4MQ0KKyNkZWZpbmUgUkdfQVVETkNQX0NLX1BETl9NQVNLX1NGVCAgICAgICAgICAgICAgICAg ICAoMHgxIDw8IDYpDQorI2RlZmluZSBSR19aQ0QxM01fQ0tfUEROX1NGVCAgICAgICAgICAgICAg ICAgICAgICAgIDUNCisjZGVmaW5lIFJHX1pDRDEzTV9DS19QRE5fTUFTSyAgICAgICAgICAgICAg ICAgICAgICAgMHgxDQorI2RlZmluZSBSR19aQ0QxM01fQ0tfUEROX01BU0tfU0ZUICAgICAgICAg ICAgICAgICAgICgweDEgPDwgNSkNCisjZGVmaW5lIFJHX0FVRElGX0NLX1BETl9TRlQgICAgICAg ICAgICAgICAgICAgICAgICAgMg0KKyNkZWZpbmUgUkdfQVVESUZfQ0tfUEROX01BU0sgICAgICAg ICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRElGX0NLX1BETl9NQVNLX1NGVCAg ICAgICAgICAgICAgICAgICAgKDB4MSA8PCAyKQ0KKyNkZWZpbmUgUkdfQVVEX0NLX1BETl9TRlQg ICAgICAgICAgICAgICAgICAgICAgICAgICAxDQorI2RlZmluZSBSR19BVURfQ0tfUEROX01BU0sg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEX0NLX1BETl9NQVNL X1NGVCAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDEpDQorI2RlZmluZSBSR19BQ0NERVRf Q0tfUEROX1NGVCAgICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FDQ0RFVF9D S19QRE5fTUFTSyAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BQ0NERVRf Q0tfUEROX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBBVURf VE9QX0NLUEROX0NPTjBfU0VUICovDQorI2RlZmluZSBSR19BVURfVE9QX0NLUEROX0NPTjBfU0VU X1NGVCAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FVRF9UT1BfQ0tQRE5fQ09OMF9TRVRf TUFTSyAgICAgICAgICAgICAgMHgzZmZmDQorI2RlZmluZSBSR19BVURfVE9QX0NLUEROX0NPTjBf U0VUX01BU0tfU0ZUICAgICAgICAgICgweDNmZmYgPDwgMCkNCisNCisvKiBBVURfVE9QX0NLUERO X0NPTjBfQ0xSICovDQorI2RlZmluZSBSR19BVURfVE9QX0NLUEROX0NPTjBfQ0xSX1NGVCAgICAg ICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FVRF9UT1BfQ0tQRE5fQ09OMF9DTFJfTUFTSyAgICAg ICAgICAgICAgMHgzZmZmDQorI2RlZmluZSBSR19BVURfVE9QX0NLUEROX0NPTjBfQ0xSX01BU0tf U0ZUICAgICAgICAgICgweDNmZmYgPDwgMCkNCisNCisvKiBBVURfVE9QX0NLU0VMX0NPTjAgKi8N CisjZGVmaW5lIFJHX0FVRElGX0NLX0NLU0VMX1NGVCAgICAgICAgICAgICAgICAgICAgICAgMw0K KyNkZWZpbmUgUkdfQVVESUZfQ0tfQ0tTRUxfTUFTSyAgICAgICAgICAgICAgICAgICAgICAweDEN CisjZGVmaW5lIFJHX0FVRElGX0NLX0NLU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgKDB4 MSA8PCAzKQ0KKyNkZWZpbmUgUkdfQVVEX0NLX0NLU0VMX1NGVCAgICAgICAgICAgICAgICAgICAg ICAgICAyDQorI2RlZmluZSBSR19BVURfQ0tfQ0tTRUxfTUFTSyAgICAgICAgICAgICAgICAgICAg ICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEX0NLX0NLU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAg ICAgICAoMHgxIDw8IDIpDQorDQorLyogQVVEX1RPUF9DS1NFTF9DT04wX1NFVCAqLw0KKyNkZWZp bmUgUkdfQVVEX1RPUF9DS1NFTF9DT04wX1NFVF9TRlQgICAgICAgICAgICAgICAwDQorI2RlZmlu ZSBSR19BVURfVE9QX0NLU0VMX0NPTjBfU0VUX01BU0sgICAgICAgICAgICAgIDB4Zg0KKyNkZWZp bmUgUkdfQVVEX1RPUF9DS1NFTF9DT04wX1NFVF9NQVNLX1NGVCAgICAgICAgICAoMHhmIDw8IDAp DQorDQorLyogQVVEX1RPUF9DS1NFTF9DT04wX0NMUiAqLw0KKyNkZWZpbmUgUkdfQVVEX1RPUF9D S1NFTF9DT04wX0NMUl9TRlQgICAgICAgICAgICAgICAwDQorI2RlZmluZSBSR19BVURfVE9QX0NL U0VMX0NPTjBfQ0xSX01BU0sgICAgICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgUkdfQVVEX1RPUF9D S1NFTF9DT04wX0NMUl9NQVNLX1NGVCAgICAgICAgICAoMHhmIDw8IDApDQorDQorLyogQVVEX1RP UF9DS1RTVF9DT04wICovDQorI2RlZmluZSBSR19WT1cxM01fQ0tfVFNUU0VMX1NGVCAgICAgICAg ICAgICAgICAgICAgIDkNCisjZGVmaW5lIFJHX1ZPVzEzTV9DS19UU1RTRUxfTUFTSyAgICAgICAg ICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19WT1cxM01fQ0tfVFNUU0VMX01BU0tfU0ZUICAg ICAgICAgICAgICAgICgweDEgPDwgOSkNCisjZGVmaW5lIFJHX1ZPVzEzTV9DS19UU1RfRElTX1NG VCAgICAgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgUkdfVk9XMTNNX0NLX1RTVF9ESVNfTUFT SyAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX1ZPVzEzTV9DS19UU1RfRElTX01B U0tfU0ZUICAgICAgICAgICAgICAgKDB4MSA8PCA4KQ0KKyNkZWZpbmUgUkdfQVVEMjZNX0NLX1RT VFNFTF9TRlQgICAgICAgICAgICAgICAgICAgICA0DQorI2RlZmluZSBSR19BVUQyNk1fQ0tfVFNU U0VMX01BU0sgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEMjZNX0NLX1RT VFNFTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAoMHgxIDw8IDQpDQorI2RlZmluZSBSR19BVURJ Rl9DS19UU1RTRUxfU0ZUICAgICAgICAgICAgICAgICAgICAgIDMNCisjZGVmaW5lIFJHX0FVRElG X0NLX1RTVFNFTF9NQVNLICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURJ Rl9DS19UU1RTRUxfTUFTS19TRlQgICAgICAgICAgICAgICAgICgweDEgPDwgMykNCisjZGVmaW5l IFJHX0FVRF9DS19UU1RTRUxfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgMg0KKyNkZWZpbmUg UkdfQVVEX0NLX1RTVFNFTF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5l IFJHX0FVRF9DS19UU1RTRUxfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAyKQ0K KyNkZWZpbmUgUkdfQVVEMjZNX0NLX1RTVF9ESVNfU0ZUICAgICAgICAgICAgICAgICAgICAwDQor I2RlZmluZSBSR19BVUQyNk1fQ0tfVFNUX0RJU19NQVNLICAgICAgICAgICAgICAgICAgIDB4MQ0K KyNkZWZpbmUgUkdfQVVEMjZNX0NLX1RTVF9ESVNfTUFTS19TRlQgICAgICAgICAgICAgICAoMHgx IDw8IDApDQorDQorLyogQVVEX1RPUF9DTEtfSFdFTl9DT04wICovDQorI2RlZmluZSBSR19BVURf SU5UUlBfQ0tfUEROX0hXRU5fU0ZUICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FVRF9J TlRSUF9DS19QRE5fSFdFTl9NQVNLICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURf SU5UUlBfQ0tfUEROX0hXRU5fTUFTS19TRlQgICAgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBB VURfVE9QX0NMS19IV0VOX0NPTjBfU0VUICovDQorI2RlZmluZSBSR19BVURfSU5UUlBfQ0tfUE5E X0hXRU5fQ09OMF9TRVRfU0ZUICAgICAgIDANCisjZGVmaW5lIFJHX0FVRF9JTlRSUF9DS19QTkRf SFdFTl9DT04wX1NFVF9NQVNLICAgICAgMHhmZmZmDQorI2RlZmluZSBSR19BVURfSU5UUlBfQ0tf UE5EX0hXRU5fQ09OMF9TRVRfTUFTS19TRlQgICgweGZmZmYgPDwgMCkNCisNCisvKiBBVURfVE9Q X0NMS19IV0VOX0NPTjBfQ0xSICovDQorI2RlZmluZSBSR19BVURfSU5UUlBfQ0xLX1BETl9IV0VO X0NPTjBfQ0xSX1NGVCAgICAgIDANCisjZGVmaW5lIFJHX0FVRF9JTlRSUF9DTEtfUEROX0hXRU5f Q09OMF9DTFJfTUFTSyAgICAgMHhmZmZmDQorI2RlZmluZSBSR19BVURfSU5UUlBfQ0xLX1BETl9I V0VOX0NPTjBfQ0xSX01BU0tfU0ZUICgweGZmZmYgPDwgMCkNCisNCisvKiBBVURfVE9QX1JTVF9D T04wICovDQorI2RlZmluZSBSR19BVUROQ1BfUlNUX1NGVCAgICAgICAgICAgICAgICAgICAgICAg ICAgIDMNCisjZGVmaW5lIFJHX0FVRE5DUF9SU1RfTUFTSyAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgxDQorI2RlZmluZSBSR19BVUROQ1BfUlNUX01BU0tfU0ZUICAgICAgICAgICAgICAgICAg ICAgICgweDEgPDwgMykNCisjZGVmaW5lIFJHX1pDRF9SU1RfU0ZUICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMg0KKyNkZWZpbmUgUkdfWkNEX1JTVF9NQVNLICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX1pDRF9SU1RfTUFTS19TRlQgICAgICAgICAgICAg ICAgICAgICAgICAgKDB4MSA8PCAyKQ0KKyNkZWZpbmUgUkdfQUNDREVUX1JTVF9TRlQgICAgICAg ICAgICAgICAgICAgICAgICAgICAxDQorI2RlZmluZSBSR19BQ0NERVRfUlNUX01BU0sgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQUNDREVUX1JTVF9NQVNLX1NGVCAg ICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDEpDQorI2RlZmluZSBSR19BVURJT19SU1RfU0ZU ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FVRElPX1JTVF9NQVNL ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURJT19SU1RfTUFT S19TRlQgICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBBVURfVE9QX1JT VF9DT04wX1NFVCAqLw0KKyNkZWZpbmUgUkdfQVVEX1RPUF9SU1RfQ09OMF9TRVRfU0ZUICAgICAg ICAgICAgICAgICAwDQorI2RlZmluZSBSR19BVURfVE9QX1JTVF9DT04wX1NFVF9NQVNLICAgICAg ICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgUkdfQVVEX1RPUF9SU1RfQ09OMF9TRVRfTUFTS19TRlQg ICAgICAgICAgICAoMHhmIDw8IDApDQorDQorLyogQVVEX1RPUF9SU1RfQ09OMF9DTFIgKi8NCisj ZGVmaW5lIFJHX0FVRF9UT1BfUlNUX0NPTjBfQ0xSX1NGVCAgICAgICAgICAgICAgICAgMA0KKyNk ZWZpbmUgUkdfQVVEX1RPUF9SU1RfQ09OMF9DTFJfTUFTSyAgICAgICAgICAgICAgICAweGYNCisj ZGVmaW5lIFJHX0FVRF9UT1BfUlNUX0NPTjBfQ0xSX01BU0tfU0ZUICAgICAgICAgICAgKDB4ZiA8 PCAwKQ0KKw0KKy8qIEFVRF9UT1BfUlNUX0JBTktfQ09OMCAqLw0KKyNkZWZpbmUgQkFOS19BVURa Q0RfU1dSU1RfU0ZUICAgICAgICAgICAgICAgICAgICAgICAyDQorI2RlZmluZSBCQU5LX0FVRFpD RF9TV1JTVF9NQVNLICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQkFOS19BVURa Q0RfU1dSU1RfTUFTS19TRlQgICAgICAgICAgICAgICAgICAoMHgxIDw8IDIpDQorI2RlZmluZSBC QU5LX0FVRElPX1NXUlNUX1NGVCAgICAgICAgICAgICAgICAgICAgICAgIDENCisjZGVmaW5lIEJB TktfQVVESU9fU1dSU1RfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBC QU5LX0FVRElPX1NXUlNUX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICgweDEgPDwgMSkNCisj ZGVmaW5lIEJBTktfQUNDREVUX1NXUlNUX1NGVCAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNk ZWZpbmUgQkFOS19BQ0NERVRfU1dSU1RfTUFTSyAgICAgICAgICAgICAgICAgICAgICAweDENCisj ZGVmaW5lIEJBTktfQUNDREVUX1NXUlNUX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgKDB4MSA8 PCAwKQ0KKw0KKy8qIEFGRV9VTF9ETF9DT04wICovDQorI2RlZmluZSBBRkVfVUxfTFJfU1dBUF9T RlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUNCisjZGVmaW5lIEFGRV9VTF9MUl9T V0FQX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIEFGRV9V TF9MUl9TV0FQX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDE1KQ0K KyNkZWZpbmUgQUZFX0RMX0xSX1NXQVBfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDE0DQorI2RlZmluZSBBRkVfRExfTFJfU1dBUF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgxDQorI2RlZmluZSBBRkVfRExfTFJfU1dBUF9NQVNLX1NGVCAgICAgICAgICAgICAg ICAgICAgICAgICAgKDB4MSA8PCAxNCkNCisjZGVmaW5lIEFGRV9PTl9TRlQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBBRkVfT05fTUFTSyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBBRkVfT05fTUFTS19T RlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAwKQ0KKw0KKy8qIEFG RV9ETF9TUkMyX0NPTjBfTCAqLw0KKyNkZWZpbmUgRExfMl9TUkNfT05fVE1QX0NUTF9QUkVfU0ZU ICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIERMXzJfU1JDX09OX1RNUF9DVExfUFJF X01BU0sgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIERMXzJfU1JDX09OX1RNUF9D VExfUFJFX01BU0tfU0ZUICAgICAgICAgICAgICAgICAoMHgxIDw8IDApDQorDQorLyogQUZFX1VM X1NSQ19DT04wX0ggKi8NCisjZGVmaW5lIENfRElHTUlDX1BIQVNFX1NFTF9DSDFfQ1RMX1NGVCAg ICAgICAgICAgICAgICAgICAxMQ0KKyNkZWZpbmUgQ19ESUdNSUNfUEhBU0VfU0VMX0NIMV9DVExf TUFTSyAgICAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgQ19ESUdNSUNfUEhBU0VfU0VMX0NI MV9DVExfTUFTS19TRlQgICAgICAgICAgICAgICgweDcgPDwgMTEpDQorI2RlZmluZSBDX0RJR01J Q19QSEFTRV9TRUxfQ0gyX0NUTF9TRlQgICAgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgQ19E SUdNSUNfUEhBU0VfU0VMX0NIMl9DVExfTUFTSyAgICAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZp bmUgQ19ESUdNSUNfUEhBU0VfU0VMX0NIMl9DVExfTUFTS19TRlQgICAgICAgICAgICAgICgweDcg PDwgOCkNCisjZGVmaW5lIENfVFdPX0RJR0lUQUxfTUlDX0NUTF9TRlQgICAgICAgICAgICAgICAg ICAgICAgICA3DQorI2RlZmluZSBDX1RXT19ESUdJVEFMX01JQ19DVExfTUFTSyAgICAgICAgICAg ICAgICAgICAgICAgMHgxDQorI2RlZmluZSBDX1RXT19ESUdJVEFMX01JQ19DVExfTUFTS19TRlQg ICAgICAgICAgICAgICAgICAgKDB4MSA8PCA3KQ0KKw0KKy8qIEFGRV9VTF9TUkNfQ09OMF9MICov DQorI2RlZmluZSBETUlDX0xPV19QT1dFUl9NT0RFX0NUTF9TRlQgICAgICAgICAgICAgICAgICAg ICAgMTQNCisjZGVmaW5lIERNSUNfTE9XX1BPV0VSX01PREVfQ1RMX01BU0sgICAgICAgICAgICAg ICAgICAgICAweDMNCisjZGVmaW5lIERNSUNfTE9XX1BPV0VSX01PREVfQ1RMX01BU0tfU0ZUICAg ICAgICAgICAgICAgICAoMHgzIDw8IDE0KQ0KKyNkZWZpbmUgRElHTUlDXzRQMzNNX1NFTF9DVExf U0ZUICAgICAgICAgICAgICAgICAgICAgICAgIDYNCisjZGVmaW5lIERJR01JQ180UDMzTV9TRUxf Q1RMX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIERJR01JQ180UDMz TV9TRUxfQ1RMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDYpDQorI2RlZmlu ZSBESUdNSUNfM1AyNU1fMVA2MjVNX1NFTF9DVExfU0ZUICAgICAgICAgICAgICAgICAgNQ0KKyNk ZWZpbmUgRElHTUlDXzNQMjVNXzFQNjI1TV9TRUxfQ1RMX01BU0sgICAgICAgICAgICAgICAgIDB4 MQ0KKyNkZWZpbmUgRElHTUlDXzNQMjVNXzFQNjI1TV9TRUxfQ1RMX01BU0tfU0ZUICAgICAgICAg ICAgICgweDEgPDwgNSkNCisjZGVmaW5lIFVMX0xPT1BfQkFDS19NT0RFX0NUTF9TRlQgICAgICAg ICAgICAgICAgICAgICAgICAyDQorI2RlZmluZSBVTF9MT09QX0JBQ0tfTU9ERV9DVExfTUFTSyAg ICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBVTF9MT09QX0JBQ0tfTU9ERV9DVExf TUFTS19TRlQgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAyKQ0KKyNkZWZpbmUgVUxfU0RNXzNf TEVWRUxfQ1RMX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgIDENCisjZGVmaW5lIFVMX1NE TV8zX0xFVkVMX0NUTF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5l IFVMX1NETV8zX0xFVkVMX0NUTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8 IDEpDQorI2RlZmluZSBVTF9TUkNfT05fVE1QX0NUTF9TRlQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMA0KKyNkZWZpbmUgVUxfU1JDX09OX1RNUF9DVExfTUFTSyAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVUxfU1JDX09OX1RNUF9DVExfTUFTS19TRlQgICAgICAg ICAgICAgICAgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBBRkVfQUREQTZfTF9TUkNfQ09OMF9I ICovDQorI2RlZmluZSBBRERBNl9DX0RJR01JQ19QSEFTRV9TRUxfQ0gxX0NUTF9TRlQgICAgICAg ICAgICAgMTENCisjZGVmaW5lIEFEREE2X0NfRElHTUlDX1BIQVNFX1NFTF9DSDFfQ1RMX01BU0sg ICAgICAgICAgICAweDcNCisjZGVmaW5lIEFEREE2X0NfRElHTUlDX1BIQVNFX1NFTF9DSDFfQ1RM X01BU0tfU0ZUICAgICAgICAoMHg3IDw8IDExKQ0KKyNkZWZpbmUgQUREQTZfQ19ESUdNSUNfUEhB U0VfU0VMX0NIMl9DVExfU0ZUICAgICAgICAgICAgIDgNCisjZGVmaW5lIEFEREE2X0NfRElHTUlD X1BIQVNFX1NFTF9DSDJfQ1RMX01BU0sgICAgICAgICAgICAweDcNCisjZGVmaW5lIEFEREE2X0Nf RElHTUlDX1BIQVNFX1NFTF9DSDJfQ1RMX01BU0tfU0ZUICAgICAgICAoMHg3IDw8IDgpDQorI2Rl ZmluZSBBRERBNl9DX1RXT19ESUdJVEFMX01JQ19DVExfU0ZUICAgICAgICAgICAgICAgICAgNw0K KyNkZWZpbmUgQUREQTZfQ19UV09fRElHSVRBTF9NSUNfQ1RMX01BU0sgICAgICAgICAgICAgICAg IDB4MQ0KKyNkZWZpbmUgQUREQTZfQ19UV09fRElHSVRBTF9NSUNfQ1RMX01BU0tfU0ZUICAgICAg ICAgICAgICgweDEgPDwgNykNCisNCisvKiBBRkVfQUREQTZfVUxfU1JDX0NPTjBfTCAqLw0KKyNk ZWZpbmUgQUREQTZfRE1JQ19MT1dfUE9XRVJfTU9ERV9DVExfU0ZUICAgICAgICAgICAgICAgIDE0 DQorI2RlZmluZSBBRERBNl9ETUlDX0xPV19QT1dFUl9NT0RFX0NUTF9NQVNLICAgICAgICAgICAg ICAgMHgzDQorI2RlZmluZSBBRERBNl9ETUlDX0xPV19QT1dFUl9NT0RFX0NUTF9NQVNLX1NGVCAg ICAgICAgICAgKDB4MyA8PCAxNCkNCisjZGVmaW5lIEFEREE2X0RJR01JQ180UDMzTV9TRUxfQ1RM X1NGVCAgICAgICAgICAgICAgICAgICA2DQorI2RlZmluZSBBRERBNl9ESUdNSUNfNFAzM01fU0VM X0NUTF9NQVNLICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBBRERBNl9ESUdNSUNfNFAz M01fU0VMX0NUTF9NQVNLX1NGVCAgICAgICAgICAgICAgKDB4MSA8PCA2KQ0KKyNkZWZpbmUgQURE QTZfRElHTUlDXzNQMjVNXzFQNjI1TV9TRUxfQ1RMX1NGVCAgICAgICAgICAgIDUNCisjZGVmaW5l IEFEREE2X0RJR01JQ18zUDI1TV8xUDYyNU1fU0VMX0NUTF9NQVNLICAgICAgICAgICAweDENCisj ZGVmaW5lIEFEREE2X0RJR01JQ18zUDI1TV8xUDYyNU1fU0VMX0NUTF9NQVNLX1NGVCAgICAgICAo MHgxIDw8IDUpDQorI2RlZmluZSBBRERBNl9VTF9MT09QX0JBQ0tfTU9ERV9DVExfU0ZUICAgICAg ICAgICAgICAgICAgMg0KKyNkZWZpbmUgQUREQTZfVUxfTE9PUF9CQUNLX01PREVfQ1RMX01BU0sg ICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQUREQTZfVUxfTE9PUF9CQUNLX01PREVfQ1RM X01BU0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgMikNCisjZGVmaW5lIEFEREE2X1VMX1NETV8z X0xFVkVMX0NUTF9TRlQgICAgICAgICAgICAgICAgICAgICAxDQorI2RlZmluZSBBRERBNl9VTF9T RE1fM19MRVZFTF9DVExfTUFTSyAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBBRERB Nl9VTF9TRE1fM19MRVZFTF9DVExfTUFTS19TRlQgICAgICAgICAgICAgICAgKDB4MSA8PCAxKQ0K KyNkZWZpbmUgQUREQTZfVUxfU1JDX09OX1RNUF9DVExfU0ZUICAgICAgICAgICAgICAgICAgICAg IDANCisjZGVmaW5lIEFEREE2X1VMX1NSQ19PTl9UTVBfQ1RMX01BU0sgICAgICAgICAgICAgICAg ICAgICAweDENCisjZGVmaW5lIEFEREE2X1VMX1NSQ19PTl9UTVBfQ1RMX01BU0tfU0ZUICAgICAg ICAgICAgICAgICAoMHgxIDw8IDApDQorDQorLyogQUZFX1RPUF9DT04wICovDQorI2RlZmluZSBB RERBNl9NVEtBSUZfU0lORV9PTl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgNA0KKyNkZWZp bmUgQUREQTZfTVRLQUlGX1NJTkVfT05fTUFTSyAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0K KyNkZWZpbmUgQUREQTZfTVRLQUlGX1NJTkVfT05fTUFTS19TRlQgICAgICAgICAgICAgICAgICAg ICgweDEgPDwgNCkNCisjZGVmaW5lIEFEREE2X1VMX1NJTkVfT05fU0ZUICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAzDQorI2RlZmluZSBBRERBNl9VTF9TSU5FX09OX01BU0sgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBBRERBNl9VTF9TSU5FX09OX01BU0tfU0ZU ICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAzKQ0KKyNkZWZpbmUgTVRLQUlGX1NJTkVf T05fU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDINCisjZGVmaW5lIE1US0FJRl9T SU5FX09OX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIE1U S0FJRl9TSU5FX09OX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDIp DQorI2RlZmluZSBVTF9TSU5FX09OX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMQ0KKyNkZWZpbmUgVUxfU0lORV9PTl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgVUxfU0lORV9PTl9NQVNLX1NGVCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgweDEgPDwgMSkNCisjZGVmaW5lIERMX1NJTkVfT05fU0ZUICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBETF9TSU5FX09OX01BU0sgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBETF9TSU5FX09OX01B U0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAwKQ0KKw0KKy8qIEFV RElPX1RPUF9DT04wICovDQorI2RlZmluZSBQRE5fQUZFX0NUTF9TRlQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgNw0KKyNkZWZpbmUgUEROX0FGRV9DVExfTUFTSyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUEROX0FGRV9DVExfTUFTS19TRlQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgNykNCisjZGVmaW5lIFBETl9EQUNf Q1RMX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2DQorI2RlZmluZSBQRE5f REFDX0NUTF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmlu ZSBQRE5fREFDX0NUTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8 PCA2KQ0KKyNkZWZpbmUgUEROX0FEQ19DVExfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDUNCisjZGVmaW5lIFBETl9BRENfQ1RMX01BU0sgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDENCisjZGVmaW5lIFBETl9BRENfQ1RMX01BU0tfU0ZUICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoMHgxIDw8IDUpDQorI2RlZmluZSBQRE5fQUREQTZfQURDX0NUTF9T RlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgUEROX0FEREE2X0FEQ19D VExfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUEROX0FEREE2 X0FEQ19DVExfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgNCkNCisjZGVm aW5lIFBETl9JMlNfRExfQ1RMX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzDQor I2RlZmluZSBQRE5fSTJTX0RMX0NUTF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgxDQorI2RlZmluZSBQRE5fSTJTX0RMX0NUTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAg ICAgICAgKDB4MSA8PCAzKQ0KKyNkZWZpbmUgUFdSX0NMS19ESVNfQ1RMX1NGVCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDINCisjZGVmaW5lIFBXUl9DTEtfRElTX0NUTF9NQVNLICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFBXUl9DTEtfRElTX0NUTF9NQVNL X1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDIpDQorI2RlZmluZSBQRE5fQUZF X1RFU1RNT0RFTF9DVExfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgMQ0KKyNkZWZpbmUgUERO X0FGRV9URVNUTU9ERUxfQ1RMX01BU0sgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZp bmUgUEROX0FGRV9URVNUTU9ERUxfQ1RMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICgweDEg PDwgMSkNCisjZGVmaW5lIFBETl9SRVNFUlZFRF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwDQorI2RlZmluZSBQRE5fUkVTRVJWRURfTUFTSyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgxDQorI2RlZmluZSBQRE5fUkVTRVJWRURfTUFTS19TRlQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKDB4MSA8PCAwKQ0KKw0KKy8qIEFGRV9NT05fREVCVUcwICovDQor I2RlZmluZSBBVURJT19TWVNfVE9QX01PTl9TV0FQX1NGVCAgICAgICAgICAgICAgICAgICAgICAg MTQNCisjZGVmaW5lIEFVRElPX1NZU19UT1BfTU9OX1NXQVBfTUFTSyAgICAgICAgICAgICAgICAg ICAgICAweDMNCisjZGVmaW5lIEFVRElPX1NZU19UT1BfTU9OX1NXQVBfTUFTS19TRlQgICAgICAg ICAgICAgICAgICAoMHgzIDw8IDE0KQ0KKyNkZWZpbmUgQVVESU9fU1lTX1RPUF9NT05fU0VMX1NG VCAgICAgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIEFVRElPX1NZU19UT1BfTU9OX1NF TF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweDFmDQorI2RlZmluZSBBVURJT19TWVNfVE9Q X01PTl9TRUxfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgKDB4MWYgPDwgOCkNCisjZGVmaW5l IEFGRV9NT05fU0VMX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwDQorI2Rl ZmluZSBBRkVfTU9OX1NFTF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhm Zg0KKyNkZWZpbmUgQUZFX01PTl9TRUxfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgweGZmIDw8IDApDQorDQorLyogQUZVTkNfQVVEX0NPTjAgKi8NCisjZGVmaW5lIENDSV9B VURfQU5BQ0tfU0VMX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNQ0KKyNkZWZpbmUg Q0NJX0FVRF9BTkFDS19TRUxfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNk ZWZpbmUgQ0NJX0FVRF9BTkFDS19TRUxfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICgw eDEgPDwgMTUpDQorI2RlZmluZSBDQ0lfQVVESU9fRklGT19XUFRSX1NGVCAgICAgICAgICAgICAg ICAgICAgICAgICAgMTINCisjZGVmaW5lIENDSV9BVURJT19GSUZPX1dQVFJfTUFTSyAgICAgICAg ICAgICAgICAgICAgICAgICAweDcNCisjZGVmaW5lIENDSV9BVURJT19GSUZPX1dQVFJfTUFTS19T RlQgICAgICAgICAgICAgICAgICAgICAoMHg3IDw8IDEyKQ0KKyNkZWZpbmUgQ0NJX1NDUkFNQkxF Ul9DR19FTl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgIDExDQorI2RlZmluZSBDQ0lfU0NS QU1CTEVSX0NHX0VOX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBD Q0lfU0NSQU1CTEVSX0NHX0VOX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAx MSkNCisjZGVmaW5lIENDSV9MQ0hfSU5WX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxMA0KKyNkZWZpbmUgQ0NJX0xDSF9JTlZfTUFTSyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX0xDSF9JTlZfTUFTS19TRlQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgweDEgPDwgMTApDQorI2RlZmluZSBDQ0lfUkFORF9FTl9TRlQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOQ0KKyNkZWZpbmUgQ0NJX1JBTkRfRU5fTUFT SyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX1JBTkRf RU5fTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgOSkNCisjZGVm aW5lIENDSV9TUExUX1NDUk1CX0NMS19PTl9TRlQgICAgICAgICAgICAgICAgICAgICAgICA4DQor I2RlZmluZSBDQ0lfU1BMVF9TQ1JNQl9DTEtfT05fTUFTSyAgICAgICAgICAgICAgICAgICAgICAg MHgxDQorI2RlZmluZSBDQ0lfU1BMVF9TQ1JNQl9DTEtfT05fTUFTS19TRlQgICAgICAgICAgICAg ICAgICAgKDB4MSA8PCA4KQ0KKyNkZWZpbmUgQ0NJX1NQTFRfU0NSTUJfT05fU0ZUICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDcNCisjZGVmaW5lIENDSV9TUExUX1NDUk1CX09OX01BU0sgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIENDSV9TUExUX1NDUk1CX09OX01B U0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDcpDQorI2RlZmluZSBDQ0lfQVVE X0lEQUNfVEVTVF9FTl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgNg0KKyNkZWZpbmUgQ0NJ X0FVRF9JREFDX1RFU1RfRU5fTUFTSyAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZp bmUgQ0NJX0FVRF9JREFDX1RFU1RfRU5fTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICgweDEg PDwgNikNCisjZGVmaW5lIENDSV9aRVJPX1BBRF9ESVNBQkxFX1NGVCAgICAgICAgICAgICAgICAg ICAgICAgICA1DQorI2RlZmluZSBDQ0lfWkVST19QQURfRElTQUJMRV9NQVNLICAgICAgICAgICAg ICAgICAgICAgICAgMHgxDQorI2RlZmluZSBDQ0lfWkVST19QQURfRElTQUJMRV9NQVNLX1NGVCAg ICAgICAgICAgICAgICAgICAgKDB4MSA8PCA1KQ0KKyNkZWZpbmUgQ0NJX0FVRF9TUExJVF9URVNU X0VOX1NGVCAgICAgICAgICAgICAgICAgICAgICAgIDQNCisjZGVmaW5lIENDSV9BVURfU1BMSVRf VEVTVF9FTl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIENDSV9BVURf U1BMSVRfVEVTVF9FTl9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDQpDQorI2Rl ZmluZSBDQ0lfQVVEX1NETV9NVVRFTF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMw0K KyNkZWZpbmUgQ0NJX0FVRF9TRE1fTVVURUxfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MQ0KKyNkZWZpbmUgQ0NJX0FVRF9TRE1fTVVURUxfTUFTS19TRlQgICAgICAgICAgICAgICAg ICAgICAgICgweDEgPDwgMykNCisjZGVmaW5lIENDSV9BVURfU0RNX01VVEVSX1NGVCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyDQorI2RlZmluZSBDQ0lfQVVEX1NETV9NVVRFUl9NQVNLICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBDQ0lfQVVEX1NETV9NVVRFUl9N QVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAyKQ0KKyNkZWZpbmUgQ0NJX0FV RF9TRE1fN0JJVF9TRUxfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgIDENCisjZGVmaW5lIEND SV9BVURfU0RNXzdCSVRfU0VMX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVm aW5lIENDSV9BVURfU0RNXzdCSVRfU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAoMHgx IDw8IDEpDQorI2RlZmluZSBDQ0lfU0NSQU1CTEVSX0VOX1NGVCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMA0KKyNkZWZpbmUgQ0NJX1NDUkFNQkxFUl9FTl9NQVNLICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX1NDUkFNQkxFUl9FTl9NQVNLX1NGVCAgICAg ICAgICAgICAgICAgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBBRlVOQ19BVURfQ09OMSAqLw0K KyNkZWZpbmUgQVVEX1NETV9URVNUX0xfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDgNCisjZGVmaW5lIEFVRF9TRE1fVEVTVF9MX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweGZmDQorI2RlZmluZSBBVURfU0RNX1RFU1RfTF9NQVNLX1NGVCAgICAgICAgICAgICAg ICAgICAgICAgICAgKDB4ZmYgPDwgOCkNCisjZGVmaW5lIEFVRF9TRE1fVEVTVF9SX1NGVCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBBVURfU0RNX1RFU1RfUl9NQVNL ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZg0KKyNkZWZpbmUgQVVEX1NETV9URVNU X1JfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICgweGZmIDw8IDApDQorDQorLyog QUZVTkNfQVVEX0NPTjIgKi8NCisjZGVmaW5lIENDSV9BVURfREFDX0FOQV9NVVRFX1NGVCAgICAg ICAgICAgICAgICAgICAgICAgICA3DQorI2RlZmluZSBDQ0lfQVVEX0RBQ19BTkFfTVVURV9NQVNL ICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBDQ0lfQVVEX0RBQ19BTkFfTVVU RV9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCA3KQ0KKyNkZWZpbmUgQ0NJX0FV RF9EQUNfQU5BX1JTVEJfU0VMX1NGVCAgICAgICAgICAgICAgICAgICAgIDYNCisjZGVmaW5lIEND SV9BVURfREFDX0FOQV9SU1RCX1NFTF9NQVNLICAgICAgICAgICAgICAgICAgICAweDENCisjZGVm aW5lIENDSV9BVURfREFDX0FOQV9SU1RCX1NFTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAoMHgx IDw8IDYpDQorI2RlZmluZSBDQ0lfQVVESU9fRklGT19DTEtJTl9JTlZfU0ZUICAgICAgICAgICAg ICAgICAgICAgNA0KKyNkZWZpbmUgQ0NJX0FVRElPX0ZJRk9fQ0xLSU5fSU5WX01BU0sgICAgICAg ICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX0FVRElPX0ZJRk9fQ0xLSU5fSU5WX01BU0tf U0ZUICAgICAgICAgICAgICAgICgweDEgPDwgNCkNCisjZGVmaW5lIENDSV9BVURJT19GSUZPX0VO QUJMRV9TRlQgICAgICAgICAgICAgICAgICAgICAgICAzDQorI2RlZmluZSBDQ0lfQVVESU9fRklG T19FTkFCTEVfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBDQ0lfQVVE SU9fRklGT19FTkFCTEVfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAzKQ0KKyNk ZWZpbmUgQ0NJX0FDRF9NT0RFX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIN CisjZGVmaW5lIENDSV9BQ0RfTU9ERV9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDENCisjZGVmaW5lIENDSV9BQ0RfTU9ERV9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoMHgxIDw8IDIpDQorI2RlZmluZSBDQ0lfQUZJRk9fQ0xLX1BXREJfU0ZUICAgICAg ICAgICAgICAgICAgICAgICAgICAgMQ0KKyNkZWZpbmUgQ0NJX0FGSUZPX0NMS19QV0RCX01BU0sg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX0FGSUZPX0NMS19QV0RC X01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgMSkNCisjZGVmaW5lIENDSV9B Q0RfRlVOQ19SU1RCX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBD Q0lfQUNEX0ZVTkNfUlNUQl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2Rl ZmluZSBDQ0lfQUNEX0ZVTkNfUlNUQl9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICAgKDB4 MSA8PCAwKQ0KKw0KKy8qIEFGVU5DX0FVRF9DT04zICovDQorI2RlZmluZSBTRE1fQU5BMTNNX1RF U1RDS19TRUxfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgMTUNCisjZGVmaW5lIFNETV9BTkEx M01fVEVTVENLX1NFTF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFNE TV9BTkExM01fVEVTVENLX1NFTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDE1 KQ0KKyNkZWZpbmUgU0RNX0FOQTEzTV9URVNUQ0tfU1JDX1NFTF9TRlQgICAgICAgICAgICAgICAg ICAgIDEyDQorI2RlZmluZSBTRE1fQU5BMTNNX1RFU1RDS19TUkNfU0VMX01BU0sgICAgICAgICAg ICAgICAgICAgMHg3DQorI2RlZmluZSBTRE1fQU5BMTNNX1RFU1RDS19TUkNfU0VMX01BU0tfU0ZU ICAgICAgICAgICAgICAgKDB4NyA8PCAxMikNCisjZGVmaW5lIFNETV9URVNUQ0tfU1JDX1NFTF9T RlQgICAgICAgICAgICAgICAgICAgICAgICAgICA4DQorI2RlZmluZSBTRE1fVEVTVENLX1NSQ19T RUxfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3DQorI2RlZmluZSBTRE1fVEVTVENL X1NSQ19TRUxfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgKDB4NyA8PCA4KQ0KKyNkZWZp bmUgRElHTUlDX1RFU1RDS19TUkNfU0VMX1NGVCAgICAgICAgICAgICAgICAgICAgICAgIDQNCisj ZGVmaW5lIERJR01JQ19URVNUQ0tfU1JDX1NFTF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAw eDcNCisjZGVmaW5lIERJR01JQ19URVNUQ0tfU1JDX1NFTF9NQVNLX1NGVCAgICAgICAgICAgICAg ICAgICAoMHg3IDw8IDQpDQorI2RlZmluZSBESUdNSUNfVEVTVENLX1NFTF9TRlQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgRElHTUlDX1RFU1RDS19TRUxfTUFTSyAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgRElHTUlDX1RFU1RDS19TRUxfTUFT S19TRlQgICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBBRlVOQ19BVURf Q09ONCAqLw0KKyNkZWZpbmUgVUxfRklGT19XQ0xLX0lOVl9TRlQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDgNCisjZGVmaW5lIFVMX0ZJRk9fV0NMS19JTlZfTUFTSyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFVMX0ZJRk9fV0NMS19JTlZfTUFTS19TRlQgICAg ICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDgpDQorI2RlZmluZSBVTF9GSUZPX0RJR01JQ19X REFUQV9URVNUU1JDX1NFTF9TRlQgICAgICAgICAgICAgNg0KKyNkZWZpbmUgVUxfRklGT19ESUdN SUNfV0RBVEFfVEVTVFNSQ19TRUxfTUFTSyAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVUxfRklG T19ESUdNSUNfV0RBVEFfVEVTVFNSQ19TRUxfTUFTS19TRlQgICAgICAgICgweDEgPDwgNikNCisj ZGVmaW5lIFVMX0ZJRk9fV0RBVEFfVEVTVEVOX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICA1 DQorI2RlZmluZSBVTF9GSUZPX1dEQVRBX1RFU1RFTl9NQVNLICAgICAgICAgICAgICAgICAgICAg ICAgMHgxDQorI2RlZmluZSBVTF9GSUZPX1dEQVRBX1RFU1RFTl9NQVNLX1NGVCAgICAgICAgICAg ICAgICAgICAgKDB4MSA8PCA1KQ0KKyNkZWZpbmUgVUxfRklGT19XREFUQV9URVNUU1JDX1NFTF9T RlQgICAgICAgICAgICAgICAgICAgIDQNCisjZGVmaW5lIFVMX0ZJRk9fV0RBVEFfVEVTVFNSQ19T RUxfTUFTSyAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFVMX0ZJRk9fV0RBVEFfVEVT VFNSQ19TRUxfTUFTS19TRlQgICAgICAgICAgICAgICAoMHgxIDw8IDQpDQorI2RlZmluZSBVTF9G SUZPX1dDTEtfNlA1TV9URVNUQ0tfU0VMX1NGVCAgICAgICAgICAgICAgICAgMw0KKyNkZWZpbmUg VUxfRklGT19XQ0xLXzZQNU1fVEVTVENLX1NFTF9NQVNLICAgICAgICAgICAgICAgIDB4MQ0KKyNk ZWZpbmUgVUxfRklGT19XQ0xLXzZQNU1fVEVTVENLX1NFTF9NQVNLX1NGVCAgICAgICAgICAgICgw eDEgPDwgMykNCisjZGVmaW5lIFVMX0ZJRk9fV0NMS182UDVNX1RFU1RDS19TUkNfU0VMX1NGVCAg ICAgICAgICAgICAwDQorI2RlZmluZSBVTF9GSUZPX1dDTEtfNlA1TV9URVNUQ0tfU1JDX1NFTF9N QVNLICAgICAgICAgICAgMHg3DQorI2RlZmluZSBVTF9GSUZPX1dDTEtfNlA1TV9URVNUQ0tfU1JD X1NFTF9NQVNLX1NGVCAgICAgICAgKDB4NyA8PCAwKQ0KKw0KKy8qIEFGVU5DX0FVRF9DT041ICov DQorI2RlZmluZSBSX0FVRF9EQUNfUE9TX0xBUkdFX01PTk9fU0ZUICAgICAgICAgICAgICAgICAg ICAgOA0KKyNkZWZpbmUgUl9BVURfREFDX1BPU19MQVJHRV9NT05PX01BU0sgICAgICAgICAgICAg ICAgICAgIDB4ZmYNCisjZGVmaW5lIFJfQVVEX0RBQ19QT1NfTEFSR0VfTU9OT19NQVNLX1NGVCAg ICAgICAgICAgICAgICAoMHhmZiA8PCA4KQ0KKyNkZWZpbmUgUl9BVURfREFDX05FR19MQVJHRV9N T05PX1NGVCAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJfQVVEX0RBQ19ORUdfTEFS R0VfTU9OT19NQVNLICAgICAgICAgICAgICAgICAgICAweGZmDQorI2RlZmluZSBSX0FVRF9EQUNf TkVHX0xBUkdFX01PTk9fTUFTS19TRlQgICAgICAgICAgICAgICAgKDB4ZmYgPDwgMCkNCisNCisv KiBBRlVOQ19BVURfQ09ONiAqLw0KKyNkZWZpbmUgUl9BVURfREFDX1BPU19TTUFMTF9NT05PX1NG VCAgICAgICAgICAgICAgICAgICAgIDEyDQorI2RlZmluZSBSX0FVRF9EQUNfUE9TX1NNQUxMX01P Tk9fTUFTSyAgICAgICAgICAgICAgICAgICAgMHhmDQorI2RlZmluZSBSX0FVRF9EQUNfUE9TX1NN QUxMX01PTk9fTUFTS19TRlQgICAgICAgICAgICAgICAgKDB4ZiA8PCAxMikNCisjZGVmaW5lIFJf QVVEX0RBQ19ORUdfU01BTExfTU9OT19TRlQgICAgICAgICAgICAgICAgICAgICA4DQorI2RlZmlu ZSBSX0FVRF9EQUNfTkVHX1NNQUxMX01PTk9fTUFTSyAgICAgICAgICAgICAgICAgICAgMHhmDQor I2RlZmluZSBSX0FVRF9EQUNfTkVHX1NNQUxMX01PTk9fTUFTS19TRlQgICAgICAgICAgICAgICAg KDB4ZiA8PCA4KQ0KKyNkZWZpbmUgUl9BVURfREFDX1BPU19USU5ZX01PTk9fU0ZUICAgICAgICAg ICAgICAgICAgICAgIDYNCisjZGVmaW5lIFJfQVVEX0RBQ19QT1NfVElOWV9NT05PX01BU0sgICAg ICAgICAgICAgICAgICAgICAweDMNCisjZGVmaW5lIFJfQVVEX0RBQ19QT1NfVElOWV9NT05PX01B U0tfU0ZUICAgICAgICAgICAgICAgICAoMHgzIDw8IDYpDQorI2RlZmluZSBSX0FVRF9EQUNfTkVH X1RJTllfTU9OT19TRlQgICAgICAgICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgUl9BVURfREFD X05FR19USU5ZX01PTk9fTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUl9B VURfREFDX05FR19USU5ZX01PTk9fTUFTS19TRlQgICAgICAgICAgICAgICAgICgweDMgPDwgNCkN CisjZGVmaW5lIFJfQVVEX0RBQ19NT05PX1NFTF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAg ICAzDQorI2RlZmluZSBSX0FVRF9EQUNfTU9OT19TRUxfTUFTSyAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgxDQorI2RlZmluZSBSX0FVRF9EQUNfTU9OT19TRUxfTUFTS19TRlQgICAgICAgICAg ICAgICAgICAgICAgKDB4MSA8PCAzKQ0KKyNkZWZpbmUgUl9BVURfREFDXzNUSF9TRUxfU0ZUICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDENCisjZGVmaW5lIFJfQVVEX0RBQ18zVEhfU0VMX01B U0sgICAgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJfQVVEX0RBQ18zVEhf U0VMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDEpDQorI2RlZmluZSBS X0FVRF9EQUNfU1dfUlNUQl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZp bmUgUl9BVURfREFDX1NXX1JTVEJfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0K KyNkZWZpbmUgUl9BVURfREFDX1NXX1JTVEJfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAg ICgweDEgPDwgMCkNCisNCisvKiBBRlVOQ19BVURfQ09ONyAqLw0KKyNkZWZpbmUgVUwyX0RJR01J Q19URVNUQ0tfU1JDX1NFTF9TRlQgICAgICAgICAgICAgICAgICAgIDEwDQorI2RlZmluZSBVTDJf RElHTUlDX1RFU1RDS19TUkNfU0VMX01BU0sgICAgICAgICAgICAgICAgICAgMHg3DQorI2RlZmlu ZSBVTDJfRElHTUlDX1RFU1RDS19TUkNfU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAgKDB4NyA8 PCAxMCkNCisjZGVmaW5lIFVMMl9ESUdNSUNfVEVTVENLX1NFTF9TRlQgICAgICAgICAgICAgICAg ICAgICAgICA5DQorI2RlZmluZSBVTDJfRElHTUlDX1RFU1RDS19TRUxfTUFTSyAgICAgICAgICAg ICAgICAgICAgICAgMHgxDQorI2RlZmluZSBVTDJfRElHTUlDX1RFU1RDS19TRUxfTUFTS19TRlQg ICAgICAgICAgICAgICAgICAgKDB4MSA8PCA5KQ0KKyNkZWZpbmUgVUwyX0ZJRk9fV0NMS19JTlZf U0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIFVMMl9GSUZPX1dDTEtf SU5WX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFVMMl9GSUZP X1dDTEtfSU5WX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDgpDQorI2Rl ZmluZSBVTDJfRklGT19ESUdNSUNfV0RBVEFfVEVTVFNSQ19TRUxfU0ZUICAgICAgICAgICAgNg0K KyNkZWZpbmUgVUwyX0ZJRk9fRElHTUlDX1dEQVRBX1RFU1RTUkNfU0VMX01BU0sgICAgICAgICAg IDB4MQ0KKyNkZWZpbmUgVUwyX0ZJRk9fRElHTUlDX1dEQVRBX1RFU1RTUkNfU0VMX01BU0tfU0ZU ICAgICAgICgweDEgPDwgNikNCisjZGVmaW5lIFVMMl9GSUZPX1dEQVRBX1RFU1RFTl9TRlQgICAg ICAgICAgICAgICAgICAgICAgICA1DQorI2RlZmluZSBVTDJfRklGT19XREFUQV9URVNURU5fTUFT SyAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBVTDJfRklGT19XREFUQV9URVNU RU5fTUFTS19TRlQgICAgICAgICAgICAgICAgICAgKDB4MSA8PCA1KQ0KKyNkZWZpbmUgVUwyX0ZJ Rk9fV0RBVEFfVEVTVFNSQ19TRUxfU0ZUICAgICAgICAgICAgICAgICAgIDQNCisjZGVmaW5lIFVM Ml9GSUZPX1dEQVRBX1RFU1RTUkNfU0VMX01BU0sgICAgICAgICAgICAgICAgICAweDENCisjZGVm aW5lIFVMMl9GSUZPX1dEQVRBX1RFU1RTUkNfU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAoMHgx IDw8IDQpDQorI2RlZmluZSBVTDJfRklGT19XQ0xLXzZQNU1fVEVTVENLX1NFTF9TRlQgICAgICAg ICAgICAgICAgMw0KKyNkZWZpbmUgVUwyX0ZJRk9fV0NMS182UDVNX1RFU1RDS19TRUxfTUFTSyAg ICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVUwyX0ZJRk9fV0NMS182UDVNX1RFU1RDS19TRUxf TUFTS19TRlQgICAgICAgICAgICgweDEgPDwgMykNCisjZGVmaW5lIFVMMl9GSUZPX1dDTEtfNlA1 TV9URVNUQ0tfU1JDX1NFTF9TRlQgICAgICAgICAgICAwDQorI2RlZmluZSBVTDJfRklGT19XQ0xL XzZQNU1fVEVTVENLX1NSQ19TRUxfTUFTSyAgICAgICAgICAgMHg3DQorI2RlZmluZSBVTDJfRklG T19XQ0xLXzZQNU1fVEVTVENLX1NSQ19TRUxfTUFTS19TRlQgICAgICAgKDB4NyA8PCAwKQ0KKw0K Ky8qIEFGVU5DX0FVRF9DT044ICovDQorI2RlZmluZSBTUExJVFRFUjJfRElUSEVSX0VOX1NGVCAg ICAgICAgICAgICAgICAgICAgICAgICAgOQ0KKyNkZWZpbmUgU1BMSVRURVIyX0RJVEhFUl9FTl9N QVNLICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgU1BMSVRURVIyX0RJVEhF Ul9FTl9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgOSkNCisjZGVmaW5lIFNQ TElUVEVSMV9ESVRIRVJfRU5fU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICA4DQorI2RlZmlu ZSBTUExJVFRFUjFfRElUSEVSX0VOX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQor I2RlZmluZSBTUExJVFRFUjFfRElUSEVSX0VOX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAg KDB4MSA8PCA4KQ0KKyNkZWZpbmUgU1BMSVRURVIyX0RJVEhFUl9HQUlOX1NGVCAgICAgICAgICAg ICAgICAgICAgICAgIDQNCisjZGVmaW5lIFNQTElUVEVSMl9ESVRIRVJfR0FJTl9NQVNLICAgICAg ICAgICAgICAgICAgICAgICAweGYNCisjZGVmaW5lIFNQTElUVEVSMl9ESVRIRVJfR0FJTl9NQVNL X1NGVCAgICAgICAgICAgICAgICAgICAoMHhmIDw8IDQpDQorI2RlZmluZSBTUExJVFRFUjFfRElU SEVSX0dBSU5fU0ZUICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgU1BMSVRURVIx X0RJVEhFUl9HQUlOX01BU0sgICAgICAgICAgICAgICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgU1BM SVRURVIxX0RJVEhFUl9HQUlOX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICgweGYgPDwgMCkN CisNCisvKiBBRlVOQ19BVURfQ09OOSAqLw0KKyNkZWZpbmUgQ0NJX0FVRF9BTkFDS19TRUxfMk5E X1NGVCAgICAgICAgICAgICAgICAgICAgICAgIDE1DQorI2RlZmluZSBDQ0lfQVVEX0FOQUNLX1NF TF8yTkRfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBDQ0lfQVVEX0FO QUNLX1NFTF8yTkRfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAxNSkNCisjZGVm aW5lIENDSV9BVURJT19GSUZPX1dQVFJfMk5EX1NGVCAgICAgICAgICAgICAgICAgICAgICAxMg0K KyNkZWZpbmUgQ0NJX0FVRElPX0ZJRk9fV1BUUl8yTkRfTUFTSyAgICAgICAgICAgICAgICAgICAg IDB4Nw0KKyNkZWZpbmUgQ0NJX0FVRElPX0ZJRk9fV1BUUl8yTkRfTUFTS19TRlQgICAgICAgICAg ICAgICAgICgweDcgPDwgMTIpDQorI2RlZmluZSBDQ0lfU0NSQU1CTEVSX0NHX0VOXzJORF9TRlQg ICAgICAgICAgICAgICAgICAgICAgMTENCisjZGVmaW5lIENDSV9TQ1JBTUJMRVJfQ0dfRU5fMk5E X01BU0sgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIENDSV9TQ1JBTUJMRVJfQ0df RU5fMk5EX01BU0tfU0ZUICAgICAgICAgICAgICAgICAoMHgxIDw8IDExKQ0KKyNkZWZpbmUgQ0NJ X0xDSF9JTlZfMk5EX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwDQorI2RlZmlu ZSBDQ0lfTENIX0lOVl8yTkRfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQor I2RlZmluZSBDQ0lfTENIX0lOVl8yTkRfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAg KDB4MSA8PCAxMCkNCisjZGVmaW5lIENDSV9SQU5EX0VOXzJORF9TRlQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA5DQorI2RlZmluZSBDQ0lfUkFORF9FTl8yTkRfTUFTSyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBDQ0lfUkFORF9FTl8yTkRfTUFTS19TRlQg ICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCA5KQ0KKyNkZWZpbmUgQ0NJX1NQTFRfU0NS TUJfQ0xLX09OXzJORF9TRlQgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIENDSV9TUExU X1NDUk1CX0NMS19PTl8yTkRfTUFTSyAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIEND SV9TUExUX1NDUk1CX0NMS19PTl8yTkRfTUFTS19TRlQgICAgICAgICAgICAgICAoMHgxIDw8IDgp DQorI2RlZmluZSBDQ0lfU1BMVF9TQ1JNQl9PTl8yTkRfU0ZUICAgICAgICAgICAgICAgICAgICAg ICAgNw0KKyNkZWZpbmUgQ0NJX1NQTFRfU0NSTUJfT05fMk5EX01BU0sgICAgICAgICAgICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX1NQTFRfU0NSTUJfT05fMk5EX01BU0tfU0ZUICAgICAg ICAgICAgICAgICAgICgweDEgPDwgNykNCisjZGVmaW5lIENDSV9BVURfSURBQ19URVNUX0VOXzJO RF9TRlQgICAgICAgICAgICAgICAgICAgICA2DQorI2RlZmluZSBDQ0lfQVVEX0lEQUNfVEVTVF9F Tl8yTkRfTUFTSyAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBDQ0lfQVVEX0lEQUNf VEVTVF9FTl8yTkRfTUFTS19TRlQgICAgICAgICAgICAgICAgKDB4MSA8PCA2KQ0KKyNkZWZpbmUg Q0NJX1pFUk9fUEFEX0RJU0FCTEVfMk5EX1NGVCAgICAgICAgICAgICAgICAgICAgIDUNCisjZGVm aW5lIENDSV9aRVJPX1BBRF9ESVNBQkxFXzJORF9NQVNLICAgICAgICAgICAgICAgICAgICAweDEN CisjZGVmaW5lIENDSV9aRVJPX1BBRF9ESVNBQkxFXzJORF9NQVNLX1NGVCAgICAgICAgICAgICAg ICAoMHgxIDw8IDUpDQorI2RlZmluZSBDQ0lfQVVEX1NQTElUX1RFU1RfRU5fMk5EX1NGVCAgICAg ICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgQ0NJX0FVRF9TUExJVF9URVNUX0VOXzJORF9NQVNL ICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX0FVRF9TUExJVF9URVNUX0VOXzJO RF9NQVNLX1NGVCAgICAgICAgICAgICAgICgweDEgPDwgNCkNCisjZGVmaW5lIENDSV9BVURfU0RN X01VVEVMXzJORF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAzDQorI2RlZmluZSBDQ0lfQVVE X1NETV9NVVRFTF8yTkRfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBD Q0lfQVVEX1NETV9NVVRFTF8yTkRfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAz KQ0KKyNkZWZpbmUgQ0NJX0FVRF9TRE1fTVVURVJfMk5EX1NGVCAgICAgICAgICAgICAgICAgICAg ICAgIDINCisjZGVmaW5lIENDSV9BVURfU0RNX01VVEVSXzJORF9NQVNLICAgICAgICAgICAgICAg ICAgICAgICAweDENCisjZGVmaW5lIENDSV9BVURfU0RNX01VVEVSXzJORF9NQVNLX1NGVCAgICAg ICAgICAgICAgICAgICAoMHgxIDw8IDIpDQorI2RlZmluZSBDQ0lfQVVEX1NETV83QklUX1NFTF8y TkRfU0ZUICAgICAgICAgICAgICAgICAgICAgMQ0KKyNkZWZpbmUgQ0NJX0FVRF9TRE1fN0JJVF9T RUxfMk5EX01BU0sgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX0FVRF9TRE1f N0JJVF9TRUxfMk5EX01BU0tfU0ZUICAgICAgICAgICAgICAgICgweDEgPDwgMSkNCisjZGVmaW5l IENDSV9TQ1JBTUJMRVJfRU5fMk5EX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAwDQorI2Rl ZmluZSBDQ0lfU0NSQU1CTEVSX0VOXzJORF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgMHgx DQorI2RlZmluZSBDQ0lfU0NSQU1CTEVSX0VOXzJORF9NQVNLX1NGVCAgICAgICAgICAgICAgICAg ICAgKDB4MSA8PCAwKQ0KKw0KKy8qIEFGVU5DX0FVRF9DT04xMCAqLw0KKyNkZWZpbmUgQVVEX1NE TV9URVNUX0xfMk5EX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIEFV RF9TRE1fVEVTVF9MXzJORF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmDQorI2Rl ZmluZSBBVURfU0RNX1RFU1RfTF8yTkRfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgKDB4 ZmYgPDwgOCkNCisjZGVmaW5lIEFVRF9TRE1fVEVTVF9SXzJORF9TRlQgICAgICAgICAgICAgICAg ICAgICAgICAgICAwDQorI2RlZmluZSBBVURfU0RNX1RFU1RfUl8yTkRfTUFTSyAgICAgICAgICAg ICAgICAgICAgICAgICAgMHhmZg0KKyNkZWZpbmUgQVVEX1NETV9URVNUX1JfMk5EX01BU0tfU0ZU ICAgICAgICAgICAgICAgICAgICAgICgweGZmIDw8IDApDQorDQorLyogQUZVTkNfQVVEX0NPTjEx ICovDQorI2RlZmluZSBDQ0lfQVVEX0RBQ19BTkFfTVVURV8yTkRfU0ZUICAgICAgICAgICAgICAg ICAgICAgNw0KKyNkZWZpbmUgQ0NJX0FVRF9EQUNfQU5BX01VVEVfMk5EX01BU0sgICAgICAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX0FVRF9EQUNfQU5BX01VVEVfMk5EX01BU0tfU0ZU ICAgICAgICAgICAgICAgICgweDEgPDwgNykNCisjZGVmaW5lIENDSV9BVURfREFDX0FOQV9SU1RC X1NFTF8yTkRfU0ZUICAgICAgICAgICAgICAgICA2DQorI2RlZmluZSBDQ0lfQVVEX0RBQ19BTkFf UlNUQl9TRUxfMk5EX01BU0sgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBDQ0lfQVVEX0RB Q19BTkFfUlNUQl9TRUxfMk5EX01BU0tfU0ZUICAgICAgICAgICAgKDB4MSA8PCA2KQ0KKyNkZWZp bmUgQ0NJX0FVRElPX0ZJRk9fQ0xLSU5fSU5WXzJORF9TRlQgICAgICAgICAgICAgICAgIDQNCisj ZGVmaW5lIENDSV9BVURJT19GSUZPX0NMS0lOX0lOVl8yTkRfTUFTSyAgICAgICAgICAgICAgICAw eDENCisjZGVmaW5lIENDSV9BVURJT19GSUZPX0NMS0lOX0lOVl8yTkRfTUFTS19TRlQgICAgICAg ICAgICAoMHgxIDw8IDQpDQorI2RlZmluZSBDQ0lfQVVESU9fRklGT19FTkFCTEVfMk5EX1NGVCAg ICAgICAgICAgICAgICAgICAgMw0KKyNkZWZpbmUgQ0NJX0FVRElPX0ZJRk9fRU5BQkxFXzJORF9N QVNLICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX0FVRElPX0ZJRk9fRU5BQkxF XzJORF9NQVNLX1NGVCAgICAgICAgICAgICAgICgweDEgPDwgMykNCisjZGVmaW5lIENDSV9BQ0Rf TU9ERV8yTkRfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyDQorI2RlZmluZSBDQ0lf QUNEX01PREVfMk5EX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmlu ZSBDQ0lfQUNEX01PREVfMk5EX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8 PCAyKQ0KKyNkZWZpbmUgQ0NJX0FGSUZPX0NMS19QV0RCXzJORF9TRlQgICAgICAgICAgICAgICAg ICAgICAgIDENCisjZGVmaW5lIENDSV9BRklGT19DTEtfUFdEQl8yTkRfTUFTSyAgICAgICAgICAg ICAgICAgICAgICAweDENCisjZGVmaW5lIENDSV9BRklGT19DTEtfUFdEQl8yTkRfTUFTS19TRlQg ICAgICAgICAgICAgICAgICAoMHgxIDw8IDEpDQorI2RlZmluZSBDQ0lfQUNEX0ZVTkNfUlNUQl8y TkRfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgQ0NJX0FDRF9GVU5DX1JT VEJfMk5EX01BU0sgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ0NJX0FDRF9G VU5DX1JTVEJfMk5EX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICgweDEgPDwgMCkNCisNCisv KiBBRlVOQ19BVURfQ09OMTIgKi8NCisjZGVmaW5lIFNQTElUVEVSMl9ESVRIRVJfRU5fMk5EX1NG VCAgICAgICAgICAgICAgICAgICAgICA5DQorI2RlZmluZSBTUExJVFRFUjJfRElUSEVSX0VOXzJO RF9NQVNLICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBTUExJVFRFUjJfRElUSEVS X0VOXzJORF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgKDB4MSA8PCA5KQ0KKyNkZWZpbmUgU1BM SVRURVIxX0RJVEhFUl9FTl8yTkRfU0ZUICAgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5l IFNQTElUVEVSMV9ESVRIRVJfRU5fMk5EX01BU0sgICAgICAgICAgICAgICAgICAgICAweDENCisj ZGVmaW5lIFNQTElUVEVSMV9ESVRIRVJfRU5fMk5EX01BU0tfU0ZUICAgICAgICAgICAgICAgICAo MHgxIDw8IDgpDQorI2RlZmluZSBTUExJVFRFUjJfRElUSEVSX0dBSU5fMk5EX1NGVCAgICAgICAg ICAgICAgICAgICAgNA0KKyNkZWZpbmUgU1BMSVRURVIyX0RJVEhFUl9HQUlOXzJORF9NQVNLICAg ICAgICAgICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgU1BMSVRURVIyX0RJVEhFUl9HQUlOXzJORF9N QVNLX1NGVCAgICAgICAgICAgICAgICgweGYgPDwgNCkNCisjZGVmaW5lIFNQTElUVEVSMV9ESVRI RVJfR0FJTl8yTkRfU0ZUICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBTUExJVFRFUjFf RElUSEVSX0dBSU5fMk5EX01BU0sgICAgICAgICAgICAgICAgICAgMHhmDQorI2RlZmluZSBTUExJ VFRFUjFfRElUSEVSX0dBSU5fMk5EX01BU0tfU0ZUICAgICAgICAgICAgICAgKDB4ZiA8PCAwKQ0K Kw0KKy8qIEFGVU5DX0FVRF9NT04wICovDQorI2RlZmluZSBBVURfU0NSX09VVF9MX1NGVCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgQVVEX1NDUl9PVVRfTF9NQVNL ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYNCisjZGVmaW5lIEFVRF9TQ1JfT1VU X0xfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhmZiA8PCA4KQ0KKyNkZWZp bmUgQVVEX1NDUl9PVVRfUl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDANCisj ZGVmaW5lIEFVRF9TQ1JfT1VUX1JfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eGZmDQorI2RlZmluZSBBVURfU0NSX09VVF9SX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAg ICAgICAgKDB4ZmYgPDwgMCkNCisNCisvKiBBRlVOQ19BVURfTU9OMSAqLw0KKyNkZWZpbmUgQVVE X1NDUl9PVVRfTF8yTkRfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5l IEFVRF9TQ1JfT1VUX0xfMk5EX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmDQor I2RlZmluZSBBVURfU0NSX09VVF9MXzJORF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICAg KDB4ZmYgPDwgOCkNCisjZGVmaW5lIEFVRF9TQ1JfT1VUX1JfMk5EX1NGVCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAwDQorI2RlZmluZSBBVURfU0NSX09VVF9SXzJORF9NQVNLICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHhmZg0KKyNkZWZpbmUgQVVEX1NDUl9PVVRfUl8yTkRfTUFTS19T RlQgICAgICAgICAgICAgICAgICAgICAgICgweGZmIDw8IDApDQorDQorLyogQVVEUkNfVFVORV9N T04wICovDQorI2RlZmluZSBBU1lOQ19URVNUX09VVF9CQ0tfU0ZUICAgICAgICAgICAgICAgICAg ICAgICAgICAgMTUNCisjZGVmaW5lIEFTWU5DX1RFU1RfT1VUX0JDS19NQVNLICAgICAgICAgICAg ICAgICAgICAgICAgICAweDENCisjZGVmaW5lIEFTWU5DX1RFU1RfT1VUX0JDS19NQVNLX1NGVCAg ICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDE1KQ0KKyNkZWZpbmUgUkdTX0FVRFJDVFVORTFS RUFEX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJHU19BVURSQ1RV TkUxUkVBRF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmDQorI2RlZmluZSBSR1Nf QVVEUkNUVU5FMVJFQURfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgKDB4MWYgPDwgOCkN CisjZGVmaW5lIFJHU19BVURSQ1RVTkUwUkVBRF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAg ICAwDQorI2RlZmluZSBSR1NfQVVEUkNUVU5FMFJFQURfTUFTSyAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgxZg0KKyNkZWZpbmUgUkdTX0FVRFJDVFVORTBSRUFEX01BU0tfU0ZUICAgICAgICAg ICAgICAgICAgICAgICgweDFmIDw8IDApDQorDQorLyogQUZFX0FEREFfTVRLQUlGX0ZJRk9fQ0ZH MCAqLw0KKyNkZWZpbmUgQUZFX1JFU0VSVkVEX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDENCisjZGVmaW5lIEFGRV9SRVNFUlZFRF9NQVNLICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDdmZmYNCisjZGVmaW5lIEFGRV9SRVNFUlZFRF9NQVNLX1NGVCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoMHg3ZmZmIDw8IDEpDQorI2RlZmluZSBSR19NVEtBSUZfUlhJ Rl9GSUZPX0lOVEVOX1NGVCAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfTVRLQUlG X1JYSUZfRklGT19JTlRFTl9NQVNLICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdf TVRLQUlGX1JYSUZfRklGT19JTlRFTl9NQVNLX1NGVCAgICAgICAgICAgICAgICgweDEgPDwgMCkN CisNCisvKiBBRkVfQUREQV9NVEtBSUZfRklGT19MT0dfTU9OMSAqLw0KKyNkZWZpbmUgTVRLQUlG X1JYSUZfV1JfRlVMTF9TVEFUVVNfU0ZUICAgICAgICAgICAgICAgICAgIDENCisjZGVmaW5lIE1U S0FJRl9SWElGX1dSX0ZVTExfU1RBVFVTX01BU0sgICAgICAgICAgICAgICAgICAweDENCisjZGVm aW5lIE1US0FJRl9SWElGX1dSX0ZVTExfU1RBVFVTX01BU0tfU0ZUICAgICAgICAgICAgICAoMHgx IDw8IDEpDQorI2RlZmluZSBNVEtBSUZfUlhJRl9SRF9FTVBUWV9TVEFUVVNfU0ZUICAgICAgICAg ICAgICAgICAgMA0KKyNkZWZpbmUgTVRLQUlGX1JYSUZfUkRfRU1QVFlfU1RBVFVTX01BU0sgICAg ICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgTVRLQUlGX1JYSUZfUkRfRU1QVFlfU1RBVFVTX01B U0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBBRkVfQUREQV9NVEtBSUZfTU9O MCAqLw0KKyNkZWZpbmUgTVRLQUlGVFhfVjNfU1lOQ19PVVRfU0ZUICAgICAgICAgICAgICAgICAg ICAgICAgIDE1DQorI2RlZmluZSBNVEtBSUZUWF9WM19TWU5DX09VVF9NQVNLICAgICAgICAgICAg ICAgICAgICAgICAgMHgxDQorI2RlZmluZSBNVEtBSUZUWF9WM19TWU5DX09VVF9NQVNLX1NGVCAg ICAgICAgICAgICAgICAgICAgKDB4MSA8PCAxNSkNCisjZGVmaW5lIE1US0FJRlRYX1YzX1NEQVRB X09VVDNfU0ZUICAgICAgICAgICAgICAgICAgICAgICAxNA0KKyNkZWZpbmUgTVRLQUlGVFhfVjNf U0RBVEFfT1VUM19NQVNLICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgTVRLQUlG VFhfVjNfU0RBVEFfT1VUM19NQVNLX1NGVCAgICAgICAgICAgICAgICAgICgweDEgPDwgMTQpDQor I2RlZmluZSBNVEtBSUZUWF9WM19TREFUQV9PVVQyX1NGVCAgICAgICAgICAgICAgICAgICAgICAg MTMNCisjZGVmaW5lIE1US0FJRlRYX1YzX1NEQVRBX09VVDJfTUFTSyAgICAgICAgICAgICAgICAg ICAgICAweDENCisjZGVmaW5lIE1US0FJRlRYX1YzX1NEQVRBX09VVDJfTUFTS19TRlQgICAgICAg ICAgICAgICAgICAoMHgxIDw8IDEzKQ0KKyNkZWZpbmUgTVRLQUlGVFhfVjNfU0RBVEFfT1VUMV9T RlQgICAgICAgICAgICAgICAgICAgICAgIDEyDQorI2RlZmluZSBNVEtBSUZUWF9WM19TREFUQV9P VVQxX01BU0sgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBNVEtBSUZUWF9WM19T REFUQV9PVVQxX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgKDB4MSA8PCAxMikNCisjZGVmaW5l IE1US0FJRl9SWElGX0ZJRk9fU1RBVFVTX1NGVCAgICAgICAgICAgICAgICAgICAgICAwDQorI2Rl ZmluZSBNVEtBSUZfUlhJRl9GSUZPX1NUQVRVU19NQVNLICAgICAgICAgICAgICAgICAgICAgMHhm ZmYNCisjZGVmaW5lIE1US0FJRl9SWElGX0ZJRk9fU1RBVFVTX01BU0tfU0ZUICAgICAgICAgICAg ICAgICAoMHhmZmYgPDwgMCkNCisNCisvKiBBRkVfQUREQV9NVEtBSUZfTU9OMSAqLw0KKyNkZWZp bmUgTVRLQUlGUlhfVjNfU1lOQ19JTl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgIDE1DQor I2RlZmluZSBNVEtBSUZSWF9WM19TWU5DX0lOX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAg MHgxDQorI2RlZmluZSBNVEtBSUZSWF9WM19TWU5DX0lOX01BU0tfU0ZUICAgICAgICAgICAgICAg ICAgICAgKDB4MSA8PCAxNSkNCisjZGVmaW5lIE1US0FJRlJYX1YzX1NEQVRBX0lOM19TRlQgICAg ICAgICAgICAgICAgICAgICAgICAxNA0KKyNkZWZpbmUgTVRLQUlGUlhfVjNfU0RBVEFfSU4zX01B U0sgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgTVRLQUlGUlhfVjNfU0RBVEFf SU4zX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICgweDEgPDwgMTQpDQorI2RlZmluZSBNVEtB SUZSWF9WM19TREFUQV9JTjJfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgMTMNCisjZGVmaW5l IE1US0FJRlJYX1YzX1NEQVRBX0lOMl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweDENCisj ZGVmaW5lIE1US0FJRlJYX1YzX1NEQVRBX0lOMl9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAo MHgxIDw8IDEzKQ0KKyNkZWZpbmUgTVRLQUlGUlhfVjNfU0RBVEFfSU4xX1NGVCAgICAgICAgICAg ICAgICAgICAgICAgIDEyDQorI2RlZmluZSBNVEtBSUZSWF9WM19TREFUQV9JTjFfTUFTSyAgICAg ICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBNVEtBSUZSWF9WM19TREFUQV9JTjFfTUFT S19TRlQgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAxMikNCisjZGVmaW5lIE1US0FJRl9SWElG X1NFQVJDSF9GQUlMX0ZMQUdfU0ZUICAgICAgICAgICAgICAgICAxMQ0KKyNkZWZpbmUgTVRLQUlG X1JYSUZfU0VBUkNIX0ZBSUxfRkxBR19NQVNLICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUg TVRLQUlGX1JYSUZfU0VBUkNIX0ZBSUxfRkxBR19NQVNLX1NGVCAgICAgICAgICAgICgweDEgPDwg MTEpDQorI2RlZmluZSBNVEtBSUZfUlhJRl9JTlZBTElEX0ZMQUdfU0ZUICAgICAgICAgICAgICAg ICAgICAgOA0KKyNkZWZpbmUgTVRLQUlGX1JYSUZfSU5WQUxJRF9GTEFHX01BU0sgICAgICAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgTVRLQUlGX1JYSUZfSU5WQUxJRF9GTEFHX01BU0tfU0ZU ICAgICAgICAgICAgICAgICgweDEgPDwgOCkNCisjZGVmaW5lIE1US0FJRl9SWElGX0lOVkFMSURf Q1lDTEVfU0ZUICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBNVEtBSUZfUlhJRl9JTlZB TElEX0NZQ0xFX01BU0sgICAgICAgICAgICAgICAgICAgMHhmZg0KKyNkZWZpbmUgTVRLQUlGX1JY SUZfSU5WQUxJRF9DWUNMRV9NQVNLX1NGVCAgICAgICAgICAgICAgICgweGZmIDw8IDApDQorDQor LyogQUZFX0FEREFfTVRLQUlGX01PTjIgKi8NCisjZGVmaW5lIE1US0FJRl9UWElGX0lOX0NIMl9T RlQgICAgICAgICAgICAgICAgICAgICAgICAgICA4DQorI2RlZmluZSBNVEtBSUZfVFhJRl9JTl9D SDJfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZg0KKyNkZWZpbmUgTVRLQUlGX1RY SUZfSU5fQ0gyX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICgweGZmIDw8IDgpDQorI2Rl ZmluZSBNVEtBSUZfVFhJRl9JTl9DSDFfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgMA0K KyNkZWZpbmUgTVRLQUlGX1RYSUZfSU5fQ0gxX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAg IDB4ZmYNCisjZGVmaW5lIE1US0FJRl9UWElGX0lOX0NIMV9NQVNLX1NGVCAgICAgICAgICAgICAg ICAgICAgICAoMHhmZiA8PCAwKQ0KKw0KKy8qIEFGRV9BRERBNl9NVEtBSUZfTU9OMyAqLw0KKyNk ZWZpbmUgQUREQTZfTVRLQUlGX1RYSUZfSU5fQ0gyX1NGVCAgICAgICAgICAgICAgICAgICAgIDgN CisjZGVmaW5lIEFEREE2X01US0FJRl9UWElGX0lOX0NIMl9NQVNLICAgICAgICAgICAgICAgICAg ICAweGZmDQorI2RlZmluZSBBRERBNl9NVEtBSUZfVFhJRl9JTl9DSDJfTUFTS19TRlQgICAgICAg ICAgICAgICAgKDB4ZmYgPDwgOCkNCisjZGVmaW5lIEFEREE2X01US0FJRl9UWElGX0lOX0NIMV9T RlQgICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBBRERBNl9NVEtBSUZfVFhJRl9JTl9D SDFfTUFTSyAgICAgICAgICAgICAgICAgICAgMHhmZg0KKyNkZWZpbmUgQUREQTZfTVRLQUlGX1RY SUZfSU5fQ0gxX01BU0tfU0ZUICAgICAgICAgICAgICAgICgweGZmIDw8IDApDQorDQorLyogQUZF X0FEREFfTVRLQUlGX01PTjQgKi8NCisjZGVmaW5lIE1US0FJRl9SWElGX09VVF9DSDJfU0ZUICAg ICAgICAgICAgICAgICAgICAgICAgICA4DQorI2RlZmluZSBNVEtBSUZfUlhJRl9PVVRfQ0gyX01B U0sgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZg0KKyNkZWZpbmUgTVRLQUlGX1JYSUZfT1VU X0NIMl9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICgweGZmIDw8IDgpDQorI2RlZmluZSBN VEtBSUZfUlhJRl9PVVRfQ0gxX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZp bmUgTVRLQUlGX1JYSUZfT1VUX0NIMV9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYN CisjZGVmaW5lIE1US0FJRl9SWElGX09VVF9DSDFfTUFTS19TRlQgICAgICAgICAgICAgICAgICAg ICAoMHhmZiA8PCAwKQ0KKw0KKy8qIEFGRV9BRERBX01US0FJRl9NT041ICovDQorI2RlZmluZSBN VEtBSUZfUlhJRl9PVVRfQ0gzX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZp bmUgTVRLQUlGX1JYSUZfT1VUX0NIM19NQVNLICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYN CisjZGVmaW5lIE1US0FJRl9SWElGX09VVF9DSDNfTUFTS19TRlQgICAgICAgICAgICAgICAgICAg ICAoMHhmZiA8PCAwKQ0KKw0KKy8qIEFGRV9BRERBX01US0FJRl9DRkcwICovDQorI2RlZmluZSBS R19NVEtBSUZfUlhJRl9DTEtJTlZfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgMTUNCisjZGVm aW5lIFJHX01US0FJRl9SWElGX0NMS0lOVl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweDEN CisjZGVmaW5lIFJHX01US0FJRl9SWElGX0NMS0lOVl9NQVNLX1NGVCAgICAgICAgICAgICAgICAg ICAoMHgxIDw8IDE1KQ0KKyNkZWZpbmUgUkdfQUREQTZfTVRLQUlGX1RYSUZfUFJPVE9DT0wyX1NG VCAgICAgICAgICAgICAgIDkNCisjZGVmaW5lIFJHX0FEREE2X01US0FJRl9UWElGX1BST1RPQ09M Ml9NQVNLICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FEREE2X01US0FJRl9UWElGX1BS T1RPQ09MMl9NQVNLX1NGVCAgICAgICAgICAoMHgxIDw8IDkpDQorI2RlZmluZSBSR19NVEtBSUZf UlhJRl9QUk9UT0NPTDJfU0ZUICAgICAgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgUkdfTVRL QUlGX1JYSUZfUFJPVE9DT0wyX01BU0sgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUg UkdfTVRLQUlGX1JYSUZfUFJPVE9DT0wyX01BU0tfU0ZUICAgICAgICAgICAgICAgICgweDEgPDwg OCkNCisjZGVmaW5lIFJHX01US0FJRl9CWVBBU1NfU1JDX01PREVfU0ZUICAgICAgICAgICAgICAg ICAgICA2DQorI2RlZmluZSBSR19NVEtBSUZfQllQQVNTX1NSQ19NT0RFX01BU0sgICAgICAgICAg ICAgICAgICAgMHgzDQorI2RlZmluZSBSR19NVEtBSUZfQllQQVNTX1NSQ19NT0RFX01BU0tfU0ZU ICAgICAgICAgICAgICAgKDB4MyA8PCA2KQ0KKyNkZWZpbmUgUkdfTVRLQUlGX0JZUEFTU19TUkNf VEVTVF9TRlQgICAgICAgICAgICAgICAgICAgIDUNCisjZGVmaW5lIFJHX01US0FJRl9CWVBBU1Nf U1JDX1RFU1RfTUFTSyAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX01US0FJRl9C WVBBU1NfU1JDX1RFU1RfTUFTS19TRlQgICAgICAgICAgICAgICAoMHgxIDw8IDUpDQorI2RlZmlu ZSBSR19NVEtBSUZfVFhJRl9QUk9UT0NPTDJfU0ZUICAgICAgICAgICAgICAgICAgICAgNA0KKyNk ZWZpbmUgUkdfTVRLQUlGX1RYSUZfUFJPVE9DT0wyX01BU0sgICAgICAgICAgICAgICAgICAgIDB4 MQ0KKyNkZWZpbmUgUkdfTVRLQUlGX1RYSUZfUFJPVE9DT0wyX01BU0tfU0ZUICAgICAgICAgICAg ICAgICgweDEgPDwgNCkNCisjZGVmaW5lIFJHX0FEREE2X01US0FJRl9QTUlDX1RYSUZfOFRPNV9T RlQgICAgICAgICAgICAgICAzDQorI2RlZmluZSBSR19BRERBNl9NVEtBSUZfUE1JQ19UWElGXzhU TzVfTUFTSyAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BRERBNl9NVEtBSUZfUE1JQ19U WElGXzhUTzVfTUFTS19TRlQgICAgICAgICAgKDB4MSA8PCAzKQ0KKyNkZWZpbmUgUkdfTVRLQUlG X1BNSUNfVFhJRl84VE81X1NGVCAgICAgICAgICAgICAgICAgICAgIDINCisjZGVmaW5lIFJHX01U S0FJRl9QTUlDX1RYSUZfOFRPNV9NQVNLICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5l IFJHX01US0FJRl9QTUlDX1RYSUZfOFRPNV9NQVNLX1NGVCAgICAgICAgICAgICAgICAoMHgxIDw8 IDIpDQorI2RlZmluZSBSR19NVEtBSUZfTE9PUEJBQ0tfVEVTVDJfU0ZUICAgICAgICAgICAgICAg ICAgICAgMQ0KKyNkZWZpbmUgUkdfTVRLQUlGX0xPT1BCQUNLX1RFU1QyX01BU0sgICAgICAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfTVRLQUlGX0xPT1BCQUNLX1RFU1QyX01BU0tfU0ZU ICAgICAgICAgICAgICAgICgweDEgPDwgMSkNCisjZGVmaW5lIFJHX01US0FJRl9MT09QQkFDS19U RVNUMV9TRlQgICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBSR19NVEtBSUZfTE9PUEJB Q0tfVEVTVDFfTUFTSyAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19NVEtBSUZf TE9PUEJBQ0tfVEVTVDFfTUFTS19TRlQgICAgICAgICAgICAgICAgKDB4MSA8PCAwKQ0KKw0KKy8q IEFGRV9BRERBX01US0FJRl9SWF9DRkcwICovDQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9WT0lD RV9NT0RFX1NGVCAgICAgICAgICAgICAgICAgICAgMTINCisjZGVmaW5lIFJHX01US0FJRl9SWElG X1ZPSUNFX01PREVfTUFTSyAgICAgICAgICAgICAgICAgICAweGYNCisjZGVmaW5lIFJHX01US0FJ Rl9SWElGX1ZPSUNFX01PREVfTUFTS19TRlQgICAgICAgICAgICAgICAoMHhmIDw8IDEyKQ0KKyNk ZWZpbmUgUkdfTVRLQUlGX1JYSUZfREFUQV9CSVRfU0ZUICAgICAgICAgICAgICAgICAgICAgIDgN CisjZGVmaW5lIFJHX01US0FJRl9SWElGX0RBVEFfQklUX01BU0sgICAgICAgICAgICAgICAgICAg ICAweDcNCisjZGVmaW5lIFJHX01US0FJRl9SWElGX0RBVEFfQklUX01BU0tfU0ZUICAgICAgICAg ICAgICAgICAoMHg3IDw8IDgpDQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9GSUZPX1JTUF9TRlQg ICAgICAgICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfRklGT19SU1Bf TUFTSyAgICAgICAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfRklG T19SU1BfTUFTS19TRlQgICAgICAgICAgICAgICAgICgweDcgPDwgNCkNCisjZGVmaW5lIFJHX01U S0FJRl9SWElGX0RFVEVDVF9PTl9TRlQgICAgICAgICAgICAgICAgICAgICAzDQorI2RlZmluZSBS R19NVEtBSUZfUlhJRl9ERVRFQ1RfT05fTUFTSyAgICAgICAgICAgICAgICAgICAgMHgxDQorI2Rl ZmluZSBSR19NVEtBSUZfUlhJRl9ERVRFQ1RfT05fTUFTS19TRlQgICAgICAgICAgICAgICAgKDB4 MSA8PCAzKQ0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfREFUQV9NT0RFX1NGVCAgICAgICAgICAg ICAgICAgICAgIDANCisjZGVmaW5lIFJHX01US0FJRl9SWElGX0RBVEFfTU9ERV9NQVNLICAgICAg ICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX01US0FJRl9SWElGX0RBVEFfTU9ERV9NQVNL X1NGVCAgICAgICAgICAgICAgICAoMHgxIDw8IDApDQorDQorLyogQUZFX0FEREFfTVRLQUlGX1JY X0NGRzEgKi8NCisjZGVmaW5lIFJHX01US0FJRl9SWElGX1NZTkNfU0VBUkNIX1RBQkxFX1NGVCAg ICAgICAgICAgICAxMg0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfU1lOQ19TRUFSQ0hfVEFCTEVf TUFTSyAgICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfU1lOQ19TRUFSQ0hf VEFCTEVfTUFTS19TRlQgICAgICAgICgweGYgPDwgMTIpDQorI2RlZmluZSBSR19NVEtBSUZfUlhJ Rl9JTlZBTElEX1NZTkNfQ0hFQ0tfUk9VTkRfU0ZUICAgICAgOA0KKyNkZWZpbmUgUkdfTVRLQUlG X1JYSUZfSU5WQUxJRF9TWU5DX0NIRUNLX1JPVU5EX01BU0sgICAgIDB4Zg0KKyNkZWZpbmUgUkdf TVRLQUlGX1JYSUZfSU5WQUxJRF9TWU5DX0NIRUNLX1JPVU5EX01BU0tfU0ZUICgweGYgPDwgOCkN CisjZGVmaW5lIFJHX01US0FJRl9SWElGX1NZTkNfQ0hFQ0tfUk9VTkRfU0ZUICAgICAgICAgICAg ICA0DQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9TWU5DX0NIRUNLX1JPVU5EX01BU0sgICAgICAg ICAgICAgMHhmDQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9TWU5DX0NIRUNLX1JPVU5EX01BU0tf U0ZUICAgICAgICAgKDB4ZiA8PCA0KQ0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfVk9JQ0VfTU9E RV9QUk9UT0NPTDJfU0ZUICAgICAgICAgIDANCisjZGVmaW5lIFJHX01US0FJRl9SWElGX1ZPSUNF X01PREVfUFJPVE9DT0wyX01BU0sgICAgICAgICAweGYNCisjZGVmaW5lIFJHX01US0FJRl9SWElG X1ZPSUNFX01PREVfUFJPVE9DT0wyX01BU0tfU0ZUICAgICAoMHhmIDw8IDApDQorDQorLyogQUZF X0FEREFfTVRLQUlGX1JYX0NGRzIgKi8NCisjZGVmaW5lIFJHX01US0FJRl9SWElGX1AyX0lOUFVU X1NFTF9TRlQgICAgICAgICAgICAgICAgICAxNQ0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfUDJf SU5QVVRfU0VMX01BU0sgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfTVRLQUlGX1JY SUZfUDJfSU5QVVRfU0VMX01BU0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgMTUpDQorI2RlZmlu ZSBSR19NVEtBSUZfUlhJRl9TWU5DX1dPUkQyX0RJU0FCTEVfU0ZUICAgICAgICAgICAgMTQNCisj ZGVmaW5lIFJHX01US0FJRl9SWElGX1NZTkNfV09SRDJfRElTQUJMRV9NQVNLICAgICAgICAgICAw eDENCisjZGVmaW5lIFJHX01US0FJRl9SWElGX1NZTkNfV09SRDJfRElTQUJMRV9NQVNLX1NGVCAg ICAgICAoMHgxIDw8IDE0KQ0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfU1lOQ19XT1JEMV9ESVNB QkxFX1NGVCAgICAgICAgICAgIDEzDQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9TWU5DX1dPUkQx X0RJU0FCTEVfTUFTSyAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9TWU5D X1dPUkQxX0RJU0FCTEVfTUFTS19TRlQgICAgICAgKDB4MSA8PCAxMykNCisjZGVmaW5lIFJHX01U S0FJRl9SWElGX0NMRUFSX1NZTkNfRkFJTF9TRlQgICAgICAgICAgICAgICAxMg0KKyNkZWZpbmUg UkdfTVRLQUlGX1JYSUZfQ0xFQVJfU1lOQ19GQUlMX01BU0sgICAgICAgICAgICAgIDB4MQ0KKyNk ZWZpbmUgUkdfTVRLQUlGX1JYSUZfQ0xFQVJfU1lOQ19GQUlMX01BU0tfU0ZUICAgICAgICAgICgw eDEgPDwgMTIpDQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9TWU5DX0NOVF9UQUJMRV9TRlQgICAg ICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfU1lOQ19DTlRfVEFCTEVfTUFT SyAgICAgICAgICAgICAgIDB4ZmZmDQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9TWU5DX0NOVF9U QUJMRV9NQVNLX1NGVCAgICAgICAgICAgKDB4ZmZmIDw8IDApDQorDQorLyogQUZFX0FEREFfTVRL QUlGX1JYX0NGRzMgKi8NCisjZGVmaW5lIFJHX01US0FJRl9SWElGX0xPT1BCQUNLX1VTRV9OTEVf U0ZUICAgICAgICAgICAgICA3DQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9MT09QQkFDS19VU0Vf TkxFX01BU0sgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9MT09QQkFD S19VU0VfTkxFX01BU0tfU0ZUICAgICAgICAgKDB4MSA8PCA3KQ0KKyNkZWZpbmUgUkdfTVRLQUlG X1JYSUZfRklGT19SU1BfUFJPVE9DT0wyX1NGVCAgICAgICAgICAgIDQNCisjZGVmaW5lIFJHX01U S0FJRl9SWElGX0ZJRk9fUlNQX1BST1RPQ09MMl9NQVNLICAgICAgICAgICAweDcNCisjZGVmaW5l IFJHX01US0FJRl9SWElGX0ZJRk9fUlNQX1BST1RPQ09MMl9NQVNLX1NGVCAgICAgICAoMHg3IDw8 IDQpDQorI2RlZmluZSBSR19NVEtBSUZfUlhJRl9ERVRFQ1RfT05fUFJPVE9DT0wyX1NGVCAgICAg ICAgICAgMw0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfREVURUNUX09OX1BST1RPQ09MMl9NQVNL ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYSUZfREVURUNUX09OX1BST1RPQ09M Ml9NQVNLX1NGVCAgICAgICgweDEgPDwgMykNCisNCisvKiBBRkVfQUREQV9NVEtBSUZfU1lOQ1dP UkRfQ0ZHMCAqLw0KKyNkZWZpbmUgUkdfTVRLQUlGX1JYX1NZTkNfV09SRDJfU0ZUICAgICAgICAg ICAgICAgICAgICAgIDQNCisjZGVmaW5lIFJHX01US0FJRl9SWF9TWU5DX1dPUkQyX01BU0sgICAg ICAgICAgICAgICAgICAgICAweDcNCisjZGVmaW5lIFJHX01US0FJRl9SWF9TWU5DX1dPUkQyX01B U0tfU0ZUICAgICAgICAgICAgICAgICAoMHg3IDw8IDQpDQorI2RlZmluZSBSR19NVEtBSUZfUlhf U1lOQ19XT1JEMV9TRlQgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfTVRLQUlG X1JYX1NZTkNfV09SRDFfTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgUkdf TVRLQUlGX1JYX1NZTkNfV09SRDFfTUFTS19TRlQgICAgICAgICAgICAgICAgICgweDcgPDwgMCkN CisNCisvKiBBRkVfQUREQV9NVEtBSUZfU1lOQ1dPUkRfQ0ZHMSAqLw0KKyNkZWZpbmUgUkdfQURE QTZfTVRLQUlGX1RYX1NZTkNfV09SRDJfU0ZUICAgICAgICAgICAgICAgIDEyDQorI2RlZmluZSBS R19BRERBNl9NVEtBSUZfVFhfU1lOQ19XT1JEMl9NQVNLICAgICAgICAgICAgICAgMHg3DQorI2Rl ZmluZSBSR19BRERBNl9NVEtBSUZfVFhfU1lOQ19XT1JEMl9NQVNLX1NGVCAgICAgICAgICAgKDB4 NyA8PCAxMikNCisjZGVmaW5lIFJHX0FEREE2X01US0FJRl9UWF9TWU5DX1dPUkQxX1NGVCAgICAg ICAgICAgICAgICA4DQorI2RlZmluZSBSR19BRERBNl9NVEtBSUZfVFhfU1lOQ19XT1JEMV9NQVNL ICAgICAgICAgICAgICAgMHg3DQorI2RlZmluZSBSR19BRERBNl9NVEtBSUZfVFhfU1lOQ19XT1JE MV9NQVNLX1NGVCAgICAgICAgICAgKDB4NyA8PCA4KQ0KKyNkZWZpbmUgUkdfQUREQV9NVEtBSUZf VFhfU1lOQ19XT1JEMl9TRlQgICAgICAgICAgICAgICAgIDQNCisjZGVmaW5lIFJHX0FEREFfTVRL QUlGX1RYX1NZTkNfV09SRDJfTUFTSyAgICAgICAgICAgICAgICAweDcNCisjZGVmaW5lIFJHX0FE REFfTVRLQUlGX1RYX1NZTkNfV09SRDJfTUFTS19TRlQgICAgICAgICAgICAoMHg3IDw8IDQpDQor I2RlZmluZSBSR19BRERBX01US0FJRl9UWF9TWU5DX1dPUkQxX1NGVCAgICAgICAgICAgICAgICAg MA0KKyNkZWZpbmUgUkdfQUREQV9NVEtBSUZfVFhfU1lOQ19XT1JEMV9NQVNLICAgICAgICAgICAg ICAgIDB4Nw0KKyNkZWZpbmUgUkdfQUREQV9NVEtBSUZfVFhfU1lOQ19XT1JEMV9NQVNLX1NGVCAg ICAgICAgICAgICgweDcgPDwgMCkNCisNCisvKiBBRkVfU0dFTl9DRkcwICovDQorI2RlZmluZSBT R0VOX0FNUF9ESVZfQ0gxX0NUTF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgMTINCisjZGVm aW5lIFNHRU5fQU1QX0RJVl9DSDFfQ1RMX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAweGYN CisjZGVmaW5lIFNHRU5fQU1QX0RJVl9DSDFfQ1RMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAg ICAoMHhmIDw8IDEyKQ0KKyNkZWZpbmUgU0dFTl9EQUNfRU5fQ1RMX1NGVCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDcNCisjZGVmaW5lIFNHRU5fREFDX0VOX0NUTF9NQVNLICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFNHRU5fREFDX0VOX0NUTF9NQVNLX1NG VCAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDcpDQorI2RlZmluZSBTR0VOX01VVEVf U1dfQ1RMX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNg0KKyNkZWZpbmUgU0dFTl9N VVRFX1NXX0NUTF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUg U0dFTl9NVVRFX1NXX0NUTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwg NikNCisjZGVmaW5lIFJfQVVEX1NETV9NVVRFX0xfU0ZUICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA1DQorI2RlZmluZSBSX0FVRF9TRE1fTVVURV9MX01BU0sgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgxDQorI2RlZmluZSBSX0FVRF9TRE1fTVVURV9MX01BU0tfU0ZUICAgICAgICAg ICAgICAgICAgICAgICAgKDB4MSA8PCA1KQ0KKyNkZWZpbmUgUl9BVURfU0RNX01VVEVfUl9TRlQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQNCisjZGVmaW5lIFJfQVVEX1NETV9NVVRFX1Jf TUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJfQVVEX1NETV9N VVRFX1JfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDQpDQorI2RlZmlu ZSBSX0FVRF9TRE1fTVVURV9MXzJORF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgMw0KKyNk ZWZpbmUgUl9BVURfU0RNX01VVEVfTF8yTkRfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgIDB4 MQ0KKyNkZWZpbmUgUl9BVURfU0RNX01VVEVfTF8yTkRfTUFTS19TRlQgICAgICAgICAgICAgICAg ICAgICgweDEgPDwgMykNCisjZGVmaW5lIFJfQVVEX1NETV9NVVRFX1JfMk5EX1NGVCAgICAgICAg ICAgICAgICAgICAgICAgICAyDQorI2RlZmluZSBSX0FVRF9TRE1fTVVURV9SXzJORF9NQVNLICAg ICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSX0FVRF9TRE1fTVVURV9SXzJORF9N QVNLX1NGVCAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAyKQ0KKw0KKy8qIEFGRV9TR0VOX0NG RzEgKi8NCisjZGVmaW5lIENfU0dFTl9SQ0hfSU5WXzVCSVRfU0ZUICAgICAgICAgICAgICAgICAg ICAgICAgICAxNQ0KKyNkZWZpbmUgQ19TR0VOX1JDSF9JTlZfNUJJVF9NQVNLICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQ19TR0VOX1JDSF9JTlZfNUJJVF9NQVNLX1NGVCAg ICAgICAgICAgICAgICAgICAgICgweDEgPDwgMTUpDQorI2RlZmluZSBDX1NHRU5fUkNIX0lOVl84 QklUX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgMTQNCisjZGVmaW5lIENfU0dFTl9SQ0hf SU5WXzhCSVRfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIENfU0dF Tl9SQ0hfSU5WXzhCSVRfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDE0KQ0K KyNkZWZpbmUgU0dFTl9GUkVRX0RJVl9DSDFfQ1RMX1NGVCAgICAgICAgICAgICAgICAgICAgICAg IDANCisjZGVmaW5lIFNHRU5fRlJFUV9ESVZfQ0gxX0NUTF9NQVNLICAgICAgICAgICAgICAgICAg ICAgICAweDFmDQorI2RlZmluZSBTR0VOX0ZSRVFfRElWX0NIMV9DVExfTUFTS19TRlQgICAgICAg ICAgICAgICAgICAgKDB4MWYgPDwgMCkNCisNCisvKiBBRkVfQURDX0FTWU5DX0ZJRk9fQ0ZHICov DQorI2RlZmluZSBSR19VTF9BU1lOQ19GSUZPX1NPRlRfUlNUX0VOX1NGVCAgICAgICAgICAgICAg ICAgNQ0KKyNkZWZpbmUgUkdfVUxfQVNZTkNfRklGT19TT0ZUX1JTVF9FTl9NQVNLICAgICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfVUxfQVNZTkNfRklGT19TT0ZUX1JTVF9FTl9NQVNLX1NG VCAgICAgICAgICAgICgweDEgPDwgNSkNCisjZGVmaW5lIFJHX1VMX0FTWU5DX0ZJRk9fU09GVF9S U1RfU0ZUICAgICAgICAgICAgICAgICAgICA0DQorI2RlZmluZSBSR19VTF9BU1lOQ19GSUZPX1NP RlRfUlNUX01BU0sgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19VTF9BU1lOQ19G SUZPX1NPRlRfUlNUX01BU0tfU0ZUICAgICAgICAgICAgICAgKDB4MSA8PCA0KQ0KKyNkZWZpbmUg UkdfQU1JQ19VTF9BRENfQ0xLX1NFTF9TRlQgICAgICAgICAgICAgICAgICAgICAgIDENCisjZGVm aW5lIFJHX0FNSUNfVUxfQURDX0NMS19TRUxfTUFTSyAgICAgICAgICAgICAgICAgICAgICAweDEN CisjZGVmaW5lIFJHX0FNSUNfVUxfQURDX0NMS19TRUxfTUFTS19TRlQgICAgICAgICAgICAgICAg ICAoMHgxIDw8IDEpDQorDQorLyogQUZFX0FEQ19BU1lOQ19GSUZPX0NGRzEgKi8NCisjZGVmaW5l IFJHX1VMMl9BU1lOQ19GSUZPX1NPRlRfUlNUX0VOX1NGVCAgICAgICAgICAgICAgICA1DQorI2Rl ZmluZSBSR19VTDJfQVNZTkNfRklGT19TT0ZUX1JTVF9FTl9NQVNLICAgICAgICAgICAgICAgMHgx DQorI2RlZmluZSBSR19VTDJfQVNZTkNfRklGT19TT0ZUX1JTVF9FTl9NQVNLX1NGVCAgICAgICAg ICAgKDB4MSA8PCA1KQ0KKyNkZWZpbmUgUkdfVUwyX0FTWU5DX0ZJRk9fU09GVF9SU1RfU0ZUICAg ICAgICAgICAgICAgICAgIDQNCisjZGVmaW5lIFJHX1VMMl9BU1lOQ19GSUZPX1NPRlRfUlNUX01B U0sgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX1VMMl9BU1lOQ19GSUZPX1NPRlRf UlNUX01BU0tfU0ZUICAgICAgICAgICAgICAoMHgxIDw8IDQpDQorDQorLyogQUZFX0RDQ0xLX0NG RzAgKi8NCisjZGVmaW5lIERDQ0xLX0RJVl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA1DQorI2RlZmluZSBEQ0NMS19ESVZfTUFTSyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHg3ZmYNCisjZGVmaW5lIERDQ0xLX0RJVl9NQVNLX1NGVCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoMHg3ZmYgPDwgNSkNCisjZGVmaW5lIERDQ0xLX0lOVl9TRlQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0DQorI2RlZmluZSBEQ0NMS19JTlZf TUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBEQ0NM S19JTlZfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCA0KQ0K KyNkZWZpbmUgRENDTEtfUkVGX0NLX1NFTF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDINCisjZGVmaW5lIERDQ0xLX1JFRl9DS19TRUxfTUFTSyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDMNCisjZGVmaW5lIERDQ0xLX1JFRl9DS19TRUxfTUFTS19TRlQgICAgICAgICAgICAg ICAgICAgICAgICAoMHgzIDw8IDIpDQorI2RlZmluZSBEQ0NMS19QRE5fU0ZUICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMQ0KKyNkZWZpbmUgRENDTEtfUEROX01BU0sgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgRENDTEtfUEROX01BU0tf U0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgMSkNCisjZGVmaW5lIERD Q0xLX0dFTl9PTl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmlu ZSBEQ0NMS19HRU5fT05fTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQor I2RlZmluZSBEQ0NMS19HRU5fT05fTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAg KDB4MSA8PCAwKQ0KKw0KKy8qIEFGRV9EQ0NMS19DRkcxICovDQorI2RlZmluZSBSRVNZTkNfU1JD X1NFTF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTANCisjZGVmaW5lIFJFU1lO Q19TUkNfU0VMX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMNCisjZGVmaW5l IFJFU1lOQ19TUkNfU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgzIDw8 IDEwKQ0KKyNkZWZpbmUgUkVTWU5DX1NSQ19DS19JTlZfU0ZUICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDkNCisjZGVmaW5lIFJFU1lOQ19TUkNfQ0tfSU5WX01BU0sgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDENCisjZGVmaW5lIFJFU1lOQ19TUkNfQ0tfSU5WX01BU0tfU0ZUICAgICAg ICAgICAgICAgICAgICAgICAoMHgxIDw8IDkpDQorI2RlZmluZSBEQ0NMS19SRVNZTkNfQllQQVNT X1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgRENDTEtfUkVTWU5DX0JZ UEFTU19NQVNLICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgRENDTEtfUkVT WU5DX0JZUEFTU19NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgOCkNCisjZGVm aW5lIERDQ0xLX1BIQVNFX1NFTF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0DQor I2RlZmluZSBEQ0NMS19QSEFTRV9TRUxfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHhmDQorI2RlZmluZSBEQ0NMS19QSEFTRV9TRUxfTUFTS19TRlQgICAgICAgICAgICAgICAgICAg ICAgICAgKDB4ZiA8PCA0KQ0KKw0KKy8qIEFVRElPX0RJR19DRkcgKi8NCisjZGVmaW5lIFJHX0FV RF9QQURfVE9QX0RBVF9NSVNPMl9MT09QQkFDS19TRlQgICAgICAgICAgICAxNQ0KKyNkZWZpbmUg UkdfQVVEX1BBRF9UT1BfREFUX01JU08yX0xPT1BCQUNLX01BU0sgICAgICAgICAgIDB4MQ0KKyNk ZWZpbmUgUkdfQVVEX1BBRF9UT1BfREFUX01JU08yX0xPT1BCQUNLX01BU0tfU0ZUICAgICAgICgw eDEgPDwgMTUpDQorI2RlZmluZSBSR19BVURfUEFEX1RPUF9QSEFTRV9NT0RFMl9TRlQgICAgICAg ICAgICAgICAgICAgOA0KKyNkZWZpbmUgUkdfQVVEX1BBRF9UT1BfUEhBU0VfTU9ERTJfTUFTSyAg ICAgICAgICAgICAgICAgIDB4N2YNCisjZGVmaW5lIFJHX0FVRF9QQURfVE9QX1BIQVNFX01PREUy X01BU0tfU0ZUICAgICAgICAgICAgICAoMHg3ZiA8PCA4KQ0KKyNkZWZpbmUgUkdfQVVEX1BBRF9U T1BfREFUX01JU09fTE9PUEJBQ0tfU0ZUICAgICAgICAgICAgIDcNCisjZGVmaW5lIFJHX0FVRF9Q QURfVE9QX0RBVF9NSVNPX0xPT1BCQUNLX01BU0sgICAgICAgICAgICAweDENCisjZGVmaW5lIFJH X0FVRF9QQURfVE9QX0RBVF9NSVNPX0xPT1BCQUNLX01BU0tfU0ZUICAgICAgICAoMHgxIDw8IDcp DQorI2RlZmluZSBSR19BVURfUEFEX1RPUF9QSEFTRV9NT0RFX1NGVCAgICAgICAgICAgICAgICAg ICAgMA0KKyNkZWZpbmUgUkdfQVVEX1BBRF9UT1BfUEhBU0VfTU9ERV9NQVNLICAgICAgICAgICAg ICAgICAgIDB4N2YNCisjZGVmaW5lIFJHX0FVRF9QQURfVE9QX1BIQVNFX01PREVfTUFTS19TRlQg ICAgICAgICAgICAgICAoMHg3ZiA8PCAwKQ0KKw0KKy8qIEFVRElPX0RJR19DRkcxICovDQorI2Rl ZmluZSBSR19BVURfUEFEX1RPUF9EQVRfTUlTTzNfTE9PUEJBQ0tfU0ZUICAgICAgICAgICAgNw0K KyNkZWZpbmUgUkdfQVVEX1BBRF9UT1BfREFUX01JU08zX0xPT1BCQUNLX01BU0sgICAgICAgICAg IDB4MQ0KKyNkZWZpbmUgUkdfQVVEX1BBRF9UT1BfREFUX01JU08zX0xPT1BCQUNLX01BU0tfU0ZU ICAgICAgICgweDEgPDwgNykNCisjZGVmaW5lIFJHX0FVRF9QQURfVE9QX1BIQVNFX01PREUzX1NG VCAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBSR19BVURfUEFEX1RPUF9QSEFTRV9NT0RF M19NQVNLICAgICAgICAgICAgICAgICAgMHg3Zg0KKyNkZWZpbmUgUkdfQVVEX1BBRF9UT1BfUEhB U0VfTU9ERTNfTUFTS19TRlQgICAgICAgICAgICAgICgweDdmIDw8IDApDQorDQorLyogQUZFX0FV RF9QQURfVE9QICovDQorI2RlZmluZSBSR19BVURfUEFEX1RPUF9UWF9GSUZPX1JTUF9TRlQgICAg ICAgICAgICAgICAgICAgMTINCisjZGVmaW5lIFJHX0FVRF9QQURfVE9QX1RYX0ZJRk9fUlNQX01B U0sgICAgICAgICAgICAgICAgICAweDcNCisjZGVmaW5lIFJHX0FVRF9QQURfVE9QX1RYX0ZJRk9f UlNQX01BU0tfU0ZUICAgICAgICAgICAgICAoMHg3IDw8IDEyKQ0KKyNkZWZpbmUgUkdfQVVEX1BB RF9UT1BfTVRLQUlGX0NMS19QUk9UT0NPTDJfU0ZUICAgICAgICAgIDExDQorI2RlZmluZSBSR19B VURfUEFEX1RPUF9NVEtBSUZfQ0xLX1BST1RPQ09MMl9NQVNLICAgICAgICAgMHgxDQorI2RlZmlu ZSBSR19BVURfUEFEX1RPUF9NVEtBSUZfQ0xLX1BST1RPQ09MMl9NQVNLX1NGVCAgICAgKDB4MSA8 PCAxMSkNCisjZGVmaW5lIFJHX0FVRF9QQURfVE9QX1RYX0ZJRk9fT05fU0ZUICAgICAgICAgICAg ICAgICAgICA4DQorI2RlZmluZSBSR19BVURfUEFEX1RPUF9UWF9GSUZPX09OX01BU0sgICAgICAg ICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURfUEFEX1RPUF9UWF9GSUZPX09OX01BU0tf U0ZUICAgICAgICAgICAgICAgKDB4MSA8PCA4KQ0KKw0KKy8qIEFGRV9BVURfUEFEX1RPUF9NT04g Ki8NCisjZGVmaW5lIEFEREFfQVVEX1BBRF9UT1BfTU9OX1NGVCAgICAgICAgICAgICAgICAgICAg ICAgICAwDQorI2RlZmluZSBBRERBX0FVRF9QQURfVE9QX01PTl9NQVNLICAgICAgICAgICAgICAg ICAgICAgICAgMHhmZmZmDQorI2RlZmluZSBBRERBX0FVRF9QQURfVE9QX01PTl9NQVNLX1NGVCAg ICAgICAgICAgICAgICAgICAgKDB4ZmZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9BVURfUEFEX1RPUF9N T04xICovDQorI2RlZmluZSBBRERBX0FVRF9QQURfVE9QX01PTjFfU0ZUICAgICAgICAgICAgICAg ICAgICAgICAgMA0KKyNkZWZpbmUgQUREQV9BVURfUEFEX1RPUF9NT04xX01BU0sgICAgICAgICAg ICAgICAgICAgICAgIDB4ZmZmZg0KKyNkZWZpbmUgQUREQV9BVURfUEFEX1RPUF9NT04xX01BU0tf U0ZUICAgICAgICAgICAgICAgICAgICgweGZmZmYgPDwgMCkNCisNCisvKiBBRkVfQVVEX1BBRF9U T1BfTU9OMiAqLw0KKyNkZWZpbmUgQUREQV9BVURfUEFEX1RPUF9NT04yX1NGVCAgICAgICAgICAg ICAgICAgICAgICAgIDANCisjZGVmaW5lIEFEREFfQVVEX1BBRF9UT1BfTU9OMl9NQVNLICAgICAg ICAgICAgICAgICAgICAgICAweGZmZmYNCisjZGVmaW5lIEFEREFfQVVEX1BBRF9UT1BfTU9OMl9N QVNLX1NGVCAgICAgICAgICAgICAgICAgICAoMHhmZmZmIDw8IDApDQorDQorLyogQUZFX0RMX05M RV9DRkcgKi8NCisjZGVmaW5lIE5MRV9SQ0hfSFBHQUlOX1NFTF9TRlQgICAgICAgICAgICAgICAg ICAgICAgICAgICAxMA0KKyNkZWZpbmUgTkxFX1JDSF9IUEdBSU5fU0VMX01BU0sgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgTkxFX1JDSF9IUEdBSU5fU0VMX01BU0tfU0ZU ICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgMTApDQorI2RlZmluZSBOTEVfUkNIX0NIX1NF TF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOQ0KKyNkZWZpbmUgTkxFX1JDSF9D SF9TRUxfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgTkxF X1JDSF9DSF9TRUxfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgOSkN CisjZGVmaW5lIE5MRV9SQ0hfT05fU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA4DQorI2RlZmluZSBOTEVfUkNIX09OX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgxDQorI2RlZmluZSBOTEVfUkNIX09OX01BU0tfU0ZUICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDB4MSA8PCA4KQ0KKyNkZWZpbmUgTkxFX0xDSF9IUEdBSU5fU0VMX1NGVCAg ICAgICAgICAgICAgICAgICAgICAgICAgIDINCisjZGVmaW5lIE5MRV9MQ0hfSFBHQUlOX1NFTF9N QVNLICAgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIE5MRV9MQ0hfSFBHQUlO X1NFTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDIpDQorI2RlZmluZSBO TEVfTENIX0NIX1NFTF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQ0KKyNkZWZp bmUgTkxFX0xDSF9DSF9TRUxfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0K KyNkZWZpbmUgTkxFX0xDSF9DSF9TRUxfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAg ICgweDEgPDwgMSkNCisjZGVmaW5lIE5MRV9MQ0hfT05fU0ZUICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAwDQorI2RlZmluZSBOTEVfTENIX09OX01BU0sgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBOTEVfTENIX09OX01BU0tfU0ZUICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAwKQ0KKw0KKy8qIEFGRV9ETF9OTEVfTU9O ICovDQorI2RlZmluZSBOTEVfTU9OSVRPUl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMA0KKyNkZWZpbmUgTkxFX01PTklUT1JfTUFTSyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgTkxFX01PTklUT1JfTUFTS19TRlQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgweDNmZmYgPDwgMCkNCisNCisvKiBBRkVfQ0dfRU5fTU9OICov DQorI2RlZmluZSBDS19DR19FTl9NT05fU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMA0KKyNkZWZpbmUgQ0tfQ0dfRU5fTU9OX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4M2YNCisjZGVmaW5lIENLX0NHX0VOX01PTl9NQVNLX1NGVCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoMHgzZiA8PCAwKQ0KKw0KKy8qIEFGRV9NSUNfQVJSQVlfQ0ZHICovDQor I2RlZmluZSBSR19BTUlDX0FEQzFfU09VUkNFX1NFTF9TRlQgICAgICAgICAgICAgICAgICAgICAg MTANCisjZGVmaW5lIFJHX0FNSUNfQURDMV9TT1VSQ0VfU0VMX01BU0sgICAgICAgICAgICAgICAg ICAgICAweDMNCisjZGVmaW5lIFJHX0FNSUNfQURDMV9TT1VSQ0VfU0VMX01BU0tfU0ZUICAgICAg ICAgICAgICAgICAoMHgzIDw8IDEwKQ0KKyNkZWZpbmUgUkdfQU1JQ19BREMyX1NPVVJDRV9TRUxf U0ZUICAgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJHX0FNSUNfQURDMl9TT1VSQ0Vf U0VMX01BU0sgICAgICAgICAgICAgICAgICAgICAweDMNCisjZGVmaW5lIFJHX0FNSUNfQURDMl9T T1VSQ0VfU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAoMHgzIDw8IDgpDQorI2RlZmluZSBS R19BTUlDX0FEQzNfU09VUkNFX1NFTF9TRlQgICAgICAgICAgICAgICAgICAgICAgNg0KKyNkZWZp bmUgUkdfQU1JQ19BREMzX1NPVVJDRV9TRUxfTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4Mw0K KyNkZWZpbmUgUkdfQU1JQ19BREMzX1NPVVJDRV9TRUxfTUFTS19TRlQgICAgICAgICAgICAgICAg ICgweDMgPDwgNikNCisjZGVmaW5lIFJHX0RNSUNfQURDMV9TT1VSQ0VfU0VMX1NGVCAgICAgICAg ICAgICAgICAgICAgICA0DQorI2RlZmluZSBSR19ETUlDX0FEQzFfU09VUkNFX1NFTF9NQVNLICAg ICAgICAgICAgICAgICAgICAgMHgzDQorI2RlZmluZSBSR19ETUlDX0FEQzFfU09VUkNFX1NFTF9N QVNLX1NGVCAgICAgICAgICAgICAgICAgKDB4MyA8PCA0KQ0KKyNkZWZpbmUgUkdfRE1JQ19BREMy X1NPVVJDRV9TRUxfU0ZUICAgICAgICAgICAgICAgICAgICAgIDINCisjZGVmaW5lIFJHX0RNSUNf QURDMl9TT1VSQ0VfU0VMX01BU0sgICAgICAgICAgICAgICAgICAgICAweDMNCisjZGVmaW5lIFJH X0RNSUNfQURDMl9TT1VSQ0VfU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAoMHgzIDw8IDIp DQorI2RlZmluZSBSR19ETUlDX0FEQzNfU09VUkNFX1NFTF9TRlQgICAgICAgICAgICAgICAgICAg ICAgMA0KKyNkZWZpbmUgUkdfRE1JQ19BREMzX1NPVVJDRV9TRUxfTUFTSyAgICAgICAgICAgICAg ICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfRE1JQ19BREMzX1NPVVJDRV9TRUxfTUFTS19TRlQgICAg ICAgICAgICAgICAgICgweDMgPDwgMCkNCisNCisvKiBBRkVfQ0hPUF9DRkcwICovDQorI2RlZmlu ZSBSR19DSE9QX0RJVl9TRUxfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNA0KKyNk ZWZpbmUgUkdfQ0hPUF9ESVZfU0VMX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MWYNCisjZGVmaW5lIFJHX0NIT1BfRElWX1NFTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAg ICAgICAoMHgxZiA8PCA0KQ0KKyNkZWZpbmUgUkdfQ0hPUF9ESVZfRU5fU0ZUICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJHX0NIT1BfRElWX0VOX01BU0sgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0NIT1BfRElWX0VOX01BU0tf U0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDApDQorDQorLyogQUZFX01US0FJ Rl9NVVhfQ0ZHICovDQorI2RlZmluZSBSR19BRERBNl9FTl9TRUxfU0ZUICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTINCisjZGVmaW5lIFJHX0FEREE2X0VOX1NFTF9NQVNLICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FEREE2X0VOX1NFTF9NQVNLX1NG VCAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDEyKQ0KKyNkZWZpbmUgUkdfQUREQTZf Q0gyX1NFTF9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwDQorI2RlZmluZSBSR19B RERBNl9DSDJfU0VMX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzDQorI2RlZmlu ZSBSR19BRERBNl9DSDJfU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgKDB4MyA8 PCAxMCkNCisjZGVmaW5lIFJHX0FEREE2X0NIMV9TRUxfU0ZUICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA4DQorI2RlZmluZSBSR19BRERBNl9DSDFfU0VMX01BU0sgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgzDQorI2RlZmluZSBSR19BRERBNl9DSDFfU0VMX01BU0tfU0ZUICAgICAg ICAgICAgICAgICAgICAgICAgKDB4MyA8PCA4KQ0KKyNkZWZpbmUgUkdfQUREQV9FTl9TRUxfU0ZU ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQNCisjZGVmaW5lIFJHX0FEREFfRU5fU0VM X01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FEREFf RU5fU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDQpDQorI2Rl ZmluZSBSR19BRERBX0NIMl9TRUxfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMg0K KyNkZWZpbmUgUkdfQUREQV9DSDJfU0VMX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4Mw0KKyNkZWZpbmUgUkdfQUREQV9DSDJfU0VMX01BU0tfU0ZUICAgICAgICAgICAgICAgICAg ICAgICAgICgweDMgPDwgMikNCisjZGVmaW5lIFJHX0FEREFfQ0gxX1NFTF9TRlQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBSR19BRERBX0NIMV9TRUxfTUFTSyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgzDQorI2RlZmluZSBSR19BRERBX0NIMV9TRUxfTUFT S19TRlQgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MyA8PCAwKQ0KKw0KKy8qIEFGRV9QTUlD X05FV0lGX0NGRzMgKi8NCisjZGVmaW5lIFJHX1VQOFhfU1lOQ19XT1JEX1NGVCAgICAgICAgICAg ICAgICAwDQorI2RlZmluZSBSR19VUDhYX1NZTkNfV09SRF9NQVNLICAgICAgICAgICAgICAgMHhm ZmZmDQorI2RlZmluZSBSR19VUDhYX1NZTkNfV09SRF9NQVNLX1NGVCAgICAgICAgICAgKDB4ZmZm ZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfVE9QX0NPTjAgKi8NCisjZGVmaW5lIFBETl9WT1dfU0ZU ICAgICAgICAgICAgICAgICAgICAgICAgICAxNQ0KKyNkZWZpbmUgUEROX1ZPV19NQVNLICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUEROX1ZPV19NQVNLX1NGVCAgICAgICAg ICAgICAgICAgICAgICgweDEgPDwgMTUpDQorI2RlZmluZSBWT1dfRE1JQ19DS19TRUxfU0ZUICAg ICAgICAgICAgICAgICAgMTMNCisjZGVmaW5lIFZPV19ETUlDX0NLX1NFTF9NQVNLICAgICAgICAg ICAgICAgICAweDMNCisjZGVmaW5lIFZPV19ETUlDX0NLX1NFTF9NQVNLX1NGVCAgICAgICAgICAg ICAoMHgzIDw8IDEzKQ0KKyNkZWZpbmUgTUFJTl9ETUlDX0NLX1ZPV19TRUxfU0ZUICAgICAgICAg ICAgIDEyDQorI2RlZmluZSBNQUlOX0RNSUNfQ0tfVk9XX1NFTF9NQVNLICAgICAgICAgICAgMHgx DQorI2RlZmluZSBNQUlOX0RNSUNfQ0tfVk9XX1NFTF9NQVNLX1NGVCAgICAgICAgKDB4MSA8PCAx MikNCisjZGVmaW5lIFZPV19DSUNfTU9ERV9TRUxfU0ZUICAgICAgICAgICAgICAgICAxMA0KKyNk ZWZpbmUgVk9XX0NJQ19NT0RFX1NFTF9NQVNLICAgICAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUg Vk9XX0NJQ19NT0RFX1NFTF9NQVNLX1NGVCAgICAgICAgICAgICgweDMgPDwgMTApDQorI2RlZmlu ZSBWT1dfU0RNXzNfTEVWRUxfU0ZUICAgICAgICAgICAgICAgICAgOQ0KKyNkZWZpbmUgVk9XX1NE TV8zX0xFVkVMX01BU0sgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVk9XX1NETV8zX0xF VkVMX01BU0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgOSkNCisjZGVmaW5lIFZPV19MT09QX0JB Q0tfTU9ERV9TRlQgICAgICAgICAgICAgICA4DQorI2RlZmluZSBWT1dfTE9PUF9CQUNLX01PREVf TUFTSyAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBWT1dfTE9PUF9CQUNLX01PREVfTUFTS19T RlQgICAgICAgICAgKDB4MSA8PCA4KQ0KKyNkZWZpbmUgVk9XX0lOVFJfU1dfTU9ERV9TRlQgICAg ICAgICAgICAgICAgIDcNCisjZGVmaW5lIFZPV19JTlRSX1NXX01PREVfTUFTSyAgICAgICAgICAg ICAgICAweDENCisjZGVmaW5lIFZPV19JTlRSX1NXX01PREVfTUFTS19TRlQgICAgICAgICAgICAo MHgxIDw8IDcpDQorI2RlZmluZSBWT1dfSU5UUl9TV19WQUxfU0ZUICAgICAgICAgICAgICAgICAg Ng0KKyNkZWZpbmUgVk9XX0lOVFJfU1dfVkFMX01BU0sgICAgICAgICAgICAgICAgIDB4MQ0KKyNk ZWZpbmUgVk9XX0lOVFJfU1dfVkFMX01BU0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgNikNCisj ZGVmaW5lIFJHX1ZPV19JTlRSX01PREVfU0VMX1NGVCAgICAgICAgICAgICAyDQorI2RlZmluZSBS R19WT1dfSU5UUl9NT0RFX1NFTF9NQVNLICAgICAgICAgICAgMHgzDQorI2RlZmluZSBSR19WT1df SU5UUl9NT0RFX1NFTF9NQVNLX1NGVCAgICAgICAgKDB4MyA8PCAyKQ0KKw0KKy8qIEFGRV9WT1df VE9QX0NPTjEgKi8NCisjZGVmaW5lIFZPV19ETUlDMF9DS19QRE5fU0ZUICAgICAgICAgICAgICAg ICAxNQ0KKyNkZWZpbmUgVk9XX0RNSUMwX0NLX1BETl9NQVNLICAgICAgICAgICAgICAgIDB4MQ0K KyNkZWZpbmUgVk9XX0RNSUMwX0NLX1BETl9NQVNLX1NGVCAgICAgICAgICAgICgweDEgPDwgMTUp DQorI2RlZmluZSBWT1dfRElHTUlDX09OX0NIMV9TRlQgICAgICAgICAgICAgICAgMTQNCisjZGVm aW5lIFZPV19ESUdNSUNfT05fQ0gxX01BU0sgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFZP V19ESUdNSUNfT05fQ0gxX01BU0tfU0ZUICAgICAgICAgICAoMHgxIDw8IDE0KQ0KKyNkZWZpbmUg Vk9XX0NLX0RJVl9SU1RfQ0gxX1NGVCAgICAgICAgICAgICAgIDEzDQorI2RlZmluZSBWT1dfQ0tf RElWX1JTVF9DSDFfTUFTSyAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBWT1dfQ0tfRElWX1JT VF9DSDFfTUFTS19TRlQgICAgICAgICAgKDB4MSA8PCAxMykNCisjZGVmaW5lIFZPV19BRENfQ0tf UEROX0NIMV9TRlQgICAgICAgICAgICAgICAxMg0KKyNkZWZpbmUgVk9XX0FEQ19DS19QRE5fQ0gx X01BU0sgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVk9XX0FEQ19DS19QRE5fQ0gxX01BU0tf U0ZUICAgICAgICAgICgweDEgPDwgMTIpDQorI2RlZmluZSBWT1dfQ0tfUEROX0NIMV9TRlQgICAg ICAgICAgICAgICAgICAgMTENCisjZGVmaW5lIFZPV19DS19QRE5fQ0gxX01BU0sgICAgICAgICAg ICAgICAgICAweDENCisjZGVmaW5lIFZPV19DS19QRE5fQ0gxX01BU0tfU0ZUICAgICAgICAgICAg ICAoMHgxIDw8IDExKQ0KKyNkZWZpbmUgVk9XX0RJR01JQ19DS19QSEFTRV9TRUxfQ0gxX1NGVCAg ICAgIDYNCisjZGVmaW5lIFZPV19ESUdNSUNfQ0tfUEhBU0VfU0VMX0NIMV9NQVNLICAgICAweDFm DQorI2RlZmluZSBWT1dfRElHTUlDX0NLX1BIQVNFX1NFTF9DSDFfTUFTS19TRlQgKDB4MWYgPDwg NikNCisjZGVmaW5lIFZPV19BRENfQ0xLX0lOVl9DSDFfU0ZUICAgICAgICAgICAgICA1DQorI2Rl ZmluZSBWT1dfQURDX0NMS19JTlZfQ0gxX01BU0sgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBW T1dfQURDX0NMS19JTlZfQ0gxX01BU0tfU0ZUICAgICAgICAgKDB4MSA8PCA1KQ0KKyNkZWZpbmUg Vk9XX0lOVFJfU09VUkNFX1NFTF9DSDFfU0ZUICAgICAgICAgIDQNCisjZGVmaW5lIFZPV19JTlRS X1NPVVJDRV9TRUxfQ0gxX01BU0sgICAgICAgICAweDENCisjZGVmaW5lIFZPV19JTlRSX1NPVVJD RV9TRUxfQ0gxX01BU0tfU0ZUICAgICAoMHgxIDw8IDQpDQorI2RlZmluZSBWT1dfSU5UUl9DTFJf Q0gxX1NGVCAgICAgICAgICAgICAgICAgMw0KKyNkZWZpbmUgVk9XX0lOVFJfQ0xSX0NIMV9NQVNL ICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVk9XX0lOVFJfQ0xSX0NIMV9NQVNLX1NGVCAg ICAgICAgICAgICgweDEgPDwgMykNCisjZGVmaW5lIFNfTl9WQUxVRV9SU1RfQ0gxX1NGVCAgICAg ICAgICAgICAgICAyDQorI2RlZmluZSBTX05fVkFMVUVfUlNUX0NIMV9NQVNLICAgICAgICAgICAg ICAgMHgxDQorI2RlZmluZSBTX05fVkFMVUVfUlNUX0NIMV9NQVNLX1NGVCAgICAgICAgICAgKDB4 MSA8PCAyKQ0KKyNkZWZpbmUgU0FNUExFX0JBU0VfTU9ERV9DSDFfU0ZUICAgICAgICAgICAgIDEN CisjZGVmaW5lIFNBTVBMRV9CQVNFX01PREVfQ0gxX01BU0sgICAgICAgICAgICAweDENCisjZGVm aW5lIFNBTVBMRV9CQVNFX01PREVfQ0gxX01BU0tfU0ZUICAgICAgICAoMHgxIDw8IDEpDQorI2Rl ZmluZSBWT1dfT05fQ0gxX1NGVCAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgVk9X X09OX0NIMV9NQVNLICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVk9XX09OX0NI MV9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBBRkVfVk9XX1RP UF9DT04yICovDQorI2RlZmluZSBWT1dfRE1JQzFfQ0tfUEROX1NGVCAgICAgICAgICAgICAgICAg MTUNCisjZGVmaW5lIFZPV19ETUlDMV9DS19QRE5fTUFTSyAgICAgICAgICAgICAgICAweDENCisj ZGVmaW5lIFZPV19ETUlDMV9DS19QRE5fTUFTS19TRlQgICAgICAgICAgICAoMHgxIDw8IDE1KQ0K KyNkZWZpbmUgVk9XX0RJR01JQ19PTl9DSDJfU0ZUICAgICAgICAgICAgICAgIDE0DQorI2RlZmlu ZSBWT1dfRElHTUlDX09OX0NIMl9NQVNLICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBWT1df RElHTUlDX09OX0NIMl9NQVNLX1NGVCAgICAgICAgICAgKDB4MSA8PCAxNCkNCisjZGVmaW5lIFZP V19DS19ESVZfUlNUX0NIMl9TRlQgICAgICAgICAgICAgICAxMw0KKyNkZWZpbmUgVk9XX0NLX0RJ Vl9SU1RfQ0gyX01BU0sgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVk9XX0NLX0RJVl9SU1Rf Q0gyX01BU0tfU0ZUICAgICAgICAgICgweDEgPDwgMTMpDQorI2RlZmluZSBWT1dfQURDX0NLX1BE Tl9DSDJfU0ZUICAgICAgICAgICAgICAgMTINCisjZGVmaW5lIFZPV19BRENfQ0tfUEROX0NIMl9N QVNLICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFZPV19BRENfQ0tfUEROX0NIMl9NQVNLX1NG VCAgICAgICAgICAoMHgxIDw8IDEyKQ0KKyNkZWZpbmUgVk9XX0NLX1BETl9DSDJfU0ZUICAgICAg ICAgICAgICAgICAgIDExDQorI2RlZmluZSBWT1dfQ0tfUEROX0NIMl9NQVNLICAgICAgICAgICAg ICAgICAgMHgxDQorI2RlZmluZSBWT1dfQ0tfUEROX0NIMl9NQVNLX1NGVCAgICAgICAgICAgICAg KDB4MSA8PCAxMSkNCisjZGVmaW5lIFZPV19ESUdNSUNfQ0tfUEhBU0VfU0VMX0NIMl9TRlQgICAg ICA2DQorI2RlZmluZSBWT1dfRElHTUlDX0NLX1BIQVNFX1NFTF9DSDJfTUFTSyAgICAgMHgxZg0K KyNkZWZpbmUgVk9XX0RJR01JQ19DS19QSEFTRV9TRUxfQ0gyX01BU0tfU0ZUICgweDFmIDw8IDYp DQorI2RlZmluZSBWT1dfQURDX0NMS19JTlZfQ0gyX1NGVCAgICAgICAgICAgICAgNQ0KKyNkZWZp bmUgVk9XX0FEQ19DTEtfSU5WX0NIMl9NQVNLICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVk9X X0FEQ19DTEtfSU5WX0NIMl9NQVNLX1NGVCAgICAgICAgICgweDEgPDwgNSkNCisjZGVmaW5lIFZP V19JTlRSX1NPVVJDRV9TRUxfQ0gyX1NGVCAgICAgICAgICA0DQorI2RlZmluZSBWT1dfSU5UUl9T T1VSQ0VfU0VMX0NIMl9NQVNLICAgICAgICAgMHgxDQorI2RlZmluZSBWT1dfSU5UUl9TT1VSQ0Vf U0VMX0NIMl9NQVNLX1NGVCAgICAgKDB4MSA8PCA0KQ0KKyNkZWZpbmUgVk9XX0lOVFJfQ0xSX0NI Ml9TRlQgICAgICAgICAgICAgICAgIDMNCisjZGVmaW5lIFZPV19JTlRSX0NMUl9DSDJfTUFTSyAg ICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFZPV19JTlRSX0NMUl9DSDJfTUFTS19TRlQgICAg ICAgICAgICAoMHgxIDw8IDMpDQorI2RlZmluZSBTX05fVkFMVUVfUlNUX0NIMl9TRlQgICAgICAg ICAgICAgICAgMg0KKyNkZWZpbmUgU19OX1ZBTFVFX1JTVF9DSDJfTUFTSyAgICAgICAgICAgICAg IDB4MQ0KKyNkZWZpbmUgU19OX1ZBTFVFX1JTVF9DSDJfTUFTS19TRlQgICAgICAgICAgICgweDEg PDwgMikNCisjZGVmaW5lIFNBTVBMRV9CQVNFX01PREVfQ0gyX1NGVCAgICAgICAgICAgICAxDQor I2RlZmluZSBTQU1QTEVfQkFTRV9NT0RFX0NIMl9NQVNLICAgICAgICAgICAgMHgxDQorI2RlZmlu ZSBTQU1QTEVfQkFTRV9NT0RFX0NIMl9NQVNLX1NGVCAgICAgICAgKDB4MSA8PCAxKQ0KKyNkZWZp bmUgVk9XX09OX0NIMl9TRlQgICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFZPV19P Tl9DSDJfTUFTSyAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFZPV19PTl9DSDJf TUFTS19TRlQgICAgICAgICAgICAgICAgICAoMHgxIDw8IDApDQorDQorLyogQUZFX1ZPV19UT1Bf Q09OMyAqLw0KKyNkZWZpbmUgVk9XX1RYSUZfU0NLX0lOVl9TRlQgICAgICAgICAgICAgICAgIDE1 DQorI2RlZmluZSBWT1dfVFhJRl9TQ0tfSU5WX01BU0sgICAgICAgICAgICAgICAgMHgxDQorI2Rl ZmluZSBWT1dfVFhJRl9TQ0tfSU5WX01BU0tfU0ZUICAgICAgICAgICAgKDB4MSA8PCAxNSkNCisj ZGVmaW5lIFZPV19BRENfVEVTVENLX1NSQ19TRUxfU0ZUICAgICAgICAgICAxMg0KKyNkZWZpbmUg Vk9XX0FEQ19URVNUQ0tfU1JDX1NFTF9NQVNLICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgVk9XX0FE Q19URVNUQ0tfU1JDX1NFTF9NQVNLX1NGVCAgICAgICgweDcgPDwgMTIpDQorI2RlZmluZSBWT1df QURDX1RFU1RDS19TRUxfU0ZUICAgICAgICAgICAgICAgMTENCisjZGVmaW5lIFZPV19BRENfVEVT VENLX1NFTF9NQVNLICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFZPV19BRENfVEVTVENLX1NF TF9NQVNLX1NGVCAgICAgICAgICAoMHgxIDw8IDExKQ0KKyNkZWZpbmUgVk9XX1RYSUZfTU9OT19T RlQgICAgICAgICAgICAgICAgICAgIDkNCisjZGVmaW5lIFZPV19UWElGX01PTk9fTUFTSyAgICAg ICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFZPV19UWElGX01PTk9fTUFTS19TRlQgICAgICAg ICAgICAgICAoMHgxIDw8IDkpDQorI2RlZmluZSBWT1dfVFhJRl9TQ0tfRElWX1NGVCAgICAgICAg ICAgICAgICAgNA0KKyNkZWZpbmUgVk9XX1RYSUZfU0NLX0RJVl9NQVNLICAgICAgICAgICAgICAg IDB4MWYNCisjZGVmaW5lIFZPV19UWElGX1NDS19ESVZfTUFTS19TRlQgICAgICAgICAgICAoMHgx ZiA8PCA0KQ0KKyNkZWZpbmUgVk9XX1AyX1NOUkRFVF9BVVRPX1BETl9TRlQgICAgICAgICAgIDAN CisjZGVmaW5lIFZPV19QMl9TTlJERVRfQVVUT19QRE5fTUFTSyAgICAgICAgICAweDENCisjZGVm aW5lIFZPV19QMl9TTlJERVRfQVVUT19QRE5fTUFTS19TRlQgICAgICAoMHgxIDw8IDApDQorDQor LyogQUZFX1ZPV19UT1BfQ09ONCAqLw0KKyNkZWZpbmUgUkdfVk9XX0FNSUNfQURDMV9TT1VSQ0Vf U0VMX1NGVCAgICAgIDQNCisjZGVmaW5lIFJHX1ZPV19BTUlDX0FEQzFfU09VUkNFX1NFTF9NQVNL ICAgICAweDMNCisjZGVmaW5lIFJHX1ZPV19BTUlDX0FEQzFfU09VUkNFX1NFTF9NQVNLX1NGVCAo MHgzIDw8IDQpDQorI2RlZmluZSBSR19WT1dfQU1JQ19BREMyX1NPVVJDRV9TRUxfU0ZUICAgICAg MA0KKyNkZWZpbmUgUkdfVk9XX0FNSUNfQURDMl9TT1VSQ0VfU0VMX01BU0sgICAgIDB4Mw0KKyNk ZWZpbmUgUkdfVk9XX0FNSUNfQURDMl9TT1VSQ0VfU0VMX01BU0tfU0ZUICgweDMgPDwgMCkNCisN CisvKiBBRkVfVk9XX1RPUF9NT04wICovDQorI2RlZmluZSBCVUNLX0RWRlNfRE9ORV9TRlQgICAg ICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgQlVDS19EVkZTX0RPTkVfTUFTSyAgICAgICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgQlVDS19EVkZTX0RPTkVfTUFTS19TRlQgICAgICAgICAgICAg ICgweDEgPDwgOCkNCisjZGVmaW5lIFZPV19JTlRSX1NGVCAgICAgICAgICAgICAgICAgICAgICAg ICA0DQorI2RlZmluZSBWT1dfSU5UUl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQor I2RlZmluZSBWT1dfSU5UUl9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCA0KQ0K KyNkZWZpbmUgVk9XX0lOVFJfRkxBR19DSDFfU0ZUICAgICAgICAgICAgICAgIDENCisjZGVmaW5l IFZPV19JTlRSX0ZMQUdfQ0gxX01BU0sgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFZPV19J TlRSX0ZMQUdfQ0gxX01BU0tfU0ZUICAgICAgICAgICAoMHgxIDw8IDEpDQorI2RlZmluZSBWT1df SU5UUl9GTEFHX0NIMl9TRlQgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgVk9XX0lOVFJfRkxB R19DSDJfTUFTSyAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgVk9XX0lOVFJfRkxBR19DSDJf TUFTS19TRlQgICAgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBBRkVfVk9XX1ZBRF9DRkcwICov DQorI2RlZmluZSBBTVBSRUZfQ0gxX1NGVCAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZp bmUgQU1QUkVGX0NIMV9NQVNLICAgICAgICAgICAgICAgICAgICAgIDB4ZmZmZg0KKyNkZWZpbmUg QU1QUkVGX0NIMV9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICgweGZmZmYgPDwgMCkNCisNCisv KiBBRkVfVk9XX1ZBRF9DRkcxICovDQorI2RlZmluZSBBTVBSRUZfQ0gyX1NGVCAgICAgICAgICAg ICAgICAgICAgICAgMA0KKyNkZWZpbmUgQU1QUkVGX0NIMl9NQVNLICAgICAgICAgICAgICAgICAg ICAgIDB4ZmZmZg0KKyNkZWZpbmUgQU1QUkVGX0NIMl9NQVNLX1NGVCAgICAgICAgICAgICAgICAg ICgweGZmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9XX1ZBRF9DRkcyICovDQorI2RlZmluZSBUSU1F UklOSV9DSDFfU0ZUICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgVElNRVJJTklfQ0gx X01BU0sgICAgICAgICAgICAgICAgICAgIDB4ZmZmZg0KKyNkZWZpbmUgVElNRVJJTklfQ0gxX01B U0tfU0ZUICAgICAgICAgICAgICAgICgweGZmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9XX1ZBRF9D RkczICovDQorI2RlZmluZSBUSU1FUklOSV9DSDJfU0ZUICAgICAgICAgICAgICAgICAgICAgMA0K KyNkZWZpbmUgVElNRVJJTklfQ0gyX01BU0sgICAgICAgICAgICAgICAgICAgIDB4ZmZmZg0KKyNk ZWZpbmUgVElNRVJJTklfQ0gyX01BU0tfU0ZUICAgICAgICAgICAgICAgICgweGZmZmYgPDwgMCkN CisNCisvKiBBRkVfVk9XX1ZBRF9DRkc0ICovDQorI2RlZmluZSBWT1dfSVJRX0xBVENIX1NOUl9F Tl9DSDFfU0ZUICAgICAgICAgMTUNCisjZGVmaW5lIFZPV19JUlFfTEFUQ0hfU05SX0VOX0NIMV9N QVNLICAgICAgICAweDENCisjZGVmaW5lIFZPV19JUlFfTEFUQ0hfU05SX0VOX0NIMV9NQVNLX1NG VCAgICAoMHgxIDw8IDE1KQ0KKyNkZWZpbmUgQl9ERUZBVUxUX0NIMV9TRlQgICAgICAgICAgICAg ICAgICAgIDEyDQorI2RlZmluZSBCX0RFRkFVTFRfQ0gxX01BU0sgICAgICAgICAgICAgICAgICAg MHg3DQorI2RlZmluZSBCX0RFRkFVTFRfQ0gxX01BU0tfU0ZUICAgICAgICAgICAgICAgKDB4NyA8 PCAxMikNCisjZGVmaW5lIEFfREVGQVVMVF9DSDFfU0ZUICAgICAgICAgICAgICAgICAgICA4DQor I2RlZmluZSBBX0RFRkFVTFRfQ0gxX01BU0sgICAgICAgICAgICAgICAgICAgMHg3DQorI2RlZmlu ZSBBX0RFRkFVTFRfQ0gxX01BU0tfU0ZUICAgICAgICAgICAgICAgKDB4NyA8PCA4KQ0KKyNkZWZp bmUgQl9JTklfQ0gxX1NGVCAgICAgICAgICAgICAgICAgICAgICAgIDQNCisjZGVmaW5lIEJfSU5J X0NIMV9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweDcNCisjZGVmaW5lIEJfSU5JX0NIMV9N QVNLX1NGVCAgICAgICAgICAgICAgICAgICAoMHg3IDw8IDQpDQorI2RlZmluZSBBX0lOSV9DSDFf U0ZUICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgQV9JTklfQ0gxX01BU0sgICAg ICAgICAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgQV9JTklfQ0gxX01BU0tfU0ZUICAgICAg ICAgICAgICAgICAgICgweDcgPDwgMCkNCisNCisvKiBBRkVfVk9XX1ZBRF9DRkc1ICovDQorI2Rl ZmluZSBWT1dfSVJRX0xBVENIX1NOUl9FTl9DSDJfU0ZUICAgICAgICAgMTUNCisjZGVmaW5lIFZP V19JUlFfTEFUQ0hfU05SX0VOX0NIMl9NQVNLICAgICAgICAweDENCisjZGVmaW5lIFZPV19JUlFf TEFUQ0hfU05SX0VOX0NIMl9NQVNLX1NGVCAgICAoMHgxIDw8IDE1KQ0KKyNkZWZpbmUgQl9ERUZB VUxUX0NIMl9TRlQgICAgICAgICAgICAgICAgICAgIDEyDQorI2RlZmluZSBCX0RFRkFVTFRfQ0gy X01BU0sgICAgICAgICAgICAgICAgICAgMHg3DQorI2RlZmluZSBCX0RFRkFVTFRfQ0gyX01BU0tf U0ZUICAgICAgICAgICAgICAgKDB4NyA8PCAxMikNCisjZGVmaW5lIEFfREVGQVVMVF9DSDJfU0ZU ICAgICAgICAgICAgICAgICAgICA4DQorI2RlZmluZSBBX0RFRkFVTFRfQ0gyX01BU0sgICAgICAg ICAgICAgICAgICAgMHg3DQorI2RlZmluZSBBX0RFRkFVTFRfQ0gyX01BU0tfU0ZUICAgICAgICAg ICAgICAgKDB4NyA8PCA4KQ0KKyNkZWZpbmUgQl9JTklfQ0gyX1NGVCAgICAgICAgICAgICAgICAg ICAgICAgIDQNCisjZGVmaW5lIEJfSU5JX0NIMl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAw eDcNCisjZGVmaW5lIEJfSU5JX0NIMl9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAoMHg3IDw8 IDQpDQorI2RlZmluZSBBX0lOSV9DSDJfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNk ZWZpbmUgQV9JTklfQ0gyX01BU0sgICAgICAgICAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUg QV9JTklfQ0gyX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICgweDcgPDwgMCkNCisNCisvKiBB RkVfVk9XX1ZBRF9DRkc2ICovDQorI2RlZmluZSBLX0JFVEFfUklTRV9DSDFfU0ZUICAgICAgICAg ICAgICAgICAgMTINCisjZGVmaW5lIEtfQkVUQV9SSVNFX0NIMV9NQVNLICAgICAgICAgICAgICAg ICAweGYNCisjZGVmaW5lIEtfQkVUQV9SSVNFX0NIMV9NQVNLX1NGVCAgICAgICAgICAgICAoMHhm IDw8IDEyKQ0KKyNkZWZpbmUgS19CRVRBX0ZBTExfQ0gxX1NGVCAgICAgICAgICAgICAgICAgIDgN CisjZGVmaW5lIEtfQkVUQV9GQUxMX0NIMV9NQVNLICAgICAgICAgICAgICAgICAweGYNCisjZGVm aW5lIEtfQkVUQV9GQUxMX0NIMV9NQVNLX1NGVCAgICAgICAgICAgICAoMHhmIDw8IDgpDQorI2Rl ZmluZSBLX0FMUEhBX1JJU0VfQ0gxX1NGVCAgICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgS19B TFBIQV9SSVNFX0NIMV9NQVNLICAgICAgICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgS19BTFBIQV9S SVNFX0NIMV9NQVNLX1NGVCAgICAgICAgICAgICgweGYgPDwgNCkNCisjZGVmaW5lIEtfQUxQSEFf RkFMTF9DSDFfU0ZUICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBLX0FMUEhBX0ZBTExfQ0gx X01BU0sgICAgICAgICAgICAgICAgMHhmDQorI2RlZmluZSBLX0FMUEhBX0ZBTExfQ0gxX01BU0tf U0ZUICAgICAgICAgICAgKDB4ZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfVkFEX0NGRzcgKi8NCisj ZGVmaW5lIEtfQkVUQV9SSVNFX0NIMl9TRlQgICAgICAgICAgICAgICAgICAxMg0KKyNkZWZpbmUg S19CRVRBX1JJU0VfQ0gyX01BU0sgICAgICAgICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgS19CRVRB X1JJU0VfQ0gyX01BU0tfU0ZUICAgICAgICAgICAgICgweGYgPDwgMTIpDQorI2RlZmluZSBLX0JF VEFfRkFMTF9DSDJfU0ZUICAgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgS19CRVRBX0ZBTExf Q0gyX01BU0sgICAgICAgICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgS19CRVRBX0ZBTExfQ0gyX01B U0tfU0ZUICAgICAgICAgICAgICgweGYgPDwgOCkNCisjZGVmaW5lIEtfQUxQSEFfUklTRV9DSDJf U0ZUICAgICAgICAgICAgICAgICA0DQorI2RlZmluZSBLX0FMUEhBX1JJU0VfQ0gyX01BU0sgICAg ICAgICAgICAgICAgMHhmDQorI2RlZmluZSBLX0FMUEhBX1JJU0VfQ0gyX01BU0tfU0ZUICAgICAg ICAgICAgKDB4ZiA8PCA0KQ0KKyNkZWZpbmUgS19BTFBIQV9GQUxMX0NIMl9TRlQgICAgICAgICAg ICAgICAgIDANCisjZGVmaW5lIEtfQUxQSEFfRkFMTF9DSDJfTUFTSyAgICAgICAgICAgICAgICAw eGYNCisjZGVmaW5lIEtfQUxQSEFfRkFMTF9DSDJfTUFTS19TRlQgICAgICAgICAgICAoMHhmIDw8 IDApDQorDQorLyogQUZFX1ZPV19WQURfQ0ZHOCAqLw0KKyNkZWZpbmUgTl9NSU5fQ0gxX1NGVCAg ICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIE5fTUlOX0NIMV9NQVNLICAgICAgICAg ICAgICAgICAgICAgICAweGZmZmYNCisjZGVmaW5lIE5fTUlOX0NIMV9NQVNLX1NGVCAgICAgICAg ICAgICAgICAgICAoMHhmZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19WQURfQ0ZHOSAqLw0KKyNk ZWZpbmUgTl9NSU5fQ0gyX1NGVCAgICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIE5f TUlOX0NIMl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweGZmZmYNCisjZGVmaW5lIE5fTUlO X0NIMl9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAoMHhmZmZmIDw8IDApDQorDQorLyogQUZF X1ZPV19WQURfQ0ZHMTAgKi8NCisjZGVmaW5lIFZPV19TTl9JTklfQ0ZHX0VOX0NIMV9TRlQgICAg ICAgICAgICAxNQ0KKyNkZWZpbmUgVk9XX1NOX0lOSV9DRkdfRU5fQ0gxX01BU0sgICAgICAgICAg IDB4MQ0KKyNkZWZpbmUgVk9XX1NOX0lOSV9DRkdfRU5fQ0gxX01BU0tfU0ZUICAgICAgICgweDEg PDwgMTUpDQorI2RlZmluZSBWT1dfU05fSU5JX0NGR19WQUxfQ0gxX1NGVCAgICAgICAgICAgMA0K KyNkZWZpbmUgVk9XX1NOX0lOSV9DRkdfVkFMX0NIMV9NQVNLICAgICAgICAgIDB4N2ZmZg0KKyNk ZWZpbmUgVk9XX1NOX0lOSV9DRkdfVkFMX0NIMV9NQVNLX1NGVCAgICAgICgweDdmZmYgPDwgMCkN CisNCisvKiBBRkVfVk9XX1ZBRF9DRkcxMSAqLw0KKyNkZWZpbmUgVk9XX1NOX0lOSV9DRkdfRU5f Q0gyX1NGVCAgICAgICAgICAgIDE1DQorI2RlZmluZSBWT1dfU05fSU5JX0NGR19FTl9DSDJfTUFT SyAgICAgICAgICAgMHgxDQorI2RlZmluZSBWT1dfU05fSU5JX0NGR19FTl9DSDJfTUFTS19TRlQg ICAgICAgKDB4MSA8PCAxNSkNCisjZGVmaW5lIFZPV19TTl9JTklfQ0ZHX1ZBTF9DSDJfU0ZUICAg ICAgICAgICAwDQorI2RlZmluZSBWT1dfU05fSU5JX0NGR19WQUxfQ0gyX01BU0sgICAgICAgICAg MHg3ZmZmDQorI2RlZmluZSBWT1dfU05fSU5JX0NGR19WQUxfQ0gyX01BU0tfU0ZUICAgICAgKDB4 N2ZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfVkFEX0NGRzEyICovDQorI2RlZmluZSBLX0dBTU1B X0NIMV9TRlQgICAgICAgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgS19HQU1NQV9DSDFfTUFT SyAgICAgICAgICAgICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgS19HQU1NQV9DSDFfTUFTS19TRlQg ICAgICAgICAgICAgICAgICgweGYgPDwgOCkNCisjZGVmaW5lIEtfR0FNTUFfQ0gyX1NGVCAgICAg ICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBLX0dBTU1BX0NIMl9NQVNLICAgICAgICAgICAg ICAgICAgICAgMHhmDQorI2RlZmluZSBLX0dBTU1BX0NIMl9NQVNLX1NGVCAgICAgICAgICAgICAg ICAgKDB4ZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfVkFEX01PTjAgKi8NCisjZGVmaW5lIFZPV19E T1dOQ05UX0NIMV9TRlQgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBWT1dfRE9XTkNOVF9D SDFfTUFTSyAgICAgICAgICAgICAgICAgMHhmZmZmDQorI2RlZmluZSBWT1dfRE9XTkNOVF9DSDFf TUFTS19TRlQgICAgICAgICAgICAgKDB4ZmZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfVkFEX01P TjEgKi8NCisjZGVmaW5lIFZPV19ET1dOQ05UX0NIMl9TRlQgICAgICAgICAgICAgICAgICAwDQor I2RlZmluZSBWT1dfRE9XTkNOVF9DSDJfTUFTSyAgICAgICAgICAgICAgICAgMHhmZmZmDQorI2Rl ZmluZSBWT1dfRE9XTkNOVF9DSDJfTUFTS19TRlQgICAgICAgICAgICAgKDB4ZmZmZiA8PCAwKQ0K Kw0KKy8qIEFGRV9WT1dfVkFEX01PTjIgKi8NCisjZGVmaW5lIEtfVE1QX01PTl9DSDFfU0ZUICAg ICAgICAgICAgICAgICAgICAxMA0KKyNkZWZpbmUgS19UTVBfTU9OX0NIMV9NQVNLICAgICAgICAg ICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgS19UTVBfTU9OX0NIMV9NQVNLX1NGVCAgICAgICAgICAg ICAgICgweGYgPDwgMTApDQorI2RlZmluZSBTTFRfQ09VTlRFUl9NT05fQ0gxX1NGVCAgICAgICAg ICAgICAgNw0KKyNkZWZpbmUgU0xUX0NPVU5URVJfTU9OX0NIMV9NQVNLICAgICAgICAgICAgIDB4 Nw0KKyNkZWZpbmUgU0xUX0NPVU5URVJfTU9OX0NIMV9NQVNLX1NGVCAgICAgICAgICgweDcgPDwg NykNCisjZGVmaW5lIFZPV19CX0NIMV9TRlQgICAgICAgICAgICAgICAgICAgICAgICA0DQorI2Rl ZmluZSBWT1dfQl9DSDFfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgMHg3DQorI2RlZmluZSBW T1dfQl9DSDFfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgKDB4NyA8PCA0KQ0KKyNkZWZpbmUg Vk9XX0FfQ0gxX1NGVCAgICAgICAgICAgICAgICAgICAgICAgIDENCisjZGVmaW5lIFZPV19BX0NI MV9NQVNLICAgICAgICAgICAgICAgICAgICAgICAweDcNCisjZGVmaW5lIFZPV19BX0NIMV9NQVNL X1NGVCAgICAgICAgICAgICAgICAgICAoMHg3IDw8IDEpDQorI2RlZmluZSBTRUNPTkRfQ05UX1NU QVJUX0NIMV9TRlQgICAgICAgICAgICAgMA0KKyNkZWZpbmUgU0VDT05EX0NOVF9TVEFSVF9DSDFf TUFTSyAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgU0VDT05EX0NOVF9TVEFSVF9DSDFfTUFTS19T RlQgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBBRkVfVk9XX1ZBRF9NT04zICovDQorI2RlZmlu ZSBLX1RNUF9NT05fQ0gyX1NGVCAgICAgICAgICAgICAgICAgICAgMTANCisjZGVmaW5lIEtfVE1Q X01PTl9DSDJfTUFTSyAgICAgICAgICAgICAgICAgICAweGYNCisjZGVmaW5lIEtfVE1QX01PTl9D SDJfTUFTS19TRlQgICAgICAgICAgICAgICAoMHhmIDw8IDEwKQ0KKyNkZWZpbmUgU0xUX0NPVU5U RVJfTU9OX0NIMl9TRlQgICAgICAgICAgICAgIDcNCisjZGVmaW5lIFNMVF9DT1VOVEVSX01PTl9D SDJfTUFTSyAgICAgICAgICAgICAweDcNCisjZGVmaW5lIFNMVF9DT1VOVEVSX01PTl9DSDJfTUFT S19TRlQgICAgICAgICAoMHg3IDw8IDcpDQorI2RlZmluZSBWT1dfQl9DSDJfU0ZUICAgICAgICAg ICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgVk9XX0JfQ0gyX01BU0sgICAgICAgICAgICAgICAg ICAgICAgIDB4Nw0KKyNkZWZpbmUgVk9XX0JfQ0gyX01BU0tfU0ZUICAgICAgICAgICAgICAgICAg ICgweDcgPDwgNCkNCisjZGVmaW5lIFZPV19BX0NIMl9TRlQgICAgICAgICAgICAgICAgICAgICAg ICAxDQorI2RlZmluZSBWT1dfQV9DSDJfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgMHg3DQor I2RlZmluZSBWT1dfQV9DSDJfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgKDB4NyA8PCAxKQ0K KyNkZWZpbmUgU0VDT05EX0NOVF9TVEFSVF9DSDJfU0ZUICAgICAgICAgICAgIDANCisjZGVmaW5l IFNFQ09ORF9DTlRfU1RBUlRfQ0gyX01BU0sgICAgICAgICAgICAweDENCisjZGVmaW5lIFNFQ09O RF9DTlRfU1RBUlRfQ0gyX01BU0tfU0ZUICAgICAgICAoMHgxIDw8IDApDQorDQorLyogQUZFX1ZP V19WQURfTU9ONCAqLw0KKyNkZWZpbmUgVk9XX1NfTF9DSDFfU0ZUICAgICAgICAgICAgICAgICAg ICAgIDANCisjZGVmaW5lIFZPV19TX0xfQ0gxX01BU0sgICAgICAgICAgICAgICAgICAgICAweGZm ZmYNCisjZGVmaW5lIFZPV19TX0xfQ0gxX01BU0tfU0ZUICAgICAgICAgICAgICAgICAoMHhmZmZm IDw8IDApDQorDQorLyogQUZFX1ZPV19WQURfTU9ONSAqLw0KKyNkZWZpbmUgVk9XX1NfTF9DSDJf U0ZUICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFZPV19TX0xfQ0gyX01BU0sgICAg ICAgICAgICAgICAgICAgICAweGZmZmYNCisjZGVmaW5lIFZPV19TX0xfQ0gyX01BU0tfU0ZUICAg ICAgICAgICAgICAgICAoMHhmZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19WQURfTU9ONiAqLw0K KyNkZWZpbmUgVk9XX1NfSF9DSDFfU0ZUICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5l IFZPV19TX0hfQ0gxX01BU0sgICAgICAgICAgICAgICAgICAgICAweGZmZmYNCisjZGVmaW5lIFZP V19TX0hfQ0gxX01BU0tfU0ZUICAgICAgICAgICAgICAgICAoMHhmZmZmIDw8IDApDQorDQorLyog QUZFX1ZPV19WQURfTU9ONyAqLw0KKyNkZWZpbmUgVk9XX1NfSF9DSDJfU0ZUICAgICAgICAgICAg ICAgICAgICAgIDANCisjZGVmaW5lIFZPV19TX0hfQ0gyX01BU0sgICAgICAgICAgICAgICAgICAg ICAweGZmZmYNCisjZGVmaW5lIFZPV19TX0hfQ0gyX01BU0tfU0ZUICAgICAgICAgICAgICAgICAo MHhmZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19WQURfTU9OOCAqLw0KKyNkZWZpbmUgVk9XX05f TF9DSDFfU0ZUICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFZPV19OX0xfQ0gxX01B U0sgICAgICAgICAgICAgICAgICAgICAweGZmZmYNCisjZGVmaW5lIFZPV19OX0xfQ0gxX01BU0tf U0ZUICAgICAgICAgICAgICAgICAoMHhmZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19WQURfTU9O OSAqLw0KKyNkZWZpbmUgVk9XX05fTF9DSDJfU0ZUICAgICAgICAgICAgICAgICAgICAgIDANCisj ZGVmaW5lIFZPV19OX0xfQ0gyX01BU0sgICAgICAgICAgICAgICAgICAgICAweGZmZmYNCisjZGVm aW5lIFZPV19OX0xfQ0gyX01BU0tfU0ZUICAgICAgICAgICAgICAgICAoMHhmZmZmIDw8IDApDQor DQorLyogQUZFX1ZPV19WQURfTU9OMTAgKi8NCisjZGVmaW5lIFZPV19OX0hfQ0gxX1NGVCAgICAg ICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBWT1dfTl9IX0NIMV9NQVNLICAgICAgICAgICAg ICAgICAgICAgMHhmZmZmDQorI2RlZmluZSBWT1dfTl9IX0NIMV9NQVNLX1NGVCAgICAgICAgICAg ICAgICAgKDB4ZmZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfVkFEX01PTjExICovDQorI2RlZmlu ZSBWT1dfTl9IX0NIMl9TRlQgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgVk9XX05f SF9DSDJfTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4ZmZmZg0KKyNkZWZpbmUgVk9XX05fSF9D SDJfTUFTS19TRlQgICAgICAgICAgICAgICAgICgweGZmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9X X1RHRU5fQ0ZHMCAqLw0KKyNkZWZpbmUgVk9XX1RHRU5fRU5fQ0gxX1NGVCAgICAgICAgICAgICAg ICAgIDE1DQorI2RlZmluZSBWT1dfVEdFTl9FTl9DSDFfTUFTSyAgICAgICAgICAgICAgICAgMHgx DQorI2RlZmluZSBWT1dfVEdFTl9FTl9DSDFfTUFTS19TRlQgICAgICAgICAgICAgKDB4MSA8PCAx NSkNCisjZGVmaW5lIFZPV19UR0VOX01VVEVfU1dfQ0gxX1NGVCAgICAgICAgICAgICAxNA0KKyNk ZWZpbmUgVk9XX1RHRU5fTVVURV9TV19DSDFfTUFTSyAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUg Vk9XX1RHRU5fTVVURV9TV19DSDFfTUFTS19TRlQgICAgICAgICgweDEgPDwgMTQpDQorI2RlZmlu ZSBWT1dfVEdFTl9GUkVRX0RJVl9DSDFfU0ZUICAgICAgICAgICAgMA0KKyNkZWZpbmUgVk9XX1RH RU5fRlJFUV9ESVZfQ0gxX01BU0sgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgVk9XX1RHRU5f RlJFUV9ESVZfQ0gxX01BU0tfU0ZUICAgICAgICgweDNmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9X X1RHRU5fQ0ZHMSAqLw0KKyNkZWZpbmUgVk9XX1RHRU5fRU5fQ0gyX1NGVCAgICAgICAgICAgICAg ICAgIDE1DQorI2RlZmluZSBWT1dfVEdFTl9FTl9DSDJfTUFTSyAgICAgICAgICAgICAgICAgMHgx DQorI2RlZmluZSBWT1dfVEdFTl9FTl9DSDJfTUFTS19TRlQgICAgICAgICAgICAgKDB4MSA8PCAx NSkNCisjZGVmaW5lIFZPV19UR0VOX01VVEVfU1dfQ0gyX1NGVCAgICAgICAgICAgICAxNA0KKyNk ZWZpbmUgVk9XX1RHRU5fTVVURV9TV19DSDJfTUFTSyAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUg Vk9XX1RHRU5fTVVURV9TV19DSDJfTUFTS19TRlQgICAgICAgICgweDEgPDwgMTQpDQorI2RlZmlu ZSBWT1dfVEdFTl9GUkVRX0RJVl9DSDJfU0ZUICAgICAgICAgICAgMA0KKyNkZWZpbmUgVk9XX1RH RU5fRlJFUV9ESVZfQ0gyX01BU0sgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgVk9XX1RHRU5f RlJFUV9ESVZfQ0gyX01BU0tfU0ZUICAgICAgICgweDNmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9X X0hQRl9DRkcwICovDQorI2RlZmluZSBWT1dfSFBGX0RDX1RFU1RfQ0gxX1NGVCAgICAgICAgICAg ICAgMTINCisjZGVmaW5lIFZPV19IUEZfRENfVEVTVF9DSDFfTUFTSyAgICAgICAgICAgICAweGYN CisjZGVmaW5lIFZPV19IUEZfRENfVEVTVF9DSDFfTUFTS19TRlQgICAgICAgICAoMHhmIDw8IDEy KQ0KKyNkZWZpbmUgUkdfQkFTRUxJTkVfQUxQSEFfT1JERVJfQ0gxX1NGVCAgICAgIDQNCisjZGVm aW5lIFJHX0JBU0VMSU5FX0FMUEhBX09SREVSX0NIMV9NQVNLICAgICAweGYNCisjZGVmaW5lIFJH X0JBU0VMSU5FX0FMUEhBX09SREVSX0NIMV9NQVNLX1NGVCAoMHhmIDw8IDQpDQorI2RlZmluZSBS R19NVEtBSUZfSFBGX0JZUEFTU19DSDFfU0ZUICAgICAgICAgMg0KKyNkZWZpbmUgUkdfTVRLQUlG X0hQRl9CWVBBU1NfQ0gxX01BU0sgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfTVRLQUlGX0hQRl9C WVBBU1NfQ0gxX01BU0tfU0ZUICAgICgweDEgPDwgMikNCisjZGVmaW5lIFJHX1NOUkRFVF9IUEZf QllQQVNTX0NIMV9TRlQgICAgICAgICAxDQorI2RlZmluZSBSR19TTlJERVRfSFBGX0JZUEFTU19D SDFfTUFTSyAgICAgICAgMHgxDQorI2RlZmluZSBSR19TTlJERVRfSFBGX0JZUEFTU19DSDFfTUFT S19TRlQgICAgKDB4MSA8PCAxKQ0KKyNkZWZpbmUgUkdfSFBGX09OX0NIMV9TRlQgICAgICAgICAg ICAgICAgICAgIDANCisjZGVmaW5lIFJHX0hQRl9PTl9DSDFfTUFTSyAgICAgICAgICAgICAgICAg ICAweDENCisjZGVmaW5lIFJHX0hQRl9PTl9DSDFfTUFTS19TRlQgICAgICAgICAgICAgICAoMHgx IDw8IDApDQorDQorLyogQUZFX1ZPV19IUEZfQ0ZHMSAqLw0KKyNkZWZpbmUgVk9XX0hQRl9EQ19U RVNUX0NIMl9TRlQgICAgICAgICAgICAgIDEyDQorI2RlZmluZSBWT1dfSFBGX0RDX1RFU1RfQ0gy X01BU0sgICAgICAgICAgICAgMHhmDQorI2RlZmluZSBWT1dfSFBGX0RDX1RFU1RfQ0gyX01BU0tf U0ZUICAgICAgICAgKDB4ZiA8PCAxMikNCisjZGVmaW5lIFJHX0JBU0VMSU5FX0FMUEhBX09SREVS X0NIMl9TRlQgICAgICA0DQorI2RlZmluZSBSR19CQVNFTElORV9BTFBIQV9PUkRFUl9DSDJfTUFT SyAgICAgMHhmDQorI2RlZmluZSBSR19CQVNFTElORV9BTFBIQV9PUkRFUl9DSDJfTUFTS19TRlQg KDB4ZiA8PCA0KQ0KKyNkZWZpbmUgUkdfTVRLQUlGX0hQRl9CWVBBU1NfQ0gyX1NGVCAgICAgICAg IDINCisjZGVmaW5lIFJHX01US0FJRl9IUEZfQllQQVNTX0NIMl9NQVNLICAgICAgICAweDENCisj ZGVmaW5lIFJHX01US0FJRl9IUEZfQllQQVNTX0NIMl9NQVNLX1NGVCAgICAoMHgxIDw8IDIpDQor I2RlZmluZSBSR19TTlJERVRfSFBGX0JZUEFTU19DSDJfU0ZUICAgICAgICAgMQ0KKyNkZWZpbmUg UkdfU05SREVUX0hQRl9CWVBBU1NfQ0gyX01BU0sgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfU05S REVUX0hQRl9CWVBBU1NfQ0gyX01BU0tfU0ZUICAgICgweDEgPDwgMSkNCisjZGVmaW5lIFJHX0hQ Rl9PTl9DSDJfU0ZUICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBSR19IUEZfT05fQ0gy X01BU0sgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19IUEZfT05fQ0gyX01BU0tf U0ZUICAgICAgICAgICAgICAgKDB4MSA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfUEVSSU9ESUNfQ0ZH MCAqLw0KKyNkZWZpbmUgUkdfUEVSSU9ESUNfRU5fU0ZUICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxNQ0KKyNkZWZpbmUgUkdfUEVSSU9ESUNfRU5fTUFTSyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX1BFUklPRElDX0VOX01BU0tfU0ZUICAgICAg ICAgICAgICAgICAgICAgICAgICAgKDB4MSA8PCAxNSkNCisjZGVmaW5lIFJHX1BFUklPRElDX0NO VF9DTFJfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQNCisjZGVmaW5lIFJHX1BFUklP RElDX0NOVF9DTFJfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBS R19QRVJJT0RJQ19DTlRfQ0xSX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwg MTQpDQorI2RlZmluZSBSR19QRVJJT0RJQ19DTlRfUEVSSU9EX1NGVCAgICAgICAgICAgICAgICAg ICAgICAgIDANCisjZGVmaW5lIFJHX1BFUklPRElDX0NOVF9QRVJJT0RfTUFTSyAgICAgICAgICAg ICAgICAgICAgICAgMHgzZmZmDQorI2RlZmluZSBSR19QRVJJT0RJQ19DTlRfUEVSSU9EX01BU0tf U0ZUICAgICAgICAgICAgICAgICAgICgweDNmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9XX1BFUklP RElDX0NGRzEgKi8NCisjZGVmaW5lIFJHX1BFUklPRElDX0NOVF9TRVRfU0ZUICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTUNCisjZGVmaW5lIFJHX1BFUklPRElDX0NOVF9TRVRfTUFTSyAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19QRVJJT0RJQ19DTlRfU0VUX01B U0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgMTUpDQorI2RlZmluZSBSR19QRVJJ T0RJQ19DTlRfUEFVU0VfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgIDE0DQorI2RlZmluZSBS R19QRVJJT0RJQ19DTlRfUEFVU0VfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNk ZWZpbmUgUkdfUEVSSU9ESUNfQ05UX1BBVVNFX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAo MHgxIDw8IDE0KQ0KKyNkZWZpbmUgUkdfUEVSSU9ESUNfQ05UX1NFVF9WQUxVRV9TRlQgICAgICAg ICAgICAgICAgICAgICAwDQorI2RlZmluZSBSR19QRVJJT0RJQ19DTlRfU0VUX1ZBTFVFX01BU0sg ICAgICAgICAgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgUkdfUEVSSU9ESUNfQ05UX1NFVF9W QUxVRV9NQVNLX1NGVCAgICAgICAgICAgICAgICAoMHgzZmZmIDw8IDApDQorDQorLyogQUZFX1ZP V19QRVJJT0RJQ19DRkcyICovDQorI2RlZmluZSBBVURQUkVBTVBMT05fUEVSSU9ESUNfTU9ERV9T RlQgICAgICAgICAgICAgICAgICAgIDE1DQorI2RlZmluZSBBVURQUkVBTVBMT05fUEVSSU9ESUNf TU9ERV9NQVNLICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQVVEUFJFQU1QTE9OX1BF UklPRElDX01PREVfTUFTS19TRlQgICAgICAgICAgICAgICAoMHgxIDw8IDE1KQ0KKyNkZWZpbmUg QVVEUFJFQU1QTE9OX1BFUklPRElDX0lOVkVSU0VfU0ZUICAgICAgICAgICAgICAgICAxNA0KKyNk ZWZpbmUgQVVEUFJFQU1QTE9OX1BFUklPRElDX0lOVkVSU0VfTUFTSyAgICAgICAgICAgICAgICAw eDENCisjZGVmaW5lIEFVRFBSRUFNUExPTl9QRVJJT0RJQ19JTlZFUlNFX01BU0tfU0ZUICAgICAg ICAgICAgKDB4MSA8PCAxNCkNCisjZGVmaW5lIEFVRFBSRUFNUExPTl9QRVJJT0RJQ19PTl9DWUNM RV9TRlQgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgQVVEUFJFQU1QTE9OX1BFUklPRElDX09O X0NZQ0xFX01BU0sgICAgICAgICAgICAgICAweDNmZmYNCisjZGVmaW5lIEFVRFBSRUFNUExPTl9Q RVJJT0RJQ19PTl9DWUNMRV9NQVNLX1NGVCAgICAgICAgICAgKDB4M2ZmZiA8PCAwKQ0KKw0KKy8q IEFGRV9WT1dfUEVSSU9ESUNfQ0ZHMyAqLw0KKyNkZWZpbmUgQVVEUFJFQU1QTERDUFJFQ0hBUkdF X1BFUklPRElDX01PREVfU0ZUICAgICAgICAgICAxNQ0KKyNkZWZpbmUgQVVEUFJFQU1QTERDUFJF Q0hBUkdFX1BFUklPRElDX01PREVfTUFTSyAgICAgICAgICAweDENCisjZGVmaW5lIEFVRFBSRUFN UExEQ1BSRUNIQVJHRV9QRVJJT0RJQ19NT0RFX01BU0tfU0ZUICAgICAgKDB4MSA8PCAxNSkNCisj ZGVmaW5lIEFVRFBSRUFNUExEQ1BSRUNIQVJHRV9QRVJJT0RJQ19JTlZFUlNFX1NGVCAgICAgICAg MTQNCisjZGVmaW5lIEFVRFBSRUFNUExEQ1BSRUNIQVJHRV9QRVJJT0RJQ19JTlZFUlNFX01BU0sg ICAgICAgMHgxDQorI2RlZmluZSBBVURQUkVBTVBMRENQUkVDSEFSR0VfUEVSSU9ESUNfSU5WRVJT RV9NQVNLX1NGVCAgICgweDEgPDwgMTQpDQorI2RlZmluZSBBVURQUkVBTVBMRENQUkVDSEFSR0Vf UEVSSU9ESUNfT05fQ1lDTEVfU0ZUICAgICAgIDANCisjZGVmaW5lIEFVRFBSRUFNUExEQ1BSRUNI QVJHRV9QRVJJT0RJQ19PTl9DWUNMRV9NQVNLICAgICAgMHgzZmZmDQorI2RlZmluZSBBVURQUkVB TVBMRENQUkVDSEFSR0VfUEVSSU9ESUNfT05fQ1lDTEVfTUFTS19TRlQgICgweDNmZmYgPDwgMCkN CisNCisvKiBBRkVfVk9XX1BFUklPRElDX0NGRzQgKi8NCisjZGVmaW5lIEFVREFEQ0xQV1JVUF9Q RVJJT0RJQ19NT0RFX1NGVCAgICAgICAgICAgICAgICAgICAgMTUNCisjZGVmaW5lIEFVREFEQ0xQ V1JVUF9QRVJJT0RJQ19NT0RFX01BU0sgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBB VURBRENMUFdSVVBfUEVSSU9ESUNfTU9ERV9NQVNLX1NGVCAgICAgICAgICAgICAgICgweDEgPDwg MTUpDQorI2RlZmluZSBBVURBRENMUFdSVVBfUEVSSU9ESUNfSU5WRVJTRV9TRlQgICAgICAgICAg ICAgICAgIDE0DQorI2RlZmluZSBBVURBRENMUFdSVVBfUEVSSU9ESUNfSU5WRVJTRV9NQVNLICAg ICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQVVEQURDTFBXUlVQX1BFUklPRElDX0lOVkVSU0Vf TUFTS19TRlQgICAgICAgICAgICAoMHgxIDw8IDE0KQ0KKyNkZWZpbmUgQVVEQURDTFBXUlVQX1BF UklPRElDX09OX0NZQ0xFX1NGVCAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBBVURBRENMUFdS VVBfUEVSSU9ESUNfT05fQ1lDTEVfTUFTSyAgICAgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUg QVVEQURDTFBXUlVQX1BFUklPRElDX09OX0NZQ0xFX01BU0tfU0ZUICAgICAgICAgICAoMHgzZmZm IDw8IDApDQorDQorLyogQUZFX1ZPV19QRVJJT0RJQ19DRkc1ICovDQorI2RlZmluZSBBVURHTEJW T1dMUFdFTl9QRVJJT0RJQ19NT0RFX1NGVCAgICAgICAgICAgICAgICAgIDE1DQorI2RlZmluZSBB VURHTEJWT1dMUFdFTl9QRVJJT0RJQ19NT0RFX01BU0sgICAgICAgICAgICAgICAgIDB4MQ0KKyNk ZWZpbmUgQVVER0xCVk9XTFBXRU5fUEVSSU9ESUNfTU9ERV9NQVNLX1NGVCAgICAgICAgICAgICAo MHgxIDw8IDE1KQ0KKyNkZWZpbmUgQVVER0xCVk9XTFBXRU5fUEVSSU9ESUNfSU5WRVJTRV9TRlQg ICAgICAgICAgICAgICAxNA0KKyNkZWZpbmUgQVVER0xCVk9XTFBXRU5fUEVSSU9ESUNfSU5WRVJT RV9NQVNLICAgICAgICAgICAgICAweDENCisjZGVmaW5lIEFVREdMQlZPV0xQV0VOX1BFUklPRElD X0lOVkVSU0VfTUFTS19TRlQgICAgICAgICAgKDB4MSA8PCAxNCkNCisjZGVmaW5lIEFVREdMQlZP V0xQV0VOX1BFUklPRElDX09OX0NZQ0xFX1NGVCAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgQVVE R0xCVk9XTFBXRU5fUEVSSU9ESUNfT05fQ1lDTEVfTUFTSyAgICAgICAgICAgICAweDNmZmYNCisj ZGVmaW5lIEFVREdMQlZPV0xQV0VOX1BFUklPRElDX09OX0NZQ0xFX01BU0tfU0ZUICAgICAgICAg KDB4M2ZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfUEVSSU9ESUNfQ0ZHNiAqLw0KKyNkZWZpbmUg QVVERElHTUlDRU5fUEVSSU9ESUNfTU9ERV9TRlQgICAgICAgICAgICAgICAgICAgICAxNQ0KKyNk ZWZpbmUgQVVERElHTUlDRU5fUEVSSU9ESUNfTU9ERV9NQVNLICAgICAgICAgICAgICAgICAgICAw eDENCisjZGVmaW5lIEFVRERJR01JQ0VOX1BFUklPRElDX01PREVfTUFTS19TRlQgICAgICAgICAg ICAgICAgKDB4MSA8PCAxNSkNCisjZGVmaW5lIEFVRERJR01JQ0VOX1BFUklPRElDX0lOVkVSU0Vf U0ZUICAgICAgICAgICAgICAgICAgMTQNCisjZGVmaW5lIEFVRERJR01JQ0VOX1BFUklPRElDX0lO VkVSU0VfTUFTSyAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBBVURESUdNSUNFTl9QRVJJ T0RJQ19JTlZFUlNFX01BU0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgMTQpDQorI2RlZmluZSBB VURESUdNSUNFTl9QRVJJT0RJQ19PTl9DWUNMRV9TRlQgICAgICAgICAgICAgICAgIDANCisjZGVm aW5lIEFVRERJR01JQ0VOX1BFUklPRElDX09OX0NZQ0xFX01BU0sgICAgICAgICAgICAgICAgMHgz ZmZmDQorI2RlZmluZSBBVURESUdNSUNFTl9QRVJJT0RJQ19PTl9DWUNMRV9NQVNLX1NGVCAgICAg ICAgICAgICgweDNmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9XX1BFUklPRElDX0NGRzcgKi8NCisj ZGVmaW5lIEFVRFBXREJNSUNCSUFTMF9QRVJJT0RJQ19NT0RFX1NGVCAgICAgICAgICAgICAgICAg MTUNCisjZGVmaW5lIEFVRFBXREJNSUNCSUFTMF9QRVJJT0RJQ19NT0RFX01BU0sgICAgICAgICAg ICAgICAgMHgxDQorI2RlZmluZSBBVURQV0RCTUlDQklBUzBfUEVSSU9ESUNfTU9ERV9NQVNLX1NG VCAgICAgICAgICAgICgweDEgPDwgMTUpDQorI2RlZmluZSBBVURQV0RCTUlDQklBUzBfUEVSSU9E SUNfSU5WRVJTRV9TRlQgICAgICAgICAgICAgIDE0DQorI2RlZmluZSBBVURQV0RCTUlDQklBUzBf UEVSSU9ESUNfSU5WRVJTRV9NQVNLICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQVVEUFdEQk1J Q0JJQVMwX1BFUklPRElDX0lOVkVSU0VfTUFTS19TRlQgICAgICAgICAoMHgxIDw8IDE0KQ0KKyNk ZWZpbmUgQVVEUFdEQk1JQ0JJQVMwX1BFUklPRElDX09OX0NZQ0xFX1NGVCAgICAgICAgICAgICAw DQorI2RlZmluZSBBVURQV0RCTUlDQklBUzBfUEVSSU9ESUNfT05fQ1lDTEVfTUFTSyAgICAgICAg ICAgIDB4M2ZmZg0KKyNkZWZpbmUgQVVEUFdEQk1JQ0JJQVMwX1BFUklPRElDX09OX0NZQ0xFX01B U0tfU0ZUICAgICAgICAoMHgzZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19QRVJJT0RJQ19DRkc4 ICovDQorI2RlZmluZSBBVURQV0RCTUlDQklBUzFfUEVSSU9ESUNfTU9ERV9TRlQgICAgICAgICAg ICAgICAgIDE1DQorI2RlZmluZSBBVURQV0RCTUlDQklBUzFfUEVSSU9ESUNfTU9ERV9NQVNLICAg ICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQVVEUFdEQk1JQ0JJQVMxX1BFUklPRElDX01PREVf TUFTS19TRlQgICAgICAgICAgICAoMHgxIDw8IDE1KQ0KKyNkZWZpbmUgQVVEUFdEQk1JQ0JJQVMx X1BFUklPRElDX0lOVkVSU0VfU0ZUICAgICAgICAgICAgICAxNA0KKyNkZWZpbmUgQVVEUFdEQk1J Q0JJQVMxX1BFUklPRElDX0lOVkVSU0VfTUFTSyAgICAgICAgICAgICAweDENCisjZGVmaW5lIEFV RFBXREJNSUNCSUFTMV9QRVJJT0RJQ19JTlZFUlNFX01BU0tfU0ZUICAgICAgICAgKDB4MSA8PCAx NCkNCisjZGVmaW5lIEFVRFBXREJNSUNCSUFTMV9QRVJJT0RJQ19PTl9DWUNMRV9TRlQgICAgICAg ICAgICAgMA0KKyNkZWZpbmUgQVVEUFdEQk1JQ0JJQVMxX1BFUklPRElDX09OX0NZQ0xFX01BU0sg ICAgICAgICAgICAweDNmZmYNCisjZGVmaW5lIEFVRFBXREJNSUNCSUFTMV9QRVJJT0RJQ19PTl9D WUNMRV9NQVNLX1NGVCAgICAgICAgKDB4M2ZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfUEVSSU9E SUNfQ0ZHOSAqLw0KKyNkZWZpbmUgWE9fVk9XX0NLX0VOX1BFUklPRElDX01PREVfU0ZUICAgICAg ICAgICAgICAgICAgICAxNQ0KKyNkZWZpbmUgWE9fVk9XX0NLX0VOX1BFUklPRElDX01PREVfTUFT SyAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFhPX1ZPV19DS19FTl9QRVJJT0RJQ19N T0RFX01BU0tfU0ZUICAgICAgICAgICAgICAgKDB4MSA8PCAxNSkNCisjZGVmaW5lIFhPX1ZPV19D S19FTl9QRVJJT0RJQ19JTlZFUlNFX1NGVCAgICAgICAgICAgICAgICAgMTQNCisjZGVmaW5lIFhP X1ZPV19DS19FTl9QRVJJT0RJQ19JTlZFUlNFX01BU0sgICAgICAgICAgICAgICAgMHgxDQorI2Rl ZmluZSBYT19WT1dfQ0tfRU5fUEVSSU9ESUNfSU5WRVJTRV9NQVNLX1NGVCAgICAgICAgICAgICgw eDEgPDwgMTQpDQorI2RlZmluZSBYT19WT1dfQ0tfRU5fUEVSSU9ESUNfT05fQ1lDTEVfU0ZUICAg ICAgICAgICAgICAgIDANCisjZGVmaW5lIFhPX1ZPV19DS19FTl9QRVJJT0RJQ19PTl9DWUNMRV9N QVNLICAgICAgICAgICAgICAgMHgzZmZmDQorI2RlZmluZSBYT19WT1dfQ0tfRU5fUEVSSU9ESUNf T05fQ1lDTEVfTUFTS19TRlQgICAgICAgICAgICgweDNmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9X X1BFUklPRElDX0NGRzEwICovDQorI2RlZmluZSBBVURHTEJfUFdSRE5fUEVSSU9ESUNfTU9ERV9T RlQgICAgICAgICAgICAgICAgICAgIDE1DQorI2RlZmluZSBBVURHTEJfUFdSRE5fUEVSSU9ESUNf TU9ERV9NQVNLICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQVVER0xCX1BXUkROX1BF UklPRElDX01PREVfTUFTS19TRlQgICAgICAgICAgICAgICAoMHgxIDw8IDE1KQ0KKyNkZWZpbmUg QVVER0xCX1BXUkROX1BFUklPRElDX0lOVkVSU0VfU0ZUICAgICAgICAgICAgICAgICAxNA0KKyNk ZWZpbmUgQVVER0xCX1BXUkROX1BFUklPRElDX0lOVkVSU0VfTUFTSyAgICAgICAgICAgICAgICAw eDENCisjZGVmaW5lIEFVREdMQl9QV1JETl9QRVJJT0RJQ19JTlZFUlNFX01BU0tfU0ZUICAgICAg ICAgICAgKDB4MSA8PCAxNCkNCisjZGVmaW5lIEFVREdMQl9QV1JETl9QRVJJT0RJQ19PTl9DWUNM RV9TRlQgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgQVVER0xCX1BXUkROX1BFUklPRElDX09O X0NZQ0xFX01BU0sgICAgICAgICAgICAgICAweDNmZmYNCisjZGVmaW5lIEFVREdMQl9QV1JETl9Q RVJJT0RJQ19PTl9DWUNMRV9NQVNLX1NGVCAgICAgICAgICAgKDB4M2ZmZiA8PCAwKQ0KKw0KKy8q IEFGRV9WT1dfUEVSSU9ESUNfQ0ZHMTEgKi8NCisjZGVmaW5lIFZPV19PTl9DSDFfUEVSSU9ESUNf TU9ERV9TRlQgICAgICAgICAgICAgICAgICAgICAgMTUNCisjZGVmaW5lIFZPV19PTl9DSDFfUEVS SU9ESUNfTU9ERV9NQVNLICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBWT1dfT05f Q0gxX1BFUklPRElDX01PREVfTUFTS19TRlQgICAgICAgICAgICAgICAgICgweDEgPDwgMTUpDQor I2RlZmluZSBWT1dfT05fQ0gxX1BFUklPRElDX0lOVkVSU0VfU0ZUICAgICAgICAgICAgICAgICAg IDE0DQorI2RlZmluZSBWT1dfT05fQ0gxX1BFUklPRElDX0lOVkVSU0VfTUFTSyAgICAgICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgVk9XX09OX0NIMV9QRVJJT0RJQ19JTlZFUlNFX01BU0tfU0ZU ICAgICAgICAgICAgICAoMHgxIDw8IDE0KQ0KKyNkZWZpbmUgVk9XX09OX0NIMV9QRVJJT0RJQ19P Tl9DWUNMRV9TRlQgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBWT1dfT05fQ0gxX1BFUklP RElDX09OX0NZQ0xFX01BU0sgICAgICAgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgVk9XX09O X0NIMV9QRVJJT0RJQ19PTl9DWUNMRV9NQVNLX1NGVCAgICAgICAgICAgICAoMHgzZmZmIDw8IDAp DQorDQorLyogQUZFX1ZPV19QRVJJT0RJQ19DRkcxMiAqLw0KKyNkZWZpbmUgRE1JQ19PTl9DSDFf UEVSSU9ESUNfTU9ERV9TRlQgICAgICAgICAgICAgICAgICAgICAxNQ0KKyNkZWZpbmUgRE1JQ19P Tl9DSDFfUEVSSU9ESUNfTU9ERV9NQVNLICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5l IERNSUNfT05fQ0gxX1BFUklPRElDX01PREVfTUFTS19TRlQgICAgICAgICAgICAgICAgKDB4MSA8 PCAxNSkNCisjZGVmaW5lIERNSUNfT05fQ0gxX1BFUklPRElDX0lOVkVSU0VfU0ZUICAgICAgICAg ICAgICAgICAgMTQNCisjZGVmaW5lIERNSUNfT05fQ0gxX1BFUklPRElDX0lOVkVSU0VfTUFTSyAg ICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBETUlDX09OX0NIMV9QRVJJT0RJQ19JTlZFUlNF X01BU0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgMTQpDQorI2RlZmluZSBETUlDX09OX0NIMV9Q RVJJT0RJQ19PTl9DWUNMRV9TRlQgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIERNSUNfT05f Q0gxX1BFUklPRElDX09OX0NZQ0xFX01BU0sgICAgICAgICAgICAgICAgMHgzZmZmDQorI2RlZmlu ZSBETUlDX09OX0NIMV9QRVJJT0RJQ19PTl9DWUNMRV9NQVNLX1NGVCAgICAgICAgICAgICgweDNm ZmYgPDwgMCkNCisNCisvKiBBRkVfVk9XX1BFUklPRElDX0NGRzEzICovDQorI2RlZmluZSBQRE5f Vk9XX0YzMktfQ0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1DQorI2RlZmlu ZSBQRE5fVk9XX0YzMktfQ0tfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0K KyNkZWZpbmUgUEROX1ZPV19GMzJLX0NLX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAg ICAoMHgxIDw8IDE1KQ0KKyNkZWZpbmUgQVVEUFJFQU1QTE9OX1BFUklPRElDX09GRl9DWUNMRV9T RlQgICAgICAgICAgICAgICAwDQorI2RlZmluZSBBVURQUkVBTVBMT05fUEVSSU9ESUNfT0ZGX0NZ Q0xFX01BU0sgICAgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgQVVEUFJFQU1QTE9OX1BFUklP RElDX09GRl9DWUNMRV9NQVNLX1NGVCAgICAgICAgICAoMHgzZmZmIDw8IDApDQorDQorLyogQUZF X1ZPV19QRVJJT0RJQ19DRkcxNCAqLw0KKyNkZWZpbmUgVk9XX1NOUkRFVF9QRVJJT0RJQ19DRkdf U0ZUICAgICAgICAgICAgICAgICAgICAgICAxNQ0KKyNkZWZpbmUgVk9XX1NOUkRFVF9QRVJJT0RJ Q19DRkdfTUFTSyAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFZPV19TTlJERVRf UEVSSU9ESUNfQ0ZHX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgKDB4MSA8PCAxNSkNCisjZGVm aW5lIEFVRFBSRUFNUExEQ1BSRUNIQVJHRV9QRVJJT0RJQ19PRkZfQ1lDTEVfU0ZUICAgICAgMA0K KyNkZWZpbmUgQVVEUFJFQU1QTERDUFJFQ0hBUkdFX1BFUklPRElDX09GRl9DWUNMRV9NQVNLICAg ICAweDNmZmYNCisjZGVmaW5lIEFVRFBSRUFNUExEQ1BSRUNIQVJHRV9QRVJJT0RJQ19PRkZfQ1lD TEVfTUFTS19TRlQgKDB4M2ZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfUEVSSU9ESUNfQ0ZHMTUg Ki8NCisjZGVmaW5lIEFVREFEQ0xQV1JVUF9QRVJJT0RJQ19PRkZfQ1lDTEVfU0ZUICAgICAgICAg ICAgICAgMA0KKyNkZWZpbmUgQVVEQURDTFBXUlVQX1BFUklPRElDX09GRl9DWUNMRV9NQVNLICAg ICAgICAgICAgICAweDNmZmYNCisjZGVmaW5lIEFVREFEQ0xQV1JVUF9QRVJJT0RJQ19PRkZfQ1lD TEVfTUFTS19TRlQgICAgICAgICAgKDB4M2ZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfUEVSSU9E SUNfQ0ZHMTYgKi8NCisjZGVmaW5lIEFVREdMQlZPV0xQV0VOX1BFUklPRElDX09GRl9DWUNMRV9T RlQgICAgICAgICAgICAgMA0KKyNkZWZpbmUgQVVER0xCVk9XTFBXRU5fUEVSSU9ESUNfT0ZGX0NZ Q0xFX01BU0sgICAgICAgICAgICAweDNmZmYNCisjZGVmaW5lIEFVREdMQlZPV0xQV0VOX1BFUklP RElDX09GRl9DWUNMRV9NQVNLX1NGVCAgICAgICAgKDB4M2ZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9W T1dfUEVSSU9ESUNfQ0ZHMTcgKi8NCisjZGVmaW5lIEFVRERJR01JQ0VOX1BFUklPRElDX09GRl9D WUNMRV9TRlQgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgQVVERElHTUlDRU5fUEVSSU9ESUNf T0ZGX0NZQ0xFX01BU0sgICAgICAgICAgICAgICAweDNmZmYNCisjZGVmaW5lIEFVRERJR01JQ0VO X1BFUklPRElDX09GRl9DWUNMRV9NQVNLX1NGVCAgICAgICAgICAgKDB4M2ZmZiA8PCAwKQ0KKw0K Ky8qIEFGRV9WT1dfUEVSSU9ESUNfQ0ZHMTggKi8NCisjZGVmaW5lIEFVRFBXREJNSUNCSUFTMF9Q RVJJT0RJQ19PRkZfQ1lDTEVfU0ZUICAgICAgICAgICAgMA0KKyNkZWZpbmUgQVVEUFdEQk1JQ0JJ QVMwX1BFUklPRElDX09GRl9DWUNMRV9NQVNLICAgICAgICAgICAweDNmZmYNCisjZGVmaW5lIEFV RFBXREJNSUNCSUFTMF9QRVJJT0RJQ19PRkZfQ1lDTEVfTUFTS19TRlQgICAgICAgKDB4M2ZmZiA8 PCAwKQ0KKw0KKy8qIEFGRV9WT1dfUEVSSU9ESUNfQ0ZHMTkgKi8NCisjZGVmaW5lIEFVRFBXREJN SUNCSUFTMV9QRVJJT0RJQ19PRkZfQ1lDTEVfU0ZUICAgICAgICAgICAgMA0KKyNkZWZpbmUgQVVE UFdEQk1JQ0JJQVMxX1BFUklPRElDX09GRl9DWUNMRV9NQVNLICAgICAgICAgICAweDNmZmYNCisj ZGVmaW5lIEFVRFBXREJNSUNCSUFTMV9QRVJJT0RJQ19PRkZfQ1lDTEVfTUFTS19TRlQgICAgICAg KDB4M2ZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfUEVSSU9ESUNfQ0ZHMjAgKi8NCisjZGVmaW5l IENMS1NRX0VOX1ZPV19QRVJJT0RJQ19NT0RFX1NGVCAgICAgICAgICAgICAgICAgICAgMTUNCisj ZGVmaW5lIENMS1NRX0VOX1ZPV19QRVJJT0RJQ19NT0RFX01BU0sgICAgICAgICAgICAgICAgICAg MHgxDQorI2RlZmluZSBDTEtTUV9FTl9WT1dfUEVSSU9ESUNfTU9ERV9NQVNLX1NGVCAgICAgICAg ICAgICAgICgweDEgPDwgMTUpDQorI2RlZmluZSBYT19WT1dfQ0tfRU5fUEVSSU9ESUNfT0ZGX0NZ Q0xFX1NGVCAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFhPX1ZPV19DS19FTl9QRVJJT0RJQ19P RkZfQ1lDTEVfTUFTSyAgICAgICAgICAgICAgMHgzZmZmDQorI2RlZmluZSBYT19WT1dfQ0tfRU5f UEVSSU9ESUNfT0ZGX0NZQ0xFX01BU0tfU0ZUICAgICAgICAgICgweDNmZmYgPDwgMCkNCisNCisv KiBBRkVfVk9XX1BFUklPRElDX0NGRzIxICovDQorI2RlZmluZSBBVURHTEJfUFdSRE5fUEVSSU9E SUNfT0ZGX0NZQ0xFX1NGVCAgICAgICAgICAgICAgIDANCisjZGVmaW5lIEFVREdMQl9QV1JETl9Q RVJJT0RJQ19PRkZfQ1lDTEVfTUFTSyAgICAgICAgICAgICAgMHgzZmZmDQorI2RlZmluZSBBVURH TEJfUFdSRE5fUEVSSU9ESUNfT0ZGX0NZQ0xFX01BU0tfU0ZUICAgICAgICAgICgweDNmZmYgPDwg MCkNCisNCisvKiBBRkVfVk9XX1BFUklPRElDX0NGRzIyICovDQorI2RlZmluZSBWT1dfT05fQ0gx X1BFUklPRElDX09GRl9DWUNMRV9TRlQgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFZPV19P Tl9DSDFfUEVSSU9ESUNfT0ZGX0NZQ0xFX01BU0sgICAgICAgICAgICAgICAgMHgzZmZmDQorI2Rl ZmluZSBWT1dfT05fQ0gxX1BFUklPRElDX09GRl9DWUNMRV9NQVNLX1NGVCAgICAgICAgICAgICgw eDNmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9XX1BFUklPRElDX0NGRzIzICovDQorI2RlZmluZSBE TUlDX09OX0NIMV9QRVJJT0RJQ19PRkZfQ1lDTEVfU0ZUICAgICAgICAgICAgICAgIDANCisjZGVm aW5lIERNSUNfT05fQ0gxX1BFUklPRElDX09GRl9DWUNMRV9NQVNLICAgICAgICAgICAgICAgMHgz ZmZmDQorI2RlZmluZSBETUlDX09OX0NIMV9QRVJJT0RJQ19PRkZfQ1lDTEVfTUFTS19TRlQgICAg ICAgICAgICgweDNmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9XX1BFUklPRElDX0NGRzI0ICovDQor I2RlZmluZSBBVURQUkVBTVBST05fUEVSSU9ESUNfTU9ERV9TRlQgICAgICAgICAgICAgICAgICAg IDE1DQorI2RlZmluZSBBVURQUkVBTVBST05fUEVSSU9ESUNfTU9ERV9NQVNLICAgICAgICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgQVVEUFJFQU1QUk9OX1BFUklPRElDX01PREVfTUFTS19TRlQg ICAgICAgICAgICAgICAoMHgxIDw8IDE1KQ0KKyNkZWZpbmUgQVVEUFJFQU1QUk9OX1BFUklPRElD X0lOVkVSU0VfU0ZUICAgICAgICAgICAgICAgICAxNA0KKyNkZWZpbmUgQVVEUFJFQU1QUk9OX1BF UklPRElDX0lOVkVSU0VfTUFTSyAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIEFVRFBSRUFN UFJPTl9QRVJJT0RJQ19JTlZFUlNFX01BU0tfU0ZUICAgICAgICAgICAgKDB4MSA8PCAxNCkNCisj ZGVmaW5lIEFVRFBSRUFNUFJPTl9QRVJJT0RJQ19PTl9DWUNMRV9TRlQgICAgICAgICAgICAgICAg MA0KKyNkZWZpbmUgQVVEUFJFQU1QUk9OX1BFUklPRElDX09OX0NZQ0xFX01BU0sgICAgICAgICAg ICAgICAweDNmZmYNCisjZGVmaW5lIEFVRFBSRUFNUFJPTl9QRVJJT0RJQ19PTl9DWUNMRV9NQVNL X1NGVCAgICAgICAgICAgKDB4M2ZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfUEVSSU9ESUNfQ0ZH MjUgKi8NCisjZGVmaW5lIEFVRFBSRUFNUFJEQ1BSRUNIQVJHRV9QRVJJT0RJQ19NT0RFX1NGVCAg ICAgICAgICAgMTUNCisjZGVmaW5lIEFVRFBSRUFNUFJEQ1BSRUNIQVJHRV9QRVJJT0RJQ19NT0RF X01BU0sgICAgICAgICAgMHgxDQorI2RlZmluZSBBVURQUkVBTVBSRENQUkVDSEFSR0VfUEVSSU9E SUNfTU9ERV9NQVNLX1NGVCAgICAgICgweDEgPDwgMTUpDQorI2RlZmluZSBBVURQUkVBTVBSRENQ UkVDSEFSR0VfUEVSSU9ESUNfSU5WRVJTRV9TRlQgICAgICAgIDE0DQorI2RlZmluZSBBVURQUkVB TVBSRENQUkVDSEFSR0VfUEVSSU9ESUNfSU5WRVJTRV9NQVNLICAgICAgIDB4MQ0KKyNkZWZpbmUg QVVEUFJFQU1QUkRDUFJFQ0hBUkdFX1BFUklPRElDX0lOVkVSU0VfTUFTS19TRlQgICAoMHgxIDw8 IDE0KQ0KKyNkZWZpbmUgQVVEUFJFQU1QUkRDUFJFQ0hBUkdFX1BFUklPRElDX09OX0NZQ0xFX1NG VCAgICAgICAwDQorI2RlZmluZSBBVURQUkVBTVBSRENQUkVDSEFSR0VfUEVSSU9ESUNfT05fQ1lD TEVfTUFTSyAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgQVVEUFJFQU1QUkRDUFJFQ0hBUkdFX1BFUklP RElDX09OX0NZQ0xFX01BU0tfU0ZUICAoMHgzZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19QRVJJ T0RJQ19DRkcyNiAqLw0KKyNkZWZpbmUgQVVEQURDUlBXUlVQX1BFUklPRElDX01PREVfU0ZUICAg ICAgICAgICAgICAgICAgICAxNQ0KKyNkZWZpbmUgQVVEQURDUlBXUlVQX1BFUklPRElDX01PREVf TUFTSyAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIEFVREFEQ1JQV1JVUF9QRVJJT0RJ Q19NT0RFX01BU0tfU0ZUICAgICAgICAgICAgICAgKDB4MSA8PCAxNSkNCisjZGVmaW5lIEFVREFE Q1JQV1JVUF9QRVJJT0RJQ19JTlZFUlNFX1NGVCAgICAgICAgICAgICAgICAgMTQNCisjZGVmaW5l IEFVREFEQ1JQV1JVUF9QRVJJT0RJQ19JTlZFUlNFX01BU0sgICAgICAgICAgICAgICAgMHgxDQor I2RlZmluZSBBVURBRENSUFdSVVBfUEVSSU9ESUNfSU5WRVJTRV9NQVNLX1NGVCAgICAgICAgICAg ICgweDEgPDwgMTQpDQorI2RlZmluZSBBVURBRENSUFdSVVBfUEVSSU9ESUNfT05fQ1lDTEVfU0ZU ICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIEFVREFEQ1JQV1JVUF9QRVJJT0RJQ19PTl9DWUNM RV9NQVNLICAgICAgICAgICAgICAgMHgzZmZmDQorI2RlZmluZSBBVURBRENSUFdSVVBfUEVSSU9E SUNfT05fQ1lDTEVfTUFTS19TRlQgICAgICAgICAgICgweDNmZmYgPDwgMCkNCisNCisvKiBBRkVf Vk9XX1BFUklPRElDX0NGRzI3ICovDQorI2RlZmluZSBBVURHTEJSVk9XTFBXRU5fUEVSSU9ESUNf TU9ERV9TRlQgICAgICAgICAgICAgICAgIDE1DQorI2RlZmluZSBBVURHTEJSVk9XTFBXRU5fUEVS SU9ESUNfTU9ERV9NQVNLICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQVVER0xCUlZPV0xQ V0VOX1BFUklPRElDX01PREVfTUFTS19TRlQgICAgICAgICAgICAoMHgxIDw8IDE1KQ0KKyNkZWZp bmUgQVVER0xCUlZPV0xQV0VOX1BFUklPRElDX0lOVkVSU0VfU0ZUICAgICAgICAgICAgICAxNA0K KyNkZWZpbmUgQVVER0xCUlZPV0xQV0VOX1BFUklPRElDX0lOVkVSU0VfTUFTSyAgICAgICAgICAg ICAweDENCisjZGVmaW5lIEFVREdMQlJWT1dMUFdFTl9QRVJJT0RJQ19JTlZFUlNFX01BU0tfU0ZU ICAgICAgICAgKDB4MSA8PCAxNCkNCisjZGVmaW5lIEFVREdMQlJWT1dMUFdFTl9QRVJJT0RJQ19P Tl9DWUNMRV9TRlQgICAgICAgICAgICAgMA0KKyNkZWZpbmUgQVVER0xCUlZPV0xQV0VOX1BFUklP RElDX09OX0NZQ0xFX01BU0sgICAgICAgICAgICAweDNmZmYNCisjZGVmaW5lIEFVREdMQlJWT1dM UFdFTl9QRVJJT0RJQ19PTl9DWUNMRV9NQVNLX1NGVCAgICAgICAgKDB4M2ZmZiA8PCAwKQ0KKw0K Ky8qIEFGRV9WT1dfUEVSSU9ESUNfQ0ZHMjggKi8NCisjZGVmaW5lIEFVRERJR01JQzFFTl9QRVJJ T0RJQ19NT0RFX1NGVCAgICAgICAgICAgICAgICAgICAgMTUNCisjZGVmaW5lIEFVRERJR01JQzFF Tl9QRVJJT0RJQ19NT0RFX01BU0sgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBBVURE SUdNSUMxRU5fUEVSSU9ESUNfTU9ERV9NQVNLX1NGVCAgICAgICAgICAgICAgICgweDEgPDwgMTUp DQorI2RlZmluZSBBVURESUdNSUMxRU5fUEVSSU9ESUNfSU5WRVJTRV9TRlQgICAgICAgICAgICAg ICAgIDE0DQorI2RlZmluZSBBVURESUdNSUMxRU5fUEVSSU9ESUNfSU5WRVJTRV9NQVNLICAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgQVVERElHTUlDMUVOX1BFUklPRElDX0lOVkVSU0VfTUFT S19TRlQgICAgICAgICAgICAoMHgxIDw8IDE0KQ0KKyNkZWZpbmUgQVVERElHTUlDMUVOX1BFUklP RElDX09OX0NZQ0xFX1NGVCAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBBVURESUdNSUMxRU5f UEVSSU9ESUNfT05fQ1lDTEVfTUFTSyAgICAgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgQVVE RElHTUlDMUVOX1BFUklPRElDX09OX0NZQ0xFX01BU0tfU0ZUICAgICAgICAgICAoMHgzZmZmIDw8 IDApDQorDQorLyogQUZFX1ZPV19QRVJJT0RJQ19DRkcyOSAqLw0KKyNkZWZpbmUgQVVEUFdEQk1J Q0JJQVMyX1BFUklPRElDX01PREVfU0ZUICAgICAgICAgICAgICAgICAxNQ0KKyNkZWZpbmUgQVVE UFdEQk1JQ0JJQVMyX1BFUklPRElDX01PREVfTUFTSyAgICAgICAgICAgICAgICAweDENCisjZGVm aW5lIEFVRFBXREJNSUNCSUFTMl9QRVJJT0RJQ19NT0RFX01BU0tfU0ZUICAgICAgICAgICAgKDB4 MSA8PCAxNSkNCisjZGVmaW5lIEFVRFBXREJNSUNCSUFTMl9QRVJJT0RJQ19JTlZFUlNFX1NGVCAg ICAgICAgICAgICAgMTQNCisjZGVmaW5lIEFVRFBXREJNSUNCSUFTMl9QRVJJT0RJQ19JTlZFUlNF X01BU0sgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBBVURQV0RCTUlDQklBUzJfUEVSSU9ESUNf SU5WRVJTRV9NQVNLX1NGVCAgICAgICAgICgweDEgPDwgMTQpDQorI2RlZmluZSBBVURQV0RCTUlD QklBUzJfUEVSSU9ESUNfT05fQ1lDTEVfU0ZUICAgICAgICAgICAgIDANCisjZGVmaW5lIEFVRFBX REJNSUNCSUFTMl9QRVJJT0RJQ19PTl9DWUNMRV9NQVNLICAgICAgICAgICAgMHgzZmZmDQorI2Rl ZmluZSBBVURQV0RCTUlDQklBUzJfUEVSSU9ESUNfT05fQ1lDTEVfTUFTS19TRlQgICAgICAgICgw eDNmZmYgPDwgMCkNCisNCisvKiBBRkVfVk9XX1BFUklPRElDX0NGRzMwICovDQorI2RlZmluZSBW T1dfT05fQ0gyX1BFUklPRElDX01PREVfU0ZUICAgICAgICAgICAgICAgICAgICAgIDE1DQorI2Rl ZmluZSBWT1dfT05fQ0gyX1BFUklPRElDX01PREVfTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4 MQ0KKyNkZWZpbmUgVk9XX09OX0NIMl9QRVJJT0RJQ19NT0RFX01BU0tfU0ZUICAgICAgICAgICAg ICAgICAoMHgxIDw8IDE1KQ0KKyNkZWZpbmUgVk9XX09OX0NIMl9QRVJJT0RJQ19JTlZFUlNFX1NG VCAgICAgICAgICAgICAgICAgICAxNA0KKyNkZWZpbmUgVk9XX09OX0NIMl9QRVJJT0RJQ19JTlZF UlNFX01BU0sgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFZPV19PTl9DSDJfUEVSSU9E SUNfSU5WRVJTRV9NQVNLX1NGVCAgICAgICAgICAgICAgKDB4MSA8PCAxNCkNCisjZGVmaW5lIFZP V19PTl9DSDJfUEVSSU9ESUNfT05fQ1lDTEVfU0ZUICAgICAgICAgICAgICAgICAgMA0KKyNkZWZp bmUgVk9XX09OX0NIMl9QRVJJT0RJQ19PTl9DWUNMRV9NQVNLICAgICAgICAgICAgICAgICAweDNm ZmYNCisjZGVmaW5lIFZPV19PTl9DSDJfUEVSSU9ESUNfT05fQ1lDTEVfTUFTS19TRlQgICAgICAg ICAgICAgKDB4M2ZmZiA8PCAwKQ0KKw0KKy8qIEFGRV9WT1dfUEVSSU9ESUNfQ0ZHMzEgKi8NCisj ZGVmaW5lIERNSUNfT05fQ0gyX1BFUklPRElDX01PREVfU0ZUICAgICAgICAgICAgICAgICAgICAg MTUNCisjZGVmaW5lIERNSUNfT05fQ0gyX1BFUklPRElDX01PREVfTUFTSyAgICAgICAgICAgICAg ICAgICAgMHgxDQorI2RlZmluZSBETUlDX09OX0NIMl9QRVJJT0RJQ19NT0RFX01BU0tfU0ZUICAg ICAgICAgICAgICAgICgweDEgPDwgMTUpDQorI2RlZmluZSBETUlDX09OX0NIMl9QRVJJT0RJQ19J TlZFUlNFX1NGVCAgICAgICAgICAgICAgICAgIDE0DQorI2RlZmluZSBETUlDX09OX0NIMl9QRVJJ T0RJQ19JTlZFUlNFX01BU0sgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgRE1JQ19PTl9D SDJfUEVSSU9ESUNfSU5WRVJTRV9NQVNLX1NGVCAgICAgICAgICAgICAoMHgxIDw8IDE0KQ0KKyNk ZWZpbmUgRE1JQ19PTl9DSDJfUEVSSU9ESUNfT05fQ1lDTEVfU0ZUICAgICAgICAgICAgICAgICAw DQorI2RlZmluZSBETUlDX09OX0NIMl9QRVJJT0RJQ19PTl9DWUNMRV9NQVNLICAgICAgICAgICAg ICAgIDB4M2ZmZg0KKyNkZWZpbmUgRE1JQ19PTl9DSDJfUEVSSU9ESUNfT05fQ1lDTEVfTUFTS19T RlQgICAgICAgICAgICAoMHgzZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19QRVJJT0RJQ19DRkcz MiAqLw0KKyNkZWZpbmUgQVVEUFJFQU1QUk9OX1BFUklPRElDX09GRl9DWUNMRV9TRlQgICAgICAg ICAgICAgICAwDQorI2RlZmluZSBBVURQUkVBTVBST05fUEVSSU9ESUNfT0ZGX0NZQ0xFX01BU0sg ICAgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgQVVEUFJFQU1QUk9OX1BFUklPRElDX09GRl9D WUNMRV9NQVNLX1NGVCAgICAgICAgICAoMHgzZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19QRVJJ T0RJQ19DRkczMyAqLw0KKyNkZWZpbmUgQVVEUFJFQU1QUkRDUFJFQ0hBUkdFX1BFUklPRElDX09G Rl9DWUNMRV9TRlQgICAgICAwDQorI2RlZmluZSBBVURQUkVBTVBSRENQUkVDSEFSR0VfUEVSSU9E SUNfT0ZGX0NZQ0xFX01BU0sgICAgIDB4M2ZmZg0KKyNkZWZpbmUgQVVEUFJFQU1QUkRDUFJFQ0hB UkdFX1BFUklPRElDX09GRl9DWUNMRV9NQVNLX1NGVCAoMHgzZmZmIDw8IDApDQorDQorLyogQUZF X1ZPV19QRVJJT0RJQ19DRkczNCAqLw0KKyNkZWZpbmUgQVVEQURDUlBXUlVQX1BFUklPRElDX09G Rl9DWUNMRV9TRlQgICAgICAgICAgICAgICAwDQorI2RlZmluZSBBVURBRENSUFdSVVBfUEVSSU9E SUNfT0ZGX0NZQ0xFX01BU0sgICAgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgQVVEQURDUlBX UlVQX1BFUklPRElDX09GRl9DWUNMRV9NQVNLX1NGVCAgICAgICAgICAoMHgzZmZmIDw8IDApDQor DQorLyogQUZFX1ZPV19QRVJJT0RJQ19DRkczNSAqLw0KKyNkZWZpbmUgQVVER0xCUlZPV0xQV0VO X1BFUklPRElDX09GRl9DWUNMRV9TRlQgICAgICAgICAgICAwDQorI2RlZmluZSBBVURHTEJSVk9X TFBXRU5fUEVSSU9ESUNfT0ZGX0NZQ0xFX01BU0sgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUg QVVER0xCUlZPV0xQV0VOX1BFUklPRElDX09GRl9DWUNMRV9NQVNLX1NGVCAgICAgICAoMHgzZmZm IDw8IDApDQorDQorLyogQUZFX1ZPV19QRVJJT0RJQ19DRkczNiAqLw0KKyNkZWZpbmUgQVVERElH TUlDMUVOX1BFUklPRElDX09GRl9DWUNMRV9TRlQgICAgICAgICAgICAgICAwDQorI2RlZmluZSBB VURESUdNSUMxRU5fUEVSSU9ESUNfT0ZGX0NZQ0xFX01BU0sgICAgICAgICAgICAgIDB4M2ZmZg0K KyNkZWZpbmUgQVVERElHTUlDMUVOX1BFUklPRElDX09GRl9DWUNMRV9NQVNLX1NGVCAgICAgICAg ICAoMHgzZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19QRVJJT0RJQ19DRkczNyAqLw0KKyNkZWZp bmUgQVVEUFdEQk1JQ0JJQVMyX1BFUklPRElDX09GRl9DWUNMRV9TRlQgICAgICAgICAgICAwDQor I2RlZmluZSBBVURQV0RCTUlDQklBUzJfUEVSSU9ESUNfT0ZGX0NZQ0xFX01BU0sgICAgICAgICAg IDB4M2ZmZg0KKyNkZWZpbmUgQVVEUFdEQk1JQ0JJQVMyX1BFUklPRElDX09GRl9DWUNMRV9NQVNL X1NGVCAgICAgICAoMHgzZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19QRVJJT0RJQ19DRkczOCAq Lw0KKyNkZWZpbmUgVk9XX09OX0NIMl9QRVJJT0RJQ19PRkZfQ1lDTEVfU0ZUICAgICAgICAgICAg ICAgICAwDQorI2RlZmluZSBWT1dfT05fQ0gyX1BFUklPRElDX09GRl9DWUNMRV9NQVNLICAgICAg ICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgVk9XX09OX0NIMl9QRVJJT0RJQ19PRkZfQ1lDTEVf TUFTS19TRlQgICAgICAgICAgICAoMHgzZmZmIDw8IDApDQorDQorLyogQUZFX1ZPV19QRVJJT0RJ Q19DRkczOSAqLw0KKyNkZWZpbmUgRE1JQ19PTl9DSDJfUEVSSU9ESUNfT0ZGX0NZQ0xFX1NGVCAg ICAgICAgICAgICAgICAwDQorI2RlZmluZSBETUlDX09OX0NIMl9QRVJJT0RJQ19PRkZfQ1lDTEVf TUFTSyAgICAgICAgICAgICAgIDB4M2ZmZg0KKyNkZWZpbmUgRE1JQ19PTl9DSDJfUEVSSU9ESUNf T0ZGX0NZQ0xFX01BU0tfU0ZUICAgICAgICAgICAoMHgzZmZmIDw8IDApDQorDQorLyogQUZFX1ZP V19QRVJJT0RJQ19NT04wICovDQorI2RlZmluZSBWT1dfUEVSSU9ESUNfTU9OMF9TRlQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFZPV19QRVJJT0RJQ19NT04wX01BU0sg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZmZmDQorI2RlZmluZSBWT1dfUEVSSU9ESUNf TU9OMF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICgweGZmZmYgPDwgMCkNCisNCisv KiBBRkVfVk9XX1BFUklPRElDX01PTjEgKi8NCisjZGVmaW5lIFZPV19QRVJJT0RJQ19NT04xX1NG VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgVk9XX1BFUklPRElDX01P TjFfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmZmYNCisjZGVmaW5lIFZPV19Q RVJJT0RJQ19NT04xX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgKDB4ZmZmZiA8PCAw KQ0KKw0KKy8qIEFGRV9WT1dfUEVSSU9ESUNfTU9OMiAqLw0KKyNkZWZpbmUgVk9XX1BFUklPRElD X0NPVU5UX01PTl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBWT1dfUEVS SU9ESUNfQ09VTlRfTU9OX01BU0sgICAgICAgICAgICAgICAgICAgICAgIDB4ZmZmZg0KKyNkZWZp bmUgVk9XX1BFUklPRElDX0NPVU5UX01PTl9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAoMHhm ZmZmIDw8IDApDQorDQorLyogQUZFX05DUF9DRkcwICovDQorI2RlZmluZSAgUkdfTkNQX0NLMV9W QUxJRF9DTlRfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgIDkNCisjZGVmaW5lICBSR19OQ1Bf Q0sxX1ZBTElEX0NOVF9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgMHg3Zg0KKyNkZWZpbmUg IFJHX05DUF9DSzFfVkFMSURfQ05UX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAoMHg3ZiA8 PCA5KQ0KKyNkZWZpbmUgUkdfTkNQX0FESVRIX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA4DQorI2RlZmluZSBSR19OQ1BfQURJVEhfTUFTSyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfTkNQX0FESVRIX01BU0tfU0ZUICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDgpDQorI2RlZmluZSBSR19OQ1BfRElUSEVSX0VO X1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcNCisjZGVmaW5lIFJHX05DUF9ESVRI RVJfRU5fTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19O Q1BfRElUSEVSX0VOX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgNykN CisjZGVmaW5lIFJHX05DUF9ESVRIRVJfRklYRURfQ0swX0FDSzFfMlBfU0ZUICAgICAgICAgICAg ICAgNA0KKyNkZWZpbmUgUkdfTkNQX0RJVEhFUl9GSVhFRF9DSzBfQUNLMV8yUF9NQVNLICAgICAg ICAgICAgICAweDcNCisjZGVmaW5lIFJHX05DUF9ESVRIRVJfRklYRURfQ0swX0FDSzFfMlBfTUFT S19TRlQgICAgICAgICAgKDB4NyA8PCA0KQ0KKyNkZWZpbmUgUkdfTkNQX0RJVEhFUl9GSVhFRF9D SzBfQUNLMl8yUF9TRlQgICAgICAgICAgICAgICAxDQorI2RlZmluZSBSR19OQ1BfRElUSEVSX0ZJ WEVEX0NLMF9BQ0syXzJQX01BU0sgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgUkdfTkNQX0RJ VEhFUl9GSVhFRF9DSzBfQUNLMl8yUF9NQVNLX1NGVCAgICAgICAgICAoMHg3IDw8IDEpDQorI2Rl ZmluZSBSR19OQ1BfT05fU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAN CisjZGVmaW5lIFJHX05DUF9PTl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgxDQorI2RlZmluZSBSR19OQ1BfT05fTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgweDEgPDwgMCkNCisNCisvKiBBRkVfTkNQX0NGRzEgKi8NCisjZGVmaW5lIFJH X1hZX1ZBTF9DRkdfRU5fU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUNCisjZGVm aW5lIFJHX1hZX1ZBTF9DRkdfRU5fTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgx DQorI2RlZmluZSBSR19YWV9WQUxfQ0ZHX0VOX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAg ICAgICgweDEgPDwgMTUpDQorI2RlZmluZSBSR19YX1ZBTF9DRkdfU0ZUICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJHX1hfVkFMX0NGR19NQVNLICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHg3Zg0KKyNkZWZpbmUgUkdfWF9WQUxfQ0ZHX01BU0tf U0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg3ZiA8PCA4KQ0KKyNkZWZpbmUgUkdf WV9WQUxfQ0ZHX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmlu ZSBSR19ZX1ZBTF9DRkdfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2YN CisjZGVmaW5lIFJHX1lfVkFMX0NGR19NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKDB4N2YgPDwgMCkNCisNCisvKiBBRkVfTkNQX0NGRzIgKi8NCisjZGVmaW5lIFJHX05DUF9O T05DTEtfU0VUX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQ0KKyNkZWZpbmUgUkdf TkNQX05PTkNMS19TRVRfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDENCisjZGVm aW5lIFJHX05DUF9OT05DTEtfU0VUX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgKDB4 MSA8PCAxKQ0KKyNkZWZpbmUgUkdfTkNQX1BERElTX0VOX1NGVCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAwDQorI2RlZmluZSBSR19OQ1BfUERESVNfRU5fTUFTSyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfTkNQX1BERElTX0VOX01BU0tfU0ZUICAg ICAgICAgICAgICAgICAgICAgICAgICAoMHgxIDw8IDApDQorDQorLyogQVVERU5DX0FOQV9DT04w ICovDQorI2RlZmluZSBSR19BVURQUkVBTVBMT05fU0ZUICAgICAgICAgICAgICAgICAgMA0KKyNk ZWZpbmUgUkdfQVVEUFJFQU1QTE9OX01BU0sgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUg UkdfQVVEUFJFQU1QTE9OX01BU0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgMCkNCisjZGVmaW5l IFJHX0FVRFBSRUFNUExEQ0NFTl9TRlQgICAgICAgICAgICAgICAxDQorI2RlZmluZSBSR19BVURQ UkVBTVBMRENDRU5fTUFTSyAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURQUkVBTVBM RENDRU5fTUFTS19TRlQgICAgICAgICAgKDB4MSA8PCAxKQ0KKyNkZWZpbmUgUkdfQVVEUFJFQU1Q TERDUFJFQ0hBUkdFX1NGVCAgICAgICAgIDINCisjZGVmaW5lIFJHX0FVRFBSRUFNUExEQ1BSRUNI QVJHRV9NQVNLICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRFBSRUFNUExEQ1BSRUNIQVJHRV9N QVNLX1NGVCAgICAoMHgxIDw8IDIpDQorI2RlZmluZSBSR19BVURQUkVBTVBMUEdBVEVTVF9TRlQg ICAgICAgICAgICAgMw0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QTFBHQVRFU1RfTUFTSyAgICAgICAg ICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QTFBHQVRFU1RfTUFTS19TRlQgICAgICAgICgw eDEgPDwgMykNCisjZGVmaW5lIFJHX0FVRFBSRUFNUExWU0NBTEVfU0ZUICAgICAgICAgICAgICA0 DQorI2RlZmluZSBSR19BVURQUkVBTVBMVlNDQUxFX01BU0sgICAgICAgICAgICAgMHgzDQorI2Rl ZmluZSBSR19BVURQUkVBTVBMVlNDQUxFX01BU0tfU0ZUICAgICAgICAgKDB4MyA8PCA0KQ0KKyNk ZWZpbmUgUkdfQVVEUFJFQU1QTElOUFVUU0VMX1NGVCAgICAgICAgICAgIDYNCisjZGVmaW5lIFJH X0FVRFBSRUFNUExJTlBVVFNFTF9NQVNLICAgICAgICAgICAweDMNCisjZGVmaW5lIFJHX0FVRFBS RUFNUExJTlBVVFNFTF9NQVNLX1NGVCAgICAgICAoMHgzIDw8IDYpDQorI2RlZmluZSBSR19BVURQ UkVBTVBMR0FJTl9TRlQgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QTEdB SU5fTUFTSyAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QTEdBSU5fTUFT S19TRlQgICAgICAgICAgICgweDcgPDwgOCkNCisjZGVmaW5lIFJHX0JVTEtMX1ZDTV9FTl9TRlQg ICAgICAgICAgICAgICAgICAxMQ0KKyNkZWZpbmUgUkdfQlVMS0xfVkNNX0VOX01BU0sgICAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQlVMS0xfVkNNX0VOX01BU0tfU0ZUICAgICAgICAg ICAgICgweDEgPDwgMTEpDQorI2RlZmluZSBSR19BVURBRENMUFdSVVBfU0ZUICAgICAgICAgICAg ICAgICAgMTINCisjZGVmaW5lIFJHX0FVREFEQ0xQV1JVUF9NQVNLICAgICAgICAgICAgICAgICAw eDENCisjZGVmaW5lIFJHX0FVREFEQ0xQV1JVUF9NQVNLX1NGVCAgICAgICAgICAgICAoMHgxIDw8 IDEyKQ0KKyNkZWZpbmUgUkdfQVVEQURDTElOUFVUU0VMX1NGVCAgICAgICAgICAgICAgIDEzDQor I2RlZmluZSBSR19BVURBRENMSU5QVVRTRUxfTUFTSyAgICAgICAgICAgICAgMHgzDQorI2RlZmlu ZSBSR19BVURBRENMSU5QVVRTRUxfTUFTS19TRlQgICAgICAgICAgKDB4MyA8PCAxMykNCisNCisv KiBBVURFTkNfQU5BX0NPTjEgKi8NCisjZGVmaW5lIFJHX0FVRFBSRUFNUFJPTl9TRlQgICAgICAg ICAgICAgICAgICAwDQorI2RlZmluZSBSR19BVURQUkVBTVBST05fTUFTSyAgICAgICAgICAgICAg ICAgMHgxDQorI2RlZmluZSBSR19BVURQUkVBTVBST05fTUFTS19TRlQgICAgICAgICAgICAgKDB4 MSA8PCAwKQ0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QUkRDQ0VOX1NGVCAgICAgICAgICAgICAgIDEN CisjZGVmaW5lIFJHX0FVRFBSRUFNUFJEQ0NFTl9NQVNLICAgICAgICAgICAgICAweDENCisjZGVm aW5lIFJHX0FVRFBSRUFNUFJEQ0NFTl9NQVNLX1NGVCAgICAgICAgICAoMHgxIDw8IDEpDQorI2Rl ZmluZSBSR19BVURQUkVBTVBSRENQUkVDSEFSR0VfU0ZUICAgICAgICAgMg0KKyNkZWZpbmUgUkdf QVVEUFJFQU1QUkRDUFJFQ0hBUkdFX01BU0sgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEUFJF QU1QUkRDUFJFQ0hBUkdFX01BU0tfU0ZUICAgICgweDEgPDwgMikNCisjZGVmaW5lIFJHX0FVRFBS RUFNUFJQR0FURVNUX1NGVCAgICAgICAgICAgICAzDQorI2RlZmluZSBSR19BVURQUkVBTVBSUEdB VEVTVF9NQVNLICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURQUkVBTVBSUEdBVEVTVF9N QVNLX1NGVCAgICAgICAgKDB4MSA8PCAzKQ0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QUlZTQ0FMRV9T RlQgICAgICAgICAgICAgIDQNCisjZGVmaW5lIFJHX0FVRFBSRUFNUFJWU0NBTEVfTUFTSyAgICAg ICAgICAgICAweDMNCisjZGVmaW5lIFJHX0FVRFBSRUFNUFJWU0NBTEVfTUFTS19TRlQgICAgICAg ICAoMHgzIDw8IDQpDQorI2RlZmluZSBSR19BVURQUkVBTVBSSU5QVVRTRUxfU0ZUICAgICAgICAg ICAgNg0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QUklOUFVUU0VMX01BU0sgICAgICAgICAgIDB4Mw0K KyNkZWZpbmUgUkdfQVVEUFJFQU1QUklOUFVUU0VMX01BU0tfU0ZUICAgICAgICgweDMgPDwgNikN CisjZGVmaW5lIFJHX0FVRFBSRUFNUFJHQUlOX1NGVCAgICAgICAgICAgICAgICA4DQorI2RlZmlu ZSBSR19BVURQUkVBTVBSR0FJTl9NQVNLICAgICAgICAgICAgICAgMHg3DQorI2RlZmluZSBSR19B VURQUkVBTVBSR0FJTl9NQVNLX1NGVCAgICAgICAgICAgKDB4NyA8PCA4KQ0KKyNkZWZpbmUgUkdf QlVMS1JfVkNNX0VOX1NGVCAgICAgICAgICAgICAgICAgIDExDQorI2RlZmluZSBSR19CVUxLUl9W Q01fRU5fTUFTSyAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19CVUxLUl9WQ01fRU5f TUFTS19TRlQgICAgICAgICAgICAgKDB4MSA8PCAxMSkNCisjZGVmaW5lIFJHX0FVREFEQ1JQV1JV UF9TRlQgICAgICAgICAgICAgICAgICAxMg0KKyNkZWZpbmUgUkdfQVVEQURDUlBXUlVQX01BU0sg ICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEQURDUlBXUlVQX01BU0tfU0ZUICAg ICAgICAgICAgICgweDEgPDwgMTIpDQorI2RlZmluZSBSR19BVURBRENSSU5QVVRTRUxfU0ZUICAg ICAgICAgICAgICAgMTMNCisjZGVmaW5lIFJHX0FVREFEQ1JJTlBVVFNFTF9NQVNLICAgICAgICAg ICAgICAweDMNCisjZGVmaW5lIFJHX0FVREFEQ1JJTlBVVFNFTF9NQVNLX1NGVCAgICAgICAgICAo MHgzIDw8IDEzKQ0KKw0KKy8qIEFVREVOQ19BTkFfQ09OMiAqLw0KKyNkZWZpbmUgUkdfQVVEUFJF QU1QM09OX1NGVCAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FVRFBSRUFNUDNPTl9N QVNLICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRFBSRUFNUDNPTl9NQVNLX1NG VCAgICAgICAgICAgICAoMHgxIDw8IDApDQorI2RlZmluZSBSR19BVURQUkVBTVAzRENDRU5fU0ZU ICAgICAgICAgICAgICAgMQ0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QM0RDQ0VOX01BU0sgICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QM0RDQ0VOX01BU0tfU0ZUICAgICAgICAg ICgweDEgPDwgMSkNCisjZGVmaW5lIFJHX0FVRFBSRUFNUDNEQ1BSRUNIQVJHRV9TRlQgICAgICAg ICAyDQorI2RlZmluZSBSR19BVURQUkVBTVAzRENQUkVDSEFSR0VfTUFTSyAgICAgICAgMHgxDQor I2RlZmluZSBSR19BVURQUkVBTVAzRENQUkVDSEFSR0VfTUFTS19TRlQgICAgKDB4MSA8PCAyKQ0K KyNkZWZpbmUgUkdfQVVEUFJFQU1QM1BHQVRFU1RfU0ZUICAgICAgICAgICAgIDMNCisjZGVmaW5l IFJHX0FVRFBSRUFNUDNQR0FURVNUX01BU0sgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FV RFBSRUFNUDNQR0FURVNUX01BU0tfU0ZUICAgICAgICAoMHgxIDw8IDMpDQorI2RlZmluZSBSR19B VURQUkVBTVAzVlNDQUxFX1NGVCAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgUkdfQVVEUFJFQU1Q M1ZTQ0FMRV9NQVNLICAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QM1ZTQ0FM RV9NQVNLX1NGVCAgICAgICAgICgweDMgPDwgNCkNCisjZGVmaW5lIFJHX0FVRFBSRUFNUDNJTlBV VFNFTF9TRlQgICAgICAgICAgICA2DQorI2RlZmluZSBSR19BVURQUkVBTVAzSU5QVVRTRUxfTUFT SyAgICAgICAgICAgMHgzDQorI2RlZmluZSBSR19BVURQUkVBTVAzSU5QVVRTRUxfTUFTS19TRlQg ICAgICAgKDB4MyA8PCA2KQ0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QM0dBSU5fU0ZUICAgICAgICAg ICAgICAgIDgNCisjZGVmaW5lIFJHX0FVRFBSRUFNUDNHQUlOX01BU0sgICAgICAgICAgICAgICAw eDcNCisjZGVmaW5lIFJHX0FVRFBSRUFNUDNHQUlOX01BU0tfU0ZUICAgICAgICAgICAoMHg3IDw8 IDgpDQorI2RlZmluZSBSR19CVUxLM19WQ01fRU5fU0ZUICAgICAgICAgICAgICAgICAgMTENCisj ZGVmaW5lIFJHX0JVTEszX1ZDTV9FTl9NQVNLICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5l IFJHX0JVTEszX1ZDTV9FTl9NQVNLX1NGVCAgICAgICAgICAgICAoMHgxIDw8IDExKQ0KKyNkZWZp bmUgUkdfQVVEQURDM1BXUlVQX1NGVCAgICAgICAgICAgICAgICAgIDEyDQorI2RlZmluZSBSR19B VURBREMzUFdSVVBfTUFTSyAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURBREMz UFdSVVBfTUFTS19TRlQgICAgICAgICAgICAgKDB4MSA8PCAxMikNCisjZGVmaW5lIFJHX0FVREFE QzNJTlBVVFNFTF9TRlQgICAgICAgICAgICAgICAxMw0KKyNkZWZpbmUgUkdfQVVEQURDM0lOUFVU U0VMX01BU0sgICAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVEQURDM0lOUFVUU0VMX01B U0tfU0ZUICAgICAgICAgICgweDMgPDwgMTMpDQorDQorLyogQVVERU5DX0FOQV9DT04zICovDQor I2RlZmluZSBSR19BVURVTEhBTEZCSUFTX1NGVCAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUg UkdfQVVEVUxIQUxGQklBU19NQVNLICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVE VUxIQUxGQklBU19NQVNLX1NGVCAgICAgICAgICAgICgweDEgPDwgMCkNCisjZGVmaW5lIFJHX0FV REdMQlZPV0xQV0VOX1NGVCAgICAgICAgICAgICAgICAxDQorI2RlZmluZSBSR19BVURHTEJWT1dM UFdFTl9NQVNLICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURHTEJWT1dMUFdFTl9N QVNLX1NGVCAgICAgICAgICAgKDB4MSA8PCAxKQ0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QTFBFTl9T RlQgICAgICAgICAgICAgICAgIDINCisjZGVmaW5lIFJHX0FVRFBSRUFNUExQRU5fTUFTSyAgICAg ICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRFBSRUFNUExQRU5fTUFTS19TRlQgICAgICAg ICAgICAoMHgxIDw8IDIpDQorI2RlZmluZSBSR19BVURBREMxU1RTVEFHRUxQRU5fU0ZUICAgICAg ICAgICAgMw0KKyNkZWZpbmUgUkdfQVVEQURDMVNUU1RBR0VMUEVOX01BU0sgICAgICAgICAgIDB4 MQ0KKyNkZWZpbmUgUkdfQVVEQURDMVNUU1RBR0VMUEVOX01BU0tfU0ZUICAgICAgICgweDEgPDwg MykNCisjZGVmaW5lIFJHX0FVREFEQzJORFNUQUdFTFBFTl9TRlQgICAgICAgICAgICA0DQorI2Rl ZmluZSBSR19BVURBREMyTkRTVEFHRUxQRU5fTUFTSyAgICAgICAgICAgMHgxDQorI2RlZmluZSBS R19BVURBREMyTkRTVEFHRUxQRU5fTUFTS19TRlQgICAgICAgKDB4MSA8PCA0KQ0KKyNkZWZpbmUg UkdfQVVEQURDRkxBU0hMUEVOX1NGVCAgICAgICAgICAgICAgIDUNCisjZGVmaW5lIFJHX0FVREFE Q0ZMQVNITFBFTl9NQVNLICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVREFEQ0ZMQVNI TFBFTl9NQVNLX1NGVCAgICAgICAgICAoMHgxIDw8IDUpDQorI2RlZmluZSBSR19BVURQUkVBTVBJ RERURVNUX1NGVCAgICAgICAgICAgICAgNg0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QSUREVEVTVF9N QVNLICAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QSUREVEVTVF9NQVNLX1NG VCAgICAgICAgICgweDMgPDwgNikNCisjZGVmaW5lIFJHX0FVREFEQzFTVFNUQUdFSUREVEVTVF9T RlQgICAgICAgICA4DQorI2RlZmluZSBSR19BVURBREMxU1RTVEFHRUlERFRFU1RfTUFTSyAgICAg ICAgMHgzDQorI2RlZmluZSBSR19BVURBREMxU1RTVEFHRUlERFRFU1RfTUFTS19TRlQgICAgKDB4 MyA8PCA4KQ0KKyNkZWZpbmUgUkdfQVVEQURDMk5EU1RBR0VJRERURVNUX1NGVCAgICAgICAgIDEw DQorI2RlZmluZSBSR19BVURBREMyTkRTVEFHRUlERFRFU1RfTUFTSyAgICAgICAgMHgzDQorI2Rl ZmluZSBSR19BVURBREMyTkRTVEFHRUlERFRFU1RfTUFTS19TRlQgICAgKDB4MyA8PCAxMCkNCisj ZGVmaW5lIFJHX0FVREFEQ1JFRkJVRklERFRFU1RfU0ZUICAgICAgICAgICAxMg0KKyNkZWZpbmUg UkdfQVVEQURDUkVGQlVGSUREVEVTVF9NQVNLICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVE QURDUkVGQlVGSUREVEVTVF9NQVNLX1NGVCAgICAgICgweDMgPDwgMTIpDQorI2RlZmluZSBSR19B VURBRENGTEFTSElERFRFU1RfU0ZUICAgICAgICAgICAgMTQNCisjZGVmaW5lIFJHX0FVREFEQ0ZM QVNISUREVEVTVF9NQVNLICAgICAgICAgICAweDMNCisjZGVmaW5lIFJHX0FVREFEQ0ZMQVNISURE VEVTVF9NQVNLX1NGVCAgICAgICAoMHgzIDw8IDE0KQ0KKw0KKy8qIEFVREVOQ19BTkFfQ09ONCAq Lw0KKyNkZWZpbmUgUkdfQVVEUlVMSEFMRkJJQVNfU0ZUICAgICAgICAgICAgICAgIDANCisjZGVm aW5lIFJHX0FVRFJVTEhBTEZCSUFTX01BU0sgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJH X0FVRFJVTEhBTEZCSUFTX01BU0tfU0ZUICAgICAgICAgICAoMHgxIDw8IDApDQorI2RlZmluZSBS R19BVURHTEJSVk9XTFBXRU5fU0ZUICAgICAgICAgICAgICAgMQ0KKyNkZWZpbmUgUkdfQVVER0xC UlZPV0xQV0VOX01BU0sgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVER0xCUlZPV0xQ V0VOX01BU0tfU0ZUICAgICAgICAgICgweDEgPDwgMSkNCisjZGVmaW5lIFJHX0FVRFJQUkVBTVBM UEVOX1NGVCAgICAgICAgICAgICAgICAyDQorI2RlZmluZSBSR19BVURSUFJFQU1QTFBFTl9NQVNL ICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURSUFJFQU1QTFBFTl9NQVNLX1NGVCAg ICAgICAgICAgKDB4MSA8PCAyKQ0KKyNkZWZpbmUgUkdfQVVEUkFEQzFTVFNUQUdFTFBFTl9TRlQg ICAgICAgICAgIDMNCisjZGVmaW5lIFJHX0FVRFJBREMxU1RTVEFHRUxQRU5fTUFTSyAgICAgICAg ICAweDENCisjZGVmaW5lIFJHX0FVRFJBREMxU1RTVEFHRUxQRU5fTUFTS19TRlQgICAgICAoMHgx IDw8IDMpDQorI2RlZmluZSBSR19BVURSQURDMk5EU1RBR0VMUEVOX1NGVCAgICAgICAgICAgNA0K KyNkZWZpbmUgUkdfQVVEUkFEQzJORFNUQUdFTFBFTl9NQVNLICAgICAgICAgIDB4MQ0KKyNkZWZp bmUgUkdfQVVEUkFEQzJORFNUQUdFTFBFTl9NQVNLX1NGVCAgICAgICgweDEgPDwgNCkNCisjZGVm aW5lIFJHX0FVRFJBRENGTEFTSExQRU5fU0ZUICAgICAgICAgICAgICA1DQorI2RlZmluZSBSR19B VURSQURDRkxBU0hMUEVOX01BU0sgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURSQURD RkxBU0hMUEVOX01BU0tfU0ZUICAgICAgICAgKDB4MSA8PCA1KQ0KKyNkZWZpbmUgUkdfQVVEUlBS RUFNUElERFRFU1RfU0ZUICAgICAgICAgICAgIDYNCisjZGVmaW5lIFJHX0FVRFJQUkVBTVBJRERU RVNUX01BU0sgICAgICAgICAgICAweDMNCisjZGVmaW5lIFJHX0FVRFJQUkVBTVBJRERURVNUX01B U0tfU0ZUICAgICAgICAoMHgzIDw8IDYpDQorI2RlZmluZSBSR19BVURSQURDMVNUU1RBR0VJRERU RVNUX1NGVCAgICAgICAgOA0KKyNkZWZpbmUgUkdfQVVEUkFEQzFTVFNUQUdFSUREVEVTVF9NQVNL ICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVEUkFEQzFTVFNUQUdFSUREVEVTVF9NQVNLX1NGVCAg ICgweDMgPDwgOCkNCisjZGVmaW5lIFJHX0FVRFJBREMyTkRTVEFHRUlERFRFU1RfU0ZUICAgICAg ICAxMA0KKyNkZWZpbmUgUkdfQVVEUkFEQzJORFNUQUdFSUREVEVTVF9NQVNLICAgICAgIDB4Mw0K KyNkZWZpbmUgUkdfQVVEUkFEQzJORFNUQUdFSUREVEVTVF9NQVNLX1NGVCAgICgweDMgPDwgMTAp DQorI2RlZmluZSBSR19BVURSQURDUkVGQlVGSUREVEVTVF9TRlQgICAgICAgICAgMTINCisjZGVm aW5lIFJHX0FVRFJBRENSRUZCVUZJRERURVNUX01BU0sgICAgICAgICAweDMNCisjZGVmaW5lIFJH X0FVRFJBRENSRUZCVUZJRERURVNUX01BU0tfU0ZUICAgICAoMHgzIDw8IDEyKQ0KKyNkZWZpbmUg UkdfQVVEUkFEQ0ZMQVNISUREVEVTVF9TRlQgICAgICAgICAgIDE0DQorI2RlZmluZSBSR19BVURS QURDRkxBU0hJRERURVNUX01BU0sgICAgICAgICAgMHgzDQorI2RlZmluZSBSR19BVURSQURDRkxB U0hJRERURVNUX01BU0tfU0ZUICAgICAgKDB4MyA8PCAxNCkNCisNCisvKiBBVURFTkNfQU5BX0NP TjUgKi8NCisjZGVmaW5lIFJHX0FVREFEQ0NMS1JTVEJfU0ZUICAgICAgICAgICAgICAgICAwDQor I2RlZmluZSBSR19BVURBRENDTEtSU1RCX01BU0sgICAgICAgICAgICAgICAgMHgxDQorI2RlZmlu ZSBSR19BVURBRENDTEtSU1RCX01BU0tfU0ZUICAgICAgICAgICAgKDB4MSA8PCAwKQ0KKyNkZWZp bmUgUkdfQVVEQURDQ0xLU0VMX1NGVCAgICAgICAgICAgICAgICAgIDENCisjZGVmaW5lIFJHX0FV REFEQ0NMS1NFTF9NQVNLICAgICAgICAgICAgICAgICAweDMNCisjZGVmaW5lIFJHX0FVREFEQ0NM S1NFTF9NQVNLX1NGVCAgICAgICAgICAgICAoMHgzIDw8IDEpDQorI2RlZmluZSBSR19BVURBREND TEtTT1VSQ0VfU0ZUICAgICAgICAgICAgICAgMw0KKyNkZWZpbmUgUkdfQVVEQURDQ0xLU09VUkNF X01BU0sgICAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVEQURDQ0xLU09VUkNFX01BU0tf U0ZUICAgICAgICAgICgweDMgPDwgMykNCisjZGVmaW5lIFJHX0FVREFEQ0NMS0dFTk1PREVfU0ZU ICAgICAgICAgICAgICA1DQorI2RlZmluZSBSR19BVURBRENDTEtHRU5NT0RFX01BU0sgICAgICAg ICAgICAgMHgzDQorI2RlZmluZSBSR19BVURBRENDTEtHRU5NT0RFX01BU0tfU0ZUICAgICAgICAg KDB4MyA8PCA1KQ0KKyNkZWZpbmUgUkdfQVVEUFJFQU1QX0FDQ0ZTX1NGVCAgICAgICAgICAgICAg IDcNCisjZGVmaW5lIFJHX0FVRFBSRUFNUF9BQ0NGU19NQVNLICAgICAgICAgICAgICAweDENCisj ZGVmaW5lIFJHX0FVRFBSRUFNUF9BQ0NGU19NQVNLX1NGVCAgICAgICAgICAoMHgxIDw8IDcpDQor I2RlZmluZSBSR19BVURQUkVBTVBBQUZFTl9TRlQgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUg UkdfQVVEUFJFQU1QQUFGRU5fTUFTSyAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVE UFJFQU1QQUFGRU5fTUFTS19TRlQgICAgICAgICAgICgweDEgPDwgOCkNCisjZGVmaW5lIFJHX0RD Q1ZDTUJVRkxQTU9EU0VMX1NGVCAgICAgICAgICAgICA5DQorI2RlZmluZSBSR19EQ0NWQ01CVUZM UE1PRFNFTF9NQVNLICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19EQ0NWQ01CVUZMUE1PRFNF TF9NQVNLX1NGVCAgICAgICAgKDB4MSA8PCA5KQ0KKyNkZWZpbmUgUkdfRENDVkNNQlVGTFBTV0VO X1NGVCAgICAgICAgICAgICAgIDEwDQorI2RlZmluZSBSR19EQ0NWQ01CVUZMUFNXRU5fTUFTSyAg ICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19EQ0NWQ01CVUZMUFNXRU5fTUFTS19TRlQgICAg ICAgICAgKDB4MSA8PCAxMCkNCisjZGVmaW5lIFJHX0FVRFNQQVJFUEdBX1NGVCAgICAgICAgICAg ICAgICAgICAxMQ0KKyNkZWZpbmUgUkdfQVVEU1BBUkVQR0FfTUFTSyAgICAgICAgICAgICAgICAg IDB4MWYNCisjZGVmaW5lIFJHX0FVRFNQQVJFUEdBX01BU0tfU0ZUICAgICAgICAgICAgICAoMHgx ZiA8PCAxMSkNCisNCisvKiBBVURFTkNfQU5BX0NPTjYgKi8NCisjZGVmaW5lIFJHX0FVREFEQzFT VFNUQUdFU0RFTkJfU0ZUICAgICAgICAgICAwDQorI2RlZmluZSBSR19BVURBREMxU1RTVEFHRVNE RU5CX01BU0sgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURBREMxU1RTVEFHRVNERU5CX01B U0tfU0ZUICAgICAgKDB4MSA8PCAwKQ0KKyNkZWZpbmUgUkdfQVVEQURDMk5EU1RBR0VSRVNFVF9T RlQgICAgICAgICAgIDENCisjZGVmaW5lIFJHX0FVREFEQzJORFNUQUdFUkVTRVRfTUFTSyAgICAg ICAgICAweDENCisjZGVmaW5lIFJHX0FVREFEQzJORFNUQUdFUkVTRVRfTUFTS19TRlQgICAgICAo MHgxIDw8IDEpDQorI2RlZmluZSBSR19BVURBREMzUkRTVEFHRVJFU0VUX1NGVCAgICAgICAgICAg Mg0KKyNkZWZpbmUgUkdfQVVEQURDM1JEU1RBR0VSRVNFVF9NQVNLICAgICAgICAgIDB4MQ0KKyNk ZWZpbmUgUkdfQVVEQURDM1JEU1RBR0VSRVNFVF9NQVNLX1NGVCAgICAgICgweDEgPDwgMikNCisj ZGVmaW5lIFJHX0FVREFEQ0ZTUkVTRVRfU0ZUICAgICAgICAgICAgICAgICAzDQorI2RlZmluZSBS R19BVURBRENGU1JFU0VUX01BU0sgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURB RENGU1JFU0VUX01BU0tfU0ZUICAgICAgICAgICAgKDB4MSA8PCAzKQ0KKyNkZWZpbmUgUkdfQVVE QURDV0lERUNNX1NGVCAgICAgICAgICAgICAgICAgIDQNCisjZGVmaW5lIFJHX0FVREFEQ1dJREVD TV9NQVNLICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVREFEQ1dJREVDTV9NQVNL X1NGVCAgICAgICAgICAgICAoMHgxIDw8IDQpDQorI2RlZmluZSBSR19BVURBRENOT1BBVEVTVF9T RlQgICAgICAgICAgICAgICAgNQ0KKyNkZWZpbmUgUkdfQVVEQURDTk9QQVRFU1RfTUFTSyAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEQURDTk9QQVRFU1RfTUFTS19TRlQgICAgICAg ICAgICgweDEgPDwgNSkNCisjZGVmaW5lIFJHX0FVREFEQ0JZUEFTU19TRlQgICAgICAgICAgICAg ICAgICA2DQorI2RlZmluZSBSR19BVURBRENCWVBBU1NfTUFTSyAgICAgICAgICAgICAgICAgMHgx DQorI2RlZmluZSBSR19BVURBRENCWVBBU1NfTUFTS19TRlQgICAgICAgICAgICAgKDB4MSA8PCA2 KQ0KKyNkZWZpbmUgUkdfQVVEQURDRkZCWVBBU1NfU0ZUICAgICAgICAgICAgICAgIDcNCisjZGVm aW5lIFJHX0FVREFEQ0ZGQllQQVNTX01BU0sgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJH X0FVREFEQ0ZGQllQQVNTX01BU0tfU0ZUICAgICAgICAgICAoMHgxIDw8IDcpDQorI2RlZmluZSBS R19BVURBRENEQUNGQkNVUlJFTlRfU0ZUICAgICAgICAgICAgOA0KKyNkZWZpbmUgUkdfQVVEQURD REFDRkJDVVJSRU5UX01BU0sgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEQURDREFDRkJD VVJSRU5UX01BU0tfU0ZUICAgICAgICgweDEgPDwgOCkNCisjZGVmaW5lIFJHX0FVREFEQ0RBQ0lE RFRFU1RfU0ZUICAgICAgICAgICAgICA5DQorI2RlZmluZSBSR19BVURBRENEQUNJRERURVNUX01B U0sgICAgICAgICAgICAgMHgzDQorI2RlZmluZSBSR19BVURBRENEQUNJRERURVNUX01BU0tfU0ZU ICAgICAgICAgKDB4MyA8PCA5KQ0KKyNkZWZpbmUgUkdfQVVEQURDREFDTlJaX1NGVCAgICAgICAg ICAgICAgICAgIDExDQorI2RlZmluZSBSR19BVURBRENEQUNOUlpfTUFTSyAgICAgICAgICAgICAg ICAgMHgxDQorI2RlZmluZSBSR19BVURBRENEQUNOUlpfTUFTS19TRlQgICAgICAgICAgICAgKDB4 MSA8PCAxMSkNCisjZGVmaW5lIFJHX0FVREFEQ05PREVNX1NGVCAgICAgICAgICAgICAgICAgICAx Mg0KKyNkZWZpbmUgUkdfQVVEQURDTk9ERU1fTUFTSyAgICAgICAgICAgICAgICAgIDB4MQ0KKyNk ZWZpbmUgUkdfQVVEQURDTk9ERU1fTUFTS19TRlQgICAgICAgICAgICAgICgweDEgPDwgMTIpDQor I2RlZmluZSBSR19BVURBRENEQUNURVNUX1NGVCAgICAgICAgICAgICAgICAgMTMNCisjZGVmaW5l IFJHX0FVREFEQ0RBQ1RFU1RfTUFTSyAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FV REFEQ0RBQ1RFU1RfTUFTS19TRlQgICAgICAgICAgICAoMHgxIDw8IDEzKQ0KKyNkZWZpbmUgUkdf QVVEQURDREFDMFAyNUZTX1NGVCAgICAgICAgICAgICAgIDE0DQorI2RlZmluZSBSR19BVURBRENE QUMwUDI1RlNfTUFTSyAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURBRENEQUMwUDI1 RlNfTUFTS19TRlQgICAgICAgICAgKDB4MSA8PCAxNCkNCisjZGVmaW5lIFJHX0FVREFEQ1JEQUMw UDI1RlNfU0ZUICAgICAgICAgICAgICAxNQ0KKyNkZWZpbmUgUkdfQVVEQURDUkRBQzBQMjVGU19N QVNLICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEQURDUkRBQzBQMjVGU19NQVNLX1NG VCAgICAgICAgICgweDEgPDwgMTUpDQorDQorLyogQVVERU5DX0FOQV9DT043ICovDQorI2RlZmlu ZSBSR19BVURBRENURVNUREFUQV9TRlQgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQVVE QURDVEVTVERBVEFfTUFTSyAgICAgICAgICAgICAgIDB4ZmZmZg0KKyNkZWZpbmUgUkdfQVVEQURD VEVTVERBVEFfTUFTS19TRlQgICAgICAgICAgICgweGZmZmYgPDwgMCkNCisNCisvKiBBVURFTkNf QU5BX0NPTjggKi8NCisjZGVmaW5lIFJHX0FVRFJDVFVORUxfU0ZUICAgICAgICAgICAgICAgICAg ICAwDQorI2RlZmluZSBSR19BVURSQ1RVTkVMX01BU0sgICAgICAgICAgICAgICAgICAgMHgxZg0K KyNkZWZpbmUgUkdfQVVEUkNUVU5FTF9NQVNLX1NGVCAgICAgICAgICAgICAgICgweDFmIDw8IDAp DQorI2RlZmluZSBSR19BVURSQ1RVTkVMU0VMX1NGVCAgICAgICAgICAgICAgICAgNQ0KKyNkZWZp bmUgUkdfQVVEUkNUVU5FTFNFTF9NQVNLICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdf QVVEUkNUVU5FTFNFTF9NQVNLX1NGVCAgICAgICAgICAgICgweDEgPDwgNSkNCisjZGVmaW5lIFJH X0FVRFJDVFVORVJfU0ZUICAgICAgICAgICAgICAgICAgICA4DQorI2RlZmluZSBSR19BVURSQ1RV TkVSX01BU0sgICAgICAgICAgICAgICAgICAgMHgxZg0KKyNkZWZpbmUgUkdfQVVEUkNUVU5FUl9N QVNLX1NGVCAgICAgICAgICAgICAgICgweDFmIDw8IDgpDQorI2RlZmluZSBSR19BVURSQ1RVTkVS U0VMX1NGVCAgICAgICAgICAgICAgICAgMTMNCisjZGVmaW5lIFJHX0FVRFJDVFVORVJTRUxfTUFT SyAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRFJDVFVORVJTRUxfTUFTS19TRlQg ICAgICAgICAgICAoMHgxIDw8IDEzKQ0KKw0KKy8qIEFVREVOQ19BTkFfQ09OOSAqLw0KKyNkZWZp bmUgUkdfQVVEM0NUVU5FTF9TRlQgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FV RDNDVFVORUxfTUFTSyAgICAgICAgICAgICAgICAgICAweDFmDQorI2RlZmluZSBSR19BVUQzQ1RV TkVMX01BU0tfU0ZUICAgICAgICAgICAgICAgKDB4MWYgPDwgMCkNCisjZGVmaW5lIFJHX0FVRDND VFVORUxTRUxfU0ZUICAgICAgICAgICAgICAgICA1DQorI2RlZmluZSBSR19BVUQzQ1RVTkVMU0VM X01BU0sgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVUQzQ1RVTkVMU0VMX01BU0tf U0ZUICAgICAgICAgICAgKDB4MSA8PCA1KQ0KKyNkZWZpbmUgUkdTX0FVRFJDVFVORTNSRUFEX1NG VCAgICAgICAgICAgICAgIDYNCisjZGVmaW5lIFJHU19BVURSQ1RVTkUzUkVBRF9NQVNLICAgICAg ICAgICAgICAweDFmDQorI2RlZmluZSBSR1NfQVVEUkNUVU5FM1JFQURfTUFTS19TRlQgICAgICAg ICAgKDB4MWYgPDwgNikNCisjZGVmaW5lIFJHX0FVRDNTUEFSRV9TRlQgICAgICAgICAgICAgICAg ICAgICAxMQ0KKyNkZWZpbmUgUkdfQVVEM1NQQVJFX01BU0sgICAgICAgICAgICAgICAgICAgIDB4 MWYNCisjZGVmaW5lIFJHX0FVRDNTUEFSRV9NQVNLX1NGVCAgICAgICAgICAgICAgICAoMHgxZiA8 PCAxMSkNCisNCisvKiBBVURFTkNfQU5BX0NPTjEwICovDQorI2RlZmluZSBSR1NfQVVEUkNUVU5F TFJFQURfU0ZUICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdTX0FVRFJDVFVORUxSRUFEX01B U0sgICAgICAgICAgICAgIDB4MWYNCisjZGVmaW5lIFJHU19BVURSQ1RVTkVMUkVBRF9NQVNLX1NG VCAgICAgICAgICAoMHgxZiA8PCAwKQ0KKyNkZWZpbmUgUkdTX0FVRFJDVFVORVJSRUFEX1NGVCAg ICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJHU19BVURSQ1RVTkVSUkVBRF9NQVNLICAgICAgICAg ICAgICAweDFmDQorI2RlZmluZSBSR1NfQVVEUkNUVU5FUlJFQURfTUFTS19TRlQgICAgICAgICAg KDB4MWYgPDwgOCkNCisNCisvKiBBVURFTkNfQU5BX0NPTjExICovDQorI2RlZmluZSBSR19BVURT UEFSRVZBMzBfU0ZUICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQVVEU1BBUkVWQTMw X01BU0sgICAgICAgICAgICAgICAgIDB4ZmYNCisjZGVmaW5lIFJHX0FVRFNQQVJFVkEzMF9NQVNL X1NGVCAgICAgICAgICAgICAoMHhmZiA8PCAwKQ0KKyNkZWZpbmUgUkdfQVVEU1BBUkVWQTE4X1NG VCAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJHX0FVRFNQQVJFVkExOF9NQVNLICAgICAg ICAgICAgICAgICAweGZmDQorI2RlZmluZSBSR19BVURTUEFSRVZBMThfTUFTS19TRlQgICAgICAg ICAgICAgKDB4ZmYgPDwgOCkNCisNCisvKiBBVURFTkNfQU5BX0NPTjEyICovDQorI2RlZmluZSBS R19BVURQR0FfREVDQVBfU0ZUICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQVVEUEdB X0RFQ0FQX01BU0sgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEUEdBX0RFQ0FQ X01BU0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgMCkNCisjZGVmaW5lIFJHX0FVRFBHQV9DQVBS QV9TRlQgICAgICAgICAgICAgICAgICAxDQorI2RlZmluZSBSR19BVURQR0FfQ0FQUkFfTUFTSyAg ICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURQR0FfQ0FQUkFfTUFTS19TRlQgICAg ICAgICAgICAgKDB4MSA8PCAxKQ0KKyNkZWZpbmUgUkdfQVVEUEdBX0FDQ0NNUF9TRlQgICAgICAg ICAgICAgICAgIDINCisjZGVmaW5lIFJHX0FVRFBHQV9BQ0NDTVBfTUFTSyAgICAgICAgICAgICAg ICAweDENCisjZGVmaW5lIFJHX0FVRFBHQV9BQ0NDTVBfTUFTS19TRlQgICAgICAgICAgICAoMHgx IDw8IDIpDQorI2RlZmluZSBSR19BVURFTkNfU1BBUkUyX1NGVCAgICAgICAgICAgICAgICAgMw0K KyNkZWZpbmUgUkdfQVVERU5DX1NQQVJFMl9NQVNLICAgICAgICAgICAgICAgIDB4MWZmZg0KKyNk ZWZpbmUgUkdfQVVERU5DX1NQQVJFMl9NQVNLX1NGVCAgICAgICAgICAgICgweDFmZmYgPDwgMykN CisNCisvKiBBVURFTkNfQU5BX0NPTjEzICovDQorI2RlZmluZSBSR19BVURESUdNSUNFTl9TRlQg ICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQVVERElHTUlDRU5fTUFTSyAgICAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVERElHTUlDRU5fTUFTS19TRlQgICAgICAgICAg ICAgICgweDEgPDwgMCkNCisjZGVmaW5lIFJHX0FVRERJR01JQ0JJQVNfU0ZUICAgICAgICAgICAg ICAgICAxDQorI2RlZmluZSBSR19BVURESUdNSUNCSUFTX01BU0sgICAgICAgICAgICAgICAgMHgz DQorI2RlZmluZSBSR19BVURESUdNSUNCSUFTX01BU0tfU0ZUICAgICAgICAgICAgKDB4MyA8PCAx KQ0KKyNkZWZpbmUgUkdfRE1JQ0hQQ0xLRU5fU0ZUICAgICAgICAgICAgICAgICAgIDMNCisjZGVm aW5lIFJHX0RNSUNIUENMS0VOX01BU0sgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJH X0RNSUNIUENMS0VOX01BU0tfU0ZUICAgICAgICAgICAgICAoMHgxIDw8IDMpDQorI2RlZmluZSBS R19BVURESUdNSUNQRFVUWV9TRlQgICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgUkdfQVVERElH TUlDUERVVFlfTUFTSyAgICAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVERElHTUlDUERV VFlfTUFTS19TRlQgICAgICAgICAgICgweDMgPDwgNCkNCisjZGVmaW5lIFJHX0FVRERJR01JQ05E VVRZX1NGVCAgICAgICAgICAgICAgICA2DQorI2RlZmluZSBSR19BVURESUdNSUNORFVUWV9NQVNL ICAgICAgICAgICAgICAgMHgzDQorI2RlZmluZSBSR19BVURESUdNSUNORFVUWV9NQVNLX1NGVCAg ICAgICAgICAgKDB4MyA8PCA2KQ0KKyNkZWZpbmUgUkdfRE1JQ01PTkVOX1NGVCAgICAgICAgICAg ICAgICAgICAgIDgNCisjZGVmaW5lIFJHX0RNSUNNT05FTl9NQVNLICAgICAgICAgICAgICAgICAg ICAweDENCisjZGVmaW5lIFJHX0RNSUNNT05FTl9NQVNLX1NGVCAgICAgICAgICAgICAgICAoMHgx IDw8IDgpDQorI2RlZmluZSBSR19ETUlDTU9OU0VMX1NGVCAgICAgICAgICAgICAgICAgICAgOQ0K KyNkZWZpbmUgUkdfRE1JQ01PTlNFTF9NQVNLICAgICAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZp bmUgUkdfRE1JQ01PTlNFTF9NQVNLX1NGVCAgICAgICAgICAgICAgICgweDcgPDwgOSkNCisNCisv KiBBVURFTkNfQU5BX0NPTjE0ICovDQorI2RlZmluZSBSR19BVURESUdNSUMxRU5fU0ZUICAgICAg ICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQVVERElHTUlDMUVOX01BU0sgICAgICAgICAgICAg ICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVERElHTUlDMUVOX01BU0tfU0ZUICAgICAgICAgICAgICgw eDEgPDwgMCkNCisjZGVmaW5lIFJHX0FVRERJR01JQ0JJQVMxX1NGVCAgICAgICAgICAgICAgICAx DQorI2RlZmluZSBSR19BVURESUdNSUNCSUFTMV9NQVNLICAgICAgICAgICAgICAgMHgzDQorI2Rl ZmluZSBSR19BVURESUdNSUNCSUFTMV9NQVNLX1NGVCAgICAgICAgICAgKDB4MyA8PCAxKQ0KKyNk ZWZpbmUgUkdfRE1JQzFIUENMS0VOX1NGVCAgICAgICAgICAgICAgICAgIDMNCisjZGVmaW5lIFJH X0RNSUMxSFBDTEtFTl9NQVNLICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0RNSUMx SFBDTEtFTl9NQVNLX1NGVCAgICAgICAgICAgICAoMHgxIDw8IDMpDQorI2RlZmluZSBSR19BVURE SUdNSUMxUERVVFlfU0ZUICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgUkdfQVVERElHTUlDMVBE VVRZX01BU0sgICAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVERElHTUlDMVBEVVRZX01B U0tfU0ZUICAgICAgICAgICgweDMgPDwgNCkNCisjZGVmaW5lIFJHX0FVRERJR01JQzFORFVUWV9T RlQgICAgICAgICAgICAgICA2DQorI2RlZmluZSBSR19BVURESUdNSUMxTkRVVFlfTUFTSyAgICAg ICAgICAgICAgMHgzDQorI2RlZmluZSBSR19BVURESUdNSUMxTkRVVFlfTUFTS19TRlQgICAgICAg ICAgKDB4MyA8PCA2KQ0KKyNkZWZpbmUgUkdfRE1JQzFNT05FTl9TRlQgICAgICAgICAgICAgICAg ICAgIDgNCisjZGVmaW5lIFJHX0RNSUMxTU9ORU5fTUFTSyAgICAgICAgICAgICAgICAgICAweDEN CisjZGVmaW5lIFJHX0RNSUMxTU9ORU5fTUFTS19TRlQgICAgICAgICAgICAgICAoMHgxIDw8IDgp DQorI2RlZmluZSBSR19ETUlDMU1PTlNFTF9TRlQgICAgICAgICAgICAgICAgICAgOQ0KKyNkZWZp bmUgUkdfRE1JQzFNT05TRUxfTUFTSyAgICAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgUkdf RE1JQzFNT05TRUxfTUFTS19TRlQgICAgICAgICAgICAgICgweDcgPDwgOSkNCisjZGVmaW5lIFJH X0FVRFNQQVJFVk1JQ19TRlQgICAgICAgICAgICAgICAgICAxMg0KKyNkZWZpbmUgUkdfQVVEU1BB UkVWTUlDX01BU0sgICAgICAgICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgUkdfQVVEU1BBUkVWTUlD X01BU0tfU0ZUICAgICAgICAgICAgICgweGYgPDwgMTIpDQorDQorLyogQVVERU5DX0FOQV9DT04x NSAqLw0KKyNkZWZpbmUgUkdfQVVEUFdEQk1JQ0JJQVMwX1NGVCAgICAgICAgICAgICAgIDANCisj ZGVmaW5lIFJHX0FVRFBXREJNSUNCSUFTMF9NQVNLICAgICAgICAgICAgICAweDENCisjZGVmaW5l IFJHX0FVRFBXREJNSUNCSUFTMF9NQVNLX1NGVCAgICAgICAgICAoMHgxIDw8IDApDQorI2RlZmlu ZSBSR19BVURNSUNCSUFTMEJZUEFTU0VOX1NGVCAgICAgICAgICAgMQ0KKyNkZWZpbmUgUkdfQVVE TUlDQklBUzBCWVBBU1NFTl9NQVNLICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVETUlDQklB UzBCWVBBU1NFTl9NQVNLX1NGVCAgICAgICgweDEgPDwgMSkNCisjZGVmaW5lIFJHX0FVRE1JQ0JJ QVMwTE9XUEVOX1NGVCAgICAgICAgICAgICAyDQorI2RlZmluZSBSR19BVURNSUNCSUFTMExPV1BF Tl9NQVNLICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURNSUNCSUFTMExPV1BFTl9NQVNL X1NGVCAgICAgICAgKDB4MSA8PCAyKQ0KKyNkZWZpbmUgUkdfQVVEUFdEQk1JQ0JJQVMzX1NGVCAg ICAgICAgICAgICAgIDMNCisjZGVmaW5lIFJHX0FVRFBXREJNSUNCSUFTM19NQVNLICAgICAgICAg ICAgICAweDENCisjZGVmaW5lIFJHX0FVRFBXREJNSUNCSUFTM19NQVNLX1NGVCAgICAgICAgICAo MHgxIDw8IDMpDQorI2RlZmluZSBSR19BVURNSUNCSUFTMFZSRUZfU0ZUICAgICAgICAgICAgICAg NA0KKyNkZWZpbmUgUkdfQVVETUlDQklBUzBWUkVGX01BU0sgICAgICAgICAgICAgIDB4Nw0KKyNk ZWZpbmUgUkdfQVVETUlDQklBUzBWUkVGX01BU0tfU0ZUICAgICAgICAgICgweDcgPDwgNCkNCisj ZGVmaW5lIFJHX0FVRE1JQ0JJQVMwRENTVzBQMUVOX1NGVCAgICAgICAgICA4DQorI2RlZmluZSBS R19BVURNSUNCSUFTMERDU1cwUDFFTl9NQVNLICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURN SUNCSUFTMERDU1cwUDFFTl9NQVNLX1NGVCAgICAgKDB4MSA8PCA4KQ0KKyNkZWZpbmUgUkdfQVVE TUlDQklBUzBEQ1NXMFAyRU5fU0ZUICAgICAgICAgIDkNCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMw RENTVzBQMkVOX01BU0sgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMwRENTVzBQ MkVOX01BU0tfU0ZUICAgICAoMHgxIDw8IDkpDQorI2RlZmluZSBSR19BVURNSUNCSUFTMERDU1cw TkVOX1NGVCAgICAgICAgICAgMTANCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMwRENTVzBORU5fTUFT SyAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMwRENTVzBORU5fTUFTS19TRlQg ICAgICAoMHgxIDw8IDEwKQ0KKyNkZWZpbmUgUkdfQVVETUlDQklBUzBEQ1NXMlAxRU5fU0ZUICAg ICAgICAgIDEyDQorI2RlZmluZSBSR19BVURNSUNCSUFTMERDU1cyUDFFTl9NQVNLICAgICAgICAg MHgxDQorI2RlZmluZSBSR19BVURNSUNCSUFTMERDU1cyUDFFTl9NQVNLX1NGVCAgICAgKDB4MSA8 PCAxMikNCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMwRENTVzJQMkVOX1NGVCAgICAgICAgICAxMw0K KyNkZWZpbmUgUkdfQVVETUlDQklBUzBEQ1NXMlAyRU5fTUFTSyAgICAgICAgIDB4MQ0KKyNkZWZp bmUgUkdfQVVETUlDQklBUzBEQ1NXMlAyRU5fTUFTS19TRlQgICAgICgweDEgPDwgMTMpDQorI2Rl ZmluZSBSR19BVURNSUNCSUFTMERDU1cyTkVOX1NGVCAgICAgICAgICAgMTQNCisjZGVmaW5lIFJH X0FVRE1JQ0JJQVMwRENTVzJORU5fTUFTSyAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRE1J Q0JJQVMwRENTVzJORU5fTUFTS19TRlQgICAgICAoMHgxIDw8IDE0KQ0KKw0KKy8qIEFVREVOQ19B TkFfQ09OMTYgKi8NCisjZGVmaW5lIFJHX0FVRFBXREJNSUNCSUFTMV9TRlQgICAgICAgICAgICAg ICAwDQorI2RlZmluZSBSR19BVURQV0RCTUlDQklBUzFfTUFTSyAgICAgICAgICAgICAgMHgxDQor I2RlZmluZSBSR19BVURQV0RCTUlDQklBUzFfTUFTS19TRlQgICAgICAgICAgKDB4MSA8PCAwKQ0K KyNkZWZpbmUgUkdfQVVETUlDQklBUzFCWVBBU1NFTl9TRlQgICAgICAgICAgIDENCisjZGVmaW5l IFJHX0FVRE1JQ0JJQVMxQllQQVNTRU5fTUFTSyAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FV RE1JQ0JJQVMxQllQQVNTRU5fTUFTS19TRlQgICAgICAoMHgxIDw8IDEpDQorI2RlZmluZSBSR19B VURNSUNCSUFTMUxPV1BFTl9TRlQgICAgICAgICAgICAgMg0KKyNkZWZpbmUgUkdfQVVETUlDQklB UzFMT1dQRU5fTUFTSyAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVETUlDQklBUzFMT1dQ RU5fTUFTS19TRlQgICAgICAgICgweDEgPDwgMikNCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMxVlJF Rl9TRlQgICAgICAgICAgICAgICA0DQorI2RlZmluZSBSR19BVURNSUNCSUFTMVZSRUZfTUFTSyAg ICAgICAgICAgICAgMHg3DQorI2RlZmluZSBSR19BVURNSUNCSUFTMVZSRUZfTUFTS19TRlQgICAg ICAgICAgKDB4NyA8PCA0KQ0KKyNkZWZpbmUgUkdfQVVETUlDQklBUzFEQ1NXMVBFTl9TRlQgICAg ICAgICAgIDgNCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMxRENTVzFQRU5fTUFTSyAgICAgICAgICAw eDENCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMxRENTVzFQRU5fTUFTS19TRlQgICAgICAoMHgxIDw8 IDgpDQorI2RlZmluZSBSR19BVURNSUNCSUFTMURDU1cxTkVOX1NGVCAgICAgICAgICAgOQ0KKyNk ZWZpbmUgUkdfQVVETUlDQklBUzFEQ1NXMU5FTl9NQVNLICAgICAgICAgIDB4MQ0KKyNkZWZpbmUg UkdfQVVETUlDQklBUzFEQ1NXMU5FTl9NQVNLX1NGVCAgICAgICgweDEgPDwgOSkNCisjZGVmaW5l IFJHX0JBTkRHQVBHRU5fU0ZUICAgICAgICAgICAgICAgICAgICAxMA0KKyNkZWZpbmUgUkdfQkFO REdBUEdFTl9NQVNLICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQkFOREdBUEdF Tl9NQVNLX1NGVCAgICAgICAgICAgICAgICgweDEgPDwgMTApDQorI2RlZmluZSBSR19BVURNSUNC SUFTMUhWRU5fU0ZUICAgICAgICAgICAgICAgMTINCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMxSFZF Tl9NQVNLICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMxSFZFTl9NQVNL X1NGVCAgICAgICAgICAoMHgxIDw8IDEyKQ0KKyNkZWZpbmUgUkdfQVVETUlDQklBUzFIVlZSRUZf U0ZUICAgICAgICAgICAgIDEzDQorI2RlZmluZSBSR19BVURNSUNCSUFTMUhWVlJFRl9NQVNLICAg ICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURNSUNCSUFTMUhWVlJFRl9NQVNLX1NGVCAgICAg ICAgKDB4MSA8PCAxMykNCisNCisvKiBBVURFTkNfQU5BX0NPTjE3ICovDQorI2RlZmluZSBSR19B VURQV0RCTUlDQklBUzJfU0ZUICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQVVEUFdEQk1J Q0JJQVMyX01BU0sgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEUFdEQk1JQ0JJQVMy X01BU0tfU0ZUICAgICAgICAgICgweDEgPDwgMCkNCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMyQllQ QVNTRU5fU0ZUICAgICAgICAgICAxDQorI2RlZmluZSBSR19BVURNSUNCSUFTMkJZUEFTU0VOX01B U0sgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURNSUNCSUFTMkJZUEFTU0VOX01BU0tfU0ZU ICAgICAgKDB4MSA8PCAxKQ0KKyNkZWZpbmUgUkdfQVVETUlDQklBUzJMT1dQRU5fU0ZUICAgICAg ICAgICAgIDINCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMyTE9XUEVOX01BU0sgICAgICAgICAgICAw eDENCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMyTE9XUEVOX01BU0tfU0ZUICAgICAgICAoMHgxIDw8 IDIpDQorI2RlZmluZSBSR19BVURNSUNCSUFTMlZSRUZfU0ZUICAgICAgICAgICAgICAgNA0KKyNk ZWZpbmUgUkdfQVVETUlDQklBUzJWUkVGX01BU0sgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUg UkdfQVVETUlDQklBUzJWUkVGX01BU0tfU0ZUICAgICAgICAgICgweDcgPDwgNCkNCisjZGVmaW5l IFJHX0FVRE1JQ0JJQVMyRENTVzNQMUVOX1NGVCAgICAgICAgICA4DQorI2RlZmluZSBSR19BVURN SUNCSUFTMkRDU1czUDFFTl9NQVNLICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURNSUNCSUFT MkRDU1czUDFFTl9NQVNLX1NGVCAgICAgKDB4MSA8PCA4KQ0KKyNkZWZpbmUgUkdfQVVETUlDQklB UzJEQ1NXM1AyRU5fU0ZUICAgICAgICAgIDkNCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMyRENTVzNQ MkVOX01BU0sgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMyRENTVzNQMkVOX01B U0tfU0ZUICAgICAoMHgxIDw8IDkpDQorI2RlZmluZSBSR19BVURNSUNCSUFTMkRDU1czTkVOX1NG VCAgICAgICAgICAgMTANCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMyRENTVzNORU5fTUFTSyAgICAg ICAgICAweDENCisjZGVmaW5lIFJHX0FVRE1JQ0JJQVMyRENTVzNORU5fTUFTS19TRlQgICAgICAo MHgxIDw8IDEwKQ0KKyNkZWZpbmUgUkdfQVVETUlDQklBU1NQQVJFX1NGVCAgICAgICAgICAgICAg IDEyDQorI2RlZmluZSBSR19BVURNSUNCSUFTU1BBUkVfTUFTSyAgICAgICAgICAgICAgMHhmDQor I2RlZmluZSBSR19BVURNSUNCSUFTU1BBUkVfTUFTS19TRlQgICAgICAgICAgKDB4ZiA8PCAxMikN CisNCisvKiBBVURFTkNfQU5BX0NPTjE4ICovDQorI2RlZmluZSBSR19BVURBQ0NERVRNSUNCSUFT MFBVTExMT1dfU0ZUICAgICAgMA0KKyNkZWZpbmUgUkdfQVVEQUNDREVUTUlDQklBUzBQVUxMTE9X X01BU0sgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEQUNDREVUTUlDQklBUzBQVUxMTE9XX01BU0tf U0ZUICgweDEgPDwgMCkNCisjZGVmaW5lIFJHX0FVREFDQ0RFVE1JQ0JJQVMxUFVMTExPV19TRlQg ICAgICAxDQorI2RlZmluZSBSR19BVURBQ0NERVRNSUNCSUFTMVBVTExMT1dfTUFTSyAgICAgMHgx DQorI2RlZmluZSBSR19BVURBQ0NERVRNSUNCSUFTMVBVTExMT1dfTUFTS19TRlQgKDB4MSA8PCAx KQ0KKyNkZWZpbmUgUkdfQVVEQUNDREVUTUlDQklBUzJQVUxMTE9XX1NGVCAgICAgIDINCisjZGVm aW5lIFJHX0FVREFDQ0RFVE1JQ0JJQVMyUFVMTExPV19NQVNLICAgICAweDENCisjZGVmaW5lIFJH X0FVREFDQ0RFVE1JQ0JJQVMyUFVMTExPV19NQVNLX1NGVCAoMHgxIDw8IDIpDQorI2RlZmluZSBS R19BVURBQ0NERVRWSU4xUFVMTExPV19TRlQgICAgICAgICAgMw0KKyNkZWZpbmUgUkdfQVVEQUND REVUVklOMVBVTExMT1dfTUFTSyAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEQUNDREVUVklO MVBVTExMT1dfTUFTS19TRlQgICAgICgweDEgPDwgMykNCisjZGVmaW5lIFJHX0FVREFDQ0RFVFZU SEFDQUxfU0ZUICAgICAgICAgICAgICA0DQorI2RlZmluZSBSR19BVURBQ0NERVRWVEhBQ0FMX01B U0sgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURBQ0NERVRWVEhBQ0FMX01BU0tfU0ZU ICAgICAgICAgKDB4MSA8PCA0KQ0KKyNkZWZpbmUgUkdfQVVEQUNDREVUVlRIQkNBTF9TRlQgICAg ICAgICAgICAgIDUNCisjZGVmaW5lIFJHX0FVREFDQ0RFVFZUSEJDQUxfTUFTSyAgICAgICAgICAg ICAweDENCisjZGVmaW5lIFJHX0FVREFDQ0RFVFZUSEJDQUxfTUFTS19TRlQgICAgICAgICAoMHgx IDw8IDUpDQorI2RlZmluZSBSR19BVURBQ0NERVRUVkRFVF9TRlQgICAgICAgICAgICAgICAgNg0K KyNkZWZpbmUgUkdfQVVEQUNDREVUVFZERVRfTUFTSyAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZp bmUgUkdfQVVEQUNDREVUVFZERVRfTUFTS19TRlQgICAgICAgICAgICgweDEgPDwgNikNCisjZGVm aW5lIFJHX0FDQ0RFVFNFTF9TRlQgICAgICAgICAgICAgICAgICAgICA3DQorI2RlZmluZSBSR19B Q0NERVRTRUxfTUFTSyAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BQ0NERVRT RUxfTUFTS19TRlQgICAgICAgICAgICAgICAgKDB4MSA8PCA3KQ0KKyNkZWZpbmUgUkdfU1dCVUZN T0RTRUxfU0ZUICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJHX1NXQlVGTU9EU0VMX01B U0sgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX1NXQlVGTU9EU0VMX01BU0tfU0ZU ICAgICAgICAgICAgICAoMHgxIDw8IDgpDQorI2RlZmluZSBSR19TV0JVRlNXRU5fU0ZUICAgICAg ICAgICAgICAgICAgICAgOQ0KKyNkZWZpbmUgUkdfU1dCVUZTV0VOX01BU0sgICAgICAgICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfU1dCVUZTV0VOX01BU0tfU0ZUICAgICAgICAgICAgICAg ICgweDEgPDwgOSkNCisjZGVmaW5lIFJHX0VJTlQwTk9IWVNfU0ZUICAgICAgICAgICAgICAgICAg ICAxMA0KKyNkZWZpbmUgUkdfRUlOVDBOT0hZU19NQVNLICAgICAgICAgICAgICAgICAgIDB4MQ0K KyNkZWZpbmUgUkdfRUlOVDBOT0hZU19NQVNLX1NGVCAgICAgICAgICAgICAgICgweDEgPDwgMTAp DQorI2RlZmluZSBSR19FSU5UMENPTkZJR0FDQ0RFVF9TRlQgICAgICAgICAgICAgMTENCisjZGVm aW5lIFJHX0VJTlQwQ09ORklHQUNDREVUX01BU0sgICAgICAgICAgICAweDENCisjZGVmaW5lIFJH X0VJTlQwQ09ORklHQUNDREVUX01BU0tfU0ZUICAgICAgICAoMHgxIDw8IDExKQ0KKyNkZWZpbmUg UkdfRUlOVDBISVJFTkJfU0ZUICAgICAgICAgICAgICAgICAgIDEyDQorI2RlZmluZSBSR19FSU5U MEhJUkVOQl9NQVNLICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19FSU5UMEhJUkVO Ql9NQVNLX1NGVCAgICAgICAgICAgICAgKDB4MSA8PCAxMikNCisjZGVmaW5lIFJHX0FDQ0RFVDJB VVhSRVNCWVBBU1NfU0ZUICAgICAgICAgICAxMw0KKyNkZWZpbmUgUkdfQUNDREVUMkFVWFJFU0JZ UEFTU19NQVNLICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQUNDREVUMkFVWFJFU0JZUEFTU19N QVNLX1NGVCAgICAgICgweDEgPDwgMTMpDQorI2RlZmluZSBSR19BQ0NERVQyQVVYU1dFTl9TRlQg ICAgICAgICAgICAgICAgMTQNCisjZGVmaW5lIFJHX0FDQ0RFVDJBVVhTV0VOX01BU0sgICAgICAg ICAgICAgICAweDENCisjZGVmaW5lIFJHX0FDQ0RFVDJBVVhTV0VOX01BU0tfU0ZUICAgICAgICAg ICAoMHgxIDw8IDE0KQ0KKyNkZWZpbmUgUkdfQVVEQUNDREVUTUlDQklBUzNQVUxMTE9XX1NGVCAg ICAgIDE1DQorI2RlZmluZSBSR19BVURBQ0NERVRNSUNCSUFTM1BVTExMT1dfTUFTSyAgICAgMHgx DQorI2RlZmluZSBSR19BVURBQ0NERVRNSUNCSUFTM1BVTExMT1dfTUFTS19TRlQgKDB4MSA8PCAx NSkNCisNCisvKiBBVURFTkNfQU5BX0NPTjE5ICovDQorI2RlZmluZSBSR19FSU5UMUNPTkZJR0FD Q0RFVF9TRlQgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfRUlOVDFDT05GSUdBQ0NERVRfTUFT SyAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfRUlOVDFDT05GSUdBQ0NERVRfTUFTS19TRlQg ICAgICAgICgweDEgPDwgMCkNCisjZGVmaW5lIFJHX0VJTlQxSElSRU5CX1NGVCAgICAgICAgICAg ICAgICAgICAxDQorI2RlZmluZSBSR19FSU5UMUhJUkVOQl9NQVNLICAgICAgICAgICAgICAgICAg MHgxDQorI2RlZmluZSBSR19FSU5UMUhJUkVOQl9NQVNLX1NGVCAgICAgICAgICAgICAgKDB4MSA8 PCAxKQ0KKyNkZWZpbmUgUkdfRUlOVDFOT0hZU19TRlQgICAgICAgICAgICAgICAgICAgIDINCisj ZGVmaW5lIFJHX0VJTlQxTk9IWVNfTUFTSyAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5l IFJHX0VJTlQxTk9IWVNfTUFTS19TRlQgICAgICAgICAgICAgICAoMHgxIDw8IDIpDQorI2RlZmlu ZSBSR19FSU5UQ09NUFZUSF9TRlQgICAgICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUgUkdfRUlO VENPTVBWVEhfTUFTSyAgICAgICAgICAgICAgICAgIDB4Zg0KKyNkZWZpbmUgUkdfRUlOVENPTVBW VEhfTUFTS19TRlQgICAgICAgICAgICAgICgweGYgPDwgNCkNCisjZGVmaW5lIFJHX01URVNUX0VO X1NGVCAgICAgICAgICAgICAgICAgICAgICA4DQorI2RlZmluZSBSR19NVEVTVF9FTl9NQVNLICAg ICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19NVEVTVF9FTl9NQVNLX1NGVCAgICAg ICAgICAgICAgICAgKDB4MSA8PCA4KQ0KKyNkZWZpbmUgUkdfTVRFU1RfU0VMX1NGVCAgICAgICAg ICAgICAgICAgICAgIDkNCisjZGVmaW5lIFJHX01URVNUX1NFTF9NQVNLICAgICAgICAgICAgICAg ICAgICAweDENCisjZGVmaW5lIFJHX01URVNUX1NFTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAo MHgxIDw8IDkpDQorI2RlZmluZSBSR19NVEVTVF9DVVJSRU5UX1NGVCAgICAgICAgICAgICAgICAg MTANCisjZGVmaW5lIFJHX01URVNUX0NVUlJFTlRfTUFTSyAgICAgICAgICAgICAgICAweDENCisj ZGVmaW5lIFJHX01URVNUX0NVUlJFTlRfTUFTS19TRlQgICAgICAgICAgICAoMHgxIDw8IDEwKQ0K KyNkZWZpbmUgUkdfQU5BTE9HRkRFTl9TRlQgICAgICAgICAgICAgICAgICAgIDEyDQorI2RlZmlu ZSBSR19BTkFMT0dGREVOX01BU0sgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19B TkFMT0dGREVOX01BU0tfU0ZUICAgICAgICAgICAgICAgKDB4MSA8PCAxMikNCisjZGVmaW5lIFJH X0ZEVklOMVBQVUxMTE9XX1NGVCAgICAgICAgICAgICAgICAxMw0KKyNkZWZpbmUgUkdfRkRWSU4x UFBVTExMT1dfTUFTSyAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfRkRWSU4xUFBVTExM T1dfTUFTS19TRlQgICAgICAgICAgICgweDEgPDwgMTMpDQorI2RlZmluZSBSR19GREVJTlQwVFlQ RV9TRlQgICAgICAgICAgICAgICAgICAgMTQNCisjZGVmaW5lIFJHX0ZERUlOVDBUWVBFX01BU0sg ICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0ZERUlOVDBUWVBFX01BU0tfU0ZUICAg ICAgICAgICAgICAoMHgxIDw8IDE0KQ0KKyNkZWZpbmUgUkdfRkRFSU5UMVRZUEVfU0ZUICAgICAg ICAgICAgICAgICAgIDE1DQorI2RlZmluZSBSR19GREVJTlQxVFlQRV9NQVNLICAgICAgICAgICAg ICAgICAgMHgxDQorI2RlZmluZSBSR19GREVJTlQxVFlQRV9NQVNLX1NGVCAgICAgICAgICAgICAg KDB4MSA8PCAxNSkNCisNCisvKiBBVURFTkNfQU5BX0NPTjIwICovDQorI2RlZmluZSBSR19FSU5U MENNUEVOX1NGVCAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfRUlOVDBDTVBFTl9N QVNLICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfRUlOVDBDTVBFTl9NQVNLX1NG VCAgICAgICAgICAgICAgICgweDEgPDwgMCkNCisjZGVmaW5lIFJHX0VJTlQwQ01QTUVOX1NGVCAg ICAgICAgICAgICAgICAgICAxDQorI2RlZmluZSBSR19FSU5UMENNUE1FTl9NQVNLICAgICAgICAg ICAgICAgICAgMHgxDQorI2RlZmluZSBSR19FSU5UMENNUE1FTl9NQVNLX1NGVCAgICAgICAgICAg ICAgKDB4MSA8PCAxKQ0KKyNkZWZpbmUgUkdfRUlOVDBFTl9TRlQgICAgICAgICAgICAgICAgICAg ICAgIDINCisjZGVmaW5lIFJHX0VJTlQwRU5fTUFTSyAgICAgICAgICAgICAgICAgICAgICAweDEN CisjZGVmaW5lIFJHX0VJTlQwRU5fTUFTS19TRlQgICAgICAgICAgICAgICAgICAoMHgxIDw8IDIp DQorI2RlZmluZSBSR19FSU5UMENFTl9TRlQgICAgICAgICAgICAgICAgICAgICAgMw0KKyNkZWZp bmUgUkdfRUlOVDBDRU5fTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdf RUlOVDBDRU5fTUFTS19TRlQgICAgICAgICAgICAgICAgICgweDEgPDwgMykNCisjZGVmaW5lIFJH X0VJTlQwSU5WRU5fU0ZUICAgICAgICAgICAgICAgICAgICA0DQorI2RlZmluZSBSR19FSU5UMElO VkVOX01BU0sgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19FSU5UMElOVkVOX01B U0tfU0ZUICAgICAgICAgICAgICAgKDB4MSA8PCA0KQ0KKyNkZWZpbmUgUkdfRUlOVDBDVFVSQk9f U0ZUICAgICAgICAgICAgICAgICAgIDUNCisjZGVmaW5lIFJHX0VJTlQwQ1RVUkJPX01BU0sgICAg ICAgICAgICAgICAgICAweDcNCisjZGVmaW5lIFJHX0VJTlQwQ1RVUkJPX01BU0tfU0ZUICAgICAg ICAgICAgICAoMHg3IDw8IDUpDQorI2RlZmluZSBSR19FSU5UMUNNUEVOX1NGVCAgICAgICAgICAg ICAgICAgICAgOA0KKyNkZWZpbmUgUkdfRUlOVDFDTVBFTl9NQVNLICAgICAgICAgICAgICAgICAg IDB4MQ0KKyNkZWZpbmUgUkdfRUlOVDFDTVBFTl9NQVNLX1NGVCAgICAgICAgICAgICAgICgweDEg PDwgOCkNCisjZGVmaW5lIFJHX0VJTlQxQ01QTUVOX1NGVCAgICAgICAgICAgICAgICAgICA5DQor I2RlZmluZSBSR19FSU5UMUNNUE1FTl9NQVNLICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmlu ZSBSR19FSU5UMUNNUE1FTl9NQVNLX1NGVCAgICAgICAgICAgICAgKDB4MSA8PCA5KQ0KKyNkZWZp bmUgUkdfRUlOVDFFTl9TRlQgICAgICAgICAgICAgICAgICAgICAgIDEwDQorI2RlZmluZSBSR19F SU5UMUVOX01BU0sgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19FSU5UMUVO X01BU0tfU0ZUICAgICAgICAgICAgICAgICAgKDB4MSA8PCAxMCkNCisjZGVmaW5lIFJHX0VJTlQx Q0VOX1NGVCAgICAgICAgICAgICAgICAgICAgICAxMQ0KKyNkZWZpbmUgUkdfRUlOVDFDRU5fTUFT SyAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfRUlOVDFDRU5fTUFTS19TRlQg ICAgICAgICAgICAgICAgICgweDEgPDwgMTEpDQorI2RlZmluZSBSR19FSU5UMUlOVkVOX1NGVCAg ICAgICAgICAgICAgICAgICAgMTINCisjZGVmaW5lIFJHX0VJTlQxSU5WRU5fTUFTSyAgICAgICAg ICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0VJTlQxSU5WRU5fTUFTS19TRlQgICAgICAgICAg ICAgICAoMHgxIDw8IDEyKQ0KKyNkZWZpbmUgUkdfRUlOVDFDVFVSQk9fU0ZUICAgICAgICAgICAg ICAgICAgIDEzDQorI2RlZmluZSBSR19FSU5UMUNUVVJCT19NQVNLICAgICAgICAgICAgICAgICAg MHg3DQorI2RlZmluZSBSR19FSU5UMUNUVVJCT19NQVNLX1NGVCAgICAgICAgICAgICAgKDB4NyA8 PCAxMykNCisNCisvKiBBVURFTkNfQU5BX0NPTjIxICovDQorI2RlZmluZSBSR19BQ0NERVRTUEFS RV9TRlQgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQUNDREVUU1BBUkVfTUFTSyAg ICAgICAgICAgICAgICAgIDB4ZmZmZg0KKyNkZWZpbmUgUkdfQUNDREVUU1BBUkVfTUFTS19TRlQg ICAgICAgICAgICAgICgweGZmZmYgPDwgMCkNCisNCisvKiBBVURFTkNfQU5BX0NPTjIyICovDQor I2RlZmluZSBSR19BVURFTkNTUEFSRVZBMzBfU0ZUICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUg UkdfQVVERU5DU1BBUkVWQTMwX01BU0sgICAgICAgICAgICAgIDB4ZmYNCisjZGVmaW5lIFJHX0FV REVOQ1NQQVJFVkEzMF9NQVNLX1NGVCAgICAgICAgICAoMHhmZiA8PCAwKQ0KKyNkZWZpbmUgUkdf QVVERU5DU1BBUkVWQTE4X1NGVCAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJHX0FVREVOQ1NQ QVJFVkExOF9NQVNLICAgICAgICAgICAgICAweGZmDQorI2RlZmluZSBSR19BVURFTkNTUEFSRVZB MThfTUFTS19TRlQgICAgICAgICAgKDB4ZmYgPDwgOCkNCisNCisvKiBBVURFTkNfQU5BX0NPTjIz ICovDQorI2RlZmluZSBSR19DTEtTUV9FTl9TRlQgICAgICAgICAgICAgICAgICAgICAgMA0KKyNk ZWZpbmUgUkdfQ0xLU1FfRU5fTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUg UkdfQ0xLU1FfRU5fTUFTS19TRlQgICAgICAgICAgICAgICAgICgweDEgPDwgMCkNCisjZGVmaW5l IFJHX0NMS1NRX0lOX1NFTF9URVNUX1NGVCAgICAgICAgICAgICAxDQorI2RlZmluZSBSR19DTEtT UV9JTl9TRUxfVEVTVF9NQVNLICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19DTEtTUV9JTl9T RUxfVEVTVF9NQVNLX1NGVCAgICAgICAgKDB4MSA8PCAxKQ0KKyNkZWZpbmUgUkdfQ01fUkVGR0VO U0VMX1NGVCAgICAgICAgICAgICAgICAgIDINCisjZGVmaW5lIFJHX0NNX1JFRkdFTlNFTF9NQVNL ICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0NNX1JFRkdFTlNFTF9NQVNLX1NGVCAg ICAgICAgICAgICAoMHgxIDw8IDIpDQorI2RlZmluZSBSR19BVURJT19WT1dfRU5fU0ZUICAgICAg ICAgICAgICAgICAgMw0KKyNkZWZpbmUgUkdfQVVESU9fVk9XX0VOX01BU0sgICAgICAgICAgICAg ICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVESU9fVk9XX0VOX01BU0tfU0ZUICAgICAgICAgICAgICgw eDEgPDwgMykNCisjZGVmaW5lIFJHX0NMS1NRX0VOX1ZPV19TRlQgICAgICAgICAgICAgICAgICA0 DQorI2RlZmluZSBSR19DTEtTUV9FTl9WT1dfTUFTSyAgICAgICAgICAgICAgICAgMHgxDQorI2Rl ZmluZSBSR19DTEtTUV9FTl9WT1dfTUFTS19TRlQgICAgICAgICAgICAgKDB4MSA8PCA0KQ0KKyNk ZWZpbmUgUkdfQ0xLQU5EX0VOX1ZPV19TRlQgICAgICAgICAgICAgICAgIDUNCisjZGVmaW5lIFJH X0NMS0FORF9FTl9WT1dfTUFTSyAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0NMS0FO RF9FTl9WT1dfTUFTS19TRlQgICAgICAgICAgICAoMHgxIDw8IDUpDQorI2RlZmluZSBSR19WT1dD TEtfU0VMX0VOX1ZPV19TRlQgICAgICAgICAgICAgNg0KKyNkZWZpbmUgUkdfVk9XQ0xLX1NFTF9F Tl9WT1dfTUFTSyAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfVk9XQ0xLX1NFTF9FTl9WT1df TUFTS19TRlQgICAgICAgICgweDEgPDwgNikNCisjZGVmaW5lIFJHX1NQQVJFX1ZPV19TRlQgICAg ICAgICAgICAgICAgICAgICA3DQorI2RlZmluZSBSR19TUEFSRV9WT1dfTUFTSyAgICAgICAgICAg ICAgICAgICAgMHg3DQorI2RlZmluZSBSR19TUEFSRV9WT1dfTUFTS19TRlQgICAgICAgICAgICAg ICAgKDB4NyA8PCA3KQ0KKw0KKy8qIEFVRERFQ19BTkFfQ09OMCAqLw0KKyNkZWZpbmUgUkdfQVVE REFDTFBXUlVQX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQVVE REFDTFBXUlVQX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19B VUREQUNMUFdSVVBfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAgICAoMHgxIDw8IDApDQorI2Rl ZmluZSBSR19BVUREQUNSUFdSVVBfVkFVRFAzMl9TRlQgICAgICAgICAgICAgICAgICAxDQorI2Rl ZmluZSBSR19BVUREQUNSUFdSVVBfVkFVRFAzMl9NQVNLICAgICAgICAgICAgICAgICAweDENCisj ZGVmaW5lIFJHX0FVRERBQ1JQV1JVUF9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAgICAgICgweDEg PDwgMSkNCisjZGVmaW5lIFJHX0FVRF9EQUNfUFdSX1VQX1ZBMzJfU0ZUICAgICAgICAgICAgICAg ICAgIDINCisjZGVmaW5lIFJHX0FVRF9EQUNfUFdSX1VQX1ZBMzJfTUFTSyAgICAgICAgICAgICAg ICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEX0RBQ19QV1JfVVBfVkEzMl9NQVNLX1NGVCAgICAgICAg ICAgICAgKDB4MSA8PCAyKQ0KKyNkZWZpbmUgUkdfQVVEX0RBQ19QV0xfVVBfVkEzMl9TRlQgICAg ICAgICAgICAgICAgICAgMw0KKyNkZWZpbmUgUkdfQVVEX0RBQ19QV0xfVVBfVkEzMl9NQVNLICAg ICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURfREFDX1BXTF9VUF9WQTMyX01BU0tf U0ZUICAgICAgICAgICAgICAoMHgxIDw8IDMpDQorI2RlZmluZSBSR19BVURIUExQV1JVUF9WQVVE UDMyX1NGVCAgICAgICAgICAgICAgICAgICA0DQorI2RlZmluZSBSR19BVURIUExQV1JVUF9WQVVE UDMyX01BU0sgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVREhQTFBXUlVQX1ZB VURQMzJfTUFTS19TRlQgICAgICAgICAgICAgICgweDEgPDwgNCkNCisjZGVmaW5lIFJHX0FVREhQ UlBXUlVQX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAgICAgIDUNCisjZGVmaW5lIFJHX0FVREhQ UlBXUlVQX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVE SFBSUFdSVVBfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAgICAgKDB4MSA8PCA1KQ0KKyNkZWZp bmUgUkdfQVVESFBMUFdSVVBfSUJJQVNfVkFVRFAzMl9TRlQgICAgICAgICAgICAgNg0KKyNkZWZp bmUgUkdfQVVESFBMUFdSVVBfSUJJQVNfVkFVRFAzMl9NQVNLICAgICAgICAgICAgMHgxDQorI2Rl ZmluZSBSR19BVURIUExQV1JVUF9JQklBU19WQVVEUDMyX01BU0tfU0ZUICAgICAgICAoMHgxIDw8 IDYpDQorI2RlZmluZSBSR19BVURIUFJQV1JVUF9JQklBU19WQVVEUDMyX1NGVCAgICAgICAgICAg ICA3DQorI2RlZmluZSBSR19BVURIUFJQV1JVUF9JQklBU19WQVVEUDMyX01BU0sgICAgICAgICAg ICAweDENCisjZGVmaW5lIFJHX0FVREhQUlBXUlVQX0lCSUFTX1ZBVURQMzJfTUFTS19TRlQgICAg ICAgICgweDEgPDwgNykNCisjZGVmaW5lIFJHX0FVREhQTE1VWElOUFVUU0VMX1ZBVURQMzJfU0ZU ICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJHX0FVREhQTE1VWElOUFVUU0VMX1ZBVURQMzJfTUFT SyAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVESFBMTVVYSU5QVVRTRUxfVkFVRFAzMl9N QVNLX1NGVCAgICAgICAgKDB4MyA8PCA4KQ0KKyNkZWZpbmUgUkdfQVVESFBSTVVYSU5QVVRTRUxf VkFVRFAzMl9TRlQgICAgICAgICAgICAgMTANCisjZGVmaW5lIFJHX0FVREhQUk1VWElOUFVUU0VM X1ZBVURQMzJfTUFTSyAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVESFBSTVVYSU5QVVRT RUxfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgKDB4MyA8PCAxMCkNCisjZGVmaW5lIFJHX0FVREhQ TFNDRElTQUJMRV9WQVVEUDMyX1NGVCAgICAgICAgICAgICAgIDEyDQorI2RlZmluZSBSR19BVURI UExTQ0RJU0FCTEVfVkFVRFAzMl9NQVNLICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FV REhQTFNDRElTQUJMRV9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAgICgweDEgPDwgMTIpDQorI2Rl ZmluZSBSR19BVURIUFJTQ0RJU0FCTEVfVkFVRFAzMl9TRlQgICAgICAgICAgICAgICAxMw0KKyNk ZWZpbmUgUkdfQVVESFBSU0NESVNBQkxFX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgMHgxDQor I2RlZmluZSBSR19BVURIUFJTQ0RJU0FCTEVfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAoMHgx IDw8IDEzKQ0KKyNkZWZpbmUgUkdfQVVESFBMQlNDQ1VSUkVOVF9WQVVEUDMyX1NGVCAgICAgICAg ICAgICAgMTQNCisjZGVmaW5lIFJHX0FVREhQTEJTQ0NVUlJFTlRfVkFVRFAzMl9NQVNLICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVESFBMQlNDQ1VSUkVOVF9WQVVEUDMyX01BU0tfU0ZU ICAgICAgICAgKDB4MSA8PCAxNCkNCisjZGVmaW5lIFJHX0FVREhQUkJTQ0NVUlJFTlRfVkFVRFAz Ml9TRlQgICAgICAgICAgICAgIDE1DQorI2RlZmluZSBSR19BVURIUFJCU0NDVVJSRU5UX1ZBVURQ MzJfTUFTSyAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVREhQUkJTQ0NVUlJFTlRfVkFV RFAzMl9NQVNLX1NGVCAgICAgICAgICgweDEgPDwgMTUpDQorDQorLyogQVVEREVDX0FOQV9DT04x ICovDQorI2RlZmluZSBSR19BVURIUExPVVRQV1JVUF9WQVVEUDMyX1NGVCAgICAgICAgICAgICAg ICAwDQorI2RlZmluZSBSR19BVURIUExPVVRQV1JVUF9WQVVEUDMyX01BU0sgICAgICAgICAgICAg ICAweDENCisjZGVmaW5lIFJHX0FVREhQTE9VVFBXUlVQX1ZBVURQMzJfTUFTS19TRlQgICAgICAg ICAgICgweDEgPDwgMCkNCisjZGVmaW5lIFJHX0FVREhQUk9VVFBXUlVQX1ZBVURQMzJfU0ZUICAg ICAgICAgICAgICAgIDENCisjZGVmaW5lIFJHX0FVREhQUk9VVFBXUlVQX1ZBVURQMzJfTUFTSyAg ICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVESFBST1VUUFdSVVBfVkFVRFAzMl9NQVNL X1NGVCAgICAgICAgICAgKDB4MSA8PCAxKQ0KKyNkZWZpbmUgUkdfQVVESFBMT1VUQVVYUFdSVVBf VkFVRFAzMl9TRlQgICAgICAgICAgICAgMg0KKyNkZWZpbmUgUkdfQVVESFBMT1VUQVVYUFdSVVBf VkFVRFAzMl9NQVNLICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURIUExPVVRBVVhQV1JV UF9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAoMHgxIDw8IDIpDQorI2RlZmluZSBSR19BVURIUFJP VVRBVVhQV1JVUF9WQVVEUDMyX1NGVCAgICAgICAgICAgICAzDQorI2RlZmluZSBSR19BVURIUFJP VVRBVVhQV1JVUF9WQVVEUDMyX01BU0sgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVREhQ Uk9VVEFVWFBXUlVQX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICgweDEgPDwgMykNCisjZGVmaW5l IFJHX0hQTEFVWEZCUlNXX0VOX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAgIDQNCisjZGVmaW5l IFJHX0hQTEFVWEZCUlNXX0VOX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZp bmUgUkdfSFBMQVVYRkJSU1dfRU5fVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAgKDB4MSA8PCA0 KQ0KKyNkZWZpbmUgUkdfSFBSQVVYRkJSU1dfRU5fVkFVRFAzMl9TRlQgICAgICAgICAgICAgICAg NQ0KKyNkZWZpbmUgUkdfSFBSQVVYRkJSU1dfRU5fVkFVRFAzMl9NQVNLICAgICAgICAgICAgICAg MHgxDQorI2RlZmluZSBSR19IUFJBVVhGQlJTV19FTl9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAg ICAoMHgxIDw8IDUpDQorI2RlZmluZSBSR19IUExTSE9SVDJIUExBVVhfRU5fVkFVRFAzMl9TRlQg ICAgICAgICAgICA2DQorI2RlZmluZSBSR19IUExTSE9SVDJIUExBVVhfRU5fVkFVRFAzMl9NQVNL ICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0hQTFNIT1JUMkhQTEFVWF9FTl9WQVVEUDMyX01B U0tfU0ZUICAgICAgICgweDEgPDwgNikNCisjZGVmaW5lIFJHX0hQUlNIT1JUMkhQUkFVWF9FTl9W QVVEUDMyX1NGVCAgICAgICAgICAgIDcNCisjZGVmaW5lIFJHX0hQUlNIT1JUMkhQUkFVWF9FTl9W QVVEUDMyX01BU0sgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfSFBSU0hPUlQySFBSQVVYX0VO X1ZBVURQMzJfTUFTS19TRlQgICAgICAgKDB4MSA8PCA3KQ0KKyNkZWZpbmUgUkdfSFBMT1VUU1RH Q1RSTF9WQVVEUDMyX1NGVCAgICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgUkdfSFBMT1VUU1RH Q1RSTF9WQVVEUDMyX01BU0sgICAgICAgICAgICAgICAgMHg3DQorI2RlZmluZSBSR19IUExPVVRT VEdDVFJMX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICAgICAoMHg3IDw8IDgpDQorI2RlZmluZSBS R19IUFJPVVRTVEdDVFJMX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAgICAxMg0KKyNkZWZpbmUg UkdfSFBST1VUU1RHQ1RSTF9WQVVEUDMyX01BU0sgICAgICAgICAgICAgICAgMHg3DQorI2RlZmlu ZSBSR19IUFJPVVRTVEdDVFJMX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICAgICAoMHg3IDw8IDEy KQ0KKw0KKy8qIEFVRERFQ19BTkFfQ09OMiAqLw0KKyNkZWZpbmUgUkdfSFBMT1VUUFVUU1RCRU5I X1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfSFBMT1VUUFVUU1RCRU5I X1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgMHg3DQorI2RlZmluZSBSR19IUExPVVRQVVRTVEJF TkhfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAoMHg3IDw8IDApDQorI2RlZmluZSBSR19IUFJP VVRQVVRTVEJFTkhfVkFVRFAzMl9TRlQgICAgICAgICAgICAgICA0DQorI2RlZmluZSBSR19IUFJP VVRQVVRTVEJFTkhfVkFVRFAzMl9NQVNLICAgICAgICAgICAgICAweDcNCisjZGVmaW5lIFJHX0hQ Uk9VVFBVVFNUQkVOSF9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAgICgweDcgPDwgNCkNCisjZGVm aW5lIFJHX0FVREhQU1RBUlRVUF9WQVVEUDMyX1NGVCAgICAgICAgICAgICAgICAgIDcNCisjZGVm aW5lIFJHX0FVREhQU1RBUlRVUF9WQVVEUDMyX01BU0sgICAgICAgICAgICAgICAgIDB4MQ0KKyNk ZWZpbmUgUkdfQVVESFBTVEFSVFVQX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICAgICAgKDB4MSA8 PCA3KQ0KKyNkZWZpbmUgUkdfQVVEUkVGTl9ERVJFU19FTl9WQVVEUDMyX1NGVCAgICAgICAgICAg ICAgOA0KKyNkZWZpbmUgUkdfQVVEUkVGTl9ERVJFU19FTl9WQVVEUDMyX01BU0sgICAgICAgICAg ICAgMHgxDQorI2RlZmluZSBSR19BVURSRUZOX0RFUkVTX0VOX1ZBVURQMzJfTUFTS19TRlQgICAg ICAgICAoMHgxIDw8IDgpDQorI2RlZmluZSBSR19IUElOUFVUU1RCRU5IX1ZBVURQMzJfU0ZUICAg ICAgICAgICAgICAgICA5DQorI2RlZmluZSBSR19IUElOUFVUU1RCRU5IX1ZBVURQMzJfTUFTSyAg ICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0hQSU5QVVRTVEJFTkhfVkFVRFAzMl9NQVNL X1NGVCAgICAgICAgICAgICgweDEgPDwgOSkNCisjZGVmaW5lIFJHX0hQSU5QVVRSRVNFVDBfVkFV RFAzMl9TRlQgICAgICAgICAgICAgICAgIDEwDQorI2RlZmluZSBSR19IUElOUFVUUkVTRVQwX1ZB VURQMzJfTUFTSyAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0hQSU5QVVRSRVNFVDBf VkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAgICgweDEgPDwgMTApDQorI2RlZmluZSBSR19IUE9V VFBVVFJFU0VUMF9WQVVEUDMyX1NGVCAgICAgICAgICAgICAgICAxMQ0KKyNkZWZpbmUgUkdfSFBP VVRQVVRSRVNFVDBfVkFVRFAzMl9NQVNLICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19I UE9VVFBVVFJFU0VUMF9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAgICAoMHgxIDw8IDExKQ0KKyNk ZWZpbmUgUkdfSFBQU0hPUlQyVkNNX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAgICAgMTINCisj ZGVmaW5lIFJHX0hQUFNIT1JUMlZDTV9WQVVEUDMyX01BU0sgICAgICAgICAgICAgICAgIDB4Nw0K KyNkZWZpbmUgUkdfSFBQU0hPUlQyVkNNX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICAgICAgKDB4 NyA8PCAxMikNCisjZGVmaW5lIFJHX0FVREhQVFJJTV9FTl9WQVVEUDMyX1NGVCAgICAgICAgICAg ICAgICAgIDE1DQorI2RlZmluZSBSR19BVURIUFRSSU1fRU5fVkFVRFAzMl9NQVNLICAgICAgICAg ICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVREhQVFJJTV9FTl9WQVVEUDMyX01BU0tfU0ZUICAg ICAgICAgICAgICgweDEgPDwgMTUpDQorDQorLyogQVVEREVDX0FOQV9DT04zICovDQorI2RlZmlu ZSBSR19BVURIUExUUklNX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmlu ZSBSR19BVURIUExUUklNX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgICAgICAweDFmDQorI2Rl ZmluZSBSR19BVURIUExUUklNX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICAgICAgICAoMHgxZiA8 PCAwKQ0KKyNkZWZpbmUgUkdfQVVESFBMRklORVRSSU1fVkFVRFAzMl9TRlQgICAgICAgICAgICAg ICAgNQ0KKyNkZWZpbmUgUkdfQVVESFBMRklORVRSSU1fVkFVRFAzMl9NQVNLICAgICAgICAgICAg ICAgMHg3DQorI2RlZmluZSBSR19BVURIUExGSU5FVFJJTV9WQVVEUDMyX01BU0tfU0ZUICAgICAg ICAgICAoMHg3IDw8IDUpDQorI2RlZmluZSBSR19BVURIUFJUUklNX1ZBVURQMzJfU0ZUICAgICAg ICAgICAgICAgICAgICA4DQorI2RlZmluZSBSR19BVURIUFJUUklNX1ZBVURQMzJfTUFTSyAgICAg ICAgICAgICAgICAgICAweDFmDQorI2RlZmluZSBSR19BVURIUFJUUklNX1ZBVURQMzJfTUFTS19T RlQgICAgICAgICAgICAgICAoMHgxZiA8PCA4KQ0KKyNkZWZpbmUgUkdfQVVESFBSRklORVRSSU1f VkFVRFAzMl9TRlQgICAgICAgICAgICAgICAgMTMNCisjZGVmaW5lIFJHX0FVREhQUkZJTkVUUklN X1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgUkdfQVVESFBSRklORVRS SU1fVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAgKDB4NyA8PCAxMykNCisNCisvKiBBVURERUNf QU5BX0NPTjQgKi8NCisjZGVmaW5lIFJHX0FVREhQRElGRklOUEJJQVNBREpfVkFVRFAzMl9TRlQg ICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FVREhQRElGRklOUEJJQVNBREpfVkFVRFAzMl9NQVNL ICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgUkdfQVVESFBESUZGSU5QQklBU0FESl9WQVVEUDMyX01B U0tfU0ZUICAgICAgKDB4NyA8PCAwKQ0KKyNkZWZpbmUgUkdfQVVESFBMRkNPTVBSRVNTRUxfVkFV RFAzMl9TRlQgICAgICAgICAgICAgNA0KKyNkZWZpbmUgUkdfQVVESFBMRkNPTVBSRVNTRUxfVkFV RFAzMl9NQVNLICAgICAgICAgICAgMHg3DQorI2RlZmluZSBSR19BVURIUExGQ09NUFJFU1NFTF9W QVVEUDMyX01BU0tfU0ZUICAgICAgICAoMHg3IDw8IDQpDQorI2RlZmluZSBSR19BVURIUEhGQ09N UFJFU1NFTF9WQVVEUDMyX1NGVCAgICAgICAgICAgICA4DQorI2RlZmluZSBSR19BVURIUEhGQ09N UFJFU1NFTF9WQVVEUDMyX01BU0sgICAgICAgICAgICAweDcNCisjZGVmaW5lIFJHX0FVREhQSEZD T01QUkVTU0VMX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICgweDcgPDwgOCkNCisjZGVmaW5lIFJH X0FVREhQSEZDT01QQlVGR0FJTlNFTF9WQVVEUDMyX1NGVCAgICAgICAgIDEyDQorI2RlZmluZSBS R19BVURIUEhGQ09NUEJVRkdBSU5TRUxfVkFVRFAzMl9NQVNLICAgICAgICAweDMNCisjZGVmaW5l IFJHX0FVREhQSEZDT01QQlVGR0FJTlNFTF9WQVVEUDMyX01BU0tfU0ZUICAgICgweDMgPDwgMTIp DQorI2RlZmluZSBSR19BVURIUENPTVBfRU5fVkFVRFAzMl9TRlQgICAgICAgICAgICAgICAgICAx NQ0KKyNkZWZpbmUgUkdfQVVESFBDT01QX0VOX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgICAg MHgxDQorI2RlZmluZSBSR19BVURIUENPTVBfRU5fVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAg ICAoMHgxIDw8IDE1KQ0KKw0KKy8qIEFVRERFQ19BTkFfQ09ONSAqLw0KKyNkZWZpbmUgUkdfQVVE SFBERUNNR0FJTkFESl9WQVVEUDMyX1NGVCAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQVVE SFBERUNNR0FJTkFESl9WQVVEUDMyX01BU0sgICAgICAgICAgICAgMHg3DQorI2RlZmluZSBSR19B VURIUERFQ01HQUlOQURKX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICAoMHg3IDw8IDApDQorI2Rl ZmluZSBSR19BVURIUERFRE1HQUlOQURKX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICA0DQorI2Rl ZmluZSBSR19BVURIUERFRE1HQUlOQURKX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAweDcNCisj ZGVmaW5lIFJHX0FVREhQREVETUdBSU5BREpfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICgweDcg PDwgNCkNCisNCisvKiBBVURERUNfQU5BX0NPTjYgKi8NCisjZGVmaW5lIFJHX0FVREhTUFdSVVBf VkFVRFAzMl9TRlQgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FVREhTUFdSVVBf VkFVRFAzMl9NQVNLICAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVESFNQV1JV UF9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAgICAgICAgKDB4MSA8PCAwKQ0KKyNkZWZpbmUgUkdf QVVESFNQV1JVUF9JQklBU19WQVVEUDMyX1NGVCAgICAgICAgICAgICAgMQ0KKyNkZWZpbmUgUkdf QVVESFNQV1JVUF9JQklBU19WQVVEUDMyX01BU0sgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBS R19BVURIU1BXUlVQX0lCSUFTX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICAoMHgxIDw8IDEpDQor I2RlZmluZSBSR19BVURIU01VWElOUFVUU0VMX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAyDQor I2RlZmluZSBSR19BVURIU01VWElOUFVUU0VMX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAweDMN CisjZGVmaW5lIFJHX0FVREhTTVVYSU5QVVRTRUxfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICgw eDMgPDwgMikNCisjZGVmaW5lIFJHX0FVREhTU0NESVNBQkxFX1ZBVURQMzJfU0ZUICAgICAgICAg ICAgICAgIDQNCisjZGVmaW5lIFJHX0FVREhTU0NESVNBQkxFX1ZBVURQMzJfTUFTSyAgICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVESFNTQ0RJU0FCTEVfVkFVRFAzMl9NQVNLX1NGVCAg ICAgICAgICAgKDB4MSA8PCA0KQ0KKyNkZWZpbmUgUkdfQVVESFNCU0NDVVJSRU5UX1ZBVURQMzJf U0ZUICAgICAgICAgICAgICAgNQ0KKyNkZWZpbmUgUkdfQVVESFNCU0NDVVJSRU5UX1ZBVURQMzJf TUFTSyAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURIU0JTQ0NVUlJFTlRfVkFVRFAz Ml9NQVNLX1NGVCAgICAgICAgICAoMHgxIDw8IDUpDQorI2RlZmluZSBSR19BVURIU1NUQVJUVVBf VkFVRFAzMl9TRlQgICAgICAgICAgICAgICAgICA2DQorI2RlZmluZSBSR19BVURIU1NUQVJUVVBf VkFVRFAzMl9NQVNLICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVREhTU1RBUlRV UF9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgNikNCisjZGVmaW5lIFJHX0hT T1VUUFVUU1RCRU5IX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAgIDcNCisjZGVmaW5lIFJHX0hT T1VUUFVUU1RCRU5IX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdf SFNPVVRQVVRTVEJFTkhfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAgKDB4MSA8PCA3KQ0KKyNk ZWZpbmUgUkdfSFNJTlBVVFNUQkVOSF9WQVVEUDMyX1NGVCAgICAgICAgICAgICAgICAgOA0KKyNk ZWZpbmUgUkdfSFNJTlBVVFNUQkVOSF9WQVVEUDMyX01BU0sgICAgICAgICAgICAgICAgMHgxDQor I2RlZmluZSBSR19IU0lOUFVUU1RCRU5IX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICAgICAoMHgx IDw8IDgpDQorI2RlZmluZSBSR19IU0lOUFVUUkVTRVQwX1ZBVURQMzJfU0ZUICAgICAgICAgICAg ICAgICA5DQorI2RlZmluZSBSR19IU0lOUFVUUkVTRVQwX1ZBVURQMzJfTUFTSyAgICAgICAgICAg ICAgICAweDENCisjZGVmaW5lIFJHX0hTSU5QVVRSRVNFVDBfVkFVRFAzMl9NQVNLX1NGVCAgICAg ICAgICAgICgweDEgPDwgOSkNCisjZGVmaW5lIFJHX0hTT1VUUFVUUkVTRVQwX1ZBVURQMzJfU0ZU ICAgICAgICAgICAgICAgIDEwDQorI2RlZmluZSBSR19IU09VVFBVVFJFU0VUMF9WQVVEUDMyX01B U0sgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0hTT1VUUFVUUkVTRVQwX1ZBVURQMzJf TUFTS19TRlQgICAgICAgICAgICgweDEgPDwgMTApDQorI2RlZmluZSBSR19IU09VVF9TSE9SVFZD TV9WQVVEUDMyX1NGVCAgICAgICAgICAgICAgICAxMQ0KKyNkZWZpbmUgUkdfSFNPVVRfU0hPUlRW Q01fVkFVRFAzMl9NQVNLICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19IU09VVF9TSE9S VFZDTV9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAgICAoMHgxIDw8IDExKQ0KKw0KKy8qIEFVRERF Q19BTkFfQ09ONyAqLw0KKyNkZWZpbmUgUkdfQVVETE9MUFdSVVBfVkFVRFAzMl9TRlQgICAgICAg ICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQVVETE9MUFdSVVBfVkFVRFAzMl9NQVNLICAgICAg ICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURMT0xQV1JVUF9WQVVEUDMyX01BU0tfU0ZU ICAgICAgICAgICAgICAoMHgxIDw8IDApDQorI2RlZmluZSBSR19BVURMT0xQV1JVUF9JQklBU19W QVVEUDMyX1NGVCAgICAgICAgICAgICAxDQorI2RlZmluZSBSR19BVURMT0xQV1JVUF9JQklBU19W QVVEUDMyX01BU0sgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRExPTFBXUlVQX0lCSUFT X1ZBVURQMzJfTUFTS19TRlQgICAgICAgICgweDEgPDwgMSkNCisjZGVmaW5lIFJHX0FVRExPTE1V WElOUFVUU0VMX1ZBVURQMzJfU0ZUICAgICAgICAgICAgIDINCisjZGVmaW5lIFJHX0FVRExPTE1V WElOUFVUU0VMX1ZBVURQMzJfTUFTSyAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVETE9M TVVYSU5QVVRTRUxfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgKDB4MyA8PCAyKQ0KKyNkZWZpbmUg UkdfQVVETE9MU0NESVNBQkxFX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAgNA0KKyNkZWZpbmUg UkdfQVVETE9MU0NESVNBQkxFX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgMHgxDQorI2RlZmlu ZSBSR19BVURMT0xTQ0RJU0FCTEVfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAoMHgxIDw8IDQp DQorI2RlZmluZSBSR19BVURMT0xCU0NDVVJSRU5UX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICA1 DQorI2RlZmluZSBSR19BVURMT0xCU0NDVVJSRU5UX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAw eDENCisjZGVmaW5lIFJHX0FVRExPTEJTQ0NVUlJFTlRfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAg ICgweDEgPDwgNSkNCisjZGVmaW5lIFJHX0FVRExPU1RBUlRVUF9WQVVEUDMyX1NGVCAgICAgICAg ICAgICAgICAgIDYNCisjZGVmaW5lIFJHX0FVRExPU1RBUlRVUF9WQVVEUDMyX01BU0sgICAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVETE9TVEFSVFVQX1ZBVURQMzJfTUFTS19TRlQg ICAgICAgICAgICAgKDB4MSA8PCA2KQ0KKyNkZWZpbmUgUkdfTE9JTlBVVFNUQkVOSF9WQVVEUDMy X1NGVCAgICAgICAgICAgICAgICAgNw0KKyNkZWZpbmUgUkdfTE9JTlBVVFNUQkVOSF9WQVVEUDMy X01BU0sgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19MT0lOUFVUU1RCRU5IX1ZBVURQ MzJfTUFTS19TRlQgICAgICAgICAgICAoMHgxIDw8IDcpDQorI2RlZmluZSBSR19MT09VVFBVVFNU QkVOSF9WQVVEUDMyX1NGVCAgICAgICAgICAgICAgICA4DQorI2RlZmluZSBSR19MT09VVFBVVFNU QkVOSF9WQVVEUDMyX01BU0sgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0xPT1VUUFVU U1RCRU5IX1ZBVURQMzJfTUFTS19TRlQgICAgICAgICAgICgweDEgPDwgOCkNCisjZGVmaW5lIFJH X0xPSU5QVVRSRVNFVDBfVkFVRFAzMl9TRlQgICAgICAgICAgICAgICAgIDkNCisjZGVmaW5lIFJH X0xPSU5QVVRSRVNFVDBfVkFVRFAzMl9NQVNLICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUg UkdfTE9JTlBVVFJFU0VUMF9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAgICAgKDB4MSA8PCA5KQ0K KyNkZWZpbmUgUkdfTE9PVVRQVVRSRVNFVDBfVkFVRFAzMl9TRlQgICAgICAgICAgICAgICAgMTAN CisjZGVmaW5lIFJHX0xPT1VUUFVUUkVTRVQwX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgIDB4 MQ0KKyNkZWZpbmUgUkdfTE9PVVRQVVRSRVNFVDBfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAg KDB4MSA8PCAxMCkNCisjZGVmaW5lIFJHX0xPT1VUX1NIT1JUVkNNX1ZBVURQMzJfU0ZUICAgICAg ICAgICAgICAgIDExDQorI2RlZmluZSBSR19MT09VVF9TSE9SVFZDTV9WQVVEUDMyX01BU0sgICAg ICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0xPT1VUX1NIT1JUVkNNX1ZBVURQMzJfTUFTS19T RlQgICAgICAgICAgICgweDEgPDwgMTEpDQorI2RlZmluZSBSR19BVUREQUNUUFdSVVBfVkFVRFAz Ml9TRlQgICAgICAgICAgICAgICAgICAxMg0KKyNkZWZpbmUgUkdfQVVEREFDVFBXUlVQX1ZBVURQ MzJfTUFTSyAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVUREQUNUUFdSVVBfVkFV RFAzMl9NQVNLX1NGVCAgICAgICAgICAgICAoMHgxIDw8IDEyKQ0KKyNkZWZpbmUgUkdfQVVEX0RB Q19QV1RfVVBfVkEzMl9TRlQgICAgICAgICAgICAgICAgICAgMTMNCisjZGVmaW5lIFJHX0FVRF9E QUNfUFdUX1VQX1ZBMzJfTUFTSyAgICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVE X0RBQ19QV1RfVVBfVkEzMl9NQVNLX1NGVCAgICAgICAgICAgICAgKDB4MSA8PCAxMykNCisNCisv KiBBVURERUNfQU5BX0NPTjggKi8NCisjZGVmaW5lIFJHX0FVRFRSSU1CVUZfSU5QVVRNVVhTRUxf VkFVRFAzMl9TRlQgICAgICAgIDANCisjZGVmaW5lIFJHX0FVRFRSSU1CVUZfSU5QVVRNVVhTRUxf VkFVRFAzMl9NQVNLICAgICAgIDB4Zg0KKyNkZWZpbmUgUkdfQVVEVFJJTUJVRl9JTlBVVE1VWFNF TF9WQVVEUDMyX01BU0tfU0ZUICAgKDB4ZiA8PCAwKQ0KKyNkZWZpbmUgUkdfQVVEVFJJTUJVRl9H QUlOU0VMX1ZBVURQMzJfU0ZUICAgICAgICAgICAgNA0KKyNkZWZpbmUgUkdfQVVEVFJJTUJVRl9H QUlOU0VMX1ZBVURQMzJfTUFTSyAgICAgICAgICAgMHgzDQorI2RlZmluZSBSR19BVURUUklNQlVG X0dBSU5TRUxfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAoMHgzIDw8IDQpDQorI2RlZmluZSBSR19B VURUUklNQlVGX0VOX1ZBVURQMzJfU0ZUICAgICAgICAgICAgICAgICA2DQorI2RlZmluZSBSR19B VURUUklNQlVGX0VOX1ZBVURQMzJfTUFTSyAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJH X0FVRFRSSU1CVUZfRU5fVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAgICgweDEgPDwgNikNCisj ZGVmaW5lIFJHX0FVREhQU1BLREVUX0lOUFVUTVVYU0VMX1ZBVURQMzJfU0ZUICAgICAgIDgNCisj ZGVmaW5lIFJHX0FVREhQU1BLREVUX0lOUFVUTVVYU0VMX1ZBVURQMzJfTUFTSyAgICAgIDB4Mw0K KyNkZWZpbmUgUkdfQVVESFBTUEtERVRfSU5QVVRNVVhTRUxfVkFVRFAzMl9NQVNLX1NGVCAgKDB4 MyA8PCA4KQ0KKyNkZWZpbmUgUkdfQVVESFBTUEtERVRfT1VUUFVUTVVYU0VMX1ZBVURQMzJfU0ZU ICAgICAgMTANCisjZGVmaW5lIFJHX0FVREhQU1BLREVUX09VVFBVVE1VWFNFTF9WQVVEUDMyX01B U0sgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVESFBTUEtERVRfT1VUUFVUTVVYU0VMX1ZBVURQMzJf TUFTS19TRlQgKDB4MyA8PCAxMCkNCisjZGVmaW5lIFJHX0FVREhQU1BLREVUX0VOX1ZBVURQMzJf U0ZUICAgICAgICAgICAgICAgIDEyDQorI2RlZmluZSBSR19BVURIUFNQS0RFVF9FTl9WQVVEUDMy X01BU0sgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVREhQU1BLREVUX0VOX1ZBVURQ MzJfTUFTS19TRlQgICAgICAgICAgICgweDEgPDwgMTIpDQorDQorLyogQVVEREVDX0FOQV9DT045 ICovDQorI2RlZmluZSBSR19BQklERUNfUlNWRDBfVkEzMl9TRlQgICAgICAgICAgICAgICAgICAg ICAwDQorI2RlZmluZSBSR19BQklERUNfUlNWRDBfVkEzMl9NQVNLICAgICAgICAgICAgICAgICAg ICAweGZmDQorI2RlZmluZSBSR19BQklERUNfUlNWRDBfVkEzMl9NQVNLX1NGVCAgICAgICAgICAg ICAgICAoMHhmZiA8PCAwKQ0KKyNkZWZpbmUgUkdfQUJJREVDX1JTVkQwX1ZBVURQMzJfU0ZUICAg ICAgICAgICAgICAgICAgOA0KKyNkZWZpbmUgUkdfQUJJREVDX1JTVkQwX1ZBVURQMzJfTUFTSyAg ICAgICAgICAgICAgICAgMHhmZg0KKyNkZWZpbmUgUkdfQUJJREVDX1JTVkQwX1ZBVURQMzJfTUFT S19TRlQgICAgICAgICAgICAgKDB4ZmYgPDwgOCkNCisNCisvKiBBVURERUNfQU5BX0NPTjEwICov DQorI2RlZmluZSBSR19BQklERUNfUlNWRDFfVkFVRFAzMl9TRlQgICAgICAgICAgICAgICAgICAw DQorI2RlZmluZSBSR19BQklERUNfUlNWRDFfVkFVRFAzMl9NQVNLICAgICAgICAgICAgICAgICAw eGZmDQorI2RlZmluZSBSR19BQklERUNfUlNWRDFfVkFVRFAzMl9NQVNLX1NGVCAgICAgICAgICAg ICAoMHhmZiA8PCAwKQ0KKyNkZWZpbmUgUkdfQUJJREVDX1JTVkQyX1ZBVURQMzJfU0ZUICAgICAg ICAgICAgICAgICAgOA0KKyNkZWZpbmUgUkdfQUJJREVDX1JTVkQyX1ZBVURQMzJfTUFTSyAgICAg ICAgICAgICAgICAgMHhmZg0KKyNkZWZpbmUgUkdfQUJJREVDX1JTVkQyX1ZBVURQMzJfTUFTS19T RlQgICAgICAgICAgICAgKDB4ZmYgPDwgOCkNCisNCisvKiBBVURERUNfQU5BX0NPTjExICovDQor I2RlZmluZSBSR19BVURaQ0RNVVhTRUxfVkFVRFAzMl9TRlQgICAgICAgICAgICAgICAgICAwDQor I2RlZmluZSBSR19BVURaQ0RNVVhTRUxfVkFVRFAzMl9NQVNLICAgICAgICAgICAgICAgICAweDcN CisjZGVmaW5lIFJHX0FVRFpDRE1VWFNFTF9WQVVEUDMyX01BU0tfU0ZUICAgICAgICAgICAgICgw eDcgPDwgMCkNCisjZGVmaW5lIFJHX0FVRFpDRENMS1NFTF9WQVVEUDMyX1NGVCAgICAgICAgICAg ICAgICAgIDMNCisjZGVmaW5lIFJHX0FVRFpDRENMS1NFTF9WQVVEUDMyX01BU0sgICAgICAgICAg ICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfQVVEWkNEQ0xLU0VMX1ZBVURQMzJfTUFTS19TRlQgICAg ICAgICAgICAgKDB4MSA8PCAzKQ0KKyNkZWZpbmUgUkdfQVVEQklBU0FESl8wX1ZBVURQMzJfU0ZU ICAgICAgICAgICAgICAgICAgNw0KKyNkZWZpbmUgUkdfQVVEQklBU0FESl8wX1ZBVURQMzJfTUFT SyAgICAgICAgICAgICAgICAgMHgxZmYNCisjZGVmaW5lIFJHX0FVREJJQVNBREpfMF9WQVVEUDMy X01BU0tfU0ZUICAgICAgICAgICAgICgweDFmZiA8PCA3KQ0KKw0KKy8qIEFVRERFQ19BTkFfQ09O MTIgKi8NCisjZGVmaW5lIFJHX0FVREJJQVNBREpfMV9WQVVEUDMyX1NGVCAgICAgICAgICAgICAg ICAgIDANCisjZGVmaW5lIFJHX0FVREJJQVNBREpfMV9WQVVEUDMyX01BU0sgICAgICAgICAgICAg ICAgIDB4ZmYNCisjZGVmaW5lIFJHX0FVREJJQVNBREpfMV9WQVVEUDMyX01BU0tfU0ZUICAgICAg ICAgICAgICgweGZmIDw8IDApDQorI2RlZmluZSBSR19BVURJQklBU1BXUkROX1ZBVURQMzJfU0ZU ICAgICAgICAgICAgICAgICA4DQorI2RlZmluZSBSR19BVURJQklBU1BXUkROX1ZBVURQMzJfTUFT SyAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVRElCSUFTUFdSRE5fVkFVRFAzMl9N QVNLX1NGVCAgICAgICAgICAgICgweDEgPDwgOCkNCisNCisvKiBBVURERUNfQU5BX0NPTjEzICov DQorI2RlZmluZSBSR19SU1RCX0RFQ09ERVJfVkEzMl9TRlQgICAgICAgICAgICAgICAgICAgICAw DQorI2RlZmluZSBSR19SU1RCX0RFQ09ERVJfVkEzMl9NQVNLICAgICAgICAgICAgICAgICAgICAw eDENCisjZGVmaW5lIFJHX1JTVEJfREVDT0RFUl9WQTMyX01BU0tfU0ZUICAgICAgICAgICAgICAg ICgweDEgPDwgMCkNCisjZGVmaW5lIFJHX1NFTF9ERUNPREVSXzk2S19WQTMyX1NGVCAgICAgICAg ICAgICAgICAgIDENCisjZGVmaW5lIFJHX1NFTF9ERUNPREVSXzk2S19WQTMyX01BU0sgICAgICAg ICAgICAgICAgIDB4MQ0KKyNkZWZpbmUgUkdfU0VMX0RFQ09ERVJfOTZLX1ZBMzJfTUFTS19TRlQg ICAgICAgICAgICAgKDB4MSA8PCAxKQ0KKyNkZWZpbmUgUkdfU0VMX0RFTEFZX1ZDT1JFX1NGVCAg ICAgICAgICAgICAgICAgICAgICAgMg0KKyNkZWZpbmUgUkdfU0VMX0RFTEFZX1ZDT1JFX01BU0sg ICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19TRUxfREVMQVlfVkNPUkVfTUFT S19TRlQgICAgICAgICAgICAgICAgICAoMHgxIDw8IDIpDQorI2RlZmluZSBSR19BVURHTEJfUFdS RE5fVkEzMl9TRlQgICAgICAgICAgICAgICAgICAgICA0DQorI2RlZmluZSBSR19BVURHTEJfUFdS RE5fVkEzMl9NQVNLICAgICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX0FVREdMQl9Q V1JETl9WQTMyX01BU0tfU0ZUICAgICAgICAgICAgICAgICgweDEgPDwgNCkNCisjZGVmaW5lIFJH X0FVREdMQl9MUF9WT1dfRU5fVkEzMl9TRlQgICAgICAgICAgICAgICAgIDUNCisjZGVmaW5lIFJH X0FVREdMQl9MUF9WT1dfRU5fVkEzMl9NQVNLICAgICAgICAgICAgICAgIDB4MQ0KKyNkZWZpbmUg UkdfQVVER0xCX0xQX1ZPV19FTl9WQTMyX01BU0tfU0ZUICAgICAgICAgICAgKDB4MSA8PCA1KQ0K KyNkZWZpbmUgUkdfQVVER0xCX0xQMl9WT1dfRU5fVkEzMl9TRlQgICAgICAgICAgICAgICAgNg0K KyNkZWZpbmUgUkdfQVVER0xCX0xQMl9WT1dfRU5fVkEzMl9NQVNLICAgICAgICAgICAgICAgMHgx DQorI2RlZmluZSBSR19BVURHTEJfTFAyX1ZPV19FTl9WQTMyX01BU0tfU0ZUICAgICAgICAgICAo MHgxIDw8IDYpDQorDQorLyogQVVEREVDX0FOQV9DT04xNCAqLw0KKyNkZWZpbmUgUkdfTENMRE9f REVDX0VOX1ZBMzJfU0ZUICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfTENMRE9f REVDX0VOX1ZBMzJfTUFTSyAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19MQ0xE T19ERUNfRU5fVkEzMl9NQVNLX1NGVCAgICAgICAgICAgICAgICAoMHgxIDw8IDApDQorI2RlZmlu ZSBSR19MQ0xET19ERUNfUERESVNfRU5fVkExOF9TRlQgICAgICAgICAgICAgICAxDQorI2RlZmlu ZSBSR19MQ0xET19ERUNfUERESVNfRU5fVkExOF9NQVNLICAgICAgICAgICAgICAweDENCisjZGVm aW5lIFJHX0xDTERPX0RFQ19QRERJU19FTl9WQTE4X01BU0tfU0ZUICAgICAgICAgICgweDEgPDwg MSkNCisjZGVmaW5lIFJHX0xDTERPX0RFQ19SRU1PVEVfU0VOU0VfVkExOF9TRlQgICAgICAgICAg IDINCisjZGVmaW5lIFJHX0xDTERPX0RFQ19SRU1PVEVfU0VOU0VfVkExOF9NQVNLICAgICAgICAg IDB4MQ0KKyNkZWZpbmUgUkdfTENMRE9fREVDX1JFTU9URV9TRU5TRV9WQTE4X01BU0tfU0ZUICAg ICAgKDB4MSA8PCAyKQ0KKyNkZWZpbmUgUkdfTlZSRUdfRU5fVkFVRFAzMl9TRlQgICAgICAgICAg ICAgICAgICAgICAgNA0KKyNkZWZpbmUgUkdfTlZSRUdfRU5fVkFVRFAzMl9NQVNLICAgICAgICAg ICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19OVlJFR19FTl9WQVVEUDMyX01BU0tfU0ZUICAg ICAgICAgICAgICAgICAoMHgxIDw8IDQpDQorI2RlZmluZSBSR19OVlJFR19QVUxMMFZfVkFVRFAz Ml9TRlQgICAgICAgICAgICAgICAgICA1DQorI2RlZmluZSBSR19OVlJFR19QVUxMMFZfVkFVRFAz Ml9NQVNLICAgICAgICAgICAgICAgICAweDENCisjZGVmaW5lIFJHX05WUkVHX1BVTEwwVl9WQVVE UDMyX01BU0tfU0ZUICAgICAgICAgICAgICgweDEgPDwgNSkNCisjZGVmaW5lIFJHX0FVRFBNVV9S U1ZEX1ZBMThfU0ZUICAgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJHX0FVRFBNVV9S U1ZEX1ZBMThfTUFTSyAgICAgICAgICAgICAgICAgICAgIDB4ZmYNCisjZGVmaW5lIFJHX0FVRFBN VV9SU1ZEX1ZBMThfTUFTS19TRlQgICAgICAgICAgICAgICAgICgweGZmIDw8IDgpDQorDQorLyog TVQ2MzU5X1pDRF9DT04wICovDQorI2RlZmluZSBSR19BVURaQ0RFTkFCTEVfU0ZUICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FVRFpDREVOQUJMRV9NQVNLICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2RlZmluZSBSR19BVURaQ0RFTkFCTEVf TUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICgweDEgPDwgMCkNCisjZGVmaW5lIFJH X0FVRFpDREdBSU5TVEVQVElNRV9TRlQgICAgICAgICAgICAgICAgICAgICAgICAgMQ0KKyNkZWZp bmUgUkdfQVVEWkNER0FJTlNURVBUSU1FX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAweDcN CisjZGVmaW5lIFJHX0FVRFpDREdBSU5TVEVQVElNRV9NQVNLX1NGVCAgICAgICAgICAgICAgICAg ICAgKDB4NyA8PCAxKQ0KKyNkZWZpbmUgUkdfQVVEWkNER0FJTlNURVBTSVpFX1NGVCAgICAgICAg ICAgICAgICAgICAgICAgICA0DQorI2RlZmluZSBSR19BVURaQ0RHQUlOU1RFUFNJWkVfTUFTSyAg ICAgICAgICAgICAgICAgICAgICAgIDB4Mw0KKyNkZWZpbmUgUkdfQVVEWkNER0FJTlNURVBTSVpF X01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAoMHgzIDw8IDQpDQorI2RlZmluZSBSR19BVURa Q0RUSU1FT1VUTU9ERVNFTF9TRlQgICAgICAgICAgICAgICAgICAgICAgIDYNCisjZGVmaW5lIFJH X0FVRFpDRFRJTUVPVVRNT0RFU0VMX01BU0sgICAgICAgICAgICAgICAgICAgICAgMHgxDQorI2Rl ZmluZSBSR19BVURaQ0RUSU1FT1VUTU9ERVNFTF9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICgw eDEgPDwgNikNCisNCisvKiBNVDYzNTlfWkNEX0NPTjEgKi8NCisjZGVmaW5lIFJHX0FVRExPTEdB SU5fU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMA0KKyNkZWZpbmUgUkdfQVVE TE9MR0FJTl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmDQorI2RlZmlu ZSBSR19BVURMT0xHQUlOX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDFm IDw8IDApDQorI2RlZmluZSBSR19BVURMT1JHQUlOX1NGVCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDcNCisjZGVmaW5lIFJHX0FVRExPUkdBSU5fTUFTSyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgxZg0KKyNkZWZpbmUgUkdfQVVETE9SR0FJTl9NQVNLX1NGVCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoMHgxZiA8PCA3KQ0KKw0KKy8qIE1UNjM1OV9aQ0RfQ09O MiAqLw0KKyNkZWZpbmUgUkdfQVVESFBMR0FJTl9TRlQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwDQorI2RlZmluZSBSR19BVURIUExHQUlOX01BU0sgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MWYNCisjZGVmaW5lIFJHX0FVREhQTEdBSU5fTUFTS19TRlQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKDB4MWYgPDwgMCkNCisjZGVmaW5lIFJHX0FVREhQUkdBSU5f U0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNw0KKyNkZWZpbmUgUkdfQVVESFBS R0FJTl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmDQorI2RlZmluZSBS R19BVURIUFJHQUlOX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDFmIDw8 IDcpDQorDQorLyogTVQ2MzU5X1pDRF9DT04zICovDQorI2RlZmluZSBSR19BVURIU0dBSU5fU0ZU ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDANCisjZGVmaW5lIFJHX0FVREhTR0FJ Tl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZg0KKyNkZWZpbmUgUkdf QVVESFNHQUlOX01BU0tfU0ZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgxZiA8PCAw KQ0KKw0KKy8qIE1UNjM1OV9aQ0RfQ09ONCAqLw0KKyNkZWZpbmUgUkdfQVVESVZMR0FJTl9TRlQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwDQorI2RlZmluZSBSR19BVURJVkxHQUlO X01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Nw0KKyNkZWZpbmUgUkdfQVVE SVZMR0FJTl9NQVNLX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHg3IDw8IDApDQor I2RlZmluZSBSR19BVURJVlJHQUlOX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDgNCisjZGVmaW5lIFJHX0FVRElWUkdBSU5fTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHg3DQorI2RlZmluZSBSR19BVURJVlJHQUlOX01BU0tfU0ZUICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgweDcgPDwgOCkNCisNCisvKiBNVDYzNTlfWkNEX0NPTjUgKi8NCisjZGVm aW5lIFJHX0FVRElOVEdBSU4xX1NGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMA0K KyNkZWZpbmUgUkdfQVVESU5UR0FJTjFfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDNmDQorI2RlZmluZSBSR19BVURJTlRHQUlOMV9NQVNLX1NGVCAgICAgICAgICAgICAgICAg ICAgICAgICAgICgweDNmIDw8IDApDQorI2RlZmluZSBSR19BVURJTlRHQUlOMl9TRlQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDgNCisjZGVmaW5lIFJHX0FVRElOVEdBSU4yX01BU0sg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZg0KKyNkZWZpbmUgUkdfQVVESU5UR0FJ TjJfTUFTS19TRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgzZiA8PCA4KQ0KKw0KKy8q IGF1ZGlvIHJlZ2lzdGVyICovDQorI2RlZmluZSBNVDYzNTlfR1BJT19ESVIwICAgICAgICAgICAg ICAgICAgICAgMHg4OA0KKyNkZWZpbmUgTVQ2MzU5X0dQSU9fRElSMF9TRVQgICAgICAgICAgICAg ICAgIDB4OGENCisjZGVmaW5lIE1UNjM1OV9HUElPX0RJUjBfQ0xSICAgICAgICAgICAgICAgICAw eDhjDQorI2RlZmluZSBNVDYzNTlfR1BJT19ESVIxICAgICAgICAgICAgICAgICAgICAgMHg4ZQ0K KyNkZWZpbmUgTVQ2MzU5X0dQSU9fRElSMV9TRVQgICAgICAgICAgICAgICAgIDB4OTANCisjZGVm aW5lIE1UNjM1OV9HUElPX0RJUjFfQ0xSICAgICAgICAgICAgICAgICAweDkyDQorDQorI2RlZmlu ZSBNVDYzNTlfRENYT19DVzExICAgICAgICAgICAgICAgICAgICAgMHg3YTYNCisjZGVmaW5lIE1U NjM1OV9EQ1hPX0NXMTIgICAgICAgICAgICAgICAgICAgICAweDdhOA0KKyNkZWZpbmUgTVQ2MzU5 X0xET19WQVVEMThfQ09OMCAgICAgICAgICAgICAgIDB4MWM5OA0KKw0KKyNkZWZpbmUgTVQ2MzU5 X0dQSU9fTU9ERTAgICAgICAgICAgICAgICAgICAgIDB4Y2MNCisjZGVmaW5lIE1UNjM1OV9HUElP X01PREUwX1NFVCAgICAgICAgICAgICAgICAweGNlDQorI2RlZmluZSBNVDYzNTlfR1BJT19NT0RF MF9DTFIgICAgICAgICAgICAgICAgMHhkMA0KKyNkZWZpbmUgTVQ2MzU5X0dQSU9fTU9ERTEgICAg ICAgICAgICAgICAgICAgIDB4ZDINCisjZGVmaW5lIE1UNjM1OV9HUElPX01PREUxX1NFVCAgICAg ICAgICAgICAgICAweGQ0DQorI2RlZmluZSBNVDYzNTlfR1BJT19NT0RFMV9DTFIgICAgICAgICAg ICAgICAgMHhkNg0KKyNkZWZpbmUgTVQ2MzU5X0dQSU9fTU9ERTIgICAgICAgICAgICAgICAgICAg IDB4ZDgNCisjZGVmaW5lIE1UNjM1OV9HUElPX01PREUyX1NFVCAgICAgICAgICAgICAgICAweGRh DQorI2RlZmluZSBNVDYzNTlfR1BJT19NT0RFMl9DTFIgICAgICAgICAgICAgICAgMHhkYw0KKyNk ZWZpbmUgTVQ2MzU5X0dQSU9fTU9ERTMgICAgICAgICAgICAgICAgICAgIDB4ZGUNCisjZGVmaW5l IE1UNjM1OV9HUElPX01PREUzX1NFVCAgICAgICAgICAgICAgICAweGUwDQorI2RlZmluZSBNVDYz NTlfR1BJT19NT0RFM19DTFIgICAgICAgICAgICAgICAgMHhlMg0KKyNkZWZpbmUgTVQ2MzU5X0dQ SU9fTU9ERTQgICAgICAgICAgICAgICAgICAgIDB4ZTQNCisjZGVmaW5lIE1UNjM1OV9HUElPX01P REU0X1NFVCAgICAgICAgICAgICAgICAweGU2DQorI2RlZmluZSBNVDYzNTlfR1BJT19NT0RFNF9D TFIgICAgICAgICAgICAgICAgMHhlOA0KKw0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfSUQgICAg ICAgICAgICAgICAgICAgIDB4MjMwMA0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfUkVWMCAgICAg ICAgICAgICAgICAgIDB4MjMwMg0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfREJJICAgICAgICAg ICAgICAgICAgIDB4MjMwNA0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfRFhJICAgICAgICAgICAg ICAgICAgIDB4MjMwNg0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfQ0tQRE5fVFBNMCAgICAgICAg ICAgIDB4MjMwOA0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfQ0tQRE5fVFBNMSAgICAgICAgICAg IDB4MjMwYQ0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfQ0tQRE5fQ09OMCAgICAgICAgICAgIDB4 MjMwYw0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfQ0tQRE5fQ09OMF9TRVQgICAgICAgIDB4MjMw ZQ0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfQ0tQRE5fQ09OMF9DTFIgICAgICAgIDB4MjMxMA0K KyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfQ0tTRUxfQ09OMCAgICAgICAgICAgIDB4MjMxMg0KKyNk ZWZpbmUgTVQ2MzU5X0FVRF9UT1BfQ0tTRUxfQ09OMF9TRVQgICAgICAgIDB4MjMxNA0KKyNkZWZp bmUgTVQ2MzU5X0FVRF9UT1BfQ0tTRUxfQ09OMF9DTFIgICAgICAgIDB4MjMxNg0KKyNkZWZpbmUg TVQ2MzU5X0FVRF9UT1BfQ0tUU1RfQ09OMCAgICAgICAgICAgIDB4MjMxOA0KKyNkZWZpbmUgTVQ2 MzU5X0FVRF9UT1BfQ0xLX0hXRU5fQ09OMCAgICAgICAgIDB4MjMxYQ0KKyNkZWZpbmUgTVQ2MzU5 X0FVRF9UT1BfQ0xLX0hXRU5fQ09OMF9TRVQgICAgIDB4MjMxYw0KKyNkZWZpbmUgTVQ2MzU5X0FV RF9UT1BfQ0xLX0hXRU5fQ09OMF9DTFIgICAgIDB4MjMxZQ0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9U T1BfUlNUX0NPTjAgICAgICAgICAgICAgIDB4MjMyMA0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1Bf UlNUX0NPTjBfU0VUICAgICAgICAgIDB4MjMyMg0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfUlNU X0NPTjBfQ0xSICAgICAgICAgIDB4MjMyNA0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfUlNUX0JB TktfQ09OMCAgICAgICAgIDB4MjMyNg0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfSU5UX0NPTjAg ICAgICAgICAgICAgIDB4MjMyOA0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfSU5UX0NPTjBfU0VU ICAgICAgICAgIDB4MjMyYQ0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfSU5UX0NPTjBfQ0xSICAg ICAgICAgIDB4MjMyYw0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfSU5UX01BU0tfQ09OMCAgICAg ICAgIDB4MjMyZQ0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfSU5UX01BU0tfQ09OMF9TRVQgICAg IDB4MjMzMA0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfSU5UX01BU0tfQ09OMF9DTFIgICAgIDB4 MjMzMg0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfSU5UX1NUQVRVUzAgICAgICAgICAgIDB4MjMz NA0KKyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfSU5UX1JBV19TVEFUVVMwICAgICAgIDB4MjMzNg0K KyNkZWZpbmUgTVQ2MzU5X0FVRF9UT1BfSU5UX01JU0NfQ09OMCAgICAgICAgIDB4MjMzOA0KKyNk ZWZpbmUgTVQ2MzU5X0FVRF9UT1BfTU9OX0NPTjAgICAgICAgICAgICAgIDB4MjMzYQ0KKyNkZWZp bmUgTVQ2MzU5X0FVRElPX0RJR19EU05fSUQgICAgICAgICAgICAgIDB4MjM4MA0KKyNkZWZpbmUg TVQ2MzU5X0FVRElPX0RJR19EU05fUkVWMCAgICAgICAgICAgIDB4MjM4Mg0KKyNkZWZpbmUgTVQ2 MzU5X0FVRElPX0RJR19EU05fREJJICAgICAgICAgICAgIDB4MjM4NA0KKyNkZWZpbmUgTVQ2MzU5 X0FVRElPX0RJR19EU05fRFhJICAgICAgICAgICAgIDB4MjM4Ng0KKyNkZWZpbmUgTVQ2MzU5X0FG RV9VTF9ETF9DT04wICAgICAgICAgICAgICAgIDB4MjM4OA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9E TF9TUkMyX0NPTjBfTCAgICAgICAgICAgIDB4MjM4YQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9VTF9T UkNfQ09OMF9IICAgICAgICAgICAgIDB4MjM4Yw0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9VTF9TUkNf Q09OMF9MICAgICAgICAgICAgIDB4MjM4ZQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRERBNl9MX1NS Q19DT04wX0ggICAgICAgIDB4MjM5MA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRERBNl9VTF9TUkNf Q09OMF9MICAgICAgIDB4MjM5Mg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9UT1BfQ09OMCAgICAgICAg ICAgICAgICAgIDB4MjM5NA0KKyNkZWZpbmUgTVQ2MzU5X0FVRElPX1RPUF9DT04wICAgICAgICAg ICAgICAgIDB4MjM5Ng0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9NT05fREVCVUcwICAgICAgICAgICAg ICAgIDB4MjM5OA0KKyNkZWZpbmUgTVQ2MzU5X0FGVU5DX0FVRF9DT04wICAgICAgICAgICAgICAg IDB4MjM5YQ0KKyNkZWZpbmUgTVQ2MzU5X0FGVU5DX0FVRF9DT04xICAgICAgICAgICAgICAgIDB4 MjM5Yw0KKyNkZWZpbmUgTVQ2MzU5X0FGVU5DX0FVRF9DT04yICAgICAgICAgICAgICAgIDB4MjM5 ZQ0KKyNkZWZpbmUgTVQ2MzU5X0FGVU5DX0FVRF9DT04zICAgICAgICAgICAgICAgIDB4MjNhMA0K KyNkZWZpbmUgTVQ2MzU5X0FGVU5DX0FVRF9DT040ICAgICAgICAgICAgICAgIDB4MjNhMg0KKyNk ZWZpbmUgTVQ2MzU5X0FGVU5DX0FVRF9DT041ICAgICAgICAgICAgICAgIDB4MjNhNA0KKyNkZWZp bmUgTVQ2MzU5X0FGVU5DX0FVRF9DT042ICAgICAgICAgICAgICAgIDB4MjNhNg0KKyNkZWZpbmUg TVQ2MzU5X0FGVU5DX0FVRF9DT043ICAgICAgICAgICAgICAgIDB4MjNhOA0KKyNkZWZpbmUgTVQ2 MzU5X0FGVU5DX0FVRF9DT044ICAgICAgICAgICAgICAgIDB4MjNhYQ0KKyNkZWZpbmUgTVQ2MzU5 X0FGVU5DX0FVRF9DT045ICAgICAgICAgICAgICAgIDB4MjNhYw0KKyNkZWZpbmUgTVQ2MzU5X0FG VU5DX0FVRF9DT04xMCAgICAgICAgICAgICAgIDB4MjNhZQ0KKyNkZWZpbmUgTVQ2MzU5X0FGVU5D X0FVRF9DT04xMSAgICAgICAgICAgICAgIDB4MjNiMA0KKyNkZWZpbmUgTVQ2MzU5X0FGVU5DX0FV RF9DT04xMiAgICAgICAgICAgICAgIDB4MjNiMg0KKyNkZWZpbmUgTVQ2MzU5X0FGVU5DX0FVRF9N T04wICAgICAgICAgICAgICAgIDB4MjNiNA0KKyNkZWZpbmUgTVQ2MzU5X0FGVU5DX0FVRF9NT04x ICAgICAgICAgICAgICAgIDB4MjNiNg0KKyNkZWZpbmUgTVQ2MzU5X0FVRFJDX1RVTkVfTU9OMCAg ICAgICAgICAgICAgIDB4MjNiOA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRERBX01US0FJRl9GSUZP X0NGRzAgICAgIDB4MjNiYQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRERBX01US0FJRl9GSUZPX0xP R19NT04xIDB4MjNiYw0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRERBX01US0FJRl9NT04wICAgICAg ICAgIDB4MjNiZQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRERBX01US0FJRl9NT04xICAgICAgICAg IDB4MjNjMA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRERBX01US0FJRl9NT04yICAgICAgICAgIDB4 MjNjMg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRERBNl9NVEtBSUZfTU9OMyAgICAgICAgIDB4MjNj NA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRERBX01US0FJRl9NT040ICAgICAgICAgIDB4MjNjNg0K KyNkZWZpbmUgTVQ2MzU5X0FGRV9BRERBX01US0FJRl9NT041ICAgICAgICAgIDB4MjNjOA0KKyNk ZWZpbmUgTVQ2MzU5X0FGRV9BRERBX01US0FJRl9DRkcwICAgICAgICAgIDB4MjNjYQ0KKyNkZWZp bmUgTVQ2MzU5X0FGRV9BRERBX01US0FJRl9SWF9DRkcwICAgICAgIDB4MjNjYw0KKyNkZWZpbmUg TVQ2MzU5X0FGRV9BRERBX01US0FJRl9SWF9DRkcxICAgICAgIDB4MjNjZQ0KKyNkZWZpbmUgTVQ2 MzU5X0FGRV9BRERBX01US0FJRl9SWF9DRkcyICAgICAgIDB4MjNkMA0KKyNkZWZpbmUgTVQ2MzU5 X0FGRV9BRERBX01US0FJRl9SWF9DRkczICAgICAgIDB4MjNkMg0KKyNkZWZpbmUgTVQ2MzU5X0FG RV9BRERBX01US0FJRl9TWU5DV09SRF9DRkcwIDB4MjNkNA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9B RERBX01US0FJRl9TWU5DV09SRF9DRkcxIDB4MjNkNg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9TR0VO X0NGRzAgICAgICAgICAgICAgICAgIDB4MjNkOA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9TR0VOX0NG RzEgICAgICAgICAgICAgICAgIDB4MjNkYQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRENfQVNZTkNf RklGT19DRkcgICAgICAgIDB4MjNkYw0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BRENfQVNZTkNfRklG T19DRkcxICAgICAgIDB4MjNkZQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9EQ0NMS19DRkcwICAgICAg ICAgICAgICAgIDB4MjNlMA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9EQ0NMS19DRkcxICAgICAgICAg ICAgICAgIDB4MjNlMg0KKyNkZWZpbmUgTVQ2MzU5X0FVRElPX0RJR19DRkcgICAgICAgICAgICAg ICAgIDB4MjNlNA0KKyNkZWZpbmUgTVQ2MzU5X0FVRElPX0RJR19DRkcxICAgICAgICAgICAgICAg IDB4MjNlNg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BVURfUEFEX1RPUCAgICAgICAgICAgICAgIDB4 MjNlOA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BVURfUEFEX1RPUF9NT04gICAgICAgICAgIDB4MjNl YQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9BVURfUEFEX1RPUF9NT04xICAgICAgICAgIDB4MjNlYw0K KyNkZWZpbmUgTVQ2MzU5X0FGRV9BVURfUEFEX1RPUF9NT04yICAgICAgICAgIDB4MjNlZQ0KKyNk ZWZpbmUgTVQ2MzU5X0FGRV9ETF9OTEVfQ0ZHICAgICAgICAgICAgICAgIDB4MjNmMA0KKyNkZWZp bmUgTVQ2MzU5X0FGRV9ETF9OTEVfTU9OICAgICAgICAgICAgICAgIDB4MjNmMg0KKyNkZWZpbmUg TVQ2MzU5X0FGRV9DR19FTl9NT04gICAgICAgICAgICAgICAgIDB4MjNmNA0KKyNkZWZpbmUgTVQ2 MzU5X0FGRV9NSUNfQVJSQVlfQ0ZHICAgICAgICAgICAgIDB4MjNmNg0KKyNkZWZpbmUgTVQ2MzU5 X0FGRV9DSE9QX0NGRzAgICAgICAgICAgICAgICAgIDB4MjNmOA0KKyNkZWZpbmUgTVQ2MzU5X0FG RV9NVEtBSUZfTVVYX0NGRyAgICAgICAgICAgIDB4MjNmYQ0KKyNkZWZpbmUgTVQ2MzU5X0FVRElP X0RJR18yTkRfRFNOX0lEICAgICAgICAgIDB4MjQwMA0KKyNkZWZpbmUgTVQ2MzU5X0FVRElPX0RJ R18yTkRfRFNOX1JFVjAgICAgICAgIDB4MjQwMg0KKyNkZWZpbmUgTVQ2MzU5X0FVRElPX0RJR18y TkRfRFNOX0RCSSAgICAgICAgIDB4MjQwNA0KKyNkZWZpbmUgTVQ2MzU5X0FVRElPX0RJR18yTkRf RFNOX0RYSSAgICAgICAgIDB4MjQwNg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9QTUlDX05FV0lGX0NG RzMgICAgICAgICAgIDB4MjQwOA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVE9QX0NPTjAgICAg ICAgICAgICAgIDB4MjQwYQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVE9QX0NPTjEgICAgICAg ICAgICAgIDB4MjQwYw0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVE9QX0NPTjIgICAgICAgICAg ICAgIDB4MjQwZQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVE9QX0NPTjMgICAgICAgICAgICAg IDB4MjQxMA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVE9QX0NPTjQgICAgICAgICAgICAgIDB4 MjQxMg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVE9QX01PTjAgICAgICAgICAgICAgIDB4MjQx NA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX0NGRzAgICAgICAgICAgICAgIDB4MjQxNg0K KyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX0NGRzEgICAgICAgICAgICAgIDB4MjQxOA0KKyNk ZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX0NGRzIgICAgICAgICAgICAgIDB4MjQxYQ0KKyNkZWZp bmUgTVQ2MzU5X0FGRV9WT1dfVkFEX0NGRzMgICAgICAgICAgICAgIDB4MjQxYw0KKyNkZWZpbmUg TVQ2MzU5X0FGRV9WT1dfVkFEX0NGRzQgICAgICAgICAgICAgIDB4MjQxZQ0KKyNkZWZpbmUgTVQ2 MzU5X0FGRV9WT1dfVkFEX0NGRzUgICAgICAgICAgICAgIDB4MjQyMA0KKyNkZWZpbmUgTVQ2MzU5 X0FGRV9WT1dfVkFEX0NGRzYgICAgICAgICAgICAgIDB4MjQyMg0KKyNkZWZpbmUgTVQ2MzU5X0FG RV9WT1dfVkFEX0NGRzcgICAgICAgICAgICAgIDB4MjQyNA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9W T1dfVkFEX0NGRzggICAgICAgICAgICAgIDB4MjQyNg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1df VkFEX0NGRzkgICAgICAgICAgICAgIDB4MjQyOA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFE X0NGRzEwICAgICAgICAgICAgIDB4MjQyYQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX0NG RzExICAgICAgICAgICAgIDB4MjQyYw0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX0NGRzEy ICAgICAgICAgICAgIDB4MjQyZQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX01PTjAgICAg ICAgICAgICAgIDB4MjQzMA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX01PTjEgICAgICAg ICAgICAgIDB4MjQzMg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX01PTjIgICAgICAgICAg ICAgIDB4MjQzNA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX01PTjMgICAgICAgICAgICAg IDB4MjQzNg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX01PTjQgICAgICAgICAgICAgIDB4 MjQzOA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX01PTjUgICAgICAgICAgICAgIDB4MjQz YQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX01PTjYgICAgICAgICAgICAgIDB4MjQzYw0K KyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX01PTjcgICAgICAgICAgICAgIDB4MjQzZQ0KKyNk ZWZpbmUgTVQ2MzU5X0FGRV9WT1dfVkFEX01PTjggICAgICAgICAgICAgIDB4MjQ0MA0KKyNkZWZp bmUgTVQ2MzU5X0FGRV9WT1dfVkFEX01PTjkgICAgICAgICAgICAgIDB4MjQ0Mg0KKyNkZWZpbmUg TVQ2MzU5X0FGRV9WT1dfVkFEX01PTjEwICAgICAgICAgICAgIDB4MjQ0NA0KKyNkZWZpbmUgTVQ2 MzU5X0FGRV9WT1dfVkFEX01PTjExICAgICAgICAgICAgIDB4MjQ0Ng0KKyNkZWZpbmUgTVQ2MzU5 X0FGRV9WT1dfVEdFTl9DRkcwICAgICAgICAgICAgIDB4MjQ0OA0KKyNkZWZpbmUgTVQ2MzU5X0FG RV9WT1dfVEdFTl9DRkcxICAgICAgICAgICAgIDB4MjQ0YQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9W T1dfSFBGX0NGRzAgICAgICAgICAgICAgIDB4MjQ0Yw0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1df SFBGX0NGRzEgICAgICAgICAgICAgIDB4MjQ0ZQ0KKyNkZWZpbmUgTVQ2MzU5X0FVRElPX0RJR18z UkRfRFNOX0lEICAgICAgICAgIDB4MjQ4MA0KKyNkZWZpbmUgTVQ2MzU5X0FVRElPX0RJR18zUkRf RFNOX1JFVjAgICAgICAgIDB4MjQ4Mg0KKyNkZWZpbmUgTVQ2MzU5X0FVRElPX0RJR18zUkRfRFNO X0RCSSAgICAgICAgIDB4MjQ4NA0KKyNkZWZpbmUgTVQ2MzU5X0FVRElPX0RJR18zUkRfRFNOX0RY SSAgICAgICAgIDB4MjQ4Ng0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMCAg ICAgICAgIDB4MjQ4OA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMSAgICAg ICAgIDB4MjQ4YQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMiAgICAgICAg IDB4MjQ4Yw0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMyAgICAgICAgIDB4 MjQ4ZQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHNCAgICAgICAgIDB4MjQ5 MA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHNSAgICAgICAgIDB4MjQ5Mg0K KyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHNiAgICAgICAgIDB4MjQ5NA0KKyNk ZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHNyAgICAgICAgIDB4MjQ5Ng0KKyNkZWZp bmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHOCAgICAgICAgIDB4MjQ5OA0KKyNkZWZpbmUg TVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHOSAgICAgICAgIDB4MjQ5YQ0KKyNkZWZpbmUgTVQ2 MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMTAgICAgICAgIDB4MjQ5Yw0KKyNkZWZpbmUgTVQ2MzU5 X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMTEgICAgICAgIDB4MjQ5ZQ0KKyNkZWZpbmUgTVQ2MzU5X0FG RV9WT1dfUEVSSU9ESUNfQ0ZHMTIgICAgICAgIDB4MjRhMA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9W T1dfUEVSSU9ESUNfQ0ZHMTMgICAgICAgIDB4MjRhMg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1df UEVSSU9ESUNfQ0ZHMTQgICAgICAgIDB4MjRhNA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVS SU9ESUNfQ0ZHMTUgICAgICAgIDB4MjRhNg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9E SUNfQ0ZHMTYgICAgICAgIDB4MjRhOA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNf Q0ZHMTcgICAgICAgIDB4MjRhYQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZH MTggICAgICAgIDB4MjRhYw0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMTkg ICAgICAgIDB4MjRhZQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjAgICAg ICAgIDB4MjRiMA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjEgICAgICAg IDB4MjRiMg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjIgICAgICAgIDB4 MjRiNA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjMgICAgICAgIDB4MjRi Ng0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjQgICAgICAgIDB4MjRiOA0K KyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjUgICAgICAgIDB4MjRiYQ0KKyNk ZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjYgICAgICAgIDB4MjRiYw0KKyNkZWZp bmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjcgICAgICAgIDB4MjRiZQ0KKyNkZWZpbmUg TVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjggICAgICAgIDB4MjRjMA0KKyNkZWZpbmUgTVQ2 MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMjkgICAgICAgIDB4MjRjMg0KKyNkZWZpbmUgTVQ2MzU5 X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMzAgICAgICAgIDB4MjRjNA0KKyNkZWZpbmUgTVQ2MzU5X0FG RV9WT1dfUEVSSU9ESUNfQ0ZHMzEgICAgICAgIDB4MjRjNg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9W T1dfUEVSSU9ESUNfQ0ZHMzIgICAgICAgIDB4MjRjOA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1df UEVSSU9ESUNfQ0ZHMzMgICAgICAgIDB4MjRjYQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVS SU9ESUNfQ0ZHMzQgICAgICAgIDB4MjRjYw0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9E SUNfQ0ZHMzUgICAgICAgIDB4MjRjZQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNf Q0ZHMzYgICAgICAgIDB4MjRkMA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZH MzcgICAgICAgIDB4MjRkMg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMzgg ICAgICAgIDB4MjRkNA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfQ0ZHMzkgICAg ICAgIDB4MjRkNg0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfTU9OMCAgICAgICAg IDB4MjRkOA0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfTU9OMSAgICAgICAgIDB4 MjRkYQ0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9WT1dfUEVSSU9ESUNfTU9OMiAgICAgICAgIDB4MjRk Yw0KKyNkZWZpbmUgTVQ2MzU5X0FGRV9OQ1BfQ0ZHMCAgICAgICAgICAgICAgICAgIDB4MjRkZQ0K KyNkZWZpbmUgTVQ2MzU5X0FGRV9OQ1BfQ0ZHMSAgICAgICAgICAgICAgICAgIDB4MjRlMA0KKyNk ZWZpbmUgTVQ2MzU5X0FGRV9OQ1BfQ0ZHMiAgICAgICAgICAgICAgICAgIDB4MjRlMg0KKyNkZWZp bmUgTVQ2MzU5X0FVREVOQ19EU05fSUQgICAgICAgICAgICAgICAgIDB4MjUwMA0KKyNkZWZpbmUg TVQ2MzU5X0FVREVOQ19EU05fUkVWMCAgICAgICAgICAgICAgIDB4MjUwMg0KKyNkZWZpbmUgTVQ2 MzU5X0FVREVOQ19EU05fREJJICAgICAgICAgICAgICAgIDB4MjUwNA0KKyNkZWZpbmUgTVQ2MzU5 X0FVREVOQ19EU05fRlBJICAgICAgICAgICAgICAgIDB4MjUwNg0KKyNkZWZpbmUgTVQ2MzU5X0FV REVOQ19BTkFfQ09OMCAgICAgICAgICAgICAgIDB4MjUwOA0KKyNkZWZpbmUgTVQ2MzU5X0FVREVO Q19BTkFfQ09OMSAgICAgICAgICAgICAgIDB4MjUwYQ0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19B TkFfQ09OMiAgICAgICAgICAgICAgIDB4MjUwYw0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFf Q09OMyAgICAgICAgICAgICAgIDB4MjUwZQ0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09O NCAgICAgICAgICAgICAgIDB4MjUxMA0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09ONSAg ICAgICAgICAgICAgIDB4MjUxMg0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09ONiAgICAg ICAgICAgICAgIDB4MjUxNA0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09ONyAgICAgICAg ICAgICAgIDB4MjUxNg0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09OOCAgICAgICAgICAg ICAgIDB4MjUxOA0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09OOSAgICAgICAgICAgICAg IDB4MjUxYQ0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMTAgICAgICAgICAgICAgIDB4 MjUxYw0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMTEgICAgICAgICAgICAgIDB4MjUx ZQ0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMTIgICAgICAgICAgICAgIDB4MjUyMA0K KyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMTMgICAgICAgICAgICAgIDB4MjUyMg0KKyNk ZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMTQgICAgICAgICAgICAgIDB4MjUyNA0KKyNkZWZp bmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09OMTUgICAgICAgICAgICAgIDB4MjUyNg0KKyNkZWZpbmUg TVQ2MzU5X0FVREVOQ19BTkFfQ09OMTYgICAgICAgICAgICAgIDB4MjUyOA0KKyNkZWZpbmUgTVQ2 MzU5X0FVREVOQ19BTkFfQ09OMTcgICAgICAgICAgICAgIDB4MjUyYQ0KKyNkZWZpbmUgTVQ2MzU5 X0FVREVOQ19BTkFfQ09OMTggICAgICAgICAgICAgIDB4MjUyYw0KKyNkZWZpbmUgTVQ2MzU5X0FV REVOQ19BTkFfQ09OMTkgICAgICAgICAgICAgIDB4MjUyZQ0KKyNkZWZpbmUgTVQ2MzU5X0FVREVO Q19BTkFfQ09OMjAgICAgICAgICAgICAgIDB4MjUzMA0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19B TkFfQ09OMjEgICAgICAgICAgICAgIDB4MjUzMg0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFf Q09OMjIgICAgICAgICAgICAgIDB4MjUzNA0KKyNkZWZpbmUgTVQ2MzU5X0FVREVOQ19BTkFfQ09O MjMgICAgICAgICAgICAgIDB4MjUzNg0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19EU05fSUQgICAg ICAgICAgICAgICAgIDB4MjU4MA0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19EU05fUkVWMCAgICAg ICAgICAgICAgIDB4MjU4Mg0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19EU05fREJJICAgICAgICAg ICAgICAgIDB4MjU4NA0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19EU05fRlBJICAgICAgICAgICAg ICAgIDB4MjU4Ng0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMCAgICAgICAgICAgICAg IDB4MjU4OA0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMSAgICAgICAgICAgICAgIDB4 MjU4YQ0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMiAgICAgICAgICAgICAgIDB4MjU4 Yw0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19BTkFfQ09OMyAgICAgICAgICAgICAgIDB4MjU4ZQ0K KyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19BTkFfQ09ONCAgICAgICAgICAgICAgIDB4MjU5MA0KKyNk ZWZpbmUgTVQ2MzU5X0FVRERFQ19BTkFfQ09ONSAgICAgICAgICAgICAgIDB4MjU5Mg0KKyNkZWZp bmUgTVQ2MzU5X0FVRERFQ19BTkFfQ09ONiAgICAgICAgICAgICAgIDB4MjU5NA0KKyNkZWZpbmUg TVQ2MzU5X0FVRERFQ19BTkFfQ09ONyAgICAgICAgICAgICAgIDB4MjU5Ng0KKyNkZWZpbmUgTVQ2 MzU5X0FVRERFQ19BTkFfQ09OOCAgICAgICAgICAgICAgIDB4MjU5OA0KKyNkZWZpbmUgTVQ2MzU5 X0FVRERFQ19BTkFfQ09OOSAgICAgICAgICAgICAgIDB4MjU5YQ0KKyNkZWZpbmUgTVQ2MzU5X0FV RERFQ19BTkFfQ09OMTAgICAgICAgICAgICAgIDB4MjU5Yw0KKyNkZWZpbmUgTVQ2MzU5X0FVRERF Q19BTkFfQ09OMTEgICAgICAgICAgICAgIDB4MjU5ZQ0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19B TkFfQ09OMTIgICAgICAgICAgICAgIDB4MjVhMA0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19BTkFf Q09OMTMgICAgICAgICAgICAgIDB4MjVhMg0KKyNkZWZpbmUgTVQ2MzU5X0FVRERFQ19BTkFfQ09O MTQgICAgICAgICAgICAgIDB4MjVhNA0KKyNkZWZpbmUgTVQ2MzU5X0FVRFpDRF9EU05fSUQgICAg ICAgICAgICAgICAgIDB4MjYwMA0KKyNkZWZpbmUgTVQ2MzU5X0FVRFpDRF9EU05fUkVWMCAgICAg ICAgICAgICAgIDB4MjYwMg0KKyNkZWZpbmUgTVQ2MzU5X0FVRFpDRF9EU05fREJJICAgICAgICAg ICAgICAgIDB4MjYwNA0KKyNkZWZpbmUgTVQ2MzU5X0FVRFpDRF9EU05fRlBJICAgICAgICAgICAg ICAgIDB4MjYwNg0KKyNkZWZpbmUgTVQ2MzU5X1pDRF9DT04wICAgICAgICAgICAgICAgICAgICAg IDB4MjYwOA0KKyNkZWZpbmUgTVQ2MzU5X1pDRF9DT04xICAgICAgICAgICAgICAgICAgICAgIDB4 MjYwYQ0KKyNkZWZpbmUgTVQ2MzU5X1pDRF9DT04yICAgICAgICAgICAgICAgICAgICAgIDB4MjYw Yw0KKyNkZWZpbmUgTVQ2MzU5X1pDRF9DT04zICAgICAgICAgICAgICAgICAgICAgIDB4MjYwZQ0K KyNkZWZpbmUgTVQ2MzU5X1pDRF9DT040ICAgICAgICAgICAgICAgICAgICAgIDB4MjYxMA0KKyNk ZWZpbmUgTVQ2MzU5X1pDRF9DT041ICAgICAgICAgICAgICAgICAgICAgIDB4MjYxMg0KKyNkZWZp bmUgTVQ2MzU5X0FDQ0RFVF9EU05fRElHX0lEICAgICAgICAgICAgIDB4MjY4MA0KKyNkZWZpbmUg TVQ2MzU5X0FDQ0RFVF9EU05fRElHX1JFVjAgICAgICAgICAgIDB4MjY4Mg0KKyNkZWZpbmUgTVQ2 MzU5X0FDQ0RFVF9EU05fREJJICAgICAgICAgICAgICAgIDB4MjY4NA0KKyNkZWZpbmUgTVQ2MzU5 X0FDQ0RFVF9EU05fRlBJICAgICAgICAgICAgICAgIDB4MjY4Ng0KKyNkZWZpbmUgTVQ2MzU5X0FD Q0RFVF9DT04wICAgICAgICAgICAgICAgICAgIDB4MjY4OA0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RF VF9DT04xICAgICAgICAgICAgICAgICAgIDB4MjY4YQ0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9D T04yICAgICAgICAgICAgICAgICAgIDB4MjY4Yw0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04z ICAgICAgICAgICAgICAgICAgIDB4MjY4ZQ0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT040ICAg ICAgICAgICAgICAgICAgIDB4MjY5MA0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT041ICAgICAg ICAgICAgICAgICAgIDB4MjY5Mg0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT042ICAgICAgICAg ICAgICAgICAgIDB4MjY5NA0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT043ICAgICAgICAgICAg ICAgICAgIDB4MjY5Ng0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT044ICAgICAgICAgICAgICAg ICAgIDB4MjY5OA0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT045ICAgICAgICAgICAgICAgICAg IDB4MjY5YQ0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04xMCAgICAgICAgICAgICAgICAgIDB4 MjY5Yw0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04xMSAgICAgICAgICAgICAgICAgIDB4MjY5 ZQ0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04xMiAgICAgICAgICAgICAgICAgIDB4MjZhMA0K KyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04xMyAgICAgICAgICAgICAgICAgIDB4MjZhMg0KKyNk ZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04xNCAgICAgICAgICAgICAgICAgIDB4MjZhNA0KKyNkZWZp bmUgTVQ2MzU5X0FDQ0RFVF9DT04xNSAgICAgICAgICAgICAgICAgIDB4MjZhNg0KKyNkZWZpbmUg TVQ2MzU5X0FDQ0RFVF9DT04xNiAgICAgICAgICAgICAgICAgIDB4MjZhOA0KKyNkZWZpbmUgTVQ2 MzU5X0FDQ0RFVF9DT04xNyAgICAgICAgICAgICAgICAgIDB4MjZhYQ0KKyNkZWZpbmUgTVQ2MzU5 X0FDQ0RFVF9DT04xOCAgICAgICAgICAgICAgICAgIDB4MjZhYw0KKyNkZWZpbmUgTVQ2MzU5X0FD Q0RFVF9DT04xOSAgICAgICAgICAgICAgICAgIDB4MjZhZQ0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RF VF9DT04yMCAgICAgICAgICAgICAgICAgIDB4MjZiMA0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9D T04yMSAgICAgICAgICAgICAgICAgIDB4MjZiMg0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04y MiAgICAgICAgICAgICAgICAgIDB4MjZiNA0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04yMyAg ICAgICAgICAgICAgICAgIDB4MjZiNg0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04yNCAgICAg ICAgICAgICAgICAgIDB4MjZiOA0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04yNSAgICAgICAg ICAgICAgICAgIDB4MjZiYQ0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04yNiAgICAgICAgICAg ICAgICAgIDB4MjZiYw0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04yNyAgICAgICAgICAgICAg ICAgIDB4MjZiZQ0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04yOCAgICAgICAgICAgICAgICAg IDB4MjZjMA0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04yOSAgICAgICAgICAgICAgICAgIDB4 MjZjMg0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04zMCAgICAgICAgICAgICAgICAgIDB4MjZj NA0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04zMSAgICAgICAgICAgICAgICAgIDB4MjZjNg0K KyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04zMiAgICAgICAgICAgICAgICAgIDB4MjZjOA0KKyNk ZWZpbmUgTVQ2MzU5X0FDQ0RFVF9DT04zMyAgICAgICAgICAgICAgICAgIDB4MjZjYQ0KKyNkZWZp bmUgTVQ2MzU5X0FDQ0RFVF9DT04zNCAgICAgICAgICAgICAgICAgIDB4MjZjYw0KKyNkZWZpbmUg TVQ2MzU5X0FDQ0RFVF9DT04zNSAgICAgICAgICAgICAgICAgIDB4MjZjZQ0KKyNkZWZpbmUgTVQ2 MzU5X0FDQ0RFVF9DT04zNiAgICAgICAgICAgICAgICAgIDB4MjZkMA0KKyNkZWZpbmUgTVQ2MzU5 X0FDQ0RFVF9DT04zNyAgICAgICAgICAgICAgICAgIDB4MjZkMg0KKyNkZWZpbmUgTVQ2MzU5X0FD Q0RFVF9DT04zOCAgICAgICAgICAgICAgICAgIDB4MjZkNA0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RF VF9DT04zOSAgICAgICAgICAgICAgICAgIDB4MjZkNg0KKyNkZWZpbmUgTVQ2MzU5X0FDQ0RFVF9D T040MCAgICAgICAgICAgICAgICAgIDB4MjZkOA0KKyNkZWZpbmUgTVQ2MzU5X01BWF9SRUdJU1RF UiBNVDYzNTlfWkNEX0NPTjUNCisNCitlbnVtIHsNCisJTVQ2MzU5X01US0FJRl9QUk9UT0NPTF8x ID0gMCwNCisJTVQ2MzU5X01US0FJRl9QUk9UT0NPTF8yLA0KKwlNVDYzNTlfTVRLQUlGX1BST1RP Q09MXzJfQ0xLX1AyLA0KK307DQorDQorI2RlZmluZSBDT0RFQ19NVDYzNTlfTkFNRSAibXRrLWNv ZGVjLW10NjM1OSINCisNCitpbnQgbXQ2MzU5X3NldF9tdGthaWZfcHJvdG9jb2woc3RydWN0IHNu ZF9zb2NfY29tcG9uZW50ICpjbXBudCwNCisJCQkgICAgICAgaW50IG10a2FpZl9wcm90b2NvbCk7 DQorDQoraW50IG10NjM1OV9tdGthaWZfY2FsaWJyYXRpb25fZW5hYmxlKHN0cnVjdCBzbmRfc29j X2NvbXBvbmVudCAqY21wbnQpOw0KK2ludCBtdDYzNTlfbXRrYWlmX2NhbGlicmF0aW9uX2Rpc2Fi bGUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCk7DQoraW50IG10NjM1OV9zZXRfbXRr YWlmX2NhbGlicmF0aW9uX3BoYXNlKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQsDQor CQkJCQlpbnQgcGhhc2VfMSwgaW50IHBoYXNlXzIsIGludCBwaGFzZV8zKTsNCisNCisjZW5kaWYv KiBlbmQgX01UNjM1OV9IXyAqLw0KLS0gDQoxLjkuMQ0K