From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56D2C847C; Thu, 28 Mar 2024 11:55:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711626916; cv=none; b=TTrrOGqx1JKT1kDFalVH2riJCNxGFoM+g+zdIstXnjqKZklIq8SrujXH5J86TdWiCqmbfcpTp6yKVF6xQYeBCDCUJAWxwRUvh3ESDci8bgQ9R3bTUCTUyxaa04sGW5ESRFOmEctU+Nt+qyrdIMM6dqZBW0u20n7/x7H3XI2ik/Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711626916; c=relaxed/simple; bh=ARB33Nc2FhheZtv5qHgeBe0yGMywN/zGFYb4YvYb2t0=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=XzlAr8oWK/imjRTw27SnRraLzk6GZHNVPT7fQC/j3mg6rRIh89OY2GzKfyTaOU6w4ytqVtkDcHCs7eAc1bByJ5Hg/9AbJ999sPwYyJNGnWcJYCPO3vz204GtECgKo5o8dU1G/Flc6CvP60opddDXm7SBec05k7CXYko1Q6xaKEA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bDheQ9M6; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bDheQ9M6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC992C433C7; Thu, 28 Mar 2024 11:55:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711626915; bh=ARB33Nc2FhheZtv5qHgeBe0yGMywN/zGFYb4YvYb2t0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=bDheQ9M6sTtKlW6rPu40C4XEGL9VPNTvuVoQZ7mrGhKqj8Iz3MBdZVsFVb6hnKGib bFgEzJ2CN9Pi05PDax2+1YD6gEMdJ9rR7WIDRiW98Mr6ITQvNJWVOXo2JEjZgG1/ng DAmuEA1vkA3wzTuJQIsbZNkS/MVyb+uoh+XQ/sC8WRZiOzkqpcTyVP6JNoP71k46kN A50LGP9mks9FisxvpVzFs1KBv4HAKs6BzokJh7cF79BWouBV5/OdimRabF+k8fyZYN 88DEBRQo6T93wRsTBm0Pood7uNzbT0VIG7FWLvZopblWt9sEyqn8ieOF/f3/p/6O6Y u/WYYLoQAmXHA== Date: Thu, 28 Mar 2024 11:55:10 +0000 From: Lee Jones To: Alex Bee Cc: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Linus Walleij , Liam Girdwood , Mark Brown , Chris Zhong , Zhang Qing , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org Subject: Re: [PATCH v3 2/5] mfd: rk8xx: Add RK816 support Message-ID: <20240328115510.GD13211@google.com> References: <20240323132757.141861-2-knaerzche@gmail.com> <20240323132757.141861-6-knaerzche@gmail.com> Precedence: bulk X-Mailing-List: linux-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20240323132757.141861-6-knaerzche@gmail.com> On Sat, 23 Mar 2024, Alex Bee wrote: > This integrates RK816 support in the this existing rk8xx mfd driver. > > This version has unaligned interrupt registers, which requires to define a > separate get_irq_reg callback for the regmap. Apart from that the > integration is straightforward and the existing structures can be used as > is. The initialization sequence has been taken from vendor kernel. > > Signed-off-by: Alex Bee > --- > chnages since v1: > - un-constify rk816_get_irq_reg's return type > > drivers/mfd/Kconfig | 4 +- > drivers/mfd/rk8xx-core.c | 103 ++++++++++++++++++++++++++++ > drivers/mfd/rk8xx-i2c.c | 45 +++++++++++- > include/linux/mfd/rk808.h | 141 ++++++++++++++++++++++++++++++++++++++ > 4 files changed, 290 insertions(+), 3 deletions(-) > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index 4b023ee229cf..2e7286cc98e4 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -1225,7 +1225,7 @@ config MFD_RK8XX > select MFD_CORE > > config MFD_RK8XX_I2C > - tristate "Rockchip RK805/RK808/RK809/RK817/RK818 Power Management Chip" > + tristate "Rockchip RK805/RK808/RK809/RK816/RK817/RK818 Power Management Chip" > depends on I2C && OF > select MFD_CORE > select REGMAP_I2C > @@ -1233,7 +1233,7 @@ config MFD_RK8XX_I2C > select MFD_RK8XX > help > If you say yes here you get support for the RK805, RK808, RK809, > - RK817 and RK818 Power Management chips. > + RK816, RK817 and RK818 Power Management chips. > This driver provides common support for accessing the device > through I2C interface. The device supports multiple sub-devices > including interrupts, RTC, LDO & DCDC regulators, and onkey. > diff --git a/drivers/mfd/rk8xx-core.c b/drivers/mfd/rk8xx-core.c > index e2261b68b844..c68a380332e7 100644 > --- a/drivers/mfd/rk8xx-core.c > +++ b/drivers/mfd/rk8xx-core.c > @@ -28,6 +28,10 @@ static const struct resource rtc_resources[] = { > DEFINE_RES_IRQ(RK808_IRQ_RTC_ALARM), > }; > > +static const struct resource rk816_rtc_resources[] = { > + DEFINE_RES_IRQ(RK816_IRQ_RTC_ALARM), > +}; > + > static const struct resource rk817_rtc_resources[] = { > DEFINE_RES_IRQ(RK817_IRQ_RTC_ALARM), > }; > @@ -87,6 +91,21 @@ static const struct mfd_cell rk808s[] = { > }, > }; > > +static const struct mfd_cell rk816s[] = { > + { .name = "rk805-pinctrl", }, > + { .name = "rk808-clkout", }, > + { .name = "rk808-regulator", }, > + { .name = "rk805-pwrkey", Newline after the '{'. > + .num_resources = ARRAY_SIZE(rk805_key_resources), > + .resources = rk805_key_resources, > + }, > + { > + .name = "rk808-rtc", > + .num_resources = ARRAY_SIZE(rk816_rtc_resources), > + .resources = rk816_rtc_resources, > + }, > +}; > + > static const struct mfd_cell rk817s[] = { > { .name = "rk808-clkout", }, > { .name = "rk808-regulator", }, > @@ -148,6 +167,17 @@ static const struct rk808_reg_data rk808_pre_init_reg[] = { > VB_LO_SEL_3500MV }, > }; > > +static const struct rk808_reg_data rk816_pre_init_reg[] = { > + { RK818_BUCK1_CONFIG_REG, RK817_RAMP_RATE_MASK, > + RK817_RAMP_RATE_12_5MV_PER_US }, > + { RK818_BUCK2_CONFIG_REG, RK817_RAMP_RATE_MASK, > + RK817_RAMP_RATE_12_5MV_PER_US }, > + { RK818_BUCK4_CONFIG_REG, BUCK_ILMIN_MASK, BUCK_ILMIN_250MA }, > + { RK808_THERMAL_REG, TEMP_HOTDIE_MSK, TEMP105C}, > + { RK808_VB_MON_REG, VBAT_LOW_VOL_MASK | VBAT_LOW_ACT_MASK, > + RK808_VBAT_LOW_3V0 | EN_VABT_LOW_SHUT_DOWN }, > +}; > + > static const struct rk808_reg_data rk817_pre_init_reg[] = { > {RK817_RTC_CTRL_REG, RTC_STOP, RTC_STOP}, > /* Codec specific registers */ > @@ -350,6 +380,59 @@ static const struct regmap_irq rk808_irqs[] = { > }, > }; > > +static const unsigned int rk816_irq_status_offsets[] = { > + (RK816_INT_STS_REG1 - RK816_INT_STS_REG1), Turn this into a macro please. > + (RK816_INT_STS_REG2 - RK816_INT_STS_REG1), > + (RK816_INT_STS_REG3 - RK816_INT_STS_REG1), > +}; > + > +static const unsigned int rk816_irq_mask_offsets[] = { > + (RK816_INT_STS_MSK_REG1 - RK816_INT_STS_MSK_REG1), > + (RK816_INT_STS_MSK_REG2 - RK816_INT_STS_MSK_REG1), > + (RK816_INT_STS_MSK_REG3 - RK816_INT_STS_MSK_REG1), > +}; > + > +static unsigned int rk816_get_irq_reg(struct regmap_irq_chip_data *data, > + unsigned int base, int index) > +{ > + unsigned int irq_reg = base; > + > + switch (base) { > + case RK816_INT_STS_REG1: > + irq_reg += rk816_irq_status_offsets[index]; > + break; > + case RK816_INT_STS_MSK_REG1: > + irq_reg += rk816_irq_mask_offsets[index]; > + break; > + } > + > + return irq_reg; > +}; > + > +static const struct regmap_irq rk816_irqs[] = { > + /* INT_STS_REG1 IRQs */ > + REGMAP_IRQ_REG(RK816_IRQ_PWRON_FALL, 0, RK816_INT_STS_PWRON_FALL), > + REGMAP_IRQ_REG(RK816_IRQ_PWRON_RISE, 0, RK816_INT_STS_PWRON_RISE), > + > + /* INT_STS_REG2 IRQs */ > + REGMAP_IRQ_REG(RK816_IRQ_VB_LOW, 1, RK816_INT_STS_VB_LOW), > + REGMAP_IRQ_REG(RK816_IRQ_PWRON, 1, RK816_INT_STS_PWRON), > + REGMAP_IRQ_REG(RK816_IRQ_PWRON_LP, 1, RK816_INT_STS_PWRON_LP), > + REGMAP_IRQ_REG(RK816_IRQ_HOTDIE, 1, RK816_INT_STS_HOTDIE), > + REGMAP_IRQ_REG(RK816_IRQ_RTC_ALARM, 1, RK816_INT_STS_RTC_ALARM), > + REGMAP_IRQ_REG(RK816_IRQ_RTC_PERIOD, 1, RK816_INT_STS_RTC_PERIOD), > + REGMAP_IRQ_REG(RK816_IRQ_USB_OV, 1, RK816_INT_STS_USB_OV), > + > + /* INT_STS3 IRQs */ > + REGMAP_IRQ_REG(RK816_IRQ_PLUG_IN, 2, RK816_INT_STS_PLUG_IN), > + REGMAP_IRQ_REG(RK816_IRQ_PLUG_OUT, 2, RK816_INT_STS_PLUG_OUT), > + REGMAP_IRQ_REG(RK816_IRQ_CHG_OK, 2, RK816_INT_STS_CHG_OK), > + REGMAP_IRQ_REG(RK816_IRQ_CHG_TE, 2, RK816_INT_STS_CHG_TE), > + REGMAP_IRQ_REG(RK816_IRQ_CHG_TS, 2, RK816_INT_STS_CHG_TS), > + REGMAP_IRQ_REG(RK816_IRQ_CHG_CVTLIM, 2, RK816_INT_STS_CHG_CVTLIM), > + REGMAP_IRQ_REG(RK816_IRQ_DISCHG_ILIM, 2, RK816_INT_STS_DISCHG_ILIM), > +}; > + > static const struct regmap_irq rk818_irqs[] = { > /* INT_STS */ > [RK818_IRQ_VOUT_LO] = { > @@ -482,6 +565,18 @@ static const struct regmap_irq_chip rk808_irq_chip = { > .init_ack_masked = true, > }; > > +static const struct regmap_irq_chip rk816_irq_chip = { > + .name = "rk816", > + .irqs = rk816_irqs, > + .num_irqs = ARRAY_SIZE(rk816_irqs), > + .num_regs = 3, > + .get_irq_reg = rk816_get_irq_reg, > + .status_base = RK816_INT_STS_REG1, > + .mask_base = RK816_INT_STS_MSK_REG1, > + .ack_base = RK816_INT_STS_REG1, > + .init_ack_masked = true, > +}; > + > static struct regmap_irq_chip rk817_irq_chip = { > .name = "rk817", > .irqs = rk817_irqs, > @@ -530,6 +625,7 @@ static int rk808_power_off(struct sys_off_data *data) > reg = RK817_SYS_CFG(3); > bit = DEV_OFF; > break; > + case RK816_ID: > case RK818_ID: > reg = RK818_DEVCTRL_REG; > bit = DEV_OFF; > @@ -637,6 +733,13 @@ int rk8xx_probe(struct device *dev, int variant, unsigned int irq, struct regmap > cells = rk808s; > nr_cells = ARRAY_SIZE(rk808s); > break; > + case RK816_ID: > + rk808->regmap_irq_chip = &rk816_irq_chip; > + pre_init_reg = rk816_pre_init_reg; > + nr_pre_init_regs = ARRAY_SIZE(rk816_pre_init_reg); > + cells = rk816s; > + nr_cells = ARRAY_SIZE(rk816s); > + break; > case RK818_ID: > rk808->regmap_irq_chip = &rk818_irq_chip; > pre_init_reg = rk818_pre_init_reg; > diff --git a/drivers/mfd/rk8xx-i2c.c b/drivers/mfd/rk8xx-i2c.c > index 75b5cf09d5a0..69a6b297d723 100644 > --- a/drivers/mfd/rk8xx-i2c.c > +++ b/drivers/mfd/rk8xx-i2c.c > @@ -1,6 +1,6 @@ > // SPDX-License-Identifier: GPL-2.0-only > /* > - * Rockchip RK808/RK818 Core (I2C) driver > + * Rockchip RK805/RK808/RK816/RK817/RK818 Core (I2C) driver > * > * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd > * Copyright (C) 2016 PHYTEC Messtechnik GmbH > @@ -49,6 +49,35 @@ static bool rk808_is_volatile_reg(struct device *dev, unsigned int reg) > return false; > } > > +static bool rk816_is_volatile_reg(struct device *dev, unsigned int reg) > +{ > + /* > + * Technically the ROUND_30s bit makes RTC_CTRL_REG volatile, but > + * we don't use that feature. It's better to cache. > + */ > + > + switch (reg) { > + case RK808_SECONDS_REG ... RK808_WEEKS_REG: > + case RK808_RTC_STATUS_REG: > + case RK808_VB_MON_REG: > + case RK808_THERMAL_REG: > + case RK816_DCDC_EN_REG1: > + case RK816_DCDC_EN_REG2: > + case RK816_INT_STS_REG1: > + case RK816_INT_STS_REG2: > + case RK816_INT_STS_REG3: > + case RK808_DEVCTRL_REG: > + case RK816_SUP_STS_REG: > + case RK816_GGSTS_REG: > + case RK816_ZERO_CUR_ADC_REGH: > + case RK816_ZERO_CUR_ADC_REGL: > + case RK816_GASCNT_REG(0) ... RK816_BAT_VOL_REGL: > + return true; > + } > + > + return false; > +} > + > static bool rk817_is_volatile_reg(struct device *dev, unsigned int reg) > { > /* > @@ -100,6 +129,14 @@ static const struct regmap_config rk808_regmap_config = { > .volatile_reg = rk808_is_volatile_reg, > }; > > +static const struct regmap_config rk816_regmap_config = { > + .reg_bits = 8, > + .val_bits = 8, > + .max_register = RK816_DATA_REG(18), > + .cache_type = REGCACHE_MAPLE, > + .volatile_reg = rk816_is_volatile_reg, > +}; > + > static const struct regmap_config rk817_regmap_config = { > .reg_bits = 8, > .val_bits = 8, > @@ -123,6 +160,11 @@ static const struct rk8xx_i2c_platform_data rk809_data = { > .variant = RK809_ID, > }; > > +static const struct rk8xx_i2c_platform_data rk816_data = { > + .regmap_cfg = &rk816_regmap_config, > + .variant = RK816_ID, > +}; > + > static const struct rk8xx_i2c_platform_data rk817_data = { > .regmap_cfg = &rk817_regmap_config, > .variant = RK817_ID, > @@ -161,6 +203,7 @@ static const struct of_device_id rk8xx_i2c_of_match[] = { > { .compatible = "rockchip,rk805", .data = &rk805_data }, > { .compatible = "rockchip,rk808", .data = &rk808_data }, > { .compatible = "rockchip,rk809", .data = &rk809_data }, > + { .compatible = "rockchip,rk816", .data = &rk816_data }, > { .compatible = "rockchip,rk817", .data = &rk817_data }, > { .compatible = "rockchip,rk818", .data = &rk818_data }, > { }, > diff --git a/include/linux/mfd/rk808.h b/include/linux/mfd/rk808.h > index 78e167a92483..b90d1c278790 100644 > --- a/include/linux/mfd/rk808.h > +++ b/include/linux/mfd/rk808.h > @@ -113,6 +113,145 @@ enum rk808_reg { > #define RK808_INT_STS_MSK_REG2 0x4f > #define RK808_IO_POL_REG 0x50 > > +/* RK816 */ > +enum rk816_reg { > + RK816_ID_DCDC1, > + RK816_ID_DCDC2, > + RK816_ID_DCDC3, > + RK816_ID_DCDC4, > + RK816_ID_LDO1, > + RK816_ID_LDO2, > + RK816_ID_LDO3, > + RK816_ID_LDO4, > + RK816_ID_LDO5, > + RK816_ID_LDO6, > + RK816_ID_BOOST, > + RK816_ID_OTG_SW, > +}; > + > +enum rk816_irqs { > + /* INT_STS_REG1 */ > + RK816_IRQ_PWRON_FALL, > + RK816_IRQ_PWRON_RISE, > + > + /* INT_STS_REG2 */ > + RK816_IRQ_VB_LOW, > + RK816_IRQ_PWRON, > + RK816_IRQ_PWRON_LP, > + RK816_IRQ_HOTDIE, > + RK816_IRQ_RTC_ALARM, > + RK816_IRQ_RTC_PERIOD, > + RK816_IRQ_USB_OV, > + > + /* INT_STS_REG3 */ > + RK816_IRQ_PLUG_IN, > + RK816_IRQ_PLUG_OUT, > + RK816_IRQ_CHG_OK, > + RK816_IRQ_CHG_TE, > + RK816_IRQ_CHG_TS, > + RK816_IRQ_CHG_CVTLIM, > + RK816_IRQ_DISCHG_ILIM, > +}; > + > +/* power channel registers */ > +#define RK816_DCDC_EN_REG1 0x23 > + > +#define RK816_DCDC_EN_REG2 0x24 > +#define RK816_BOOST_EN BIT(1) > +#define RK816_OTG_EN BIT(2) > +#define RK816_BOOST_EN_MSK BIT(5) > +#define RK816_OTG_EN_MSK BIT(6) > +#define RK816_BUCK_DVS_CONFIRM BIT(7) > + > +#define RK816_LDO_EN_REG1 0x27 > + > +#define RK816_LDO_EN_REG2 0x28 > + > +/* interrupt registers and irq definitions */ > +#define RK816_INT_STS_REG1 0x49 > +#define RK816_INT_STS_MSK_REG1 0x4a > +#define RK816_INT_STS_PWRON_FALL BIT(5) > +#define RK816_INT_STS_PWRON_RISE BIT(6) > + > +#define RK816_INT_STS_REG2 0x4c > +#define RK816_INT_STS_MSK_REG2 0x4d > +#define RK816_INT_STS_VB_LOW BIT(1) > +#define RK816_INT_STS_PWRON BIT(2) > +#define RK816_INT_STS_PWRON_LP BIT(3) > +#define RK816_INT_STS_HOTDIE BIT(4) > +#define RK816_INT_STS_RTC_ALARM BIT(5) > +#define RK816_INT_STS_RTC_PERIOD BIT(6) > +#define RK816_INT_STS_USB_OV BIT(7) > + > +#define RK816_INT_STS_REG3 0x4e > +#define RK816_INT_STS_MSK_REG3 0x4f > +#define RK816_INT_STS_PLUG_IN BIT(0) > +#define RK816_INT_STS_PLUG_OUT BIT(1) > +#define RK816_INT_STS_CHG_OK BIT(2) > +#define RK816_INT_STS_CHG_TE BIT(3) > +#define RK816_INT_STS_CHG_TS BIT(4) > +#define RK816_INT_STS_CHG_CVTLIM BIT(6) > +#define RK816_INT_STS_DISCHG_ILIM BIT(7) > + > +/* charger, boost and OTG registers */ > +#define RK816_OTG_BUCK_LDO_CONFIG_REG 0x2a > +#define RK816_CHRG_CONFIG_REG 0x2b > +#define RK816_BOOST_ON_VESL_REG 0x54 > +#define RK816_BOOST_SLP_VSEL_REG 0x55 > +#define RK816_CHRG_BOOST_CONFIG_REG 0x9a > +#define RK816_SUP_STS_REG 0xa0 > +#define RK816_USB_CTRL_REG 0xa1 > +#define RK816_CHRG_CTRL(x) (0xa3 + (x)) > +#define RK816_BAT_CTRL_REG 0xa6 > +#define RK816_BAT_HTS_TS_REG 0xa8 > +#define RK816_BAT_LTS_TS_REG 0xa9 > + > +/* adc and fuel gauge registers */ > +#define RK816_TS_CTRL_REG 0xac > +#define RK816_ADC_CTRL_REG 0xad > +#define RK816_GGCON_REG 0xb0 > +#define RK816_GGSTS_REG 0xb1 > +#define RK816_ZERO_CUR_ADC_REGH 0xb2 > +#define RK816_ZERO_CUR_ADC_REGL 0xb3 > +#define RK816_GASCNT_CAL_REG(x) (0xb7 - (x)) > +#define RK816_GASCNT_REG(x) (0xbb - (x)) > +#define RK816_BAT_CUR_AVG_REGH 0xbc > +#define RK816_BAT_CUR_AVG_REGL 0xbd > +#define RK816_TS_ADC_REGH 0xbe > +#define RK816_TS_ADC_REGL 0xbf > +#define RK816_USB_ADC_REGH 0xc0 > +#define RK816_USB_ADC_REGL 0xc1 > +#define RK816_BAT_OCV_REGH 0xc2 > +#define RK816_BAT_OCV_REGL 0xc3 > +#define RK816_BAT_VOL_REGH 0xc4 > +#define RK816_BAT_VOL_REGL 0xc5 > +#define RK816_RELAX_ENTRY_THRES_REGH 0xc6 > +#define RK816_RELAX_ENTRY_THRES_REGL 0xc7 > +#define RK816_RELAX_EXIT_THRES_REGH 0xc8 > +#define RK816_RELAX_EXIT_THRES_REGL 0xc9 > +#define RK816_RELAX_VOL1_REGH 0xca > +#define RK816_RELAX_VOL1_REGL 0xcb > +#define RK816_RELAX_VOL2_REGH 0xcc > +#define RK816_RELAX_VOL2_REGL 0xcd > +#define RK816_RELAX_CUR1_REGH 0xce > +#define RK816_RELAX_CUR1_REGL 0xcf > +#define RK816_RELAX_CUR2_REGH 0xd0 > +#define RK816_RELAX_CUR2_REGL 0xd1 > +#define RK816_CAL_OFFSET_REGH 0xd2 > +#define RK816_CAL_OFFSET_REGL 0xd3 > +#define RK816_NON_ACT_TIMER_CNT_REG 0xd4 > +#define RK816_VCALIB0_REGH 0xd5 > +#define RK816_VCALIB0_REGL 0xd6 > +#define RK816_VCALIB1_REGH 0xd7 > +#define RK816_VCALIB1_REGL 0xd8 > +#define RK816_FCC_GASCNT_REG(x) (0xdc - (x)) > +#define RK816_IOFFSET_REGH 0xdd > +#define RK816_IOFFSET_REGL 0xde > +#define RK816_SLEEP_CON_SAMP_CUR_REG 0xdf > + > +/* general purpose data registers 0xe0 ~ 0xf2 */ > +#define RK816_DATA_REG(x) (0xe0 + (x)) > + > /* RK818 */ > #define RK818_DCDC1 0 > #define RK818_LDO1 4 > @@ -791,6 +930,7 @@ enum rk806_dvs_mode { > #define VOUT_LO_INT BIT(0) > #define CLK32KOUT2_EN BIT(0) > > +#define TEMP105C 0x08 > #define TEMP115C 0x0c > #define TEMP_HOTDIE_MSK 0x0c > #define SLP_SD_MSK (0x3 << 2) > @@ -1191,6 +1331,7 @@ enum { > RK806_ID = 0x8060, > RK808_ID = 0x0000, > RK809_ID = 0x8090, > + RK816_ID = 0x8160, > RK817_ID = 0x8170, > RK818_ID = 0x8180, > }; > -- > 2.43.2 > -- Lee Jones [李琼斯] From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2DCB4C54E67 for ; Thu, 28 Mar 2024 11:55:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=A5xOKdSJsy+TItBw7/jsUhLJQlvb3dCx4z3+8VYV6HM=; b=4BUhv5kj9/swRx /MqvyUcMGNACL33trYG1rrS45QiMOZDmIF77RH4grs1KXLILI7Gqi0DT9dFGixkmsWjwF0Sey+nyD zuFc7PCFOgIZ5zgvCB4Ezf4eovtJPbum6NPfcznrlsE7DEfiqpqHLrHaKXv4QNAjAKMVVJaOC1a+R cnPg5LjXpP5ZgGVtvURCDKwDRkAcm5AWLKFs9CRyTk2fY3doBCd57fxtsSFY+2YE3YzNbSZxIvDoz 0t8EbuqaJENGSgrWxwXl5daDQJOsvIjQrttZKl/+tleH5EBS3OrB8o5DMimiysGnSXM2m/NhtmGzk NatKdWBEzEqxMT3alPTQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpoLs-0000000DnjE-1oam; Thu, 28 Mar 2024 11:55:24 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpoLo-0000000Dni1-0zSX; Thu, 28 Mar 2024 11:55:22 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 22382CE24E7; Thu, 28 Mar 2024 11:55:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC992C433C7; Thu, 28 Mar 2024 11:55:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711626915; bh=ARB33Nc2FhheZtv5qHgeBe0yGMywN/zGFYb4YvYb2t0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=bDheQ9M6sTtKlW6rPu40C4XEGL9VPNTvuVoQZ7mrGhKqj8Iz3MBdZVsFVb6hnKGib bFgEzJ2CN9Pi05PDax2+1YD6gEMdJ9rR7WIDRiW98Mr6ITQvNJWVOXo2JEjZgG1/ng DAmuEA1vkA3wzTuJQIsbZNkS/MVyb+uoh+XQ/sC8WRZiOzkqpcTyVP6JNoP71k46kN A50LGP9mks9FisxvpVzFs1KBv4HAKs6BzokJh7cF79BWouBV5/OdimRabF+k8fyZYN 88DEBRQo6T93wRsTBm0Pood7uNzbT0VIG7FWLvZopblWt9sEyqn8ieOF/f3/p/6O6Y u/WYYLoQAmXHA== Date: Thu, 28 Mar 2024 11:55:10 +0000 From: Lee Jones To: Alex Bee Cc: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Linus Walleij , Liam Girdwood , Mark Brown , Chris Zhong , Zhang Qing , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org Subject: Re: [PATCH v3 2/5] mfd: rk8xx: Add RK816 support Message-ID: <20240328115510.GD13211@google.com> References: <20240323132757.141861-2-knaerzche@gmail.com> <20240323132757.141861-6-knaerzche@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240323132757.141861-6-knaerzche@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240328_045520_666856_7AF2CA36 X-CRM114-Status: GOOD ( 32.08 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org T24gU2F0LCAyMyBNYXIgMjAyNCwgQWxleCBCZWUgd3JvdGU6Cgo+IFRoaXMgaW50ZWdyYXRlcyBS SzgxNiBzdXBwb3J0IGluIHRoZSB0aGlzIGV4aXN0aW5nIHJrOHh4IG1mZCBkcml2ZXIuCj4gCj4g VGhpcyB2ZXJzaW9uIGhhcyB1bmFsaWduZWQgaW50ZXJydXB0IHJlZ2lzdGVycywgd2hpY2ggcmVx dWlyZXMgdG8gZGVmaW5lIGEKPiBzZXBhcmF0ZSBnZXRfaXJxX3JlZyBjYWxsYmFjayBmb3IgdGhl IHJlZ21hcC4gQXBhcnQgZnJvbSB0aGF0IHRoZQo+IGludGVncmF0aW9uIGlzIHN0cmFpZ2h0Zm9y d2FyZCBhbmQgdGhlIGV4aXN0aW5nIHN0cnVjdHVyZXMgY2FuIGJlIHVzZWQgYXMKPiBpcy4gVGhl IGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGhhcyBiZWVuIHRha2VuIGZyb20gdmVuZG9yIGtlcm5l bC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbGV4IEJlZSA8a25hZXJ6Y2hlQGdtYWlsLmNvbT4KPiAt LS0KPiBjaG5hZ2VzIHNpbmNlIHYxOgo+ICAgLSB1bi1jb25zdGlmeSByazgxNl9nZXRfaXJxX3Jl ZydzIHJldHVybiB0eXBlCj4gCj4gIGRyaXZlcnMvbWZkL0tjb25maWcgICAgICAgfCAgIDQgKy0K PiAgZHJpdmVycy9tZmQvcms4eHgtY29yZS5jICB8IDEwMyArKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4gIGRyaXZlcnMvbWZkL3JrOHh4LWkyYy5jICAgfCAgNDUgKysrKysrKysrKystCj4g IGluY2x1ZGUvbGludXgvbWZkL3JrODA4LmggfCAxNDEgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAyOTAgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvS2NvbmZpZyBiL2RyaXZl cnMvbWZkL0tjb25maWcKPiBpbmRleCA0YjAyM2VlMjI5Y2YuLjJlNzI4NmNjOThlNCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL21mZC9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9tZmQvS2NvbmZpZwo+ IEBAIC0xMjI1LDcgKzEyMjUsNyBAQCBjb25maWcgTUZEX1JLOFhYCj4gIAlzZWxlY3QgTUZEX0NP UkUKPiAgCj4gIGNvbmZpZyBNRkRfUks4WFhfSTJDCj4gLQl0cmlzdGF0ZSAiUm9ja2NoaXAgUks4 MDUvUks4MDgvUks4MDkvUks4MTcvUks4MTggUG93ZXIgTWFuYWdlbWVudCBDaGlwIgo+ICsJdHJp c3RhdGUgIlJvY2tjaGlwIFJLODA1L1JLODA4L1JLODA5L1JLODE2L1JLODE3L1JLODE4IFBvd2Vy IE1hbmFnZW1lbnQgQ2hpcCIKPiAgCWRlcGVuZHMgb24gSTJDICYmIE9GCj4gIAlzZWxlY3QgTUZE X0NPUkUKPiAgCXNlbGVjdCBSRUdNQVBfSTJDCj4gQEAgLTEyMzMsNyArMTIzMyw3IEBAIGNvbmZp ZyBNRkRfUks4WFhfSTJDCj4gIAlzZWxlY3QgTUZEX1JLOFhYCj4gIAloZWxwCj4gIAkgIElmIHlv dSBzYXkgeWVzIGhlcmUgeW91IGdldCBzdXBwb3J0IGZvciB0aGUgUks4MDUsIFJLODA4LCBSSzgw OSwKPiAtCSAgUks4MTcgYW5kIFJLODE4IFBvd2VyIE1hbmFnZW1lbnQgY2hpcHMuCj4gKwkgIFJL ODE2LCBSSzgxNyBhbmQgUks4MTggUG93ZXIgTWFuYWdlbWVudCBjaGlwcy4KPiAgCSAgVGhpcyBk cml2ZXIgcHJvdmlkZXMgY29tbW9uIHN1cHBvcnQgZm9yIGFjY2Vzc2luZyB0aGUgZGV2aWNlCj4g IAkgIHRocm91Z2ggSTJDIGludGVyZmFjZS4gVGhlIGRldmljZSBzdXBwb3J0cyBtdWx0aXBsZSBz dWItZGV2aWNlcwo+ICAJICBpbmNsdWRpbmcgaW50ZXJydXB0cywgUlRDLCBMRE8gJiBEQ0RDIHJl Z3VsYXRvcnMsIGFuZCBvbmtleS4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvcms4eHgtY29y ZS5jIGIvZHJpdmVycy9tZmQvcms4eHgtY29yZS5jCj4gaW5kZXggZTIyNjFiNjhiODQ0Li5jNjhh MzgwMzMyZTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvcms4eHgtY29yZS5jCj4gKysrIGIv ZHJpdmVycy9tZmQvcms4eHgtY29yZS5jCj4gQEAgLTI4LDYgKzI4LDEwIEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgcmVzb3VyY2UgcnRjX3Jlc291cmNlc1tdID0gewo+ICAJREVGSU5FX1JFU19JUlEo Uks4MDhfSVJRX1JUQ19BTEFSTSksCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJl c291cmNlIHJrODE2X3J0Y19yZXNvdXJjZXNbXSA9IHsKPiArCURFRklORV9SRVNfSVJRKFJLODE2 X0lSUV9SVENfQUxBUk0pLAo+ICt9Owo+ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCByZXNvdXJj ZSByazgxN19ydGNfcmVzb3VyY2VzW10gPSB7Cj4gIAlERUZJTkVfUkVTX0lSUShSSzgxN19JUlFf UlRDX0FMQVJNKSwKPiAgfTsKPiBAQCAtODcsNiArOTEsMjEgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBtZmRfY2VsbCByazgwOHNbXSA9IHsKPiAgCX0sCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IG1mZF9jZWxsIHJrODE2c1tdID0gewo+ICsJeyAubmFtZSA9ICJyazgwNS1waW5jdHJs IiwgfSwKPiArCXsgLm5hbWUgPSAicms4MDgtY2xrb3V0IiwgfSwKPiArCXsgLm5hbWUgPSAicms4 MDgtcmVndWxhdG9yIiwgfSwKPiArCXsJLm5hbWUgPSAicms4MDUtcHdya2V5IiwKCk5ld2xpbmUg YWZ0ZXIgdGhlICd7Jy4KCj4gKwkJLm51bV9yZXNvdXJjZXMgPSBBUlJBWV9TSVpFKHJrODA1X2tl eV9yZXNvdXJjZXMpLAo+ICsJCS5yZXNvdXJjZXMgPSByazgwNV9rZXlfcmVzb3VyY2VzLAo+ICsJ fSwKPiArCXsKPiArCQkubmFtZSA9ICJyazgwOC1ydGMiLAo+ICsJCS5udW1fcmVzb3VyY2VzID0g QVJSQVlfU0laRShyazgxNl9ydGNfcmVzb3VyY2VzKSwKPiArCQkucmVzb3VyY2VzID0gcms4MTZf cnRjX3Jlc291cmNlcywKPiArCX0sCj4gK307Cj4gKwo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG1m ZF9jZWxsIHJrODE3c1tdID0gewo+ICAJeyAubmFtZSA9ICJyazgwOC1jbGtvdXQiLCB9LAo+ICAJ eyAubmFtZSA9ICJyazgwOC1yZWd1bGF0b3IiLCB9LAo+IEBAIC0xNDgsNiArMTY3LDE3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgcms4MDhfcmVnX2RhdGEgcms4MDhfcHJlX2luaXRfcmVnW10gPSB7 Cj4gIAkJCQkJCSAgICBWQl9MT19TRUxfMzUwME1WIH0sCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHJrODA4X3JlZ19kYXRhIHJrODE2X3ByZV9pbml0X3JlZ1tdID0gewo+ICsJeyBS SzgxOF9CVUNLMV9DT05GSUdfUkVHLCBSSzgxN19SQU1QX1JBVEVfTUFTSywKPiArCQkJCSAgUks4 MTdfUkFNUF9SQVRFXzEyXzVNVl9QRVJfVVMgfSwKPiArCXsgUks4MThfQlVDSzJfQ09ORklHX1JF RywgUks4MTdfUkFNUF9SQVRFX01BU0ssCj4gKwkJCQkgIFJLODE3X1JBTVBfUkFURV8xMl81TVZf UEVSX1VTIH0sCj4gKwl7IFJLODE4X0JVQ0s0X0NPTkZJR19SRUcsIEJVQ0tfSUxNSU5fTUFTSywg IEJVQ0tfSUxNSU5fMjUwTUEgfSwKPiArCXsgUks4MDhfVEhFUk1BTF9SRUcsIFRFTVBfSE9URElF X01TSywgVEVNUDEwNUN9LAo+ICsJeyBSSzgwOF9WQl9NT05fUkVHLCBWQkFUX0xPV19WT0xfTUFT SyB8IFZCQVRfTE9XX0FDVF9NQVNLLAo+ICsJCQkgICAgUks4MDhfVkJBVF9MT1dfM1YwIHwgRU5f VkFCVF9MT1dfU0hVVF9ET1dOIH0sCj4gK307Cj4gKwo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHJr ODA4X3JlZ19kYXRhIHJrODE3X3ByZV9pbml0X3JlZ1tdID0gewo+ICAJe1JLODE3X1JUQ19DVFJM X1JFRywgUlRDX1NUT1AsIFJUQ19TVE9QfSwKPiAgCS8qIENvZGVjIHNwZWNpZmljIHJlZ2lzdGVy cyAqLwo+IEBAIC0zNTAsNiArMzgwLDU5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2ly cSByazgwOF9pcnFzW10gPSB7Cj4gIAl9LAo+ICB9Owo+ICAKPiArc3RhdGljIGNvbnN0IHVuc2ln bmVkIGludCByazgxNl9pcnFfc3RhdHVzX29mZnNldHNbXSA9IHsKPiArCShSSzgxNl9JTlRfU1RT X1JFRzEgLSBSSzgxNl9JTlRfU1RTX1JFRzEpLAoKVHVybiB0aGlzIGludG8gYSBtYWNybyBwbGVh c2UuCgo+ICsJKFJLODE2X0lOVF9TVFNfUkVHMiAtIFJLODE2X0lOVF9TVFNfUkVHMSksCj4gKwko Uks4MTZfSU5UX1NUU19SRUczIC0gUks4MTZfSU5UX1NUU19SRUcxKSwKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcms4MTZfaXJxX21hc2tfb2Zmc2V0c1tdID0gewo+ICsJ KFJLODE2X0lOVF9TVFNfTVNLX1JFRzEgLSBSSzgxNl9JTlRfU1RTX01TS19SRUcxKSwKPiArCShS SzgxNl9JTlRfU1RTX01TS19SRUcyIC0gUks4MTZfSU5UX1NUU19NU0tfUkVHMSksCj4gKwkoUks4 MTZfSU5UX1NUU19NU0tfUkVHMyAtIFJLODE2X0lOVF9TVFNfTVNLX1JFRzEpLAo+ICt9Owo+ICsK PiArc3RhdGljIHVuc2lnbmVkIGludCByazgxNl9nZXRfaXJxX3JlZyhzdHJ1Y3QgcmVnbWFwX2ly cV9jaGlwX2RhdGEgKmRhdGEsCj4gKwkJCQkgICAgICB1bnNpZ25lZCBpbnQgYmFzZSwgaW50IGlu ZGV4KQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgaXJxX3JlZyA9IGJhc2U7Cj4gKwo+ICsJc3dpdGNo IChiYXNlKSB7Cj4gKwljYXNlIFJLODE2X0lOVF9TVFNfUkVHMToKPiArCQlpcnFfcmVnICs9IHJr ODE2X2lycV9zdGF0dXNfb2Zmc2V0c1tpbmRleF07Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFJLODE2 X0lOVF9TVFNfTVNLX1JFRzE6Cj4gKwkJaXJxX3JlZyArPSByazgxNl9pcnFfbWFza19vZmZzZXRz W2luZGV4XTsKPiArCQlicmVhazsKPiArCX0KPiArCj4gKwlyZXR1cm4gaXJxX3JlZzsKPiArfTsK PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2lycSByazgxNl9pcnFzW10gPSB7Cj4g KwkvKiBJTlRfU1RTX1JFRzEgSVJRcyAqLwo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX1BX Uk9OX0ZBTEwsIDAsIFJLODE2X0lOVF9TVFNfUFdST05fRkFMTCksCj4gKwlSRUdNQVBfSVJRX1JF RyhSSzgxNl9JUlFfUFdST05fUklTRSwgMCwgUks4MTZfSU5UX1NUU19QV1JPTl9SSVNFKSwKPiAr Cj4gKwkvKiBJTlRfU1RTX1JFRzIgSVJRcyAgKi8KPiArCVJFR01BUF9JUlFfUkVHKFJLODE2X0lS UV9WQl9MT1csIDEsIFJLODE2X0lOVF9TVFNfVkJfTE9XKSwKPiArCVJFR01BUF9JUlFfUkVHKFJL ODE2X0lSUV9QV1JPTiwgMSwgUks4MTZfSU5UX1NUU19QV1JPTiksCj4gKwlSRUdNQVBfSVJRX1JF RyhSSzgxNl9JUlFfUFdST05fTFAsIDEsIFJLODE2X0lOVF9TVFNfUFdST05fTFApLAo+ICsJUkVH TUFQX0lSUV9SRUcoUks4MTZfSVJRX0hPVERJRSwgMSwgUks4MTZfSU5UX1NUU19IT1RESUUpLAo+ ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX1JUQ19BTEFSTSwgMSwgUks4MTZfSU5UX1NUU19S VENfQUxBUk0pLAo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX1JUQ19QRVJJT0QsIDEsIFJL ODE2X0lOVF9TVFNfUlRDX1BFUklPRCksCj4gKwlSRUdNQVBfSVJRX1JFRyhSSzgxNl9JUlFfVVNC X09WLCAxLCBSSzgxNl9JTlRfU1RTX1VTQl9PViksCj4gKwo+ICsJLyogSU5UX1NUUzMgSVJRcyAq Lwo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX1BMVUdfSU4sIDIsIFJLODE2X0lOVF9TVFNf UExVR19JTiksCj4gKwlSRUdNQVBfSVJRX1JFRyhSSzgxNl9JUlFfUExVR19PVVQsIDIsIFJLODE2 X0lOVF9TVFNfUExVR19PVVQpLAo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX0NIR19PSywg MiwgUks4MTZfSU5UX1NUU19DSEdfT0spLAo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX0NI R19URSwgMiwgUks4MTZfSU5UX1NUU19DSEdfVEUpLAo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZf SVJRX0NIR19UUywgMiwgUks4MTZfSU5UX1NUU19DSEdfVFMpLAo+ICsJUkVHTUFQX0lSUV9SRUco Uks4MTZfSVJRX0NIR19DVlRMSU0sIDIsIFJLODE2X0lOVF9TVFNfQ0hHX0NWVExJTSksCj4gKwlS RUdNQVBfSVJRX1JFRyhSSzgxNl9JUlFfRElTQ0hHX0lMSU0sIDIsIFJLODE2X0lOVF9TVFNfRElT Q0hHX0lMSU0pLAo+ICt9Owo+ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfaXJxIHJr ODE4X2lycXNbXSA9IHsKPiAgCS8qIElOVF9TVFMgKi8KPiAgCVtSSzgxOF9JUlFfVk9VVF9MT10g PSB7Cj4gQEAgLTQ4Miw2ICs1NjUsMTggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfaXJx X2NoaXAgcms4MDhfaXJxX2NoaXAgPSB7Cj4gIAkuaW5pdF9hY2tfbWFza2VkID0gdHJ1ZSwKPiAg fTsKPiAgCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2lycV9jaGlwIHJrODE2X2lycV9j aGlwID0gewo+ICsJLm5hbWUgPSAicms4MTYiLAo+ICsJLmlycXMgPSByazgxNl9pcnFzLAo+ICsJ Lm51bV9pcnFzID0gQVJSQVlfU0laRShyazgxNl9pcnFzKSwKPiArCS5udW1fcmVncyA9IDMsCj4g KwkuZ2V0X2lycV9yZWcgPSByazgxNl9nZXRfaXJxX3JlZywKPiArCS5zdGF0dXNfYmFzZSA9IFJL ODE2X0lOVF9TVFNfUkVHMSwKPiArCS5tYXNrX2Jhc2UgPSBSSzgxNl9JTlRfU1RTX01TS19SRUcx LAo+ICsJLmFja19iYXNlID0gUks4MTZfSU5UX1NUU19SRUcxLAo+ICsJLmluaXRfYWNrX21hc2tl ZCA9IHRydWUsCj4gK307Cj4gKwo+ICBzdGF0aWMgc3RydWN0IHJlZ21hcF9pcnFfY2hpcCByazgx N19pcnFfY2hpcCA9IHsKPiAgCS5uYW1lID0gInJrODE3IiwKPiAgCS5pcnFzID0gcms4MTdfaXJx cywKPiBAQCAtNTMwLDYgKzYyNSw3IEBAIHN0YXRpYyBpbnQgcms4MDhfcG93ZXJfb2ZmKHN0cnVj dCBzeXNfb2ZmX2RhdGEgKmRhdGEpCj4gIAkJcmVnID0gUks4MTdfU1lTX0NGRygzKTsKPiAgCQli aXQgPSBERVZfT0ZGOwo+ICAJCWJyZWFrOwo+ICsJY2FzZSBSSzgxNl9JRDoKPiAgCWNhc2UgUks4 MThfSUQ6Cj4gIAkJcmVnID0gUks4MThfREVWQ1RSTF9SRUc7Cj4gIAkJYml0ID0gREVWX09GRjsK PiBAQCAtNjM3LDYgKzczMywxMyBAQCBpbnQgcms4eHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2 LCBpbnQgdmFyaWFudCwgdW5zaWduZWQgaW50IGlycSwgc3RydWN0IHJlZ21hcAo+ICAJCWNlbGxz ID0gcms4MDhzOwo+ICAJCW5yX2NlbGxzID0gQVJSQVlfU0laRShyazgwOHMpOwo+ICAJCWJyZWFr Owo+ICsJY2FzZSBSSzgxNl9JRDoKPiArCQlyazgwOC0+cmVnbWFwX2lycV9jaGlwID0gJnJrODE2 X2lycV9jaGlwOwo+ICsJCXByZV9pbml0X3JlZyA9IHJrODE2X3ByZV9pbml0X3JlZzsKPiArCQlu cl9wcmVfaW5pdF9yZWdzID0gQVJSQVlfU0laRShyazgxNl9wcmVfaW5pdF9yZWcpOwo+ICsJCWNl bGxzID0gcms4MTZzOwo+ICsJCW5yX2NlbGxzID0gQVJSQVlfU0laRShyazgxNnMpOwo+ICsJCWJy ZWFrOwo+ICAJY2FzZSBSSzgxOF9JRDoKPiAgCQlyazgwOC0+cmVnbWFwX2lycV9jaGlwID0gJnJr ODE4X2lycV9jaGlwOwo+ICAJCXByZV9pbml0X3JlZyA9IHJrODE4X3ByZV9pbml0X3JlZzsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvcms4eHgtaTJjLmMgYi9kcml2ZXJzL21mZC9yazh4eC1p MmMuYwo+IGluZGV4IDc1YjVjZjA5ZDVhMC4uNjlhNmIyOTdkNzIzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvbWZkL3JrOHh4LWkyYy5jCj4gKysrIGIvZHJpdmVycy9tZmQvcms4eHgtaTJjLmMKPiBA QCAtMSw2ICsxLDYgQEAKPiAgLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25s eQo+ICAvKgo+IC0gKiBSb2NrY2hpcCBSSzgwOC9SSzgxOCBDb3JlIChJMkMpIGRyaXZlcgo+ICsg KiBSb2NrY2hpcCBSSzgwNS9SSzgwOC9SSzgxNi9SSzgxNy9SSzgxOCBDb3JlIChJMkMpIGRyaXZl cgo+ICAgKgo+ICAgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIEZ1emhvdSBSb2NrY2hpcCBFbGVjdHJv bmljcyBDby4sIEx0ZAo+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgUEhZVEVDIE1lc3N0ZWNobmlr IEdtYkgKPiBAQCAtNDksNiArNDksMzUgQEAgc3RhdGljIGJvb2wgcms4MDhfaXNfdm9sYXRpbGVf cmVnKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJlZykKPiAgCXJldHVybiBmYWxz ZTsKPiAgfQo+ICAKPiArc3RhdGljIGJvb2wgcms4MTZfaXNfdm9sYXRpbGVfcmVnKHN0cnVjdCBk ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJlZykKPiArewo+ICsJLyoKPiArCSAqIFRlY2huaWNh bGx5IHRoZSBST1VORF8zMHMgYml0IG1ha2VzIFJUQ19DVFJMX1JFRyB2b2xhdGlsZSwgYnV0Cj4g KwkgKiB3ZSBkb24ndCB1c2UgdGhhdCBmZWF0dXJlLiAgSXQncyBiZXR0ZXIgdG8gY2FjaGUuCj4g KwkgKi8KPiArCj4gKwlzd2l0Y2ggKHJlZykgewo+ICsJY2FzZSBSSzgwOF9TRUNPTkRTX1JFRyAu Li4gUks4MDhfV0VFS1NfUkVHOgo+ICsJY2FzZSBSSzgwOF9SVENfU1RBVFVTX1JFRzoKPiArCWNh c2UgUks4MDhfVkJfTU9OX1JFRzoKPiArCWNhc2UgUks4MDhfVEhFUk1BTF9SRUc6Cj4gKwljYXNl IFJLODE2X0RDRENfRU5fUkVHMToKPiArCWNhc2UgUks4MTZfRENEQ19FTl9SRUcyOgo+ICsJY2Fz ZSBSSzgxNl9JTlRfU1RTX1JFRzE6Cj4gKwljYXNlIFJLODE2X0lOVF9TVFNfUkVHMjoKPiArCWNh c2UgUks4MTZfSU5UX1NUU19SRUczOgo+ICsJY2FzZSBSSzgwOF9ERVZDVFJMX1JFRzoKPiArCWNh c2UgUks4MTZfU1VQX1NUU19SRUc6Cj4gKwljYXNlIFJLODE2X0dHU1RTX1JFRzoKPiArCWNhc2Ug Uks4MTZfWkVST19DVVJfQURDX1JFR0g6Cj4gKwljYXNlIFJLODE2X1pFUk9fQ1VSX0FEQ19SRUdM Ogo+ICsJY2FzZSBSSzgxNl9HQVNDTlRfUkVHKDApIC4uLiBSSzgxNl9CQVRfVk9MX1JFR0w6Cj4g KwkJcmV0dXJuIHRydWU7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICBz dGF0aWMgYm9vbCByazgxN19pc192b2xhdGlsZV9yZWcoc3RydWN0IGRldmljZSAqZGV2LCB1bnNp Z25lZCBpbnQgcmVnKQo+ICB7Cj4gIAkvKgo+IEBAIC0xMDAsNiArMTI5LDE0IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByazgwOF9yZWdtYXBfY29uZmlnID0gewo+ICAJLnZv bGF0aWxlX3JlZyA9IHJrODA4X2lzX3ZvbGF0aWxlX3JlZywKPiAgfTsKPiAgCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByazgxNl9yZWdtYXBfY29uZmlnID0gewo+ICsJLnJl Z19iaXRzID0gOCwKPiArCS52YWxfYml0cyA9IDgsCj4gKwkubWF4X3JlZ2lzdGVyID0gUks4MTZf REFUQV9SRUcoMTgpLAo+ICsJLmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9NQVBMRSwKPiArCS52b2xh dGlsZV9yZWcgPSByazgxNl9pc192b2xhdGlsZV9yZWcsCj4gK307Cj4gKwo+ICBzdGF0aWMgY29u c3Qgc3RydWN0IHJlZ21hcF9jb25maWcgcms4MTdfcmVnbWFwX2NvbmZpZyA9IHsKPiAgCS5yZWdf Yml0cyA9IDgsCj4gIAkudmFsX2JpdHMgPSA4LAo+IEBAIC0xMjMsNiArMTYwLDExIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgcms4eHhfaTJjX3BsYXRmb3JtX2RhdGEgcms4MDlfZGF0YSA9IHsKPiAg CS52YXJpYW50ID0gUks4MDlfSUQsCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJr OHh4X2kyY19wbGF0Zm9ybV9kYXRhIHJrODE2X2RhdGEgPSB7Cj4gKwkucmVnbWFwX2NmZyA9ICZy azgxNl9yZWdtYXBfY29uZmlnLAo+ICsJLnZhcmlhbnQgPSBSSzgxNl9JRCwKPiArfTsKPiArCj4g IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcms4eHhfaTJjX3BsYXRmb3JtX2RhdGEgcms4MTdfZGF0YSA9 IHsKPiAgCS5yZWdtYXBfY2ZnID0gJnJrODE3X3JlZ21hcF9jb25maWcsCj4gIAkudmFyaWFudCA9 IFJLODE3X0lELAo+IEBAIC0xNjEsNiArMjAzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgcms4eHhfaTJjX29mX21hdGNoW10gPSB7Cj4gIAl7IC5jb21wYXRpYmxlID0gInJv Y2tjaGlwLHJrODA1IiwgLmRhdGEgPSAmcms4MDVfZGF0YSB9LAo+ICAJeyAuY29tcGF0aWJsZSA9 ICJyb2NrY2hpcCxyazgwOCIsIC5kYXRhID0gJnJrODA4X2RhdGEgfSwKPiAgCXsgLmNvbXBhdGli bGUgPSAicm9ja2NoaXAscms4MDkiLCAuZGF0YSA9ICZyazgwOV9kYXRhIH0sCj4gKwl7IC5jb21w YXRpYmxlID0gInJvY2tjaGlwLHJrODE2IiwgLmRhdGEgPSAmcms4MTZfZGF0YSB9LAo+ICAJeyAu Y29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazgxNyIsIC5kYXRhID0gJnJrODE3X2RhdGEgfSwKPiAg CXsgLmNvbXBhdGlibGUgPSAicm9ja2NoaXAscms4MTgiLCAuZGF0YSA9ICZyazgxOF9kYXRhIH0s Cj4gIAl7IH0sCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWZkL3JrODA4LmggYi9pbmNs dWRlL2xpbnV4L21mZC9yazgwOC5oCj4gaW5kZXggNzhlMTY3YTkyNDgzLi5iOTBkMWMyNzg3OTAg MTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9tZmQvcms4MDguaAo+ICsrKyBiL2luY2x1ZGUv bGludXgvbWZkL3JrODA4LmgKPiBAQCAtMTEzLDYgKzExMywxNDUgQEAgZW51bSByazgwOF9yZWcg ewo+ICAjZGVmaW5lIFJLODA4X0lOVF9TVFNfTVNLX1JFRzIJMHg0Zgo+ICAjZGVmaW5lIFJLODA4 X0lPX1BPTF9SRUcJMHg1MAo+ICAKPiArLyogUks4MTYgKi8KPiArZW51bSByazgxNl9yZWcgewo+ ICsJUks4MTZfSURfRENEQzEsCj4gKwlSSzgxNl9JRF9EQ0RDMiwKPiArCVJLODE2X0lEX0RDREMz LAo+ICsJUks4MTZfSURfRENEQzQsCj4gKwlSSzgxNl9JRF9MRE8xLAo+ICsJUks4MTZfSURfTERP MiwKPiArCVJLODE2X0lEX0xETzMsCj4gKwlSSzgxNl9JRF9MRE80LAo+ICsJUks4MTZfSURfTERP NSwKPiArCVJLODE2X0lEX0xETzYsCj4gKwlSSzgxNl9JRF9CT09TVCwKPiArCVJLODE2X0lEX09U R19TVywKPiArfTsKPiArCj4gK2VudW0gcms4MTZfaXJxcyB7Cj4gKwkvKiBJTlRfU1RTX1JFRzEg Ki8KPiArCVJLODE2X0lSUV9QV1JPTl9GQUxMLAo+ICsJUks4MTZfSVJRX1BXUk9OX1JJU0UsCj4g Kwo+ICsJLyogSU5UX1NUU19SRUcyICovCj4gKwlSSzgxNl9JUlFfVkJfTE9XLAo+ICsJUks4MTZf SVJRX1BXUk9OLAo+ICsJUks4MTZfSVJRX1BXUk9OX0xQLAo+ICsJUks4MTZfSVJRX0hPVERJRSwK PiArCVJLODE2X0lSUV9SVENfQUxBUk0sCj4gKwlSSzgxNl9JUlFfUlRDX1BFUklPRCwKPiArCVJL ODE2X0lSUV9VU0JfT1YsCj4gKwo+ICsJLyogSU5UX1NUU19SRUczICovCj4gKwlSSzgxNl9JUlFf UExVR19JTiwKPiArCVJLODE2X0lSUV9QTFVHX09VVCwKPiArCVJLODE2X0lSUV9DSEdfT0ssCj4g KwlSSzgxNl9JUlFfQ0hHX1RFLAo+ICsJUks4MTZfSVJRX0NIR19UUywKPiArCVJLODE2X0lSUV9D SEdfQ1ZUTElNLAo+ICsJUks4MTZfSVJRX0RJU0NIR19JTElNLAo+ICt9Owo+ICsKPiArLyogcG93 ZXIgY2hhbm5lbCByZWdpc3RlcnMgKi8KPiArI2RlZmluZSBSSzgxNl9EQ0RDX0VOX1JFRzEJCTB4 MjMKPiArCj4gKyNkZWZpbmUgUks4MTZfRENEQ19FTl9SRUcyCQkweDI0Cj4gKyNkZWZpbmUJUks4 MTZfQk9PU1RfRU4JCQlCSVQoMSkKPiArI2RlZmluZSBSSzgxNl9PVEdfRU4JCQlCSVQoMikKPiAr I2RlZmluZQlSSzgxNl9CT09TVF9FTl9NU0sJCUJJVCg1KQo+ICsjZGVmaW5lIFJLODE2X09UR19F Tl9NU0sJCUJJVCg2KQo+ICsjZGVmaW5lIFJLODE2X0JVQ0tfRFZTX0NPTkZJUk0JCUJJVCg3KQo+ ICsKPiArI2RlZmluZSBSSzgxNl9MRE9fRU5fUkVHMQkJMHgyNwo+ICsKPiArI2RlZmluZSBSSzgx Nl9MRE9fRU5fUkVHMgkJMHgyOAo+ICsKPiArLyogaW50ZXJydXB0IHJlZ2lzdGVycyBhbmQgaXJx IGRlZmluaXRpb25zICovCj4gKyNkZWZpbmUgUks4MTZfSU5UX1NUU19SRUcxCQkweDQ5Cj4gKyNk ZWZpbmUgUks4MTZfSU5UX1NUU19NU0tfUkVHMQkJMHg0YQo+ICsjZGVmaW5lIFJLODE2X0lOVF9T VFNfUFdST05fRkFMTAlCSVQoNSkKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX1BXUk9OX1JJU0UJ QklUKDYpCj4gKwo+ICsjZGVmaW5lIFJLODE2X0lOVF9TVFNfUkVHMgkJMHg0Ywo+ICsjZGVmaW5l IFJLODE2X0lOVF9TVFNfTVNLX1JFRzIJCTB4NGQKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX1ZC X0xPVwkJQklUKDEpCj4gKyNkZWZpbmUgUks4MTZfSU5UX1NUU19QV1JPTgkJQklUKDIpCj4gKyNk ZWZpbmUgUks4MTZfSU5UX1NUU19QV1JPTl9MUAkJQklUKDMpCj4gKyNkZWZpbmUgUks4MTZfSU5U X1NUU19IT1RESUUJCUJJVCg0KQo+ICsjZGVmaW5lIFJLODE2X0lOVF9TVFNfUlRDX0FMQVJNCQlC SVQoNSkKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX1JUQ19QRVJJT0QJQklUKDYpCj4gKyNkZWZp bmUgUks4MTZfSU5UX1NUU19VU0JfT1YJCUJJVCg3KQo+ICsKPiArI2RlZmluZSBSSzgxNl9JTlRf U1RTX1JFRzMJCTB4NGUKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX01TS19SRUczCQkweDRmCj4g KyNkZWZpbmUgUks4MTZfSU5UX1NUU19QTFVHX0lOCQlCSVQoMCkKPiArI2RlZmluZSBSSzgxNl9J TlRfU1RTX1BMVUdfT1VUCQlCSVQoMSkKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX0NIR19PSwkJ QklUKDIpCj4gKyNkZWZpbmUgUks4MTZfSU5UX1NUU19DSEdfVEUJCUJJVCgzKQo+ICsjZGVmaW5l IFJLODE2X0lOVF9TVFNfQ0hHX1RTCQlCSVQoNCkKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX0NI R19DVlRMSU0JQklUKDYpCj4gKyNkZWZpbmUgUks4MTZfSU5UX1NUU19ESVNDSEdfSUxJTQlCSVQo NykKPiArCj4gKy8qIGNoYXJnZXIsIGJvb3N0IGFuZCBPVEcgcmVnaXN0ZXJzICovCj4gKyNkZWZp bmUgUks4MTZfT1RHX0JVQ0tfTERPX0NPTkZJR19SRUcJMHgyYQo+ICsjZGVmaW5lIFJLODE2X0NI UkdfQ09ORklHX1JFRwkJMHgyYgo+ICsjZGVmaW5lIFJLODE2X0JPT1NUX09OX1ZFU0xfUkVHCQkw eDU0Cj4gKyNkZWZpbmUgUks4MTZfQk9PU1RfU0xQX1ZTRUxfUkVHCTB4NTUKPiArI2RlZmluZSBS SzgxNl9DSFJHX0JPT1NUX0NPTkZJR19SRUcJMHg5YQo+ICsjZGVmaW5lIFJLODE2X1NVUF9TVFNf UkVHCQkweGEwCj4gKyNkZWZpbmUgUks4MTZfVVNCX0NUUkxfUkVHCQkweGExCj4gKyNkZWZpbmUg Uks4MTZfQ0hSR19DVFJMKHgpCQkoMHhhMyArICh4KSkKPiArI2RlZmluZSBSSzgxNl9CQVRfQ1RS TF9SRUcJCTB4YTYKPiArI2RlZmluZSBSSzgxNl9CQVRfSFRTX1RTX1JFRwkJMHhhOAo+ICsjZGVm aW5lIFJLODE2X0JBVF9MVFNfVFNfUkVHCQkweGE5Cj4gKwo+ICsvKiBhZGMgYW5kIGZ1ZWwgZ2F1 Z2UgcmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgUks4MTZfVFNfQ1RSTF9SRUcJCTB4YWMKPiArI2Rl ZmluZSBSSzgxNl9BRENfQ1RSTF9SRUcJCTB4YWQKPiArI2RlZmluZSBSSzgxNl9HR0NPTl9SRUcJ CQkweGIwCj4gKyNkZWZpbmUgUks4MTZfR0dTVFNfUkVHCQkJMHhiMQo+ICsjZGVmaW5lIFJLODE2 X1pFUk9fQ1VSX0FEQ19SRUdICQkweGIyCj4gKyNkZWZpbmUgUks4MTZfWkVST19DVVJfQURDX1JF R0wJCTB4YjMKPiArI2RlZmluZSBSSzgxNl9HQVNDTlRfQ0FMX1JFRyh4KQkJKDB4YjcgLSAoeCkp Cj4gKyNkZWZpbmUgUks4MTZfR0FTQ05UX1JFRyh4KQkJKDB4YmIgLSAoeCkpCj4gKyNkZWZpbmUg Uks4MTZfQkFUX0NVUl9BVkdfUkVHSAkJMHhiYwo+ICsjZGVmaW5lIFJLODE2X0JBVF9DVVJfQVZH X1JFR0wJCTB4YmQKPiArI2RlZmluZSBSSzgxNl9UU19BRENfUkVHSAkJMHhiZQo+ICsjZGVmaW5l IFJLODE2X1RTX0FEQ19SRUdMCQkweGJmCj4gKyNkZWZpbmUgUks4MTZfVVNCX0FEQ19SRUdICQkw eGMwCj4gKyNkZWZpbmUgUks4MTZfVVNCX0FEQ19SRUdMCQkweGMxCj4gKyNkZWZpbmUgUks4MTZf QkFUX09DVl9SRUdICQkweGMyCj4gKyNkZWZpbmUgUks4MTZfQkFUX09DVl9SRUdMCQkweGMzCj4g KyNkZWZpbmUgUks4MTZfQkFUX1ZPTF9SRUdICQkweGM0Cj4gKyNkZWZpbmUgUks4MTZfQkFUX1ZP TF9SRUdMCQkweGM1Cj4gKyNkZWZpbmUgUks4MTZfUkVMQVhfRU5UUllfVEhSRVNfUkVHSAkweGM2 Cj4gKyNkZWZpbmUgUks4MTZfUkVMQVhfRU5UUllfVEhSRVNfUkVHTAkweGM3Cj4gKyNkZWZpbmUg Uks4MTZfUkVMQVhfRVhJVF9USFJFU19SRUdICTB4YzgKPiArI2RlZmluZSBSSzgxNl9SRUxBWF9F WElUX1RIUkVTX1JFR0wJMHhjOQo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX1ZPTDFfUkVHSAkJMHhj YQo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX1ZPTDFfUkVHTAkJMHhjYgo+ICsjZGVmaW5lIFJLODE2 X1JFTEFYX1ZPTDJfUkVHSAkJMHhjYwo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX1ZPTDJfUkVHTAkJ MHhjZAo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX0NVUjFfUkVHSAkJMHhjZQo+ICsjZGVmaW5lIFJL ODE2X1JFTEFYX0NVUjFfUkVHTAkJMHhjZgo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX0NVUjJfUkVH SAkJMHhkMAo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX0NVUjJfUkVHTAkJMHhkMQo+ICsjZGVmaW5l IFJLODE2X0NBTF9PRkZTRVRfUkVHSAkJMHhkMgo+ICsjZGVmaW5lIFJLODE2X0NBTF9PRkZTRVRf UkVHTAkJMHhkMwo+ICsjZGVmaW5lIFJLODE2X05PTl9BQ1RfVElNRVJfQ05UX1JFRwkweGQ0Cj4g KyNkZWZpbmUgUks4MTZfVkNBTElCMF9SRUdICQkweGQ1Cj4gKyNkZWZpbmUgUks4MTZfVkNBTElC MF9SRUdMCQkweGQ2Cj4gKyNkZWZpbmUgUks4MTZfVkNBTElCMV9SRUdICQkweGQ3Cj4gKyNkZWZp bmUgUks4MTZfVkNBTElCMV9SRUdMCQkweGQ4Cj4gKyNkZWZpbmUgUks4MTZfRkNDX0dBU0NOVF9S RUcoeCkJCSgweGRjIC0gKHgpKQo+ICsjZGVmaW5lIFJLODE2X0lPRkZTRVRfUkVHSAkJMHhkZAo+ ICsjZGVmaW5lIFJLODE2X0lPRkZTRVRfUkVHTAkJMHhkZQo+ICsjZGVmaW5lIFJLODE2X1NMRUVQ X0NPTl9TQU1QX0NVUl9SRUcJMHhkZgo+ICsKPiArLyogZ2VuZXJhbCBwdXJwb3NlIGRhdGEgcmVn aXN0ZXJzIDB4ZTAgfiAweGYyICovCj4gKyNkZWZpbmUgUks4MTZfREFUQV9SRUcoeCkJCSgweGUw ICsgKHgpKQo+ICsKPiAgLyogUks4MTggKi8KPiAgI2RlZmluZSBSSzgxOF9EQ0RDMQkJCTAKPiAg I2RlZmluZSBSSzgxOF9MRE8xCQkJNAo+IEBAIC03OTEsNiArOTMwLDcgQEAgZW51bSByazgwNl9k dnNfbW9kZSB7Cj4gICNkZWZpbmUgVk9VVF9MT19JTlQJQklUKDApCj4gICNkZWZpbmUgQ0xLMzJL T1VUMl9FTglCSVQoMCkKPiAgCj4gKyNkZWZpbmUgVEVNUDEwNUMJCQkweDA4Cj4gICNkZWZpbmUg VEVNUDExNUMJCQkweDBjCj4gICNkZWZpbmUgVEVNUF9IT1RESUVfTVNLCQkJMHgwYwo+ICAjZGVm aW5lIFNMUF9TRF9NU0sJCQkoMHgzIDw8IDIpCj4gQEAgLTExOTEsNiArMTMzMSw3IEBAIGVudW0g ewo+ICAJUks4MDZfSUQgPSAweDgwNjAsCj4gIAlSSzgwOF9JRCA9IDB4MDAwMCwKPiAgCVJLODA5 X0lEID0gMHg4MDkwLAo+ICsJUks4MTZfSUQgPSAweDgxNjAsCj4gIAlSSzgxN19JRCA9IDB4ODE3 MCwKPiAgCVJLODE4X0lEID0gMHg4MTgwLAo+ICB9Owo+IC0tIAo+IDIuNDMuMgo+IAoKLS0gCkxl ZSBKb25lcyBb5p2O55C85pavXQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1yb2NrY2hpcAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5E79CC54E64 for ; Thu, 28 Mar 2024 11:55:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=LJGSR2HRTPPYOUYK7RG7TRavn4Wiqdj/JCMmEtEFKZ8=; b=3Fuorqld9LzZux Ffk9nSqciauDWq0UwPrA6AhhuPS/Oz/GUNmBAGlqQq+5utl2xG2sOgL/lJYfj3Icv87gBYMUU/MQR 5asQFwuTIKrgqCYY5itrtmvm6H1UmpRS2W1d2n9u9c+WuUSmnrSXx3YozV1aZ8Otp5R3I9AEop3eQ diLubZ54AHMDKdRnBVhdQUGtjpHq4UpyqRDo2a3NAc3vpbvbkVVj7hmtTIz39SQH6WVJnormf/qet xC79lFCHBvn5asdLWn2vtvTXAUfrDz2OldejOkFmmd0jNj6n4KH83DOn0VR+no5HawMK4NEBeEV+d FERWdLSP0f1WGE/MBVJQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpoLr-0000000Dnix-3KN5; Thu, 28 Mar 2024 11:55:23 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpoLo-0000000Dni1-0zSX; Thu, 28 Mar 2024 11:55:22 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 22382CE24E7; Thu, 28 Mar 2024 11:55:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC992C433C7; Thu, 28 Mar 2024 11:55:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711626915; bh=ARB33Nc2FhheZtv5qHgeBe0yGMywN/zGFYb4YvYb2t0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=bDheQ9M6sTtKlW6rPu40C4XEGL9VPNTvuVoQZ7mrGhKqj8Iz3MBdZVsFVb6hnKGib bFgEzJ2CN9Pi05PDax2+1YD6gEMdJ9rR7WIDRiW98Mr6ITQvNJWVOXo2JEjZgG1/ng DAmuEA1vkA3wzTuJQIsbZNkS/MVyb+uoh+XQ/sC8WRZiOzkqpcTyVP6JNoP71k46kN A50LGP9mks9FisxvpVzFs1KBv4HAKs6BzokJh7cF79BWouBV5/OdimRabF+k8fyZYN 88DEBRQo6T93wRsTBm0Pood7uNzbT0VIG7FWLvZopblWt9sEyqn8ieOF/f3/p/6O6Y u/WYYLoQAmXHA== Date: Thu, 28 Mar 2024 11:55:10 +0000 From: Lee Jones To: Alex Bee Cc: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Linus Walleij , Liam Girdwood , Mark Brown , Chris Zhong , Zhang Qing , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org Subject: Re: [PATCH v3 2/5] mfd: rk8xx: Add RK816 support Message-ID: <20240328115510.GD13211@google.com> References: <20240323132757.141861-2-knaerzche@gmail.com> <20240323132757.141861-6-knaerzche@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240323132757.141861-6-knaerzche@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240328_045520_666856_7AF2CA36 X-CRM114-Status: GOOD ( 32.08 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gU2F0LCAyMyBNYXIgMjAyNCwgQWxleCBCZWUgd3JvdGU6Cgo+IFRoaXMgaW50ZWdyYXRlcyBS SzgxNiBzdXBwb3J0IGluIHRoZSB0aGlzIGV4aXN0aW5nIHJrOHh4IG1mZCBkcml2ZXIuCj4gCj4g VGhpcyB2ZXJzaW9uIGhhcyB1bmFsaWduZWQgaW50ZXJydXB0IHJlZ2lzdGVycywgd2hpY2ggcmVx dWlyZXMgdG8gZGVmaW5lIGEKPiBzZXBhcmF0ZSBnZXRfaXJxX3JlZyBjYWxsYmFjayBmb3IgdGhl IHJlZ21hcC4gQXBhcnQgZnJvbSB0aGF0IHRoZQo+IGludGVncmF0aW9uIGlzIHN0cmFpZ2h0Zm9y d2FyZCBhbmQgdGhlIGV4aXN0aW5nIHN0cnVjdHVyZXMgY2FuIGJlIHVzZWQgYXMKPiBpcy4gVGhl IGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGhhcyBiZWVuIHRha2VuIGZyb20gdmVuZG9yIGtlcm5l bC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbGV4IEJlZSA8a25hZXJ6Y2hlQGdtYWlsLmNvbT4KPiAt LS0KPiBjaG5hZ2VzIHNpbmNlIHYxOgo+ICAgLSB1bi1jb25zdGlmeSByazgxNl9nZXRfaXJxX3Jl ZydzIHJldHVybiB0eXBlCj4gCj4gIGRyaXZlcnMvbWZkL0tjb25maWcgICAgICAgfCAgIDQgKy0K PiAgZHJpdmVycy9tZmQvcms4eHgtY29yZS5jICB8IDEwMyArKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4gIGRyaXZlcnMvbWZkL3JrOHh4LWkyYy5jICAgfCAgNDUgKysrKysrKysrKystCj4g IGluY2x1ZGUvbGludXgvbWZkL3JrODA4LmggfCAxNDEgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAyOTAgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvS2NvbmZpZyBiL2RyaXZl cnMvbWZkL0tjb25maWcKPiBpbmRleCA0YjAyM2VlMjI5Y2YuLjJlNzI4NmNjOThlNCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL21mZC9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9tZmQvS2NvbmZpZwo+ IEBAIC0xMjI1LDcgKzEyMjUsNyBAQCBjb25maWcgTUZEX1JLOFhYCj4gIAlzZWxlY3QgTUZEX0NP UkUKPiAgCj4gIGNvbmZpZyBNRkRfUks4WFhfSTJDCj4gLQl0cmlzdGF0ZSAiUm9ja2NoaXAgUks4 MDUvUks4MDgvUks4MDkvUks4MTcvUks4MTggUG93ZXIgTWFuYWdlbWVudCBDaGlwIgo+ICsJdHJp c3RhdGUgIlJvY2tjaGlwIFJLODA1L1JLODA4L1JLODA5L1JLODE2L1JLODE3L1JLODE4IFBvd2Vy IE1hbmFnZW1lbnQgQ2hpcCIKPiAgCWRlcGVuZHMgb24gSTJDICYmIE9GCj4gIAlzZWxlY3QgTUZE X0NPUkUKPiAgCXNlbGVjdCBSRUdNQVBfSTJDCj4gQEAgLTEyMzMsNyArMTIzMyw3IEBAIGNvbmZp ZyBNRkRfUks4WFhfSTJDCj4gIAlzZWxlY3QgTUZEX1JLOFhYCj4gIAloZWxwCj4gIAkgIElmIHlv dSBzYXkgeWVzIGhlcmUgeW91IGdldCBzdXBwb3J0IGZvciB0aGUgUks4MDUsIFJLODA4LCBSSzgw OSwKPiAtCSAgUks4MTcgYW5kIFJLODE4IFBvd2VyIE1hbmFnZW1lbnQgY2hpcHMuCj4gKwkgIFJL ODE2LCBSSzgxNyBhbmQgUks4MTggUG93ZXIgTWFuYWdlbWVudCBjaGlwcy4KPiAgCSAgVGhpcyBk cml2ZXIgcHJvdmlkZXMgY29tbW9uIHN1cHBvcnQgZm9yIGFjY2Vzc2luZyB0aGUgZGV2aWNlCj4g IAkgIHRocm91Z2ggSTJDIGludGVyZmFjZS4gVGhlIGRldmljZSBzdXBwb3J0cyBtdWx0aXBsZSBz dWItZGV2aWNlcwo+ICAJICBpbmNsdWRpbmcgaW50ZXJydXB0cywgUlRDLCBMRE8gJiBEQ0RDIHJl Z3VsYXRvcnMsIGFuZCBvbmtleS4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvcms4eHgtY29y ZS5jIGIvZHJpdmVycy9tZmQvcms4eHgtY29yZS5jCj4gaW5kZXggZTIyNjFiNjhiODQ0Li5jNjhh MzgwMzMyZTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvcms4eHgtY29yZS5jCj4gKysrIGIv ZHJpdmVycy9tZmQvcms4eHgtY29yZS5jCj4gQEAgLTI4LDYgKzI4LDEwIEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgcmVzb3VyY2UgcnRjX3Jlc291cmNlc1tdID0gewo+ICAJREVGSU5FX1JFU19JUlEo Uks4MDhfSVJRX1JUQ19BTEFSTSksCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJl c291cmNlIHJrODE2X3J0Y19yZXNvdXJjZXNbXSA9IHsKPiArCURFRklORV9SRVNfSVJRKFJLODE2 X0lSUV9SVENfQUxBUk0pLAo+ICt9Owo+ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCByZXNvdXJj ZSByazgxN19ydGNfcmVzb3VyY2VzW10gPSB7Cj4gIAlERUZJTkVfUkVTX0lSUShSSzgxN19JUlFf UlRDX0FMQVJNKSwKPiAgfTsKPiBAQCAtODcsNiArOTEsMjEgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBtZmRfY2VsbCByazgwOHNbXSA9IHsKPiAgCX0sCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IG1mZF9jZWxsIHJrODE2c1tdID0gewo+ICsJeyAubmFtZSA9ICJyazgwNS1waW5jdHJs IiwgfSwKPiArCXsgLm5hbWUgPSAicms4MDgtY2xrb3V0IiwgfSwKPiArCXsgLm5hbWUgPSAicms4 MDgtcmVndWxhdG9yIiwgfSwKPiArCXsJLm5hbWUgPSAicms4MDUtcHdya2V5IiwKCk5ld2xpbmUg YWZ0ZXIgdGhlICd7Jy4KCj4gKwkJLm51bV9yZXNvdXJjZXMgPSBBUlJBWV9TSVpFKHJrODA1X2tl eV9yZXNvdXJjZXMpLAo+ICsJCS5yZXNvdXJjZXMgPSByazgwNV9rZXlfcmVzb3VyY2VzLAo+ICsJ fSwKPiArCXsKPiArCQkubmFtZSA9ICJyazgwOC1ydGMiLAo+ICsJCS5udW1fcmVzb3VyY2VzID0g QVJSQVlfU0laRShyazgxNl9ydGNfcmVzb3VyY2VzKSwKPiArCQkucmVzb3VyY2VzID0gcms4MTZf cnRjX3Jlc291cmNlcywKPiArCX0sCj4gK307Cj4gKwo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG1m ZF9jZWxsIHJrODE3c1tdID0gewo+ICAJeyAubmFtZSA9ICJyazgwOC1jbGtvdXQiLCB9LAo+ICAJ eyAubmFtZSA9ICJyazgwOC1yZWd1bGF0b3IiLCB9LAo+IEBAIC0xNDgsNiArMTY3LDE3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgcms4MDhfcmVnX2RhdGEgcms4MDhfcHJlX2luaXRfcmVnW10gPSB7 Cj4gIAkJCQkJCSAgICBWQl9MT19TRUxfMzUwME1WIH0sCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHJrODA4X3JlZ19kYXRhIHJrODE2X3ByZV9pbml0X3JlZ1tdID0gewo+ICsJeyBS SzgxOF9CVUNLMV9DT05GSUdfUkVHLCBSSzgxN19SQU1QX1JBVEVfTUFTSywKPiArCQkJCSAgUks4 MTdfUkFNUF9SQVRFXzEyXzVNVl9QRVJfVVMgfSwKPiArCXsgUks4MThfQlVDSzJfQ09ORklHX1JF RywgUks4MTdfUkFNUF9SQVRFX01BU0ssCj4gKwkJCQkgIFJLODE3X1JBTVBfUkFURV8xMl81TVZf UEVSX1VTIH0sCj4gKwl7IFJLODE4X0JVQ0s0X0NPTkZJR19SRUcsIEJVQ0tfSUxNSU5fTUFTSywg IEJVQ0tfSUxNSU5fMjUwTUEgfSwKPiArCXsgUks4MDhfVEhFUk1BTF9SRUcsIFRFTVBfSE9URElF X01TSywgVEVNUDEwNUN9LAo+ICsJeyBSSzgwOF9WQl9NT05fUkVHLCBWQkFUX0xPV19WT0xfTUFT SyB8IFZCQVRfTE9XX0FDVF9NQVNLLAo+ICsJCQkgICAgUks4MDhfVkJBVF9MT1dfM1YwIHwgRU5f VkFCVF9MT1dfU0hVVF9ET1dOIH0sCj4gK307Cj4gKwo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHJr ODA4X3JlZ19kYXRhIHJrODE3X3ByZV9pbml0X3JlZ1tdID0gewo+ICAJe1JLODE3X1JUQ19DVFJM X1JFRywgUlRDX1NUT1AsIFJUQ19TVE9QfSwKPiAgCS8qIENvZGVjIHNwZWNpZmljIHJlZ2lzdGVy cyAqLwo+IEBAIC0zNTAsNiArMzgwLDU5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2ly cSByazgwOF9pcnFzW10gPSB7Cj4gIAl9LAo+ICB9Owo+ICAKPiArc3RhdGljIGNvbnN0IHVuc2ln bmVkIGludCByazgxNl9pcnFfc3RhdHVzX29mZnNldHNbXSA9IHsKPiArCShSSzgxNl9JTlRfU1RT X1JFRzEgLSBSSzgxNl9JTlRfU1RTX1JFRzEpLAoKVHVybiB0aGlzIGludG8gYSBtYWNybyBwbGVh c2UuCgo+ICsJKFJLODE2X0lOVF9TVFNfUkVHMiAtIFJLODE2X0lOVF9TVFNfUkVHMSksCj4gKwko Uks4MTZfSU5UX1NUU19SRUczIC0gUks4MTZfSU5UX1NUU19SRUcxKSwKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcms4MTZfaXJxX21hc2tfb2Zmc2V0c1tdID0gewo+ICsJ KFJLODE2X0lOVF9TVFNfTVNLX1JFRzEgLSBSSzgxNl9JTlRfU1RTX01TS19SRUcxKSwKPiArCShS SzgxNl9JTlRfU1RTX01TS19SRUcyIC0gUks4MTZfSU5UX1NUU19NU0tfUkVHMSksCj4gKwkoUks4 MTZfSU5UX1NUU19NU0tfUkVHMyAtIFJLODE2X0lOVF9TVFNfTVNLX1JFRzEpLAo+ICt9Owo+ICsK PiArc3RhdGljIHVuc2lnbmVkIGludCByazgxNl9nZXRfaXJxX3JlZyhzdHJ1Y3QgcmVnbWFwX2ly cV9jaGlwX2RhdGEgKmRhdGEsCj4gKwkJCQkgICAgICB1bnNpZ25lZCBpbnQgYmFzZSwgaW50IGlu ZGV4KQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgaXJxX3JlZyA9IGJhc2U7Cj4gKwo+ICsJc3dpdGNo IChiYXNlKSB7Cj4gKwljYXNlIFJLODE2X0lOVF9TVFNfUkVHMToKPiArCQlpcnFfcmVnICs9IHJr ODE2X2lycV9zdGF0dXNfb2Zmc2V0c1tpbmRleF07Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFJLODE2 X0lOVF9TVFNfTVNLX1JFRzE6Cj4gKwkJaXJxX3JlZyArPSByazgxNl9pcnFfbWFza19vZmZzZXRz W2luZGV4XTsKPiArCQlicmVhazsKPiArCX0KPiArCj4gKwlyZXR1cm4gaXJxX3JlZzsKPiArfTsK PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2lycSByazgxNl9pcnFzW10gPSB7Cj4g KwkvKiBJTlRfU1RTX1JFRzEgSVJRcyAqLwo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX1BX Uk9OX0ZBTEwsIDAsIFJLODE2X0lOVF9TVFNfUFdST05fRkFMTCksCj4gKwlSRUdNQVBfSVJRX1JF RyhSSzgxNl9JUlFfUFdST05fUklTRSwgMCwgUks4MTZfSU5UX1NUU19QV1JPTl9SSVNFKSwKPiAr Cj4gKwkvKiBJTlRfU1RTX1JFRzIgSVJRcyAgKi8KPiArCVJFR01BUF9JUlFfUkVHKFJLODE2X0lS UV9WQl9MT1csIDEsIFJLODE2X0lOVF9TVFNfVkJfTE9XKSwKPiArCVJFR01BUF9JUlFfUkVHKFJL ODE2X0lSUV9QV1JPTiwgMSwgUks4MTZfSU5UX1NUU19QV1JPTiksCj4gKwlSRUdNQVBfSVJRX1JF RyhSSzgxNl9JUlFfUFdST05fTFAsIDEsIFJLODE2X0lOVF9TVFNfUFdST05fTFApLAo+ICsJUkVH TUFQX0lSUV9SRUcoUks4MTZfSVJRX0hPVERJRSwgMSwgUks4MTZfSU5UX1NUU19IT1RESUUpLAo+ ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX1JUQ19BTEFSTSwgMSwgUks4MTZfSU5UX1NUU19S VENfQUxBUk0pLAo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX1JUQ19QRVJJT0QsIDEsIFJL ODE2X0lOVF9TVFNfUlRDX1BFUklPRCksCj4gKwlSRUdNQVBfSVJRX1JFRyhSSzgxNl9JUlFfVVNC X09WLCAxLCBSSzgxNl9JTlRfU1RTX1VTQl9PViksCj4gKwo+ICsJLyogSU5UX1NUUzMgSVJRcyAq Lwo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX1BMVUdfSU4sIDIsIFJLODE2X0lOVF9TVFNf UExVR19JTiksCj4gKwlSRUdNQVBfSVJRX1JFRyhSSzgxNl9JUlFfUExVR19PVVQsIDIsIFJLODE2 X0lOVF9TVFNfUExVR19PVVQpLAo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX0NIR19PSywg MiwgUks4MTZfSU5UX1NUU19DSEdfT0spLAo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZfSVJRX0NI R19URSwgMiwgUks4MTZfSU5UX1NUU19DSEdfVEUpLAo+ICsJUkVHTUFQX0lSUV9SRUcoUks4MTZf SVJRX0NIR19UUywgMiwgUks4MTZfSU5UX1NUU19DSEdfVFMpLAo+ICsJUkVHTUFQX0lSUV9SRUco Uks4MTZfSVJRX0NIR19DVlRMSU0sIDIsIFJLODE2X0lOVF9TVFNfQ0hHX0NWVExJTSksCj4gKwlS RUdNQVBfSVJRX1JFRyhSSzgxNl9JUlFfRElTQ0hHX0lMSU0sIDIsIFJLODE2X0lOVF9TVFNfRElT Q0hHX0lMSU0pLAo+ICt9Owo+ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfaXJxIHJr ODE4X2lycXNbXSA9IHsKPiAgCS8qIElOVF9TVFMgKi8KPiAgCVtSSzgxOF9JUlFfVk9VVF9MT10g PSB7Cj4gQEAgLTQ4Miw2ICs1NjUsMTggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfaXJx X2NoaXAgcms4MDhfaXJxX2NoaXAgPSB7Cj4gIAkuaW5pdF9hY2tfbWFza2VkID0gdHJ1ZSwKPiAg fTsKPiAgCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2lycV9jaGlwIHJrODE2X2lycV9j aGlwID0gewo+ICsJLm5hbWUgPSAicms4MTYiLAo+ICsJLmlycXMgPSByazgxNl9pcnFzLAo+ICsJ Lm51bV9pcnFzID0gQVJSQVlfU0laRShyazgxNl9pcnFzKSwKPiArCS5udW1fcmVncyA9IDMsCj4g KwkuZ2V0X2lycV9yZWcgPSByazgxNl9nZXRfaXJxX3JlZywKPiArCS5zdGF0dXNfYmFzZSA9IFJL ODE2X0lOVF9TVFNfUkVHMSwKPiArCS5tYXNrX2Jhc2UgPSBSSzgxNl9JTlRfU1RTX01TS19SRUcx LAo+ICsJLmFja19iYXNlID0gUks4MTZfSU5UX1NUU19SRUcxLAo+ICsJLmluaXRfYWNrX21hc2tl ZCA9IHRydWUsCj4gK307Cj4gKwo+ICBzdGF0aWMgc3RydWN0IHJlZ21hcF9pcnFfY2hpcCByazgx N19pcnFfY2hpcCA9IHsKPiAgCS5uYW1lID0gInJrODE3IiwKPiAgCS5pcnFzID0gcms4MTdfaXJx cywKPiBAQCAtNTMwLDYgKzYyNSw3IEBAIHN0YXRpYyBpbnQgcms4MDhfcG93ZXJfb2ZmKHN0cnVj dCBzeXNfb2ZmX2RhdGEgKmRhdGEpCj4gIAkJcmVnID0gUks4MTdfU1lTX0NGRygzKTsKPiAgCQli aXQgPSBERVZfT0ZGOwo+ICAJCWJyZWFrOwo+ICsJY2FzZSBSSzgxNl9JRDoKPiAgCWNhc2UgUks4 MThfSUQ6Cj4gIAkJcmVnID0gUks4MThfREVWQ1RSTF9SRUc7Cj4gIAkJYml0ID0gREVWX09GRjsK PiBAQCAtNjM3LDYgKzczMywxMyBAQCBpbnQgcms4eHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2 LCBpbnQgdmFyaWFudCwgdW5zaWduZWQgaW50IGlycSwgc3RydWN0IHJlZ21hcAo+ICAJCWNlbGxz ID0gcms4MDhzOwo+ICAJCW5yX2NlbGxzID0gQVJSQVlfU0laRShyazgwOHMpOwo+ICAJCWJyZWFr Owo+ICsJY2FzZSBSSzgxNl9JRDoKPiArCQlyazgwOC0+cmVnbWFwX2lycV9jaGlwID0gJnJrODE2 X2lycV9jaGlwOwo+ICsJCXByZV9pbml0X3JlZyA9IHJrODE2X3ByZV9pbml0X3JlZzsKPiArCQlu cl9wcmVfaW5pdF9yZWdzID0gQVJSQVlfU0laRShyazgxNl9wcmVfaW5pdF9yZWcpOwo+ICsJCWNl bGxzID0gcms4MTZzOwo+ICsJCW5yX2NlbGxzID0gQVJSQVlfU0laRShyazgxNnMpOwo+ICsJCWJy ZWFrOwo+ICAJY2FzZSBSSzgxOF9JRDoKPiAgCQlyazgwOC0+cmVnbWFwX2lycV9jaGlwID0gJnJr ODE4X2lycV9jaGlwOwo+ICAJCXByZV9pbml0X3JlZyA9IHJrODE4X3ByZV9pbml0X3JlZzsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvcms4eHgtaTJjLmMgYi9kcml2ZXJzL21mZC9yazh4eC1p MmMuYwo+IGluZGV4IDc1YjVjZjA5ZDVhMC4uNjlhNmIyOTdkNzIzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvbWZkL3JrOHh4LWkyYy5jCj4gKysrIGIvZHJpdmVycy9tZmQvcms4eHgtaTJjLmMKPiBA QCAtMSw2ICsxLDYgQEAKPiAgLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25s eQo+ICAvKgo+IC0gKiBSb2NrY2hpcCBSSzgwOC9SSzgxOCBDb3JlIChJMkMpIGRyaXZlcgo+ICsg KiBSb2NrY2hpcCBSSzgwNS9SSzgwOC9SSzgxNi9SSzgxNy9SSzgxOCBDb3JlIChJMkMpIGRyaXZl cgo+ICAgKgo+ICAgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIEZ1emhvdSBSb2NrY2hpcCBFbGVjdHJv bmljcyBDby4sIEx0ZAo+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgUEhZVEVDIE1lc3N0ZWNobmlr IEdtYkgKPiBAQCAtNDksNiArNDksMzUgQEAgc3RhdGljIGJvb2wgcms4MDhfaXNfdm9sYXRpbGVf cmVnKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJlZykKPiAgCXJldHVybiBmYWxz ZTsKPiAgfQo+ICAKPiArc3RhdGljIGJvb2wgcms4MTZfaXNfdm9sYXRpbGVfcmVnKHN0cnVjdCBk ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJlZykKPiArewo+ICsJLyoKPiArCSAqIFRlY2huaWNh bGx5IHRoZSBST1VORF8zMHMgYml0IG1ha2VzIFJUQ19DVFJMX1JFRyB2b2xhdGlsZSwgYnV0Cj4g KwkgKiB3ZSBkb24ndCB1c2UgdGhhdCBmZWF0dXJlLiAgSXQncyBiZXR0ZXIgdG8gY2FjaGUuCj4g KwkgKi8KPiArCj4gKwlzd2l0Y2ggKHJlZykgewo+ICsJY2FzZSBSSzgwOF9TRUNPTkRTX1JFRyAu Li4gUks4MDhfV0VFS1NfUkVHOgo+ICsJY2FzZSBSSzgwOF9SVENfU1RBVFVTX1JFRzoKPiArCWNh c2UgUks4MDhfVkJfTU9OX1JFRzoKPiArCWNhc2UgUks4MDhfVEhFUk1BTF9SRUc6Cj4gKwljYXNl IFJLODE2X0RDRENfRU5fUkVHMToKPiArCWNhc2UgUks4MTZfRENEQ19FTl9SRUcyOgo+ICsJY2Fz ZSBSSzgxNl9JTlRfU1RTX1JFRzE6Cj4gKwljYXNlIFJLODE2X0lOVF9TVFNfUkVHMjoKPiArCWNh c2UgUks4MTZfSU5UX1NUU19SRUczOgo+ICsJY2FzZSBSSzgwOF9ERVZDVFJMX1JFRzoKPiArCWNh c2UgUks4MTZfU1VQX1NUU19SRUc6Cj4gKwljYXNlIFJLODE2X0dHU1RTX1JFRzoKPiArCWNhc2Ug Uks4MTZfWkVST19DVVJfQURDX1JFR0g6Cj4gKwljYXNlIFJLODE2X1pFUk9fQ1VSX0FEQ19SRUdM Ogo+ICsJY2FzZSBSSzgxNl9HQVNDTlRfUkVHKDApIC4uLiBSSzgxNl9CQVRfVk9MX1JFR0w6Cj4g KwkJcmV0dXJuIHRydWU7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICBz dGF0aWMgYm9vbCByazgxN19pc192b2xhdGlsZV9yZWcoc3RydWN0IGRldmljZSAqZGV2LCB1bnNp Z25lZCBpbnQgcmVnKQo+ICB7Cj4gIAkvKgo+IEBAIC0xMDAsNiArMTI5LDE0IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByazgwOF9yZWdtYXBfY29uZmlnID0gewo+ICAJLnZv bGF0aWxlX3JlZyA9IHJrODA4X2lzX3ZvbGF0aWxlX3JlZywKPiAgfTsKPiAgCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByazgxNl9yZWdtYXBfY29uZmlnID0gewo+ICsJLnJl Z19iaXRzID0gOCwKPiArCS52YWxfYml0cyA9IDgsCj4gKwkubWF4X3JlZ2lzdGVyID0gUks4MTZf REFUQV9SRUcoMTgpLAo+ICsJLmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9NQVBMRSwKPiArCS52b2xh dGlsZV9yZWcgPSByazgxNl9pc192b2xhdGlsZV9yZWcsCj4gK307Cj4gKwo+ICBzdGF0aWMgY29u c3Qgc3RydWN0IHJlZ21hcF9jb25maWcgcms4MTdfcmVnbWFwX2NvbmZpZyA9IHsKPiAgCS5yZWdf Yml0cyA9IDgsCj4gIAkudmFsX2JpdHMgPSA4LAo+IEBAIC0xMjMsNiArMTYwLDExIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgcms4eHhfaTJjX3BsYXRmb3JtX2RhdGEgcms4MDlfZGF0YSA9IHsKPiAg CS52YXJpYW50ID0gUks4MDlfSUQsCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJr OHh4X2kyY19wbGF0Zm9ybV9kYXRhIHJrODE2X2RhdGEgPSB7Cj4gKwkucmVnbWFwX2NmZyA9ICZy azgxNl9yZWdtYXBfY29uZmlnLAo+ICsJLnZhcmlhbnQgPSBSSzgxNl9JRCwKPiArfTsKPiArCj4g IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcms4eHhfaTJjX3BsYXRmb3JtX2RhdGEgcms4MTdfZGF0YSA9 IHsKPiAgCS5yZWdtYXBfY2ZnID0gJnJrODE3X3JlZ21hcF9jb25maWcsCj4gIAkudmFyaWFudCA9 IFJLODE3X0lELAo+IEBAIC0xNjEsNiArMjAzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgcms4eHhfaTJjX29mX21hdGNoW10gPSB7Cj4gIAl7IC5jb21wYXRpYmxlID0gInJv Y2tjaGlwLHJrODA1IiwgLmRhdGEgPSAmcms4MDVfZGF0YSB9LAo+ICAJeyAuY29tcGF0aWJsZSA9 ICJyb2NrY2hpcCxyazgwOCIsIC5kYXRhID0gJnJrODA4X2RhdGEgfSwKPiAgCXsgLmNvbXBhdGli bGUgPSAicm9ja2NoaXAscms4MDkiLCAuZGF0YSA9ICZyazgwOV9kYXRhIH0sCj4gKwl7IC5jb21w YXRpYmxlID0gInJvY2tjaGlwLHJrODE2IiwgLmRhdGEgPSAmcms4MTZfZGF0YSB9LAo+ICAJeyAu Y29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazgxNyIsIC5kYXRhID0gJnJrODE3X2RhdGEgfSwKPiAg CXsgLmNvbXBhdGlibGUgPSAicm9ja2NoaXAscms4MTgiLCAuZGF0YSA9ICZyazgxOF9kYXRhIH0s Cj4gIAl7IH0sCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWZkL3JrODA4LmggYi9pbmNs dWRlL2xpbnV4L21mZC9yazgwOC5oCj4gaW5kZXggNzhlMTY3YTkyNDgzLi5iOTBkMWMyNzg3OTAg MTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9tZmQvcms4MDguaAo+ICsrKyBiL2luY2x1ZGUv bGludXgvbWZkL3JrODA4LmgKPiBAQCAtMTEzLDYgKzExMywxNDUgQEAgZW51bSByazgwOF9yZWcg ewo+ICAjZGVmaW5lIFJLODA4X0lOVF9TVFNfTVNLX1JFRzIJMHg0Zgo+ICAjZGVmaW5lIFJLODA4 X0lPX1BPTF9SRUcJMHg1MAo+ICAKPiArLyogUks4MTYgKi8KPiArZW51bSByazgxNl9yZWcgewo+ ICsJUks4MTZfSURfRENEQzEsCj4gKwlSSzgxNl9JRF9EQ0RDMiwKPiArCVJLODE2X0lEX0RDREMz LAo+ICsJUks4MTZfSURfRENEQzQsCj4gKwlSSzgxNl9JRF9MRE8xLAo+ICsJUks4MTZfSURfTERP MiwKPiArCVJLODE2X0lEX0xETzMsCj4gKwlSSzgxNl9JRF9MRE80LAo+ICsJUks4MTZfSURfTERP NSwKPiArCVJLODE2X0lEX0xETzYsCj4gKwlSSzgxNl9JRF9CT09TVCwKPiArCVJLODE2X0lEX09U R19TVywKPiArfTsKPiArCj4gK2VudW0gcms4MTZfaXJxcyB7Cj4gKwkvKiBJTlRfU1RTX1JFRzEg Ki8KPiArCVJLODE2X0lSUV9QV1JPTl9GQUxMLAo+ICsJUks4MTZfSVJRX1BXUk9OX1JJU0UsCj4g Kwo+ICsJLyogSU5UX1NUU19SRUcyICovCj4gKwlSSzgxNl9JUlFfVkJfTE9XLAo+ICsJUks4MTZf SVJRX1BXUk9OLAo+ICsJUks4MTZfSVJRX1BXUk9OX0xQLAo+ICsJUks4MTZfSVJRX0hPVERJRSwK PiArCVJLODE2X0lSUV9SVENfQUxBUk0sCj4gKwlSSzgxNl9JUlFfUlRDX1BFUklPRCwKPiArCVJL ODE2X0lSUV9VU0JfT1YsCj4gKwo+ICsJLyogSU5UX1NUU19SRUczICovCj4gKwlSSzgxNl9JUlFf UExVR19JTiwKPiArCVJLODE2X0lSUV9QTFVHX09VVCwKPiArCVJLODE2X0lSUV9DSEdfT0ssCj4g KwlSSzgxNl9JUlFfQ0hHX1RFLAo+ICsJUks4MTZfSVJRX0NIR19UUywKPiArCVJLODE2X0lSUV9D SEdfQ1ZUTElNLAo+ICsJUks4MTZfSVJRX0RJU0NIR19JTElNLAo+ICt9Owo+ICsKPiArLyogcG93 ZXIgY2hhbm5lbCByZWdpc3RlcnMgKi8KPiArI2RlZmluZSBSSzgxNl9EQ0RDX0VOX1JFRzEJCTB4 MjMKPiArCj4gKyNkZWZpbmUgUks4MTZfRENEQ19FTl9SRUcyCQkweDI0Cj4gKyNkZWZpbmUJUks4 MTZfQk9PU1RfRU4JCQlCSVQoMSkKPiArI2RlZmluZSBSSzgxNl9PVEdfRU4JCQlCSVQoMikKPiAr I2RlZmluZQlSSzgxNl9CT09TVF9FTl9NU0sJCUJJVCg1KQo+ICsjZGVmaW5lIFJLODE2X09UR19F Tl9NU0sJCUJJVCg2KQo+ICsjZGVmaW5lIFJLODE2X0JVQ0tfRFZTX0NPTkZJUk0JCUJJVCg3KQo+ ICsKPiArI2RlZmluZSBSSzgxNl9MRE9fRU5fUkVHMQkJMHgyNwo+ICsKPiArI2RlZmluZSBSSzgx Nl9MRE9fRU5fUkVHMgkJMHgyOAo+ICsKPiArLyogaW50ZXJydXB0IHJlZ2lzdGVycyBhbmQgaXJx IGRlZmluaXRpb25zICovCj4gKyNkZWZpbmUgUks4MTZfSU5UX1NUU19SRUcxCQkweDQ5Cj4gKyNk ZWZpbmUgUks4MTZfSU5UX1NUU19NU0tfUkVHMQkJMHg0YQo+ICsjZGVmaW5lIFJLODE2X0lOVF9T VFNfUFdST05fRkFMTAlCSVQoNSkKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX1BXUk9OX1JJU0UJ QklUKDYpCj4gKwo+ICsjZGVmaW5lIFJLODE2X0lOVF9TVFNfUkVHMgkJMHg0Ywo+ICsjZGVmaW5l IFJLODE2X0lOVF9TVFNfTVNLX1JFRzIJCTB4NGQKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX1ZC X0xPVwkJQklUKDEpCj4gKyNkZWZpbmUgUks4MTZfSU5UX1NUU19QV1JPTgkJQklUKDIpCj4gKyNk ZWZpbmUgUks4MTZfSU5UX1NUU19QV1JPTl9MUAkJQklUKDMpCj4gKyNkZWZpbmUgUks4MTZfSU5U X1NUU19IT1RESUUJCUJJVCg0KQo+ICsjZGVmaW5lIFJLODE2X0lOVF9TVFNfUlRDX0FMQVJNCQlC SVQoNSkKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX1JUQ19QRVJJT0QJQklUKDYpCj4gKyNkZWZp bmUgUks4MTZfSU5UX1NUU19VU0JfT1YJCUJJVCg3KQo+ICsKPiArI2RlZmluZSBSSzgxNl9JTlRf U1RTX1JFRzMJCTB4NGUKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX01TS19SRUczCQkweDRmCj4g KyNkZWZpbmUgUks4MTZfSU5UX1NUU19QTFVHX0lOCQlCSVQoMCkKPiArI2RlZmluZSBSSzgxNl9J TlRfU1RTX1BMVUdfT1VUCQlCSVQoMSkKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX0NIR19PSwkJ QklUKDIpCj4gKyNkZWZpbmUgUks4MTZfSU5UX1NUU19DSEdfVEUJCUJJVCgzKQo+ICsjZGVmaW5l IFJLODE2X0lOVF9TVFNfQ0hHX1RTCQlCSVQoNCkKPiArI2RlZmluZSBSSzgxNl9JTlRfU1RTX0NI R19DVlRMSU0JQklUKDYpCj4gKyNkZWZpbmUgUks4MTZfSU5UX1NUU19ESVNDSEdfSUxJTQlCSVQo NykKPiArCj4gKy8qIGNoYXJnZXIsIGJvb3N0IGFuZCBPVEcgcmVnaXN0ZXJzICovCj4gKyNkZWZp bmUgUks4MTZfT1RHX0JVQ0tfTERPX0NPTkZJR19SRUcJMHgyYQo+ICsjZGVmaW5lIFJLODE2X0NI UkdfQ09ORklHX1JFRwkJMHgyYgo+ICsjZGVmaW5lIFJLODE2X0JPT1NUX09OX1ZFU0xfUkVHCQkw eDU0Cj4gKyNkZWZpbmUgUks4MTZfQk9PU1RfU0xQX1ZTRUxfUkVHCTB4NTUKPiArI2RlZmluZSBS SzgxNl9DSFJHX0JPT1NUX0NPTkZJR19SRUcJMHg5YQo+ICsjZGVmaW5lIFJLODE2X1NVUF9TVFNf UkVHCQkweGEwCj4gKyNkZWZpbmUgUks4MTZfVVNCX0NUUkxfUkVHCQkweGExCj4gKyNkZWZpbmUg Uks4MTZfQ0hSR19DVFJMKHgpCQkoMHhhMyArICh4KSkKPiArI2RlZmluZSBSSzgxNl9CQVRfQ1RS TF9SRUcJCTB4YTYKPiArI2RlZmluZSBSSzgxNl9CQVRfSFRTX1RTX1JFRwkJMHhhOAo+ICsjZGVm aW5lIFJLODE2X0JBVF9MVFNfVFNfUkVHCQkweGE5Cj4gKwo+ICsvKiBhZGMgYW5kIGZ1ZWwgZ2F1 Z2UgcmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgUks4MTZfVFNfQ1RSTF9SRUcJCTB4YWMKPiArI2Rl ZmluZSBSSzgxNl9BRENfQ1RSTF9SRUcJCTB4YWQKPiArI2RlZmluZSBSSzgxNl9HR0NPTl9SRUcJ CQkweGIwCj4gKyNkZWZpbmUgUks4MTZfR0dTVFNfUkVHCQkJMHhiMQo+ICsjZGVmaW5lIFJLODE2 X1pFUk9fQ1VSX0FEQ19SRUdICQkweGIyCj4gKyNkZWZpbmUgUks4MTZfWkVST19DVVJfQURDX1JF R0wJCTB4YjMKPiArI2RlZmluZSBSSzgxNl9HQVNDTlRfQ0FMX1JFRyh4KQkJKDB4YjcgLSAoeCkp Cj4gKyNkZWZpbmUgUks4MTZfR0FTQ05UX1JFRyh4KQkJKDB4YmIgLSAoeCkpCj4gKyNkZWZpbmUg Uks4MTZfQkFUX0NVUl9BVkdfUkVHSAkJMHhiYwo+ICsjZGVmaW5lIFJLODE2X0JBVF9DVVJfQVZH X1JFR0wJCTB4YmQKPiArI2RlZmluZSBSSzgxNl9UU19BRENfUkVHSAkJMHhiZQo+ICsjZGVmaW5l IFJLODE2X1RTX0FEQ19SRUdMCQkweGJmCj4gKyNkZWZpbmUgUks4MTZfVVNCX0FEQ19SRUdICQkw eGMwCj4gKyNkZWZpbmUgUks4MTZfVVNCX0FEQ19SRUdMCQkweGMxCj4gKyNkZWZpbmUgUks4MTZf QkFUX09DVl9SRUdICQkweGMyCj4gKyNkZWZpbmUgUks4MTZfQkFUX09DVl9SRUdMCQkweGMzCj4g KyNkZWZpbmUgUks4MTZfQkFUX1ZPTF9SRUdICQkweGM0Cj4gKyNkZWZpbmUgUks4MTZfQkFUX1ZP TF9SRUdMCQkweGM1Cj4gKyNkZWZpbmUgUks4MTZfUkVMQVhfRU5UUllfVEhSRVNfUkVHSAkweGM2 Cj4gKyNkZWZpbmUgUks4MTZfUkVMQVhfRU5UUllfVEhSRVNfUkVHTAkweGM3Cj4gKyNkZWZpbmUg Uks4MTZfUkVMQVhfRVhJVF9USFJFU19SRUdICTB4YzgKPiArI2RlZmluZSBSSzgxNl9SRUxBWF9F WElUX1RIUkVTX1JFR0wJMHhjOQo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX1ZPTDFfUkVHSAkJMHhj YQo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX1ZPTDFfUkVHTAkJMHhjYgo+ICsjZGVmaW5lIFJLODE2 X1JFTEFYX1ZPTDJfUkVHSAkJMHhjYwo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX1ZPTDJfUkVHTAkJ MHhjZAo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX0NVUjFfUkVHSAkJMHhjZQo+ICsjZGVmaW5lIFJL ODE2X1JFTEFYX0NVUjFfUkVHTAkJMHhjZgo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX0NVUjJfUkVH SAkJMHhkMAo+ICsjZGVmaW5lIFJLODE2X1JFTEFYX0NVUjJfUkVHTAkJMHhkMQo+ICsjZGVmaW5l IFJLODE2X0NBTF9PRkZTRVRfUkVHSAkJMHhkMgo+ICsjZGVmaW5lIFJLODE2X0NBTF9PRkZTRVRf UkVHTAkJMHhkMwo+ICsjZGVmaW5lIFJLODE2X05PTl9BQ1RfVElNRVJfQ05UX1JFRwkweGQ0Cj4g KyNkZWZpbmUgUks4MTZfVkNBTElCMF9SRUdICQkweGQ1Cj4gKyNkZWZpbmUgUks4MTZfVkNBTElC MF9SRUdMCQkweGQ2Cj4gKyNkZWZpbmUgUks4MTZfVkNBTElCMV9SRUdICQkweGQ3Cj4gKyNkZWZp bmUgUks4MTZfVkNBTElCMV9SRUdMCQkweGQ4Cj4gKyNkZWZpbmUgUks4MTZfRkNDX0dBU0NOVF9S RUcoeCkJCSgweGRjIC0gKHgpKQo+ICsjZGVmaW5lIFJLODE2X0lPRkZTRVRfUkVHSAkJMHhkZAo+ ICsjZGVmaW5lIFJLODE2X0lPRkZTRVRfUkVHTAkJMHhkZQo+ICsjZGVmaW5lIFJLODE2X1NMRUVQ X0NPTl9TQU1QX0NVUl9SRUcJMHhkZgo+ICsKPiArLyogZ2VuZXJhbCBwdXJwb3NlIGRhdGEgcmVn aXN0ZXJzIDB4ZTAgfiAweGYyICovCj4gKyNkZWZpbmUgUks4MTZfREFUQV9SRUcoeCkJCSgweGUw ICsgKHgpKQo+ICsKPiAgLyogUks4MTggKi8KPiAgI2RlZmluZSBSSzgxOF9EQ0RDMQkJCTAKPiAg I2RlZmluZSBSSzgxOF9MRE8xCQkJNAo+IEBAIC03OTEsNiArOTMwLDcgQEAgZW51bSByazgwNl9k dnNfbW9kZSB7Cj4gICNkZWZpbmUgVk9VVF9MT19JTlQJQklUKDApCj4gICNkZWZpbmUgQ0xLMzJL T1VUMl9FTglCSVQoMCkKPiAgCj4gKyNkZWZpbmUgVEVNUDEwNUMJCQkweDA4Cj4gICNkZWZpbmUg VEVNUDExNUMJCQkweDBjCj4gICNkZWZpbmUgVEVNUF9IT1RESUVfTVNLCQkJMHgwYwo+ICAjZGVm aW5lIFNMUF9TRF9NU0sJCQkoMHgzIDw8IDIpCj4gQEAgLTExOTEsNiArMTMzMSw3IEBAIGVudW0g ewo+ICAJUks4MDZfSUQgPSAweDgwNjAsCj4gIAlSSzgwOF9JRCA9IDB4MDAwMCwKPiAgCVJLODA5 X0lEID0gMHg4MDkwLAo+ICsJUks4MTZfSUQgPSAweDgxNjAsCj4gIAlSSzgxN19JRCA9IDB4ODE3 MCwKPiAgCVJLODE4X0lEID0gMHg4MTgwLAo+ICB9Owo+IC0tIAo+IDIuNDMuMgo+IAoKLS0gCkxl ZSBKb25lcyBb5p2O55C85pavXQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5l bEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=