From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E8B5513B2B0; Thu, 15 Feb 2024 21:18:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708031892; cv=none; b=FfCnyxE2WZXwHnP5fc/pa8DT9WiS7dYYfNS+B4a5imz3YMLwi8y1onY8Lf8hUr3LNrDH+n+/QiL+OA9cHGNwMjpPVHlQNp1JAsmgmpClhlLxFKL+p/XNcNiJkTJd8/MX+dWIp/asOjP3zBqChtIbhQYhfGqkUa6HW26ZZeKxTfg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708031892; c=relaxed/simple; bh=MEKQInLFoLIrFe/RI2hTv8m7ddPPsJ8B+2TSmf/ILvk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OSqAakG1dsZjeYp4/UTNC3zd3m1lEMFnm9/1f+gMHdP0Jjd7Bow8S7f/1EndT3mSJrv3KcHxXCjB18AQH7Magk8nNtoDnn/wEtsZ8HSG5QgYMfXGt6zcg8KSiw/yiayHhcp99+v9sG3fLdg5Mbc6llndehYjimAcvSSHSncUg3o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Jxr7jadZ; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Jxr7jadZ" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-411d715c401so10773375e9.1; Thu, 15 Feb 2024 13:18:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708031888; x=1708636688; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aS4xTIctADjL/du4nbroj5ubyuOnz8QYFJw0VPl01nY=; b=Jxr7jadZSa3kSBXty2V68AouIcsPcUk15QvVjpCtHXDZSM8FLcp5+F6vc9ROYv7zGY DO76pj21Gzy9EmZlUiHg0fHm3oAsmOhMb5QyNad37VWocWWuIQOE/u+Lbcuz8xsmLno8 c6KieYrRmKWykl2yY7p2JCX8fidUXbj8k9TTjgdfWR12AnqQQNaprihkF3Plg7tBsLkr kuOqI6jVRKZ+Qy+7tUtrE+5oZoIo/mLNpJ/V94cbovmwSIMwGow8KGWnZjhjUxXfbL1U 3wEv/BpeXx3r1ok4RuCdHPlAiTSMt4mCtimL1h6jvgog7ZFVVoqk7eyiEoHD71Z4mQOM AtKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708031888; x=1708636688; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aS4xTIctADjL/du4nbroj5ubyuOnz8QYFJw0VPl01nY=; b=VHd44uJWw4szglOFxbwP/OxDp6s0oKvr1mfiBFAzmb63/BPQQFcuH1MNDCHtyC9ykP Bb34QcYWFmQm1GmFW2WFstR21RwRzoKwoOid4TUP7o2DvdIlXDxRAsl+U8gfnWc9EEjC EbhXAfvpjhXGwshPTz7XhxCv/oOWPsYCWBzbS0Lv/nyTIuXqIXSJlZTnI9xpMjx1q8Q3 lr4SMgO4Jo74FoFXXnxFGFZzAOGcXjouiBxzgXvu2Afeh+J4MiVeIJsiN6OJpHbhsNg8 /1SuLTmkr5eRdD8L9jYSdC6J+Vzlkb6XDmwEVP8d4dnsP4BkogIMhHEM74Q9gC7q8FHA DQ5g== X-Forwarded-Encrypted: i=1; AJvYcCVxvst1sUxrzXSgqJRF1uHkEBCRjVB2UYpGKn53RCvswmwB0r6/SSWrQUSgWiOEYBc1cB5vk36OvR72bNv4JzfbNr7+PN44A+autnp3biGbWyRxhu6Bhjx2XyDrOcOHOGoZfbC2 X-Gm-Message-State: AOJu0YxJUjejH7T20gFkZirqFe7NLIoWGKpza+chJs4i07RRMTlGQd75 W8n1N4AFLNMq7ya6V+rH9gfUab4NUlxcDiFL1Ofr2z98hExh6P7Y X-Google-Smtp-Source: AGHT+IHp3itPz4qmwUhgnSD35wTOWKCX1VcKqWohIy8udfDUWx+vTB3r1HwCrq2hGaR3wHqzQMg5dQ== X-Received: by 2002:a05:600c:3506:b0:412:1f3f:db1b with SMTP id h6-20020a05600c350600b004121f3fdb1bmr1917257wmq.3.1708031887715; Thu, 15 Feb 2024 13:18:07 -0800 (PST) Received: from jernej-laptop.localnet (86-58-6-171.dynamic.telemach.net. [86.58.6.171]) by smtp.gmail.com with ESMTPSA id z20-20020a05600c221400b0040fddaf9ff4sm271356wml.40.2024.02.15.13.18.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 13:18:07 -0800 (PST) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: Andre Przywara Cc: Vasily Khoruzhick , Yangtao Li , Chen-Yu Tsai , Samuel Holland , "Rafael J . Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Botka , Maksim Kiselev , Bob McChesney , linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev Subject: Re: [PATCH v4 1/7] soc: sunxi: sram: export register 0 for THS on H616 Date: Thu, 15 Feb 2024 22:18:05 +0100 Message-ID: <5752001.DvuYhMxLoT@jernej-laptop> In-Reply-To: <20240215012847.7d0eeda9@minigeek.lan> References: <20240209144221.3602382-1-andre.przywara@arm.com> <2172811.irdbgypaU6@jernej-laptop> <20240215012847.7d0eeda9@minigeek.lan> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" Dne =C4=8Detrtek, 15. februar 2024 ob 02:28:47 CET je Andre Przywara napisa= l(a): > On Wed, 14 Feb 2024 21:29:30 +0100 > Jernej =C5=A0krabec wrote: >=20 > Hi Jernej, >=20 > thanks for having a look and the tags on the other patches! >=20 > > Dne petek, 09. februar 2024 ob 15:42:15 CET je Andre Przywara napisal(a= ): > > > The Allwinner H616 SoC contains a mysterious bit at register offset 0= x0 > > > in the SRAM control block. If bit 16 is set (the reset value), the > > > temperature readings of the THS are way off, leading to reports about > > > 200C, at normal ambient temperatures. Clearing this bits brings the > > > reported values down to reasonable ranges. > > > The BSP code clears this bit in firmware (U-Boot), and has an explicit > > > comment about this, but offers no real explanation. > > >=20 > > > Since we should not rely on firmware settings, allow other code (the = THS > > > driver) to access this register, by exporting it through the already > > > existing regmap. This mimics what we already do for the LDO control a= nd > > > the EMAC register. =20 > >=20 > > Are you sure that this bit doesn't control actual SRAM region? >=20 > Pretty much so, yes: I did some experiments from U-Boot: > I filled SRAM C with some pattern, then read this back. Then flipped bit > 16, read again: same result. Then wrote something again and read it > back: no change. In fact no bits at 0x3000000 had any effect on SRAM > accessibility, only clearing bit 24 in 0x3000004 made the whole SRAM C > (0x28000-0x47fff) go read-as-zero/write-ignore, from the CPU side. >=20 > I then triggered the THS device, to do temperature readings, but > this didn't change a single byte in the SRAM regions, with or without > bit 16 set. It only changed the returned values, at 0x50704c0. >=20 > So yes, I am pretty certain there is no SRAM region that gets switched. > Even if we would want to claim there is: I wouldn't know which > address values to put into the SRAM DT node. >=20 > So I guess it's another example of: oh, we have this spare bit here. Or > it's some kind of chicken bit? I don't know, and I think the BSP code > we have seen didn't offer an explanation as well. >=20 It would be nice to mention this in commit message. > Cheers, > Andre > >=20 > > Best regards, > > Jernej > >=20 > > >=20 > > > Since this bit is in the very same register as the actual SRAM switch, > > > we need to change the regmap lock to the SRAM lock. Fortunately regmap > > > has provisions for that, so we just need to hook in there. > > >=20 > > > Signed-off-by: Andre Przywara > > > --- > > > drivers/soc/sunxi/sunxi_sram.c | 23 +++++++++++++++++++++++ > > > 1 file changed, 23 insertions(+) > > >=20 > > > diff --git a/drivers/soc/sunxi/sunxi_sram.c b/drivers/soc/sunxi/sunxi= _sram.c > > > index 4458b2e0562b0..71cdd1b257eeb 100644 > > > --- a/drivers/soc/sunxi/sunxi_sram.c > > > +++ b/drivers/soc/sunxi/sunxi_sram.c > > > @@ -287,6 +287,7 @@ EXPORT_SYMBOL(sunxi_sram_release); > > > struct sunxi_sramc_variant { > > > int num_emac_clocks; > > > bool has_ldo_ctrl; > > > + bool has_ths_offset; > > > }; > > > =20 > > > static const struct sunxi_sramc_variant sun4i_a10_sramc_variant =3D { > > > @@ -308,8 +309,10 @@ static const struct sunxi_sramc_variant sun50i_a= 64_sramc_variant =3D { > > > =20 > > > static const struct sunxi_sramc_variant sun50i_h616_sramc_variant = =3D { > > > .num_emac_clocks =3D 2, > > > + .has_ths_offset =3D true, > > > }; > > > =20 > > > +#define SUNXI_SRAM_THS_OFFSET_REG 0x0 > > > #define SUNXI_SRAM_EMAC_CLOCK_REG 0x30 > > > #define SUNXI_SYS_LDO_CTRL_REG 0x150 > > > =20 > > > @@ -318,6 +321,8 @@ static bool sunxi_sram_regmap_accessible_reg(stru= ct device *dev, > > > { > > > const struct sunxi_sramc_variant *variant =3D dev_get_drvdata(dev); > > > =20 > > > + if (reg =3D=3D SUNXI_SRAM_THS_OFFSET_REG && variant->has_ths_offset) > > > + return true; > > > if (reg >=3D SUNXI_SRAM_EMAC_CLOCK_REG && > > > reg < SUNXI_SRAM_EMAC_CLOCK_REG + variant->num_emac_clocks * 4) > > > return true; > > > @@ -327,6 +332,21 @@ static bool sunxi_sram_regmap_accessible_reg(str= uct device *dev, > > > return false; > > > } > > > =20 > > > + Nit: superfluous empty line. Best regards, Jernej > > > +static void sunxi_sram_lock(void *_lock) > > > +{ > > > + spinlock_t *lock =3D _lock; > > > + > > > + spin_lock(lock); > > > +} > > > + > > > +static void sunxi_sram_unlock(void *_lock) > > > +{ > > > + spinlock_t *lock =3D _lock; > > > + > > > + spin_unlock(lock); > > > +} > > > + > > > static struct regmap_config sunxi_sram_regmap_config =3D { > > > .reg_bits =3D 32, > > > .val_bits =3D 32, > > > @@ -336,6 +356,9 @@ static struct regmap_config sunxi_sram_regmap_con= fig =3D { > > > /* other devices have no business accessing other registers */ > > > .readable_reg =3D sunxi_sram_regmap_accessible_reg, > > > .writeable_reg =3D sunxi_sram_regmap_accessible_reg, > > > + .lock =3D sunxi_sram_lock, > > > + .unlock =3D sunxi_sram_unlock, > > > + .lock_arg =3D &sram_lock, > > > }; > > > =20 > > > static int __init sunxi_sram_probe(struct platform_device *pdev) > > > =20 > >=20 > >=20 > >=20 > >=20 > >=20 >=20 >=20 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 17E8DC4829E for ; Thu, 15 Feb 2024 21:18:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=fdqiwUzUGAGX0PF1jHsxzB6c96iEUJ5o4q31NWjKdFw=; b=LDVxxByycosfOS 3s7twQPfY/vmpCAJH6xn/R97jerhYW23YY+cSkSdfiVLBr4a79Ou4f7Sa8z8uwwfztkEEENFa8StQ mg4tIHenWBenFcpOmyo3AdvB6thILirR9/b4qIu7BgEcV2BYdurC/0ziB1A1aUv1Pr3mH2Y7PWt08 gL/Oyr1lWiKwmQLi7EIrGH4JWz7rVDUIrDQPCAmzoQFiZex7xcfQbD04jWotrla5wYaxD6c7JIdOh cbr3RJ0oAEoQoq3+ohzOxggCuHrX3v0GitZH7bvgR//XMALFXDnQfqZ54DY38WMfuGRwh2C0y7oeX kMasBpbbpve+Ae/MV2IQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1raj7V-00000000AfU-1GKm; Thu, 15 Feb 2024 21:18:13 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1raj7S-00000000Ad0-0qZR for linux-arm-kernel@lists.infradead.org; Thu, 15 Feb 2024 21:18:11 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-412191ed8aaso8082135e9.2 for ; Thu, 15 Feb 2024 13:18:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708031888; x=1708636688; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aS4xTIctADjL/du4nbroj5ubyuOnz8QYFJw0VPl01nY=; b=K7dEHIdzuzfpqQTlw85FWUIFOgnt/JWKxzn84DDCC9bUc3v9NkfJSWhZVpQnqyIKdE t8hzXtTLjdOHjXSizB26Cy90ZrKtUzMHj43nzXc0n9TYeCMns0nu8DoYy5/v3xSlP313 497heGQxxAexLoI3+m35Z9ItrmvOD61PiCXsCJO8nGMIp9kbO0KkY35O65HCy/YKEoQZ BvUAQfqOhT4/3u/jycv+Bd0JpWnd5FQrRYz75EnSyc5LSvJjJJUny/if40fa/rlT6HSD zU1+cJBw5Hypm1R3BN5twE5S70cQ2f/TTywh8UEN9HCmmNL5on+ci5M5AgKIUsL2lxHU yIFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708031888; x=1708636688; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aS4xTIctADjL/du4nbroj5ubyuOnz8QYFJw0VPl01nY=; b=fZ0UDpdV7ItTLZv3hRvTOkfZVduuym6X4AaCNZZivMyzpHMOLR7HrPNugiNEwtvswZ Uc41LLDjmwHwr0pAWtpCoEIUwXOu/++ANt4cNnT2kf2NadvVKo3ctuT4R6ksZzFzcjuz yNB/QxqJv4Lb2Dgv5fp5tydlc8WtD+wzcVhiMWCXlJMANqb1GuALnwuaIh+/s4JlwSPU mhy1iwEDEfkfoIgnBUMlX2pPQ5oOvIPnFLK0qsh3llkLE846zKkhiBO6AvOVRF6vsA+d I0qHaSQT7yYdC4xrUTn1Fwe7lyFXJPb8A9unCZN3pk3fvEk6npayYZHucCfcYVg5n4WD YUNA== X-Forwarded-Encrypted: i=1; AJvYcCU+YkiO8xJK15Ftsx3ldhkt6d+FJ/g1vCb6xInkhdK19SJNalqbqwz2LgWo97rjARa3RXemcFokfp6R/idKqgjlLLoq6aoiFwNiRnYVlUAgf7+yL64= X-Gm-Message-State: AOJu0YwELgV/fD0TRP25TfWaxSE3+9wi+/tPQxUjv+4YCenBeZsb7TFg VSPJHBibjOigmH2akiaY5aocp1YY/O2D9fiomYw4Xudc36RQ/ZRU X-Google-Smtp-Source: AGHT+IHp3itPz4qmwUhgnSD35wTOWKCX1VcKqWohIy8udfDUWx+vTB3r1HwCrq2hGaR3wHqzQMg5dQ== X-Received: by 2002:a05:600c:3506:b0:412:1f3f:db1b with SMTP id h6-20020a05600c350600b004121f3fdb1bmr1917257wmq.3.1708031887715; Thu, 15 Feb 2024 13:18:07 -0800 (PST) Received: from jernej-laptop.localnet (86-58-6-171.dynamic.telemach.net. [86.58.6.171]) by smtp.gmail.com with ESMTPSA id z20-20020a05600c221400b0040fddaf9ff4sm271356wml.40.2024.02.15.13.18.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 13:18:07 -0800 (PST) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: Andre Przywara Cc: Vasily Khoruzhick , Yangtao Li , Chen-Yu Tsai , Samuel Holland , "Rafael J . Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Botka , Maksim Kiselev , Bob McChesney , linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev Subject: Re: [PATCH v4 1/7] soc: sunxi: sram: export register 0 for THS on H616 Date: Thu, 15 Feb 2024 22:18:05 +0100 Message-ID: <5752001.DvuYhMxLoT@jernej-laptop> In-Reply-To: <20240215012847.7d0eeda9@minigeek.lan> References: <20240209144221.3602382-1-andre.przywara@arm.com> <2172811.irdbgypaU6@jernej-laptop> <20240215012847.7d0eeda9@minigeek.lan> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240215_131810_318082_5DD947BF X-CRM114-Status: GOOD ( 40.04 ) 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 RG5lIMSNZXRydGVrLCAxNS4gZmVicnVhciAyMDI0IG9iIDAyOjI4OjQ3IENFVCBqZSBBbmRyZSBQ cnp5d2FyYSBuYXBpc2FsKGEpOgo+IE9uIFdlZCwgMTQgRmViIDIwMjQgMjE6Mjk6MzAgKzAxMDAK PiBKZXJuZWogxaBrcmFiZWMgPGplcm5lai5za3JhYmVjQGdtYWlsLmNvbT4gd3JvdGU6Cj4gCj4g SGkgSmVybmVqLAo+IAo+IHRoYW5rcyBmb3IgaGF2aW5nIGEgbG9vayBhbmQgdGhlIHRhZ3Mgb24g dGhlIG90aGVyIHBhdGNoZXMhCj4gCj4gPiBEbmUgcGV0ZWssIDA5LiBmZWJydWFyIDIwMjQgb2Ig MTU6NDI6MTUgQ0VUIGplIEFuZHJlIFByenl3YXJhIG5hcGlzYWwoYSk6Cj4gPiA+IFRoZSBBbGx3 aW5uZXIgSDYxNiBTb0MgY29udGFpbnMgYSBteXN0ZXJpb3VzIGJpdCBhdCByZWdpc3RlciBvZmZz ZXQgMHgwCj4gPiA+IGluIHRoZSBTUkFNIGNvbnRyb2wgYmxvY2suIElmIGJpdCAxNiBpcyBzZXQg KHRoZSByZXNldCB2YWx1ZSksIHRoZQo+ID4gPiB0ZW1wZXJhdHVyZSByZWFkaW5ncyBvZiB0aGUg VEhTIGFyZSB3YXkgb2ZmLCBsZWFkaW5nIHRvIHJlcG9ydHMgYWJvdXQKPiA+ID4gMjAwQywgYXQg bm9ybWFsIGFtYmllbnQgdGVtcGVyYXR1cmVzLiBDbGVhcmluZyB0aGlzIGJpdHMgYnJpbmdzIHRo ZQo+ID4gPiByZXBvcnRlZCB2YWx1ZXMgZG93biB0byByZWFzb25hYmxlIHJhbmdlcy4KPiA+ID4g VGhlIEJTUCBjb2RlIGNsZWFycyB0aGlzIGJpdCBpbiBmaXJtd2FyZSAoVS1Cb290KSwgYW5kIGhh cyBhbiBleHBsaWNpdAo+ID4gPiBjb21tZW50IGFib3V0IHRoaXMsIGJ1dCBvZmZlcnMgbm8gcmVh bCBleHBsYW5hdGlvbi4KPiA+ID4gCj4gPiA+IFNpbmNlIHdlIHNob3VsZCBub3QgcmVseSBvbiBm aXJtd2FyZSBzZXR0aW5ncywgYWxsb3cgb3RoZXIgY29kZSAodGhlIFRIUwo+ID4gPiBkcml2ZXIp IHRvIGFjY2VzcyB0aGlzIHJlZ2lzdGVyLCBieSBleHBvcnRpbmcgaXQgdGhyb3VnaCB0aGUgYWxy ZWFkeQo+ID4gPiBleGlzdGluZyByZWdtYXAuIFRoaXMgbWltaWNzIHdoYXQgd2UgYWxyZWFkeSBk byBmb3IgdGhlIExETyBjb250cm9sIGFuZAo+ID4gPiB0aGUgRU1BQyByZWdpc3Rlci4gIAo+ID4g Cj4gPiBBcmUgeW91IHN1cmUgdGhhdCB0aGlzIGJpdCBkb2Vzbid0IGNvbnRyb2wgYWN0dWFsIFNS QU0gcmVnaW9uPwo+IAo+IFByZXR0eSBtdWNoIHNvLCB5ZXM6IEkgZGlkIHNvbWUgZXhwZXJpbWVu dHMgZnJvbSBVLUJvb3Q6Cj4gSSBmaWxsZWQgU1JBTSBDIHdpdGggc29tZSBwYXR0ZXJuLCB0aGVu IHJlYWQgdGhpcyBiYWNrLiBUaGVuIGZsaXBwZWQgYml0Cj4gMTYsIHJlYWQgYWdhaW46IHNhbWUg cmVzdWx0LiBUaGVuIHdyb3RlIHNvbWV0aGluZyBhZ2FpbiBhbmQgcmVhZCBpdAo+IGJhY2s6IG5v IGNoYW5nZS4gSW4gZmFjdCBubyBiaXRzIGF0IDB4MzAwMDAwMCBoYWQgYW55IGVmZmVjdCBvbiBT UkFNCj4gYWNjZXNzaWJpbGl0eSwgb25seSBjbGVhcmluZyBiaXQgMjQgaW4gMHgzMDAwMDA0IG1h ZGUgdGhlIHdob2xlIFNSQU0gQwo+ICgweDI4MDAwLTB4NDdmZmYpIGdvIHJlYWQtYXMtemVyby93 cml0ZS1pZ25vcmUsIGZyb20gdGhlIENQVSBzaWRlLgo+IAo+IEkgdGhlbiB0cmlnZ2VyZWQgdGhl IFRIUyBkZXZpY2UsIHRvIGRvIHRlbXBlcmF0dXJlIHJlYWRpbmdzLCBidXQKPiB0aGlzIGRpZG4n dCBjaGFuZ2UgYSBzaW5nbGUgYnl0ZSBpbiB0aGUgU1JBTSByZWdpb25zLCB3aXRoIG9yIHdpdGhv dXQKPiBiaXQgMTYgc2V0LiBJdCBvbmx5IGNoYW5nZWQgdGhlIHJldHVybmVkIHZhbHVlcywgYXQg MHg1MDcwNGMwLgo+IAo+IFNvIHllcywgSSBhbSBwcmV0dHkgY2VydGFpbiB0aGVyZSBpcyBubyBT UkFNIHJlZ2lvbiB0aGF0IGdldHMgc3dpdGNoZWQuCj4gRXZlbiBpZiB3ZSB3b3VsZCB3YW50IHRv IGNsYWltIHRoZXJlIGlzOiBJIHdvdWxkbid0IGtub3cgd2hpY2gKPiBhZGRyZXNzIHZhbHVlcyB0 byBwdXQgaW50byB0aGUgU1JBTSBEVCBub2RlLgo+IAo+IFNvIEkgZ3Vlc3MgaXQncyBhbm90aGVy IGV4YW1wbGUgb2Y6IG9oLCB3ZSBoYXZlIHRoaXMgc3BhcmUgYml0IGhlcmUuIE9yCj4gaXQncyBz b21lIGtpbmQgb2YgY2hpY2tlbiBiaXQ/IEkgZG9uJ3Qga25vdywgYW5kIEkgdGhpbmsgdGhlIEJT UCBjb2RlCj4gd2UgaGF2ZSBzZWVuIGRpZG4ndCBvZmZlciBhbiBleHBsYW5hdGlvbiBhcyB3ZWxs Lgo+IAoKSXQgd291bGQgYmUgbmljZSB0byBtZW50aW9uIHRoaXMgaW4gY29tbWl0IG1lc3NhZ2Uu Cgo+IENoZWVycywKPiBBbmRyZQo+ID4gCj4gPiBCZXN0IHJlZ2FyZHMsCj4gPiBKZXJuZWoKPiA+ IAo+ID4gPiAKPiA+ID4gU2luY2UgdGhpcyBiaXQgaXMgaW4gdGhlIHZlcnkgc2FtZSByZWdpc3Rl ciBhcyB0aGUgYWN0dWFsIFNSQU0gc3dpdGNoLAo+ID4gPiB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUg cmVnbWFwIGxvY2sgdG8gdGhlIFNSQU0gbG9jay4gRm9ydHVuYXRlbHkgcmVnbWFwCj4gPiA+IGhh cyBwcm92aXNpb25zIGZvciB0aGF0LCBzbyB3ZSBqdXN0IG5lZWQgdG8gaG9vayBpbiB0aGVyZS4K PiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2Fy YUBhcm0uY29tPgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvc29jL3N1bnhpL3N1bnhpX3NyYW0u YyB8IDIzICsrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMjMg aW5zZXJ0aW9ucygrKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL3N1bnhp L3N1bnhpX3NyYW0uYyBiL2RyaXZlcnMvc29jL3N1bnhpL3N1bnhpX3NyYW0uYwo+ID4gPiBpbmRl eCA0NDU4YjJlMDU2MmIwLi43MWNkZDFiMjU3ZWViIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJz L3NvYy9zdW54aS9zdW54aV9zcmFtLmMKPiA+ID4gKysrIGIvZHJpdmVycy9zb2Mvc3VueGkvc3Vu eGlfc3JhbS5jCj4gPiA+IEBAIC0yODcsNiArMjg3LDcgQEAgRVhQT1JUX1NZTUJPTChzdW54aV9z cmFtX3JlbGVhc2UpOwo+ID4gPiAgc3RydWN0IHN1bnhpX3NyYW1jX3ZhcmlhbnQgewo+ID4gPiAg CWludCBudW1fZW1hY19jbG9ja3M7Cj4gPiA+ICAJYm9vbCBoYXNfbGRvX2N0cmw7Cj4gPiA+ICsJ Ym9vbCBoYXNfdGhzX29mZnNldDsKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgc3VueGlfc3JhbWNfdmFyaWFudCBzdW40aV9hMTBfc3JhbWNfdmFyaWFudCA9IHsK PiA+ID4gQEAgLTMwOCw4ICszMDksMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzdW54aV9zcmFt Y192YXJpYW50IHN1bjUwaV9hNjRfc3JhbWNfdmFyaWFudCA9IHsKPiA+ID4gIAo+ID4gPiAgc3Rh dGljIGNvbnN0IHN0cnVjdCBzdW54aV9zcmFtY192YXJpYW50IHN1bjUwaV9oNjE2X3NyYW1jX3Zh cmlhbnQgPSB7Cj4gPiA+ICAJLm51bV9lbWFjX2Nsb2NrcyA9IDIsCj4gPiA+ICsJLmhhc190aHNf b2Zmc2V0ID0gdHJ1ZSwKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gKyNkZWZpbmUgU1VOWElfU1JB TV9USFNfT0ZGU0VUX1JFRwkweDAKPiA+ID4gICNkZWZpbmUgU1VOWElfU1JBTV9FTUFDX0NMT0NL X1JFRwkweDMwCj4gPiA+ICAjZGVmaW5lIFNVTlhJX1NZU19MRE9fQ1RSTF9SRUcJCTB4MTUwCj4g PiA+ICAKPiA+ID4gQEAgLTMxOCw2ICszMjEsOCBAQCBzdGF0aWMgYm9vbCBzdW54aV9zcmFtX3Jl Z21hcF9hY2Nlc3NpYmxlX3JlZyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ICB7Cj4gPiA+ICAJ Y29uc3Qgc3RydWN0IHN1bnhpX3NyYW1jX3ZhcmlhbnQgKnZhcmlhbnQgPSBkZXZfZ2V0X2RydmRh dGEoZGV2KTsKPiA+ID4gIAo+ID4gPiArCWlmIChyZWcgPT0gU1VOWElfU1JBTV9USFNfT0ZGU0VU X1JFRyAmJiB2YXJpYW50LT5oYXNfdGhzX29mZnNldCkKPiA+ID4gKwkJcmV0dXJuIHRydWU7Cj4g PiA+ICAJaWYgKHJlZyA+PSBTVU5YSV9TUkFNX0VNQUNfQ0xPQ0tfUkVHICYmCj4gPiA+ICAJICAg IHJlZyA8ICBTVU5YSV9TUkFNX0VNQUNfQ0xPQ0tfUkVHICsgdmFyaWFudC0+bnVtX2VtYWNfY2xv Y2tzICogNCkKPiA+ID4gIAkJcmV0dXJuIHRydWU7Cj4gPiA+IEBAIC0zMjcsNiArMzMyLDIxIEBA IHN0YXRpYyBib29sIHN1bnhpX3NyYW1fcmVnbWFwX2FjY2Vzc2libGVfcmVnKHN0cnVjdCBkZXZp Y2UgKmRldiwKPiA+ID4gIAlyZXR1cm4gZmFsc2U7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gKwoK Tml0OiBzdXBlcmZsdW91cyBlbXB0eSBsaW5lLgoKQmVzdCByZWdhcmRzLApKZXJuZWoKCj4gPiA+ ICtzdGF0aWMgdm9pZCBzdW54aV9zcmFtX2xvY2sodm9pZCAqX2xvY2spCj4gPiA+ICt7Cj4gPiA+ ICsJc3BpbmxvY2tfdCAqbG9jayA9IF9sb2NrOwo+ID4gPiArCj4gPiA+ICsJc3Bpbl9sb2NrKGxv Y2spOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBzdW54aV9zcmFtX3VubG9j ayh2b2lkICpfbG9jaykKPiA+ID4gK3sKPiA+ID4gKwlzcGlubG9ja190ICpsb2NrID0gX2xvY2s7 Cj4gPiA+ICsKPiA+ID4gKwlzcGluX3VubG9jayhsb2NrKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiAgc3RhdGljIHN0cnVjdCByZWdtYXBfY29uZmlnIHN1bnhpX3NyYW1fcmVnbWFwX2NvbmZpZyA9 IHsKPiA+ID4gIAkucmVnX2JpdHMgICAgICAgPSAzMiwKPiA+ID4gIAkudmFsX2JpdHMgICAgICAg PSAzMiwKPiA+ID4gQEAgLTMzNiw2ICszNTYsOSBAQCBzdGF0aWMgc3RydWN0IHJlZ21hcF9jb25m aWcgc3VueGlfc3JhbV9yZWdtYXBfY29uZmlnID0gewo+ID4gPiAgCS8qIG90aGVyIGRldmljZXMg aGF2ZSBubyBidXNpbmVzcyBhY2Nlc3Npbmcgb3RoZXIgcmVnaXN0ZXJzICovCj4gPiA+ICAJLnJl YWRhYmxlX3JlZwk9IHN1bnhpX3NyYW1fcmVnbWFwX2FjY2Vzc2libGVfcmVnLAo+ID4gPiAgCS53 cml0ZWFibGVfcmVnCT0gc3VueGlfc3JhbV9yZWdtYXBfYWNjZXNzaWJsZV9yZWcsCj4gPiA+ICsJ LmxvY2sJCT0gc3VueGlfc3JhbV9sb2NrLAo+ID4gPiArCS51bmxvY2sJCT0gc3VueGlfc3JhbV91 bmxvY2ssCj4gPiA+ICsJLmxvY2tfYXJnCT0gJnNyYW1fbG9jaywKPiA+ID4gIH07Cj4gPiA+ICAK PiA+ID4gIHN0YXRpYyBpbnQgX19pbml0IHN1bnhpX3NyYW1fcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKPiA+ID4gICAKPiA+IAo+ID4gCj4gPiAKPiA+IAo+ID4gCj4gCj4gCgoK CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt YXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJt LWtlcm5lbAo=