From mboxrd@z Thu Jan 1 00:00:00 1970 From: lee.jones@linaro.org (Lee Jones) Date: Tue, 20 Jan 2015 14:43:09 +0000 Subject: [PATCH v4 2/6] mfd: MT6397: Add support for PMIC MT6397 MFD In-Reply-To: <1419577768-12037-3-git-send-email-flora.fu@mediatek.com> References: <1419577768-12037-1-git-send-email-flora.fu@mediatek.com> <1419577768-12037-3-git-send-email-flora.fu@mediatek.com> Message-ID: <20150120144309.GT13701@x1> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Fri, 26 Dec 2014, Flora Fu wrote: > Add core files for MT6397 MFD driver. > > Signed-off-by: Flora Fu > --- > drivers/mfd/Kconfig | 10 + > drivers/mfd/Makefile | 1 + > drivers/mfd/mt6397-core.c | 94 +++++++++ > include/linux/mfd/mt6397/core.h | 23 +++ > include/linux/mfd/mt6397/registers.h | 362 +++++++++++++++++++++++++++++++++++ > 5 files changed, 490 insertions(+) > create mode 100644 drivers/mfd/mt6397-core.c > create mode 100644 include/linux/mfd/mt6397/core.h > create mode 100644 include/linux/mfd/mt6397/registers.h Looks okay. I assume there are dependancies on this patch. What are they? How would you like this set to be handled? For my own reference: Acked-by: Lee Jones > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index 2e6b731..7782e95 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -489,6 +489,16 @@ config MFD_MAX8998 > additional drivers must be enabled in order to use the functionality > of the device. > > +config MFD_MT6397 > + tristate "MediaTek MT6397 PMIC Support" > + select MFD_CORE > + select IRQ_DOMAIN > + help > + Say yes here to add support for MediaTek MT6397 PMIC. This is > + a Power Management IC. This driver provides common support for > + accessing the device; additional drivers must be enabled in order > + to use the functionality of the device. > + > config MFD_MENF21BMC > tristate "MEN 14F021P00 Board Management Controller Support" > depends on I2C > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile > index 53467e2..329d4ed 100644 > --- a/drivers/mfd/Makefile > +++ b/drivers/mfd/Makefile > @@ -179,3 +179,4 @@ obj-$(CONFIG_MFD_DLN2) += dln2.o > > intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o > obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o > +obj-$(CONFIG_MFD_MT6397) += mt6397-core.o > diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c > new file mode 100644 > index 0000000..45ce01a > --- /dev/null > +++ b/drivers/mfd/mt6397-core.c > @@ -0,0 +1,94 @@ > +/* > + * Copyright (c) 2014 MediaTek Inc. > + * Author: Flora Fu > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + */ > + > +#include > +#include > +#include > +#include > + > +static const struct mfd_cell mt6397_devs[] = { > + { > + .name = "mt6397-rtc", > + .of_compatible = "mediatek,mt6397-rtc", > + }, > + { > + .name = "mt6397-regulator", > + .of_compatible = "mediatek,mt6397-regulator", > + }, > + { > + .name = "mt6397-codec", > + .of_compatible = "mediatek,mt6397-codec", > + }, > + { > + .name = "mt6397-clk", > + .of_compatible = "mediatek,mt6397-clk", > + }, > +}; > + > +static int mt6397_probe(struct platform_device *pdev) > +{ > + int ret; > + struct mt6397_chip *mt6397; > + > + mt6397 = devm_kzalloc(&pdev->dev, sizeof(*mt6397), GFP_KERNEL); > + if (!mt6397) > + return -ENOMEM; > + > + mt6397->dev = &pdev->dev; > + /* > + * mt6397 MFD is child device of soc pmic wrapper. > + * Regmap is set from its parent. > + */ > + mt6397->regmap = dev_get_platdata(&pdev->dev); > + if (!mt6397->regmap) > + return -ENODEV; > + > + platform_set_drvdata(pdev, mt6397); > + > + ret = mfd_add_devices(&pdev->dev, -1, mt6397_devs, > + ARRAY_SIZE(mt6397_devs), NULL, 0, NULL); > + if (ret) > + dev_err(&pdev->dev, "failed to add child devices: %d\n", ret); > + > + return ret; > +} > + > +static int mt6397_remove(struct platform_device *pdev) > +{ > + mfd_remove_devices(&pdev->dev); > + > + return 0; > +} > + > +static const struct of_device_id mt6397_of_match[] = { > + { .compatible = "mediatek,mt6397" }, > + { } > +}; > +MODULE_DEVICE_TABLE(of, mt6397_of_match); > + > +static struct platform_driver mt6397_driver = { > + .probe = mt6397_probe, > + .remove = mt6397_remove, > + .driver = { > + .name = "mt6397", > + .of_match_table = of_match_ptr(mt6397_of_match), > + }, > +}; > + > +module_platform_driver(mt6397_driver); > + > +MODULE_AUTHOR("Flora Fu "); > +MODULE_DESCRIPTION("Driver for MediaTek MT6397 PMIC"); > +MODULE_LICENSE("GPL"); > +MODULE_ALIAS("platform:mt6397"); > diff --git a/include/linux/mfd/mt6397/core.h b/include/linux/mfd/mt6397/core.h > new file mode 100644 > index 0000000..567164e > --- /dev/null > +++ b/include/linux/mfd/mt6397/core.h > @@ -0,0 +1,23 @@ > +/* > + * Copyright (c) 2014 MediaTek Inc. > + * Author: Flora Fu > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + */ > + > +#ifndef __MFD_MT6397_CORE_H__ > +#define __MFD_MT6397_CORE_H__ > + > +struct mt6397_chip { > + struct device *dev; > + struct regmap *regmap; > +}; > + > +#endif /* __MFD_MT6397_CORE_H__ */ > diff --git a/include/linux/mfd/mt6397/registers.h b/include/linux/mfd/mt6397/registers.h > new file mode 100644 > index 0000000..b39a5a5 > --- /dev/null > +++ b/include/linux/mfd/mt6397/registers.h > @@ -0,0 +1,362 @@ > +/* > + * Copyright (c) 2014 MediaTek Inc. > + * Author: Flora Fu > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + */ > + > +#ifndef __MFD_MT6397_REGISTERS_H__ > +#define __MFD_MT6397_REGISTERS_H__ > + > +/* PMIC Registers */ > +#define MT6397_CID 0x0100 > +#define MT6397_TOP_CKPDN 0x0102 > +#define MT6397_TOP_CKPDN_SET 0x0104 > +#define MT6397_TOP_CKPDN_CLR 0x0106 > +#define MT6397_TOP_CKPDN2 0x0108 > +#define MT6397_TOP_CKPDN2_SET 0x010A > +#define MT6397_TOP_CKPDN2_CLR 0x010C > +#define MT6397_TOP_GPIO_CKPDN 0x010E > +#define MT6397_TOP_RST_CON 0x0114 > +#define MT6397_WRP_CKPDN 0x011A > +#define MT6397_WRP_RST_CON 0x0120 > +#define MT6397_TOP_RST_MISC 0x0126 > +#define MT6397_TOP_CKCON1 0x0128 > +#define MT6397_TOP_CKCON2 0x012A > +#define MT6397_TOP_CKTST1 0x012C > +#define MT6397_TOP_CKTST2 0x012E > +#define MT6397_OC_DEG_EN 0x0130 > +#define MT6397_OC_CTL0 0x0132 > +#define MT6397_OC_CTL1 0x0134 > +#define MT6397_OC_CTL2 0x0136 > +#define MT6397_INT_RSV 0x0138 > +#define MT6397_TEST_CON0 0x013A > +#define MT6397_TEST_CON1 0x013C > +#define MT6397_STATUS0 0x013E > +#define MT6397_STATUS1 0x0140 > +#define MT6397_PGSTATUS 0x0142 > +#define MT6397_CHRSTATUS 0x0144 > +#define MT6397_OCSTATUS0 0x0146 > +#define MT6397_OCSTATUS1 0x0148 > +#define MT6397_OCSTATUS2 0x014A > +#define MT6397_HDMI_PAD_IE 0x014C > +#define MT6397_TEST_OUT_L 0x014E > +#define MT6397_TEST_OUT_H 0x0150 > +#define MT6397_TDSEL_CON 0x0152 > +#define MT6397_RDSEL_CON 0x0154 > +#define MT6397_GPIO_SMT_CON0 0x0156 > +#define MT6397_GPIO_SMT_CON1 0x0158 > +#define MT6397_GPIO_SMT_CON2 0x015A > +#define MT6397_GPIO_SMT_CON3 0x015C > +#define MT6397_DRV_CON0 0x015E > +#define MT6397_DRV_CON1 0x0160 > +#define MT6397_DRV_CON2 0x0162 > +#define MT6397_DRV_CON3 0x0164 > +#define MT6397_DRV_CON4 0x0166 > +#define MT6397_DRV_CON5 0x0168 > +#define MT6397_DRV_CON6 0x016A > +#define MT6397_DRV_CON7 0x016C > +#define MT6397_DRV_CON8 0x016E > +#define MT6397_DRV_CON9 0x0170 > +#define MT6397_DRV_CON10 0x0172 > +#define MT6397_DRV_CON11 0x0174 > +#define MT6397_DRV_CON12 0x0176 > +#define MT6397_INT_CON0 0x0178 > +#define MT6397_INT_CON1 0x017E > +#define MT6397_INT_STATUS0 0x0184 > +#define MT6397_INT_STATUS1 0x0186 > +#define MT6397_FQMTR_CON0 0x0188 > +#define MT6397_FQMTR_CON1 0x018A > +#define MT6397_FQMTR_CON2 0x018C > +#define MT6397_EFUSE_DOUT_0_15 0x01C4 > +#define MT6397_EFUSE_DOUT_16_31 0x01C6 > +#define MT6397_EFUSE_DOUT_32_47 0x01C8 > +#define MT6397_EFUSE_DOUT_48_63 0x01CA > +#define MT6397_SPI_CON 0x01CC > +#define MT6397_TOP_CKPDN3 0x01CE > +#define MT6397_TOP_CKCON3 0x01D4 > +#define MT6397_EFUSE_DOUT_64_79 0x01D6 > +#define MT6397_EFUSE_DOUT_80_95 0x01D8 > +#define MT6397_EFUSE_DOUT_96_111 0x01DA > +#define MT6397_EFUSE_DOUT_112_127 0x01DC > +#define MT6397_EFUSE_DOUT_128_143 0x01DE > +#define MT6397_EFUSE_DOUT_144_159 0x01E0 > +#define MT6397_EFUSE_DOUT_160_175 0x01E2 > +#define MT6397_EFUSE_DOUT_176_191 0x01E4 > +#define MT6397_EFUSE_DOUT_192_207 0x01E6 > +#define MT6397_EFUSE_DOUT_208_223 0x01E8 > +#define MT6397_EFUSE_DOUT_224_239 0x01EA > +#define MT6397_EFUSE_DOUT_240_255 0x01EC > +#define MT6397_EFUSE_DOUT_256_271 0x01EE > +#define MT6397_EFUSE_DOUT_272_287 0x01F0 > +#define MT6397_EFUSE_DOUT_288_300 0x01F2 > +#define MT6397_EFUSE_DOUT_304_319 0x01F4 > +#define MT6397_BUCK_CON0 0x0200 > +#define MT6397_BUCK_CON1 0x0202 > +#define MT6397_BUCK_CON2 0x0204 > +#define MT6397_BUCK_CON3 0x0206 > +#define MT6397_BUCK_CON4 0x0208 > +#define MT6397_BUCK_CON5 0x020A > +#define MT6397_BUCK_CON6 0x020C > +#define MT6397_BUCK_CON7 0x020E > +#define MT6397_BUCK_CON8 0x0210 > +#define MT6397_BUCK_CON9 0x0212 > +#define MT6397_VCA15_CON0 0x0214 > +#define MT6397_VCA15_CON1 0x0216 > +#define MT6397_VCA15_CON2 0x0218 > +#define MT6397_VCA15_CON3 0x021A > +#define MT6397_VCA15_CON4 0x021C > +#define MT6397_VCA15_CON5 0x021E > +#define MT6397_VCA15_CON6 0x0220 > +#define MT6397_VCA15_CON7 0x0222 > +#define MT6397_VCA15_CON8 0x0224 > +#define MT6397_VCA15_CON9 0x0226 > +#define MT6397_VCA15_CON10 0x0228 > +#define MT6397_VCA15_CON11 0x022A > +#define MT6397_VCA15_CON12 0x022C > +#define MT6397_VCA15_CON13 0x022E > +#define MT6397_VCA15_CON14 0x0230 > +#define MT6397_VCA15_CON15 0x0232 > +#define MT6397_VCA15_CON16 0x0234 > +#define MT6397_VCA15_CON17 0x0236 > +#define MT6397_VCA15_CON18 0x0238 > +#define MT6397_VSRMCA15_CON0 0x023A > +#define MT6397_VSRMCA15_CON1 0x023C > +#define MT6397_VSRMCA15_CON2 0x023E > +#define MT6397_VSRMCA15_CON3 0x0240 > +#define MT6397_VSRMCA15_CON4 0x0242 > +#define MT6397_VSRMCA15_CON5 0x0244 > +#define MT6397_VSRMCA15_CON6 0x0246 > +#define MT6397_VSRMCA15_CON7 0x0248 > +#define MT6397_VSRMCA15_CON8 0x024A > +#define MT6397_VSRMCA15_CON9 0x024C > +#define MT6397_VSRMCA15_CON10 0x024E > +#define MT6397_VSRMCA15_CON11 0x0250 > +#define MT6397_VSRMCA15_CON12 0x0252 > +#define MT6397_VSRMCA15_CON13 0x0254 > +#define MT6397_VSRMCA15_CON14 0x0256 > +#define MT6397_VSRMCA15_CON15 0x0258 > +#define MT6397_VSRMCA15_CON16 0x025A > +#define MT6397_VSRMCA15_CON17 0x025C > +#define MT6397_VSRMCA15_CON18 0x025E > +#define MT6397_VSRMCA15_CON19 0x0260 > +#define MT6397_VSRMCA15_CON20 0x0262 > +#define MT6397_VSRMCA15_CON21 0x0264 > +#define MT6397_VCORE_CON0 0x0266 > +#define MT6397_VCORE_CON1 0x0268 > +#define MT6397_VCORE_CON2 0x026A > +#define MT6397_VCORE_CON3 0x026C > +#define MT6397_VCORE_CON4 0x026E > +#define MT6397_VCORE_CON5 0x0270 > +#define MT6397_VCORE_CON6 0x0272 > +#define MT6397_VCORE_CON7 0x0274 > +#define MT6397_VCORE_CON8 0x0276 > +#define MT6397_VCORE_CON9 0x0278 > +#define MT6397_VCORE_CON10 0x027A > +#define MT6397_VCORE_CON11 0x027C > +#define MT6397_VCORE_CON12 0x027E > +#define MT6397_VCORE_CON13 0x0280 > +#define MT6397_VCORE_CON14 0x0282 > +#define MT6397_VCORE_CON15 0x0284 > +#define MT6397_VCORE_CON16 0x0286 > +#define MT6397_VCORE_CON17 0x0288 > +#define MT6397_VCORE_CON18 0x028A > +#define MT6397_VGPU_CON0 0x028C > +#define MT6397_VGPU_CON1 0x028E > +#define MT6397_VGPU_CON2 0x0290 > +#define MT6397_VGPU_CON3 0x0292 > +#define MT6397_VGPU_CON4 0x0294 > +#define MT6397_VGPU_CON5 0x0296 > +#define MT6397_VGPU_CON6 0x0298 > +#define MT6397_VGPU_CON7 0x029A > +#define MT6397_VGPU_CON8 0x029C > +#define MT6397_VGPU_CON9 0x029E > +#define MT6397_VGPU_CON10 0x02A0 > +#define MT6397_VGPU_CON11 0x02A2 > +#define MT6397_VGPU_CON12 0x02A4 > +#define MT6397_VGPU_CON13 0x02A6 > +#define MT6397_VGPU_CON14 0x02A8 > +#define MT6397_VGPU_CON15 0x02AA > +#define MT6397_VGPU_CON16 0x02AC > +#define MT6397_VGPU_CON17 0x02AE > +#define MT6397_VGPU_CON18 0x02B0 > +#define MT6397_VIO18_CON0 0x0300 > +#define MT6397_VIO18_CON1 0x0302 > +#define MT6397_VIO18_CON2 0x0304 > +#define MT6397_VIO18_CON3 0x0306 > +#define MT6397_VIO18_CON4 0x0308 > +#define MT6397_VIO18_CON5 0x030A > +#define MT6397_VIO18_CON6 0x030C > +#define MT6397_VIO18_CON7 0x030E > +#define MT6397_VIO18_CON8 0x0310 > +#define MT6397_VIO18_CON9 0x0312 > +#define MT6397_VIO18_CON10 0x0314 > +#define MT6397_VIO18_CON11 0x0316 > +#define MT6397_VIO18_CON12 0x0318 > +#define MT6397_VIO18_CON13 0x031A > +#define MT6397_VIO18_CON14 0x031C > +#define MT6397_VIO18_CON15 0x031E > +#define MT6397_VIO18_CON16 0x0320 > +#define MT6397_VIO18_CON17 0x0322 > +#define MT6397_VIO18_CON18 0x0324 > +#define MT6397_VPCA7_CON0 0x0326 > +#define MT6397_VPCA7_CON1 0x0328 > +#define MT6397_VPCA7_CON2 0x032A > +#define MT6397_VPCA7_CON3 0x032C > +#define MT6397_VPCA7_CON4 0x032E > +#define MT6397_VPCA7_CON5 0x0330 > +#define MT6397_VPCA7_CON6 0x0332 > +#define MT6397_VPCA7_CON7 0x0334 > +#define MT6397_VPCA7_CON8 0x0336 > +#define MT6397_VPCA7_CON9 0x0338 > +#define MT6397_VPCA7_CON10 0x033A > +#define MT6397_VPCA7_CON11 0x033C > +#define MT6397_VPCA7_CON12 0x033E > +#define MT6397_VPCA7_CON13 0x0340 > +#define MT6397_VPCA7_CON14 0x0342 > +#define MT6397_VPCA7_CON15 0x0344 > +#define MT6397_VPCA7_CON16 0x0346 > +#define MT6397_VPCA7_CON17 0x0348 > +#define MT6397_VPCA7_CON18 0x034A > +#define MT6397_VSRMCA7_CON0 0x034C > +#define MT6397_VSRMCA7_CON1 0x034E > +#define MT6397_VSRMCA7_CON2 0x0350 > +#define MT6397_VSRMCA7_CON3 0x0352 > +#define MT6397_VSRMCA7_CON4 0x0354 > +#define MT6397_VSRMCA7_CON5 0x0356 > +#define MT6397_VSRMCA7_CON6 0x0358 > +#define MT6397_VSRMCA7_CON7 0x035A > +#define MT6397_VSRMCA7_CON8 0x035C > +#define MT6397_VSRMCA7_CON9 0x035E > +#define MT6397_VSRMCA7_CON10 0x0360 > +#define MT6397_VSRMCA7_CON11 0x0362 > +#define MT6397_VSRMCA7_CON12 0x0364 > +#define MT6397_VSRMCA7_CON13 0x0366 > +#define MT6397_VSRMCA7_CON14 0x0368 > +#define MT6397_VSRMCA7_CON15 0x036A > +#define MT6397_VSRMCA7_CON16 0x036C > +#define MT6397_VSRMCA7_CON17 0x036E > +#define MT6397_VSRMCA7_CON18 0x0370 > +#define MT6397_VSRMCA7_CON19 0x0372 > +#define MT6397_VSRMCA7_CON20 0x0374 > +#define MT6397_VSRMCA7_CON21 0x0376 > +#define MT6397_VDRM_CON0 0x0378 > +#define MT6397_VDRM_CON1 0x037A > +#define MT6397_VDRM_CON2 0x037C > +#define MT6397_VDRM_CON3 0x037E > +#define MT6397_VDRM_CON4 0x0380 > +#define MT6397_VDRM_CON5 0x0382 > +#define MT6397_VDRM_CON6 0x0384 > +#define MT6397_VDRM_CON7 0x0386 > +#define MT6397_VDRM_CON8 0x0388 > +#define MT6397_VDRM_CON9 0x038A > +#define MT6397_VDRM_CON10 0x038C > +#define MT6397_VDRM_CON11 0x038E > +#define MT6397_VDRM_CON12 0x0390 > +#define MT6397_VDRM_CON13 0x0392 > +#define MT6397_VDRM_CON14 0x0394 > +#define MT6397_VDRM_CON15 0x0396 > +#define MT6397_VDRM_CON16 0x0398 > +#define MT6397_VDRM_CON17 0x039A > +#define MT6397_VDRM_CON18 0x039C > +#define MT6397_BUCK_K_CON0 0x039E > +#define MT6397_BUCK_K_CON1 0x03A0 > +#define MT6397_ANALDO_CON0 0x0400 > +#define MT6397_ANALDO_CON1 0x0402 > +#define MT6397_ANALDO_CON2 0x0404 > +#define MT6397_ANALDO_CON3 0x0406 > +#define MT6397_ANALDO_CON4 0x0408 > +#define MT6397_ANALDO_CON5 0x040A > +#define MT6397_ANALDO_CON6 0x040C > +#define MT6397_ANALDO_CON7 0x040E > +#define MT6397_DIGLDO_CON0 0x0410 > +#define MT6397_DIGLDO_CON1 0x0412 > +#define MT6397_DIGLDO_CON2 0x0414 > +#define MT6397_DIGLDO_CON3 0x0416 > +#define MT6397_DIGLDO_CON4 0x0418 > +#define MT6397_DIGLDO_CON5 0x041A > +#define MT6397_DIGLDO_CON6 0x041C > +#define MT6397_DIGLDO_CON7 0x041E > +#define MT6397_DIGLDO_CON8 0x0420 > +#define MT6397_DIGLDO_CON9 0x0422 > +#define MT6397_DIGLDO_CON10 0x0424 > +#define MT6397_DIGLDO_CON11 0x0426 > +#define MT6397_DIGLDO_CON12 0x0428 > +#define MT6397_DIGLDO_CON13 0x042A > +#define MT6397_DIGLDO_CON14 0x042C > +#define MT6397_DIGLDO_CON15 0x042E > +#define MT6397_DIGLDO_CON16 0x0430 > +#define MT6397_DIGLDO_CON17 0x0432 > +#define MT6397_DIGLDO_CON18 0x0434 > +#define MT6397_DIGLDO_CON19 0x0436 > +#define MT6397_DIGLDO_CON20 0x0438 > +#define MT6397_DIGLDO_CON21 0x043A > +#define MT6397_DIGLDO_CON22 0x043C > +#define MT6397_DIGLDO_CON23 0x043E > +#define MT6397_DIGLDO_CON24 0x0440 > +#define MT6397_DIGLDO_CON25 0x0442 > +#define MT6397_DIGLDO_CON26 0x0444 > +#define MT6397_DIGLDO_CON27 0x0446 > +#define MT6397_DIGLDO_CON28 0x0448 > +#define MT6397_DIGLDO_CON29 0x044A > +#define MT6397_DIGLDO_CON30 0x044C > +#define MT6397_DIGLDO_CON31 0x044E > +#define MT6397_DIGLDO_CON32 0x0450 > +#define MT6397_DIGLDO_CON33 0x045A > +#define MT6397_SPK_CON0 0x0600 > +#define MT6397_SPK_CON1 0x0602 > +#define MT6397_SPK_CON2 0x0604 > +#define MT6397_SPK_CON3 0x0606 > +#define MT6397_SPK_CON4 0x0608 > +#define MT6397_SPK_CON5 0x060A > +#define MT6397_SPK_CON6 0x060C > +#define MT6397_SPK_CON7 0x060E > +#define MT6397_SPK_CON8 0x0610 > +#define MT6397_SPK_CON9 0x0612 > +#define MT6397_SPK_CON10 0x0614 > +#define MT6397_SPK_CON11 0x0616 > +#define MT6397_AUDDAC_CON0 0x0700 > +#define MT6397_AUDBUF_CFG0 0x0702 > +#define MT6397_AUDBUF_CFG1 0x0704 > +#define MT6397_AUDBUF_CFG2 0x0706 > +#define MT6397_AUDBUF_CFG3 0x0708 > +#define MT6397_AUDBUF_CFG4 0x070A > +#define MT6397_IBIASDIST_CFG0 0x070C > +#define MT6397_AUDACCDEPOP_CFG0 0x070E > +#define MT6397_AUD_IV_CFG0 0x0710 > +#define MT6397_AUDCLKGEN_CFG0 0x0712 > +#define MT6397_AUDLDO_CFG0 0x0714 > +#define MT6397_AUDLDO_CFG1 0x0716 > +#define MT6397_AUDNVREGGLB_CFG0 0x0718 > +#define MT6397_AUD_NCP0 0x071A > +#define MT6397_AUDPREAMP_CON0 0x071C > +#define MT6397_AUDADC_CON0 0x071E > +#define MT6397_AUDADC_CON1 0x0720 > +#define MT6397_AUDADC_CON2 0x0722 > +#define MT6397_AUDADC_CON3 0x0724 > +#define MT6397_AUDADC_CON4 0x0726 > +#define MT6397_AUDADC_CON5 0x0728 > +#define MT6397_AUDADC_CON6 0x072A > +#define MT6397_AUDDIGMI_CON0 0x072C > +#define MT6397_AUDLSBUF_CON0 0x072E > +#define MT6397_AUDLSBUF_CON1 0x0730 > +#define MT6397_AUDENCSPARE_CON0 0x0732 > +#define MT6397_AUDENCCLKSQ_CON0 0x0734 > +#define MT6397_AUDPREAMPGAIN_CON0 0x0736 > +#define MT6397_ZCD_CON0 0x0738 > +#define MT6397_ZCD_CON1 0x073A > +#define MT6397_ZCD_CON2 0x073C > +#define MT6397_ZCD_CON3 0x073E > +#define MT6397_ZCD_CON4 0x0740 > +#define MT6397_ZCD_CON5 0x0742 > +#define MT6397_NCP_CLKDIV_CON0 0x0744 > +#define MT6397_NCP_CLKDIV_CON1 0x0746 > + > +#endif /* __MFD_MT6397_REGISTERS_H__ */ -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [PATCH v4 2/6] mfd: MT6397: Add support for PMIC MT6397 MFD Date: Tue, 20 Jan 2015 14:43:09 +0000 Message-ID: <20150120144309.GT13701@x1> References: <1419577768-12037-1-git-send-email-flora.fu@mediatek.com> <1419577768-12037-3-git-send-email-flora.fu@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1419577768-12037-3-git-send-email-flora.fu@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Flora Fu Cc: Mark Rutland , Menghui Lin , Russell King , Samuel Ortiz , arm@kernel.org, Grant Likely , Yingjoe Chen , devicetree@vger.kernel.org, Pawel Moll , Ian Campbell , HenryC Chen , Rob Herring , Matthias Brugger , Eddie Huang , linux-arm-kernel@lists.infradead.org, Dongdong Cheng , srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, Arnd Bergmann , Sascha Hauer , Kumar Gala , Olof Johansson , Chen Zhong List-Id: devicetree@vger.kernel.org T24gRnJpLCAyNiBEZWMgMjAxNCwgRmxvcmEgRnUgd3JvdGU6Cgo+IEFkZCBjb3JlIGZpbGVzIGZv ciBNVDYzOTcgTUZEIGRyaXZlci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBGbG9yYSBGdSA8ZmxvcmEu ZnVAbWVkaWF0ZWsuY29tPgo+IC0tLQo+ICBkcml2ZXJzL21mZC9LY29uZmlnICAgICAgICAgICAg ICAgICAgfCAgMTAgKwo+ICBkcml2ZXJzL21mZC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAg IDEgKwo+ICBkcml2ZXJzL21mZC9tdDYzOTctY29yZS5jICAgICAgICAgICAgfCAgOTQgKysrKysr KysrCj4gIGluY2x1ZGUvbGludXgvbWZkL210NjM5Ny9jb3JlLmggICAgICB8ICAyMyArKysKPiAg aW5jbHVkZS9saW51eC9tZmQvbXQ2Mzk3L3JlZ2lzdGVycy5oIHwgMzYyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gIDUgZmlsZXMgY2hhbmdlZCwgNDkwIGluc2VydGlvbnMo KykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWZkL210NjM5Ny1jb3JlLmMKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvbWZkL210NjM5Ny9jb3JlLmgKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvbWZkL210NjM5Ny9yZWdpc3RlcnMuaAoKTG9va3Mg b2theS4KCkkgYXNzdW1lIHRoZXJlIGFyZSBkZXBlbmRhbmNpZXMgb24gdGhpcyBwYXRjaC4gIFdo YXQgYXJlIHRoZXk/CgpIb3cgd291bGQgeW91IGxpa2UgdGhpcyBzZXQgdG8gYmUgaGFuZGxlZD8K CkZvciBteSBvd24gcmVmZXJlbmNlOgogIEFja2VkLWJ5OiBMZWUgSm9uZXMgPGxlZS5qb25lc0Bs aW5hcm8ub3JnPgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvS2NvbmZpZyBiL2RyaXZlcnMv bWZkL0tjb25maWcKPiBpbmRleCAyZTZiNzMxLi43NzgyZTk1IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbWZkL0tjb25maWcKPiArKysgYi9kcml2ZXJzL21mZC9LY29uZmlnCj4gQEAgLTQ4OSw2ICs0 ODksMTYgQEAgY29uZmlnIE1GRF9NQVg4OTk4Cj4gIAkgIGFkZGl0aW9uYWwgZHJpdmVycyBtdXN0 IGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gdXNlIHRoZSBmdW5jdGlvbmFsaXR5Cj4gIAkgIG9mIHRo ZSBkZXZpY2UuCj4gIAo+ICtjb25maWcgTUZEX01UNjM5Nwo+ICsJdHJpc3RhdGUgIk1lZGlhVGVr IE1UNjM5NyBQTUlDIFN1cHBvcnQiCj4gKwlzZWxlY3QgTUZEX0NPUkUKPiArCXNlbGVjdCBJUlFf RE9NQUlOCj4gKwloZWxwCj4gKwkgIFNheSB5ZXMgaGVyZSB0byBhZGQgc3VwcG9ydCBmb3IgTWVk aWFUZWsgTVQ2Mzk3IFBNSUMuIFRoaXMgaXMKPiArCSAgYSBQb3dlciBNYW5hZ2VtZW50IElDLiBU aGlzIGRyaXZlciBwcm92aWRlcyBjb21tb24gc3VwcG9ydCBmb3IKPiArCSAgYWNjZXNzaW5nIHRo ZSBkZXZpY2U7IGFkZGl0aW9uYWwgZHJpdmVycyBtdXN0IGJlIGVuYWJsZWQgaW4gb3JkZXIKPiAr CSAgdG8gdXNlIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkZXZpY2UuCj4gKwo+ICBjb25maWcg TUZEX01FTkYyMUJNQwo+ICAJdHJpc3RhdGUgIk1FTiAxNEYwMjFQMDAgQm9hcmQgTWFuYWdlbWVu dCBDb250cm9sbGVyIFN1cHBvcnQiCj4gIAlkZXBlbmRzIG9uIEkyQwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21mZC9NYWtlZmlsZSBiL2RyaXZlcnMvbWZkL01ha2VmaWxlCj4gaW5kZXggNTM0Njdl Mi4uMzI5ZDRlZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9NYWtlZmlsZQo+ICsrKyBiL2Ry aXZlcnMvbWZkL01ha2VmaWxlCj4gQEAgLTE3OSwzICsxNzksNCBAQCBvYmotJChDT05GSUdfTUZE X0RMTjIpCQkrPSBkbG4yLm8KPiAgCj4gIGludGVsLXNvYy1wbWljLW9ianMJCTo9IGludGVsX3Nv Y19wbWljX2NvcmUubyBpbnRlbF9zb2NfcG1pY19jcmMubwo+ICBvYmotJChDT05GSUdfSU5URUxf U09DX1BNSUMpCSs9IGludGVsLXNvYy1wbWljLm8KPiArb2JqLSQoQ09ORklHX01GRF9NVDYzOTcp CSs9IG10NjM5Ny1jb3JlLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvbXQ2Mzk3LWNvcmUu YyBiL2RyaXZlcnMvbWZkL210NjM5Ny1jb3JlLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAuLjQ1Y2UwMWEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9tZmQv bXQ2Mzk3LWNvcmUuYwo+IEBAIC0wLDAgKzEsOTQgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChj KSAyMDE0IE1lZGlhVGVrIEluYy4KPiArICogQXV0aG9yOiBGbG9yYSBGdSA8ZmxvcmEuZnVAbWVk aWF0ZWsuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21m ZC9jb3JlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tZmQvbXQ2Mzk3L2NvcmUuaD4KPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgbWZkX2NlbGwgbXQ2Mzk3X2RldnNbXSA9IHsKPiArCXsKPiArCQku bmFtZSA9ICJtdDYzOTctcnRjIiwKPiArCQkub2ZfY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDYz OTctcnRjIiwKPiArCX0sCj4gKwl7Cj4gKwkJLm5hbWUgPSAibXQ2Mzk3LXJlZ3VsYXRvciIsCj4g KwkJLm9mX2NvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2Mzk3LXJlZ3VsYXRvciIsCj4gKwl9LAo+ ICsJewo+ICsJCS5uYW1lID0gIm10NjM5Ny1jb2RlYyIsCj4gKwkJLm9mX2NvbXBhdGlibGUgPSAi bWVkaWF0ZWssbXQ2Mzk3LWNvZGVjIiwKPiArCX0sCj4gKwl7Cj4gKwkJLm5hbWUgPSAibXQ2Mzk3 LWNsayIsCj4gKwkJLm9mX2NvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2Mzk3LWNsayIsCj4gKwl9 LAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBtdDYzOTdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKPiArewo+ICsJaW50IHJldDsKPiArCXN0cnVjdCBtdDYzOTdfY2hpcCAqbXQ2 Mzk3Owo+ICsKPiArCW10NjM5NyA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKm10 NjM5NyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFtdDYzOTcpCj4gKwkJcmV0dXJuIC1FTk9NRU07 Cj4gKwo+ICsJbXQ2Mzk3LT5kZXYgPSAmcGRldi0+ZGV2Owo+ICsJLyoKPiArCSAqIG10NjM5NyBN RkQgaXMgY2hpbGQgZGV2aWNlIG9mIHNvYyBwbWljIHdyYXBwZXIuCj4gKwkgKiBSZWdtYXAgaXMg c2V0IGZyb20gaXRzIHBhcmVudC4KPiArCSAqLwo+ICsJbXQ2Mzk3LT5yZWdtYXAgPSBkZXZfZ2V0 X3BsYXRkYXRhKCZwZGV2LT5kZXYpOwo+ICsJaWYgKCFtdDYzOTctPnJlZ21hcCkKPiArCQlyZXR1 cm4gLUVOT0RFVjsKPiArCj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBtdDYzOTcpOwo+ ICsKPiArCXJldCA9IG1mZF9hZGRfZGV2aWNlcygmcGRldi0+ZGV2LCAtMSwgbXQ2Mzk3X2RldnMs Cj4gKwkJCUFSUkFZX1NJWkUobXQ2Mzk3X2RldnMpLCBOVUxMLCAwLCBOVUxMKTsKPiArCWlmIChy ZXQpCj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBjaGlsZCBkZXZpY2Vz OiAlZFxuIiwgcmV0KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG10NjM5N19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJbWZk X3JlbW92ZV9kZXZpY2VzKCZwZGV2LT5kZXYpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDYzOTdfb2ZfbWF0Y2hbXSA9IHsK PiArCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2Mzk3IiB9LAo+ICsJeyB9Cj4gK307Cj4g K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NjM5N19vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDYzOTdfZHJpdmVyID0gewo+ICsJLnByb2JlID0gbXQ2 Mzk3X3Byb2JlLAo+ICsJLnJlbW92ZSA9IG10NjM5N19yZW1vdmUsCj4gKwkuZHJpdmVyID0gewo+ ICsJCS5uYW1lID0gIm10NjM5NyIsCj4gKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRy KG10NjM5N19vZl9tYXRjaCksCj4gKwl9LAo+ICt9Owo+ICsKPiArbW9kdWxlX3BsYXRmb3JtX2Ry aXZlcihtdDYzOTdfZHJpdmVyKTsKPiArCj4gK01PRFVMRV9BVVRIT1IoIkZsb3JhIEZ1IDxmbG9y YS5mdUBtZWRpYXRlay5jb20+Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiRHJpdmVyIGZvciBN ZWRpYVRlayBNVDYzOTcgUE1JQyIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gK01PRFVM RV9BTElBUygicGxhdGZvcm06bXQ2Mzk3Iik7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv bWZkL210NjM5Ny9jb3JlLmggYi9pbmNsdWRlL2xpbnV4L21mZC9tdDYzOTcvY29yZS5oCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi41NjcxNjRlCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2luY2x1ZGUvbGludXgvbWZkL210NjM5Ny9jb3JlLmgKPiBAQCAtMCwwICsxLDIz IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykgMjAxNCBNZWRpYVRlayBJbmMuCj4gKyAqIEF1 dGhvcjogRmxvcmEgRnUgPGZsb3JhLmZ1QG1lZGlhdGVrLmNvbT4KPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4g KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ ICsKPiArI2lmbmRlZiBfX01GRF9NVDYzOTdfQ09SRV9IX18KPiArI2RlZmluZSBfX01GRF9NVDYz OTdfQ09SRV9IX18KPiArCj4gK3N0cnVjdCBtdDYzOTdfY2hpcCB7Cj4gKwlzdHJ1Y3QgZGV2aWNl ICpkZXY7Cj4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7Cj4gK307Cj4gKwo+ICsjZW5kaWYgLyog X19NRkRfTVQ2Mzk3X0NPUkVfSF9fICovCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWZk L210NjM5Ny9yZWdpc3RlcnMuaCBiL2luY2x1ZGUvbGludXgvbWZkL210NjM5Ny9yZWdpc3RlcnMu aAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYjM5YTVhNQo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2xpbnV4L21mZC9tdDYzOTcvcmVnaXN0ZXJzLmgKPiBA QCAtMCwwICsxLDM2MiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVkaWFUZWsg SW5jLgo+ICsgKiBBdXRob3I6IEZsb3JhIEZ1IDxmbG9yYS5mdUBtZWRpYXRlay5jb20+Cj4gKyAq Cj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19NRkRfTVQ2Mzk3X1JFR0lTVEVSU19IX18KPiAr I2RlZmluZSBfX01GRF9NVDYzOTdfUkVHSVNURVJTX0hfXwo+ICsKPiArLyogUE1JQyBSZWdpc3Rl cnMgKi8KPiArI2RlZmluZSBNVDYzOTdfQ0lECQkJMHgwMTAwCj4gKyNkZWZpbmUgTVQ2Mzk3X1RP UF9DS1BETgkJMHgwMTAyCj4gKyNkZWZpbmUgTVQ2Mzk3X1RPUF9DS1BETl9TRVQJCTB4MDEwNAo+ ICsjZGVmaW5lIE1UNjM5N19UT1BfQ0tQRE5fQ0xSCQkweDAxMDYKPiArI2RlZmluZSBNVDYzOTdf VE9QX0NLUEROMgkJMHgwMTA4Cj4gKyNkZWZpbmUgTVQ2Mzk3X1RPUF9DS1BETjJfU0VUCQkweDAx MEEKPiArI2RlZmluZSBNVDYzOTdfVE9QX0NLUEROMl9DTFIJCTB4MDEwQwo+ICsjZGVmaW5lIE1U NjM5N19UT1BfR1BJT19DS1BETgkJMHgwMTBFCj4gKyNkZWZpbmUgTVQ2Mzk3X1RPUF9SU1RfQ09O CQkweDAxMTQKPiArI2RlZmluZSBNVDYzOTdfV1JQX0NLUEROCQkweDAxMUEKPiArI2RlZmluZSBN VDYzOTdfV1JQX1JTVF9DT04JCTB4MDEyMAo+ICsjZGVmaW5lIE1UNjM5N19UT1BfUlNUX01JU0MJ CTB4MDEyNgo+ICsjZGVmaW5lIE1UNjM5N19UT1BfQ0tDT04xCQkweDAxMjgKPiArI2RlZmluZSBN VDYzOTdfVE9QX0NLQ09OMgkJMHgwMTJBCj4gKyNkZWZpbmUgTVQ2Mzk3X1RPUF9DS1RTVDEJCTB4 MDEyQwo+ICsjZGVmaW5lIE1UNjM5N19UT1BfQ0tUU1QyCQkweDAxMkUKPiArI2RlZmluZSBNVDYz OTdfT0NfREVHX0VOCQkweDAxMzAKPiArI2RlZmluZSBNVDYzOTdfT0NfQ1RMMAkJCTB4MDEzMgo+ ICsjZGVmaW5lIE1UNjM5N19PQ19DVEwxCQkJMHgwMTM0Cj4gKyNkZWZpbmUgTVQ2Mzk3X09DX0NU TDIJCQkweDAxMzYKPiArI2RlZmluZSBNVDYzOTdfSU5UX1JTVgkJCTB4MDEzOAo+ICsjZGVmaW5l IE1UNjM5N19URVNUX0NPTjAJCTB4MDEzQQo+ICsjZGVmaW5lIE1UNjM5N19URVNUX0NPTjEJCTB4 MDEzQwo+ICsjZGVmaW5lIE1UNjM5N19TVEFUVVMwCQkJMHgwMTNFCj4gKyNkZWZpbmUgTVQ2Mzk3 X1NUQVRVUzEJCQkweDAxNDAKPiArI2RlZmluZSBNVDYzOTdfUEdTVEFUVVMJCQkweDAxNDIKPiAr I2RlZmluZSBNVDYzOTdfQ0hSU1RBVFVTCQkweDAxNDQKPiArI2RlZmluZSBNVDYzOTdfT0NTVEFU VVMwCQkweDAxNDYKPiArI2RlZmluZSBNVDYzOTdfT0NTVEFUVVMxCQkweDAxNDgKPiArI2RlZmlu ZSBNVDYzOTdfT0NTVEFUVVMyCQkweDAxNEEKPiArI2RlZmluZSBNVDYzOTdfSERNSV9QQURfSUUJ CTB4MDE0Qwo+ICsjZGVmaW5lIE1UNjM5N19URVNUX09VVF9MCQkweDAxNEUKPiArI2RlZmluZSBN VDYzOTdfVEVTVF9PVVRfSAkJMHgwMTUwCj4gKyNkZWZpbmUgTVQ2Mzk3X1REU0VMX0NPTgkJMHgw MTUyCj4gKyNkZWZpbmUgTVQ2Mzk3X1JEU0VMX0NPTgkJMHgwMTU0Cj4gKyNkZWZpbmUgTVQ2Mzk3 X0dQSU9fU01UX0NPTjAJCTB4MDE1Ngo+ICsjZGVmaW5lIE1UNjM5N19HUElPX1NNVF9DT04xCQkw eDAxNTgKPiArI2RlZmluZSBNVDYzOTdfR1BJT19TTVRfQ09OMgkJMHgwMTVBCj4gKyNkZWZpbmUg TVQ2Mzk3X0dQSU9fU01UX0NPTjMJCTB4MDE1Qwo+ICsjZGVmaW5lIE1UNjM5N19EUlZfQ09OMAkJ CTB4MDE1RQo+ICsjZGVmaW5lIE1UNjM5N19EUlZfQ09OMQkJCTB4MDE2MAo+ICsjZGVmaW5lIE1U NjM5N19EUlZfQ09OMgkJCTB4MDE2Mgo+ICsjZGVmaW5lIE1UNjM5N19EUlZfQ09OMwkJCTB4MDE2 NAo+ICsjZGVmaW5lIE1UNjM5N19EUlZfQ09ONAkJCTB4MDE2Ngo+ICsjZGVmaW5lIE1UNjM5N19E UlZfQ09ONQkJCTB4MDE2OAo+ICsjZGVmaW5lIE1UNjM5N19EUlZfQ09ONgkJCTB4MDE2QQo+ICsj ZGVmaW5lIE1UNjM5N19EUlZfQ09ONwkJCTB4MDE2Qwo+ICsjZGVmaW5lIE1UNjM5N19EUlZfQ09O OAkJCTB4MDE2RQo+ICsjZGVmaW5lIE1UNjM5N19EUlZfQ09OOQkJCTB4MDE3MAo+ICsjZGVmaW5l IE1UNjM5N19EUlZfQ09OMTAJCTB4MDE3Mgo+ICsjZGVmaW5lIE1UNjM5N19EUlZfQ09OMTEJCTB4 MDE3NAo+ICsjZGVmaW5lIE1UNjM5N19EUlZfQ09OMTIJCTB4MDE3Ngo+ICsjZGVmaW5lIE1UNjM5 N19JTlRfQ09OMAkJCTB4MDE3OAo+ICsjZGVmaW5lIE1UNjM5N19JTlRfQ09OMQkJCTB4MDE3RQo+ ICsjZGVmaW5lIE1UNjM5N19JTlRfU1RBVFVTMAkJMHgwMTg0Cj4gKyNkZWZpbmUgTVQ2Mzk3X0lO VF9TVEFUVVMxCQkweDAxODYKPiArI2RlZmluZSBNVDYzOTdfRlFNVFJfQ09OMAkJMHgwMTg4Cj4g KyNkZWZpbmUgTVQ2Mzk3X0ZRTVRSX0NPTjEJCTB4MDE4QQo+ICsjZGVmaW5lIE1UNjM5N19GUU1U Ul9DT04yCQkweDAxOEMKPiArI2RlZmluZSBNVDYzOTdfRUZVU0VfRE9VVF8wXzE1CQkweDAxQzQK PiArI2RlZmluZSBNVDYzOTdfRUZVU0VfRE9VVF8xNl8zMQkJMHgwMUM2Cj4gKyNkZWZpbmUgTVQ2 Mzk3X0VGVVNFX0RPVVRfMzJfNDcJCTB4MDFDOAo+ICsjZGVmaW5lIE1UNjM5N19FRlVTRV9ET1VU XzQ4XzYzCQkweDAxQ0EKPiArI2RlZmluZSBNVDYzOTdfU1BJX0NPTgkJCTB4MDFDQwo+ICsjZGVm aW5lIE1UNjM5N19UT1BfQ0tQRE4zCQkweDAxQ0UKPiArI2RlZmluZSBNVDYzOTdfVE9QX0NLQ09O MwkJMHgwMUQ0Cj4gKyNkZWZpbmUgTVQ2Mzk3X0VGVVNFX0RPVVRfNjRfNzkJCTB4MDFENgo+ICsj ZGVmaW5lIE1UNjM5N19FRlVTRV9ET1VUXzgwXzk1CQkweDAxRDgKPiArI2RlZmluZSBNVDYzOTdf RUZVU0VfRE9VVF85Nl8xMTEJMHgwMURBCj4gKyNkZWZpbmUgTVQ2Mzk3X0VGVVNFX0RPVVRfMTEy XzEyNwkweDAxREMKPiArI2RlZmluZSBNVDYzOTdfRUZVU0VfRE9VVF8xMjhfMTQzCTB4MDFERQo+ ICsjZGVmaW5lIE1UNjM5N19FRlVTRV9ET1VUXzE0NF8xNTkJMHgwMUUwCj4gKyNkZWZpbmUgTVQ2 Mzk3X0VGVVNFX0RPVVRfMTYwXzE3NQkweDAxRTIKPiArI2RlZmluZSBNVDYzOTdfRUZVU0VfRE9V VF8xNzZfMTkxCTB4MDFFNAo+ICsjZGVmaW5lIE1UNjM5N19FRlVTRV9ET1VUXzE5Ml8yMDcJMHgw MUU2Cj4gKyNkZWZpbmUgTVQ2Mzk3X0VGVVNFX0RPVVRfMjA4XzIyMwkweDAxRTgKPiArI2RlZmlu ZSBNVDYzOTdfRUZVU0VfRE9VVF8yMjRfMjM5CTB4MDFFQQo+ICsjZGVmaW5lIE1UNjM5N19FRlVT RV9ET1VUXzI0MF8yNTUJMHgwMUVDCj4gKyNkZWZpbmUgTVQ2Mzk3X0VGVVNFX0RPVVRfMjU2XzI3 MQkweDAxRUUKPiArI2RlZmluZSBNVDYzOTdfRUZVU0VfRE9VVF8yNzJfMjg3CTB4MDFGMAo+ICsj ZGVmaW5lIE1UNjM5N19FRlVTRV9ET1VUXzI4OF8zMDAJMHgwMUYyCj4gKyNkZWZpbmUgTVQ2Mzk3 X0VGVVNFX0RPVVRfMzA0XzMxOQkweDAxRjQKPiArI2RlZmluZSBNVDYzOTdfQlVDS19DT04wCQkw eDAyMDAKPiArI2RlZmluZSBNVDYzOTdfQlVDS19DT04xCQkweDAyMDIKPiArI2RlZmluZSBNVDYz OTdfQlVDS19DT04yCQkweDAyMDQKPiArI2RlZmluZSBNVDYzOTdfQlVDS19DT04zCQkweDAyMDYK PiArI2RlZmluZSBNVDYzOTdfQlVDS19DT040CQkweDAyMDgKPiArI2RlZmluZSBNVDYzOTdfQlVD S19DT041CQkweDAyMEEKPiArI2RlZmluZSBNVDYzOTdfQlVDS19DT042CQkweDAyMEMKPiArI2Rl ZmluZSBNVDYzOTdfQlVDS19DT043CQkweDAyMEUKPiArI2RlZmluZSBNVDYzOTdfQlVDS19DT044 CQkweDAyMTAKPiArI2RlZmluZSBNVDYzOTdfQlVDS19DT045CQkweDAyMTIKPiArI2RlZmluZSBN VDYzOTdfVkNBMTVfQ09OMAkJMHgwMjE0Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZDQTE1X0NPTjEJCTB4 MDIxNgo+ICsjZGVmaW5lIE1UNjM5N19WQ0ExNV9DT04yCQkweDAyMTgKPiArI2RlZmluZSBNVDYz OTdfVkNBMTVfQ09OMwkJMHgwMjFBCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZDQTE1X0NPTjQJCTB4MDIx Qwo+ICsjZGVmaW5lIE1UNjM5N19WQ0ExNV9DT041CQkweDAyMUUKPiArI2RlZmluZSBNVDYzOTdf VkNBMTVfQ09ONgkJMHgwMjIwCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZDQTE1X0NPTjcJCTB4MDIyMgo+ ICsjZGVmaW5lIE1UNjM5N19WQ0ExNV9DT044CQkweDAyMjQKPiArI2RlZmluZSBNVDYzOTdfVkNB MTVfQ09OOQkJMHgwMjI2Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZDQTE1X0NPTjEwCQkweDAyMjgKPiAr I2RlZmluZSBNVDYzOTdfVkNBMTVfQ09OMTEJCTB4MDIyQQo+ICsjZGVmaW5lIE1UNjM5N19WQ0Ex NV9DT04xMgkJMHgwMjJDCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZDQTE1X0NPTjEzCQkweDAyMkUKPiAr I2RlZmluZSBNVDYzOTdfVkNBMTVfQ09OMTQJCTB4MDIzMAo+ICsjZGVmaW5lIE1UNjM5N19WQ0Ex NV9DT04xNQkJMHgwMjMyCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZDQTE1X0NPTjE2CQkweDAyMzQKPiAr I2RlZmluZSBNVDYzOTdfVkNBMTVfQ09OMTcJCTB4MDIzNgo+ICsjZGVmaW5lIE1UNjM5N19WQ0Ex NV9DT04xOAkJMHgwMjM4Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZTUk1DQTE1X0NPTjAJCTB4MDIzQQo+ ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0ExNV9DT04xCQkweDAyM0MKPiArI2RlZmluZSBNVDYzOTdf VlNSTUNBMTVfQ09OMgkJMHgwMjNFCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZTUk1DQTE1X0NPTjMJCTB4 MDI0MAo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0ExNV9DT040CQkweDAyNDIKPiArI2RlZmluZSBN VDYzOTdfVlNSTUNBMTVfQ09ONQkJMHgwMjQ0Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZTUk1DQTE1X0NP TjYJCTB4MDI0Ngo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0ExNV9DT043CQkweDAyNDgKPiArI2Rl ZmluZSBNVDYzOTdfVlNSTUNBMTVfQ09OOAkJMHgwMjRBCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZTUk1D QTE1X0NPTjkJCTB4MDI0Qwo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0ExNV9DT04xMAkJMHgwMjRF Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZTUk1DQTE1X0NPTjExCQkweDAyNTAKPiArI2RlZmluZSBNVDYz OTdfVlNSTUNBMTVfQ09OMTIJCTB4MDI1Mgo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0ExNV9DT04x MwkJMHgwMjU0Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZTUk1DQTE1X0NPTjE0CQkweDAyNTYKPiArI2Rl ZmluZSBNVDYzOTdfVlNSTUNBMTVfQ09OMTUJCTB4MDI1OAo+ICsjZGVmaW5lIE1UNjM5N19WU1JN Q0ExNV9DT04xNgkJMHgwMjVBCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZTUk1DQTE1X0NPTjE3CQkweDAy NUMKPiArI2RlZmluZSBNVDYzOTdfVlNSTUNBMTVfQ09OMTgJCTB4MDI1RQo+ICsjZGVmaW5lIE1U NjM5N19WU1JNQ0ExNV9DT04xOQkJMHgwMjYwCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZTUk1DQTE1X0NP TjIwCQkweDAyNjIKPiArI2RlZmluZSBNVDYzOTdfVlNSTUNBMTVfQ09OMjEJCTB4MDI2NAo+ICsj ZGVmaW5lIE1UNjM5N19WQ09SRV9DT04wCQkweDAyNjYKPiArI2RlZmluZSBNVDYzOTdfVkNPUkVf Q09OMQkJMHgwMjY4Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZDT1JFX0NPTjIJCTB4MDI2QQo+ICsjZGVm aW5lIE1UNjM5N19WQ09SRV9DT04zCQkweDAyNkMKPiArI2RlZmluZSBNVDYzOTdfVkNPUkVfQ09O NAkJMHgwMjZFCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZDT1JFX0NPTjUJCTB4MDI3MAo+ICsjZGVmaW5l IE1UNjM5N19WQ09SRV9DT042CQkweDAyNzIKPiArI2RlZmluZSBNVDYzOTdfVkNPUkVfQ09ONwkJ MHgwMjc0Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZDT1JFX0NPTjgJCTB4MDI3Ngo+ICsjZGVmaW5lIE1U NjM5N19WQ09SRV9DT045CQkweDAyNzgKPiArI2RlZmluZSBNVDYzOTdfVkNPUkVfQ09OMTAJCTB4 MDI3QQo+ICsjZGVmaW5lIE1UNjM5N19WQ09SRV9DT04xMQkJMHgwMjdDCj4gKyNkZWZpbmUgTVQ2 Mzk3X1ZDT1JFX0NPTjEyCQkweDAyN0UKPiArI2RlZmluZSBNVDYzOTdfVkNPUkVfQ09OMTMJCTB4 MDI4MAo+ICsjZGVmaW5lIE1UNjM5N19WQ09SRV9DT04xNAkJMHgwMjgyCj4gKyNkZWZpbmUgTVQ2 Mzk3X1ZDT1JFX0NPTjE1CQkweDAyODQKPiArI2RlZmluZSBNVDYzOTdfVkNPUkVfQ09OMTYJCTB4 MDI4Ngo+ICsjZGVmaW5lIE1UNjM5N19WQ09SRV9DT04xNwkJMHgwMjg4Cj4gKyNkZWZpbmUgTVQ2 Mzk3X1ZDT1JFX0NPTjE4CQkweDAyOEEKPiArI2RlZmluZSBNVDYzOTdfVkdQVV9DT04wCQkweDAy OEMKPiArI2RlZmluZSBNVDYzOTdfVkdQVV9DT04xCQkweDAyOEUKPiArI2RlZmluZSBNVDYzOTdf VkdQVV9DT04yCQkweDAyOTAKPiArI2RlZmluZSBNVDYzOTdfVkdQVV9DT04zCQkweDAyOTIKPiAr I2RlZmluZSBNVDYzOTdfVkdQVV9DT040CQkweDAyOTQKPiArI2RlZmluZSBNVDYzOTdfVkdQVV9D T041CQkweDAyOTYKPiArI2RlZmluZSBNVDYzOTdfVkdQVV9DT042CQkweDAyOTgKPiArI2RlZmlu ZSBNVDYzOTdfVkdQVV9DT043CQkweDAyOUEKPiArI2RlZmluZSBNVDYzOTdfVkdQVV9DT044CQkw eDAyOUMKPiArI2RlZmluZSBNVDYzOTdfVkdQVV9DT045CQkweDAyOUUKPiArI2RlZmluZSBNVDYz OTdfVkdQVV9DT04xMAkJMHgwMkEwCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZHUFVfQ09OMTEJCTB4MDJB Mgo+ICsjZGVmaW5lIE1UNjM5N19WR1BVX0NPTjEyCQkweDAyQTQKPiArI2RlZmluZSBNVDYzOTdf VkdQVV9DT04xMwkJMHgwMkE2Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZHUFVfQ09OMTQJCTB4MDJBOAo+ ICsjZGVmaW5lIE1UNjM5N19WR1BVX0NPTjE1CQkweDAyQUEKPiArI2RlZmluZSBNVDYzOTdfVkdQ VV9DT04xNgkJMHgwMkFDCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZHUFVfQ09OMTcJCTB4MDJBRQo+ICsj ZGVmaW5lIE1UNjM5N19WR1BVX0NPTjE4CQkweDAyQjAKPiArI2RlZmluZSBNVDYzOTdfVklPMThf Q09OMAkJMHgwMzAwCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZJTzE4X0NPTjEJCTB4MDMwMgo+ICsjZGVm aW5lIE1UNjM5N19WSU8xOF9DT04yCQkweDAzMDQKPiArI2RlZmluZSBNVDYzOTdfVklPMThfQ09O MwkJMHgwMzA2Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZJTzE4X0NPTjQJCTB4MDMwOAo+ICsjZGVmaW5l IE1UNjM5N19WSU8xOF9DT041CQkweDAzMEEKPiArI2RlZmluZSBNVDYzOTdfVklPMThfQ09ONgkJ MHgwMzBDCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZJTzE4X0NPTjcJCTB4MDMwRQo+ICsjZGVmaW5lIE1U NjM5N19WSU8xOF9DT044CQkweDAzMTAKPiArI2RlZmluZSBNVDYzOTdfVklPMThfQ09OOQkJMHgw MzEyCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZJTzE4X0NPTjEwCQkweDAzMTQKPiArI2RlZmluZSBNVDYz OTdfVklPMThfQ09OMTEJCTB4MDMxNgo+ICsjZGVmaW5lIE1UNjM5N19WSU8xOF9DT04xMgkJMHgw MzE4Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZJTzE4X0NPTjEzCQkweDAzMUEKPiArI2RlZmluZSBNVDYz OTdfVklPMThfQ09OMTQJCTB4MDMxQwo+ICsjZGVmaW5lIE1UNjM5N19WSU8xOF9DT04xNQkJMHgw MzFFCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZJTzE4X0NPTjE2CQkweDAzMjAKPiArI2RlZmluZSBNVDYz OTdfVklPMThfQ09OMTcJCTB4MDMyMgo+ICsjZGVmaW5lIE1UNjM5N19WSU8xOF9DT04xOAkJMHgw MzI0Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZQQ0E3X0NPTjAJCTB4MDMyNgo+ICsjZGVmaW5lIE1UNjM5 N19WUENBN19DT04xCQkweDAzMjgKPiArI2RlZmluZSBNVDYzOTdfVlBDQTdfQ09OMgkJMHgwMzJB Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZQQ0E3X0NPTjMJCTB4MDMyQwo+ICsjZGVmaW5lIE1UNjM5N19W UENBN19DT040CQkweDAzMkUKPiArI2RlZmluZSBNVDYzOTdfVlBDQTdfQ09ONQkJMHgwMzMwCj4g KyNkZWZpbmUgTVQ2Mzk3X1ZQQ0E3X0NPTjYJCTB4MDMzMgo+ICsjZGVmaW5lIE1UNjM5N19WUENB N19DT043CQkweDAzMzQKPiArI2RlZmluZSBNVDYzOTdfVlBDQTdfQ09OOAkJMHgwMzM2Cj4gKyNk ZWZpbmUgTVQ2Mzk3X1ZQQ0E3X0NPTjkJCTB4MDMzOAo+ICsjZGVmaW5lIE1UNjM5N19WUENBN19D T04xMAkJMHgwMzNBCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZQQ0E3X0NPTjExCQkweDAzM0MKPiArI2Rl ZmluZSBNVDYzOTdfVlBDQTdfQ09OMTIJCTB4MDMzRQo+ICsjZGVmaW5lIE1UNjM5N19WUENBN19D T04xMwkJMHgwMzQwCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZQQ0E3X0NPTjE0CQkweDAzNDIKPiArI2Rl ZmluZSBNVDYzOTdfVlBDQTdfQ09OMTUJCTB4MDM0NAo+ICsjZGVmaW5lIE1UNjM5N19WUENBN19D T04xNgkJMHgwMzQ2Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZQQ0E3X0NPTjE3CQkweDAzNDgKPiArI2Rl ZmluZSBNVDYzOTdfVlBDQTdfQ09OMTgJCTB4MDM0QQo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0E3 X0NPTjAJCTB4MDM0Qwo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0E3X0NPTjEJCTB4MDM0RQo+ICsj ZGVmaW5lIE1UNjM5N19WU1JNQ0E3X0NPTjIJCTB4MDM1MAo+ICsjZGVmaW5lIE1UNjM5N19WU1JN Q0E3X0NPTjMJCTB4MDM1Mgo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0E3X0NPTjQJCTB4MDM1NAo+ ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0E3X0NPTjUJCTB4MDM1Ngo+ICsjZGVmaW5lIE1UNjM5N19W U1JNQ0E3X0NPTjYJCTB4MDM1OAo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0E3X0NPTjcJCTB4MDM1 QQo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0E3X0NPTjgJCTB4MDM1Qwo+ICsjZGVmaW5lIE1UNjM5 N19WU1JNQ0E3X0NPTjkJCTB4MDM1RQo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0E3X0NPTjEwCQkw eDAzNjAKPiArI2RlZmluZSBNVDYzOTdfVlNSTUNBN19DT04xMQkJMHgwMzYyCj4gKyNkZWZpbmUg TVQ2Mzk3X1ZTUk1DQTdfQ09OMTIJCTB4MDM2NAo+ICsjZGVmaW5lIE1UNjM5N19WU1JNQ0E3X0NP TjEzCQkweDAzNjYKPiArI2RlZmluZSBNVDYzOTdfVlNSTUNBN19DT04xNAkJMHgwMzY4Cj4gKyNk ZWZpbmUgTVQ2Mzk3X1ZTUk1DQTdfQ09OMTUJCTB4MDM2QQo+ICsjZGVmaW5lIE1UNjM5N19WU1JN Q0E3X0NPTjE2CQkweDAzNkMKPiArI2RlZmluZSBNVDYzOTdfVlNSTUNBN19DT04xNwkJMHgwMzZF Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZTUk1DQTdfQ09OMTgJCTB4MDM3MAo+ICsjZGVmaW5lIE1UNjM5 N19WU1JNQ0E3X0NPTjE5CQkweDAzNzIKPiArI2RlZmluZSBNVDYzOTdfVlNSTUNBN19DT04yMAkJ MHgwMzc0Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZTUk1DQTdfQ09OMjEJCTB4MDM3Ngo+ICsjZGVmaW5l IE1UNjM5N19WRFJNX0NPTjAJCTB4MDM3OAo+ICsjZGVmaW5lIE1UNjM5N19WRFJNX0NPTjEJCTB4 MDM3QQo+ICsjZGVmaW5lIE1UNjM5N19WRFJNX0NPTjIJCTB4MDM3Qwo+ICsjZGVmaW5lIE1UNjM5 N19WRFJNX0NPTjMJCTB4MDM3RQo+ICsjZGVmaW5lIE1UNjM5N19WRFJNX0NPTjQJCTB4MDM4MAo+ ICsjZGVmaW5lIE1UNjM5N19WRFJNX0NPTjUJCTB4MDM4Mgo+ICsjZGVmaW5lIE1UNjM5N19WRFJN X0NPTjYJCTB4MDM4NAo+ICsjZGVmaW5lIE1UNjM5N19WRFJNX0NPTjcJCTB4MDM4Ngo+ICsjZGVm aW5lIE1UNjM5N19WRFJNX0NPTjgJCTB4MDM4OAo+ICsjZGVmaW5lIE1UNjM5N19WRFJNX0NPTjkJ CTB4MDM4QQo+ICsjZGVmaW5lIE1UNjM5N19WRFJNX0NPTjEwCQkweDAzOEMKPiArI2RlZmluZSBN VDYzOTdfVkRSTV9DT04xMQkJMHgwMzhFCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZEUk1fQ09OMTIJCTB4 MDM5MAo+ICsjZGVmaW5lIE1UNjM5N19WRFJNX0NPTjEzCQkweDAzOTIKPiArI2RlZmluZSBNVDYz OTdfVkRSTV9DT04xNAkJMHgwMzk0Cj4gKyNkZWZpbmUgTVQ2Mzk3X1ZEUk1fQ09OMTUJCTB4MDM5 Ngo+ICsjZGVmaW5lIE1UNjM5N19WRFJNX0NPTjE2CQkweDAzOTgKPiArI2RlZmluZSBNVDYzOTdf VkRSTV9DT04xNwkJMHgwMzlBCj4gKyNkZWZpbmUgTVQ2Mzk3X1ZEUk1fQ09OMTgJCTB4MDM5Qwo+ ICsjZGVmaW5lIE1UNjM5N19CVUNLX0tfQ09OMAkJMHgwMzlFCj4gKyNkZWZpbmUgTVQ2Mzk3X0JV Q0tfS19DT04xCQkweDAzQTAKPiArI2RlZmluZSBNVDYzOTdfQU5BTERPX0NPTjAJCTB4MDQwMAo+ ICsjZGVmaW5lIE1UNjM5N19BTkFMRE9fQ09OMQkJMHgwNDAyCj4gKyNkZWZpbmUgTVQ2Mzk3X0FO QUxET19DT04yCQkweDA0MDQKPiArI2RlZmluZSBNVDYzOTdfQU5BTERPX0NPTjMJCTB4MDQwNgo+ ICsjZGVmaW5lIE1UNjM5N19BTkFMRE9fQ09ONAkJMHgwNDA4Cj4gKyNkZWZpbmUgTVQ2Mzk3X0FO QUxET19DT041CQkweDA0MEEKPiArI2RlZmluZSBNVDYzOTdfQU5BTERPX0NPTjYJCTB4MDQwQwo+ ICsjZGVmaW5lIE1UNjM5N19BTkFMRE9fQ09ONwkJMHgwNDBFCj4gKyNkZWZpbmUgTVQ2Mzk3X0RJ R0xET19DT04wCQkweDA0MTAKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjEJCTB4MDQxMgo+ ICsjZGVmaW5lIE1UNjM5N19ESUdMRE9fQ09OMgkJMHgwNDE0Cj4gKyNkZWZpbmUgTVQ2Mzk3X0RJ R0xET19DT04zCQkweDA0MTYKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjQJCTB4MDQxOAo+ ICsjZGVmaW5lIE1UNjM5N19ESUdMRE9fQ09ONQkJMHgwNDFBCj4gKyNkZWZpbmUgTVQ2Mzk3X0RJ R0xET19DT042CQkweDA0MUMKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjcJCTB4MDQxRQo+ ICsjZGVmaW5lIE1UNjM5N19ESUdMRE9fQ09OOAkJMHgwNDIwCj4gKyNkZWZpbmUgTVQ2Mzk3X0RJ R0xET19DT045CQkweDA0MjIKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjEwCQkweDA0MjQK PiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjExCQkweDA0MjYKPiArI2RlZmluZSBNVDYzOTdf RElHTERPX0NPTjEyCQkweDA0MjgKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjEzCQkweDA0 MkEKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjE0CQkweDA0MkMKPiArI2RlZmluZSBNVDYz OTdfRElHTERPX0NPTjE1CQkweDA0MkUKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjE2CQkw eDA0MzAKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjE3CQkweDA0MzIKPiArI2RlZmluZSBN VDYzOTdfRElHTERPX0NPTjE4CQkweDA0MzQKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjE5 CQkweDA0MzYKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjIwCQkweDA0MzgKPiArI2RlZmlu ZSBNVDYzOTdfRElHTERPX0NPTjIxCQkweDA0M0EKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NP TjIyCQkweDA0M0MKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjIzCQkweDA0M0UKPiArI2Rl ZmluZSBNVDYzOTdfRElHTERPX0NPTjI0CQkweDA0NDAKPiArI2RlZmluZSBNVDYzOTdfRElHTERP X0NPTjI1CQkweDA0NDIKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjI2CQkweDA0NDQKPiAr I2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjI3CQkweDA0NDYKPiArI2RlZmluZSBNVDYzOTdfRElH TERPX0NPTjI4CQkweDA0NDgKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjI5CQkweDA0NEEK PiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjMwCQkweDA0NEMKPiArI2RlZmluZSBNVDYzOTdf RElHTERPX0NPTjMxCQkweDA0NEUKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjMyCQkweDA0 NTAKPiArI2RlZmluZSBNVDYzOTdfRElHTERPX0NPTjMzCQkweDA0NUEKPiArI2RlZmluZSBNVDYz OTdfU1BLX0NPTjAJCQkweDA2MDAKPiArI2RlZmluZSBNVDYzOTdfU1BLX0NPTjEJCQkweDA2MDIK PiArI2RlZmluZSBNVDYzOTdfU1BLX0NPTjIJCQkweDA2MDQKPiArI2RlZmluZSBNVDYzOTdfU1BL X0NPTjMJCQkweDA2MDYKPiArI2RlZmluZSBNVDYzOTdfU1BLX0NPTjQJCQkweDA2MDgKPiArI2Rl ZmluZSBNVDYzOTdfU1BLX0NPTjUJCQkweDA2MEEKPiArI2RlZmluZSBNVDYzOTdfU1BLX0NPTjYJ CQkweDA2MEMKPiArI2RlZmluZSBNVDYzOTdfU1BLX0NPTjcJCQkweDA2MEUKPiArI2RlZmluZSBN VDYzOTdfU1BLX0NPTjgJCQkweDA2MTAKPiArI2RlZmluZSBNVDYzOTdfU1BLX0NPTjkJCQkweDA2 MTIKPiArI2RlZmluZSBNVDYzOTdfU1BLX0NPTjEwCQkweDA2MTQKPiArI2RlZmluZSBNVDYzOTdf U1BLX0NPTjExCQkweDA2MTYKPiArI2RlZmluZSBNVDYzOTdfQVVEREFDX0NPTjAJCTB4MDcwMAo+ ICsjZGVmaW5lIE1UNjM5N19BVURCVUZfQ0ZHMAkJMHgwNzAyCj4gKyNkZWZpbmUgTVQ2Mzk3X0FV REJVRl9DRkcxCQkweDA3MDQKPiArI2RlZmluZSBNVDYzOTdfQVVEQlVGX0NGRzIJCTB4MDcwNgo+ ICsjZGVmaW5lIE1UNjM5N19BVURCVUZfQ0ZHMwkJMHgwNzA4Cj4gKyNkZWZpbmUgTVQ2Mzk3X0FV REJVRl9DRkc0CQkweDA3MEEKPiArI2RlZmluZSBNVDYzOTdfSUJJQVNESVNUX0NGRzAJCTB4MDcw Qwo+ICsjZGVmaW5lIE1UNjM5N19BVURBQ0NERVBPUF9DRkcwCQkweDA3MEUKPiArI2RlZmluZSBN VDYzOTdfQVVEX0lWX0NGRzAJCTB4MDcxMAo+ICsjZGVmaW5lIE1UNjM5N19BVURDTEtHRU5fQ0ZH MAkJMHgwNzEyCj4gKyNkZWZpbmUgTVQ2Mzk3X0FVRExET19DRkcwCQkweDA3MTQKPiArI2RlZmlu ZSBNVDYzOTdfQVVETERPX0NGRzEJCTB4MDcxNgo+ICsjZGVmaW5lIE1UNjM5N19BVUROVlJFR0dM Ql9DRkcwCQkweDA3MTgKPiArI2RlZmluZSBNVDYzOTdfQVVEX05DUDAJCQkweDA3MUEKPiArI2Rl ZmluZSBNVDYzOTdfQVVEUFJFQU1QX0NPTjAJCTB4MDcxQwo+ICsjZGVmaW5lIE1UNjM5N19BVURB RENfQ09OMAkJMHgwNzFFCj4gKyNkZWZpbmUgTVQ2Mzk3X0FVREFEQ19DT04xCQkweDA3MjAKPiAr I2RlZmluZSBNVDYzOTdfQVVEQURDX0NPTjIJCTB4MDcyMgo+ICsjZGVmaW5lIE1UNjM5N19BVURB RENfQ09OMwkJMHgwNzI0Cj4gKyNkZWZpbmUgTVQ2Mzk3X0FVREFEQ19DT040CQkweDA3MjYKPiAr I2RlZmluZSBNVDYzOTdfQVVEQURDX0NPTjUJCTB4MDcyOAo+ICsjZGVmaW5lIE1UNjM5N19BVURB RENfQ09ONgkJMHgwNzJBCj4gKyNkZWZpbmUgTVQ2Mzk3X0FVRERJR01JX0NPTjAJCTB4MDcyQwo+ ICsjZGVmaW5lIE1UNjM5N19BVURMU0JVRl9DT04wCQkweDA3MkUKPiArI2RlZmluZSBNVDYzOTdf QVVETFNCVUZfQ09OMQkJMHgwNzMwCj4gKyNkZWZpbmUgTVQ2Mzk3X0FVREVOQ1NQQVJFX0NPTjAJ CTB4MDczMgo+ICsjZGVmaW5lIE1UNjM5N19BVURFTkNDTEtTUV9DT04wCQkweDA3MzQKPiArI2Rl ZmluZSBNVDYzOTdfQVVEUFJFQU1QR0FJTl9DT04wCTB4MDczNgo+ICsjZGVmaW5lIE1UNjM5N19a Q0RfQ09OMAkJCTB4MDczOAo+ICsjZGVmaW5lIE1UNjM5N19aQ0RfQ09OMQkJCTB4MDczQQo+ICsj ZGVmaW5lIE1UNjM5N19aQ0RfQ09OMgkJCTB4MDczQwo+ICsjZGVmaW5lIE1UNjM5N19aQ0RfQ09O MwkJCTB4MDczRQo+ICsjZGVmaW5lIE1UNjM5N19aQ0RfQ09ONAkJCTB4MDc0MAo+ICsjZGVmaW5l IE1UNjM5N19aQ0RfQ09ONQkJCTB4MDc0Mgo+ICsjZGVmaW5lIE1UNjM5N19OQ1BfQ0xLRElWX0NP TjAJCTB4MDc0NAo+ICsjZGVmaW5lIE1UNjM5N19OQ1BfQ0xLRElWX0NPTjEJCTB4MDc0Ngo+ICsK PiArI2VuZGlmIC8qIF9fTUZEX01UNjM5N19SRUdJU1RFUlNfSF9fICovCgotLSAKTGVlIEpvbmVz CkxpbmFybyBTVE1pY3JvZWxlY3Ryb25pY3MgTGFuZGluZyBUZWFtIExlYWQKTGluYXJvLm9yZyDi lIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUgZm9yIEFSTSBTb0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vi b29rIHwgVHdpdHRlciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK