From mboxrd@z Thu Jan 1 00:00:00 1970 From: robherring2@gmail.com (Rob Herring) Date: Wed, 21 Sep 2011 08:24:24 -0500 Subject: [PATCH] ARM: vexpress: initial device tree support In-Reply-To: <1316596786-2539-1-git-send-email-dave.martin@linaro.org> References: <1316596786-2539-1-git-send-email-dave.martin@linaro.org> Message-ID: <4E79E588.6010703@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Dave, On 09/21/2011 04:19 AM, Dave Martin wrote: > This patch implements initial support for booting using a flattened > device tree on the Versatile Express platform. > > Eventually, it should be possible to present a single, core-tile- > independent board, but in this transitional patch the baseboard + > Cortex-A9x4 core tile combination is the only directly supported > platform, since the implementation is not yet fully generic. > > For now, clocks and timers are not handled via the device tree. > Implementation of these can follow in later patches. > > Thanks to Lorenzo Pieralisi, Grant Likely and Pawe? Moll for their > help and contributions. > > Signed-off-by: Dave Martin > Acked-by: Pawe? Moll > --- > > There are some outstanding issues which need to be discussed, listed > below. > > * This patch is not currently based on the GIC bindings being > discussed by Rob Herring et al. Once that discussion reaches a > conclusion, it should be straightforward to rebase onto the result. > > * The following added bindings are not present upstream and need > documentation / discussion: > > * arm,vexpress -- the global board binding for all platform > combinations using the Versatile Express motherboard. > > * arm,vexpress-v2p-ca9 -- the specific binding for the Versatile > Express motherboard with Cortex-A9x4 core tile installed. It > is only mentioned as the most-specific match in vexpress-v2p- > ca9.dts > > Since it's intended that the motherboard code should be fully > generic, and because no other core tiles are upstream yet, > perhaps we can get rid of this binding right away. > > * edid -- It should be possible to have a fairly generic binding > for EDID interfaces, but none seems to exist yet. Discussion > is needed regarding what form this should take. > > This might more appropriately be called "ddc" (or some > variation on that), since EDID seems only to describe the > format of the ID data retrievable via this interface; not the > interface itself. > > * arm,vexpress-flash -- Needed because of the requirement to > provide the physmap_flash driver with a special .set_vpp > handler. > > * idt,89hpes32h8 -- This is the IDT 89HPES32H8 PCI express > interconnect switch. This isn't needed for the Versatile > Express to work, but would be needed if using PCI-e peripherals > for real. I expect that more driver support needs to go > upstream before this is actually usable. > > * nxp,isp1761 -- The driver support for this is already upstream > (with some minor issues for ARM support). > > * arm,amba-bus -- widely used by other boards and patchsets, but > seems not to be documented. > This should be dropped. There's not really any bus component to an amba bus. All the probing info is within the primecell peripherals. > * The following bindings for ARM primecell peripherals are used > elsewhere but not documented. They should be pretty simple and > uncontraversial. > * arm,pl031 > * arm,pl041 > * arm,pl050 > * arm,pl180 > * arm,sp805 > Plus pl011, pl010, sp804, pl022, pl061 > Rob Herring suggested documenting simple bindings for these > (and others) along with his initial amba device tree probe > patches, but these bindings don't seem to be documented > upstream for now. > pl330 went the other route with a file for itself. That may be better to avoid conflicts. But yes, ARM should document all their peripherals. ;) I'll do the ones on highbank if you want to do the rest on VExp. > > * Shawn Guo's smsc911x patch is needed for Ethernet to work. This is > headed upstream but not yet in mainline. It is available in -next. > > * Minor patches are needed to the isp1760 and pata_generic drivers, > to allow OF-based initialisation across a wider group of > architectures. These are being discussed independently, but are > not yet accepted for merging upstream. > > * Most core-tile peripherals are currently not described in the core- > tile device tree fragment. This is a lower-priority issue since > the motherboard code already autodetects the core-tile (though only > one core-tile is fully upstream at the moment). > > * Static peripheral mappings are not yet handled in a generic way in > the board support code. This is a prerequisite for supporting > multiple core-tiles int the same kernel. It well need to get fixed > later, when extra core tile support is merged (or before). > > Pawe? Moll is looking into this separately. > > * The Kconfig logic for ensuring that at least one boot protocol and > at least one core tile are selected is a bit ugly. Suggestions for > improving this are certainly welcome. > > arch/arm/Kconfig | 1 + > arch/arm/boot/dts/vexpress-v2m-legacy.dtsi | 163 ++++++++++++++++++++++++++++ > arch/arm/boot/dts/vexpress-v2p-ca9.dts | 80 ++++++++++++++ > arch/arm/configs/vexpress_defconfig | 1 + > arch/arm/mach-vexpress/Kconfig | 45 ++++++++- > arch/arm/mach-vexpress/ct-ca9x4.c | 7 ++ > arch/arm/mach-vexpress/v2m.c | 54 +++++++++- > 7 files changed, 349 insertions(+), 2 deletions(-) > create mode 100644 arch/arm/boot/dts/vexpress-v2m-legacy.dtsi > create mode 100644 arch/arm/boot/dts/vexpress-v2p-ca9.dts > > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig > index 5ebc5d9..a6e90d5 100644 > --- a/arch/arm/Kconfig > +++ b/arch/arm/Kconfig > @@ -282,6 +282,7 @@ config ARCH_VERSATILE > > config ARCH_VEXPRESS > bool "ARM Ltd. Versatile Express family" > + select ARCH_VEXPRESS_SANE_CONFIG > select ARCH_WANT_OPTIONAL_GPIOLIB > select ARM_AMBA > select ARM_TIMER_SP804 > diff --git a/arch/arm/boot/dts/vexpress-v2m-legacy.dtsi b/arch/arm/boot/dts/vexpress-v2m-legacy.dtsi > new file mode 100644 > index 0000000..fd6e4e4 > --- /dev/null > +++ b/arch/arm/boot/dts/vexpress-v2m-legacy.dtsi > @@ -0,0 +1,163 @@ > +// ARM Ltd. Versatile Express Motherboard V2M-P1 (HBI-0190D) > +// Legacy memory map Not sure, but C++ style comments are probably frowned upon in dts too. > + > +/ { > + aliases { > + serial0 = &uart0; > + serial1 = &uart1; > + serial2 = &uart2; > + serial3 = &uart3; > + i2c0 = &i2c0; > + i2c1 = &i2c1; > + }; > + > + motherboard { > + compatible = "simple-bus"; > + #address-cells = <2>; // SMB chipselect number and offset > + #size-cells = <1>; > + #interrupt-cells = <1>; > + > + flash at 0,00000000 { > + compatible = "arm,vexpress-flash", "cfi-flash"; > + reg = <0 0x00000000 0x04000000 > + 1 0x00000000 0x04000000>; > + bank-width = <4>; > + }; > + > + psram at 2,00000000 { > + compatible = "mtd-ram"; > + reg = <2 0x00000000 0x02000000>; > + bank-width = <4>; > + }; > + > + ethernet at 3,02000000 { > + compatible = "smsc,lan9118", "smsc,lan9115"; > + reg = <3 0x02000000 0x10000>; > + reg-io-width = <4>; > + interrupts = <15>; > + smsc,irq-active-high; > + smsc,irq-push-pull; > + }; > + > + usb at 3,03000000 { > + compatible = "nxp,usb-isp1761"; > + reg = <3 0x03000000 0x20000>; > + interrupts = <16>; > + port1-otg; > + }; > + > + peripherals at 7,00000000 { > + compatible = "arm,amba-bus", "simple-bus"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0 7 0 0x20000>; > + > + // PCI-E I2C bus > + i2c0: i2c at 02000 { > + compatible = "arm,versatile-i2c"; > + reg = <0x02000 0x1000>; > + > + #address-cells = <1>; > + #size-cells = <0>; > + > + pcie-switch at 60 { > + compatible = "idt,89hpes32h8"; > + reg = <0x60>; > + }; > + }; > + > + aaci at 04000 { > + compatible = "arm,pl041", "arm,primecell"; > + reg = <0x04000 0x1000>; > + interrupts = <11>; > + }; > + > + mmci at 05000 { > + compatible = "arm,pl180", "arm,primecell"; > + reg = <0x05000 0x1000>; > + interrupts = <9 10>; > + }; > + > + kmi at 06000 { > + compatible = "arm,pl050", "arm,primecell"; > + reg = <0x06000 0x1000>; > + interrupts = <12>; > + }; > + > + kmi at 07000 { > + compatible = "arm,pl050", "arm,primecell"; > + reg = <0x07000 0x1000>; > + interrupts = <13>; > + }; > + > + uart0: uart at 09000 { > + compatible = "arm,pl011", "arm,primecell"; > + reg = <0x09000 0x1000>; > + interrupts = <5>; > + }; > + > + uart1: uart at 0a000 { > + compatible = "arm,pl011", "arm,primecell"; > + reg = <0x0a000 0x1000>; > + interrupts = <6>; > + }; > + > + uart2: uart at 0b000 { > + compatible = "arm,pl011", "arm,primecell"; > + reg = <0x0b000 0x1000>; > + interrupts = <7>; > + }; > + > + uart3: uart at 0c000 { > + compatible = "arm,pl011", "arm,primecell"; > + reg = <0x0c000 0x1000>; > + interrupts = <8>; > + }; > + > + wdt at 0f000 { > + compatible = "arm,sp805", "arm,primecell"; > + reg = <0x0f000 0x1000>; > + interrupts = <0>; > + }; > + > + // Timer init is hardcoded in v2m_timer_init(), for now. > + // timer at 11000 { > + // compatible = "arm,arm-sp804"; arm,sp804 is more consistent. I believe the sp804 does have the periphid registers, so arm,primecell should also be added. > + // reg = <0x11000 0x1000>; > + // interrupts = <2>; > + // }; > + > + // timer at 12000 { > + // compatible = "arm,arm-sp804"; > + // reg = <0x12000 0x1000>; > + // }; Just because Linux is not using it, doesn't mean you should comment it out. > + > + // DVI I2C bus (DDC) > + i2c1: i2c at 16000 { > + compatible = "arm,versatile-i2c"; > + reg = <0x16000 0x1000>; > + > + #address-cells = <1>; > + #size-cells = <0>; > + > + edid at 50 { > + compatible = "edid"; > + reg = <0x50>; > + }; > + }; > + > + rtc at 17000 { > + compatible = "arm,pl031", "arm,primecell"; > + reg = <0x017000 0x1000>; > + interrupts = <4>; > + }; > + > + compact-flash at 1a000 { > + compatible = "ata-generic"; > + reg = <0x1a000 0x100 > + 0x1a100 0xf00>; > + reg-shift = <2>; > + }; > + }; > + }; > +}; > diff --git a/arch/arm/boot/dts/vexpress-v2p-ca9.dts b/arch/arm/boot/dts/vexpress-v2p-ca9.dts > new file mode 100644 > index 0000000..059be97 > --- /dev/null > +++ b/arch/arm/boot/dts/vexpress-v2p-ca9.dts > @@ -0,0 +1,80 @@ > +// ARM Ltd. Versatile Express Corex-A9 (Quad Core) Core Tile V2P-CA9 (HBI-0191B) > + > +/dts-v1/; > + > +/include/ "skeleton.dtsi" > + > +/ { > + model = "ARM Versatile Express (Cortex-A9 Quad Core Tile)"; > + compatible = "arm,vexpress-v2p-ca9", "arm,vexpress"; > + interrupt-parent = <&intc>; > + > + memory { > + device_type = "memory"; > + reg = <0x60000000 0x40000000>; > + }; > + > + intc: interrupt-controller at 1e001000 { > + compatible = "arm,cortex-a9-gic"; > + #interrupt-cells = <2>; > + #address-cells = <0>; > + interrupt-controller; > + reg = <0x1e001000 0x1000>, > + <0x1e000100 0x100>; > + }; Is this really all by itself? It should be in the sub-tree of the appropriate bus. You need an "interrupt-parent;" line so the parent is not itself. > + > + motherboard { > + ranges = <0 0 0x40000000 0x04000000 > + 1 0 0x44000000 0x04000000 > + 2 0 0x48000000 0x04000000 > + 3 0 0x4c000000 0x04000000 > + 7 0 0x10000000 0x00020000>; > + > + interrupt-map-mask = <0 0 63>; > + interrupt-map = <0 0 0 &intc 32 8 > + 0 0 1 &intc 33 4 > + 0 0 2 &intc 34 4 > + 0 0 3 &intc 35 4 > + 0 0 4 &intc 36 4 > + 0 0 5 &intc 37 4 > + 0 0 6 &intc 38 4 > + 0 0 7 &intc 39 4 > + 0 0 8 &intc 40 4 > + 0 0 9 &intc 41 4 > + 0 0 10 &intc 42 4 > + 0 0 11 &intc 43 4 > + 0 0 12 &intc 44 4 > + 0 0 13 &intc 45 4 > + 0 0 14 &intc 46 4 > + 0 0 15 &intc 47 4 > + 0 0 16 &intc 48 4 > + 0 0 17 &intc 49 4 > + 0 0 18 &intc 50 4 > + 0 0 19 &intc 51 4 > + 0 0 20 &intc 52 4 > + 0 0 21 &intc 53 4 > + 0 0 22 &intc 54 4 > + 0 0 23 &intc 55 4 > + 0 0 24 &intc 56 4 > + 0 0 25 &intc 57 4 > + 0 0 26 &intc 58 4 > + 0 0 27 &intc 59 4 > + 0 0 28 &intc 60 4 > + 0 0 29 &intc 61 4 > + 0 0 30 &intc 62 4 > + 0 0 31 &intc 63 4 > + 0 0 32 &intc 64 4 > + 0 0 33 &intc 65 4 > + 0 0 34 &intc 66 4 > + 0 0 35 &intc 67 4 > + 0 0 36 &intc 68 4 > + 0 0 37 &intc 69 4 > + 0 0 38 &intc 70 4 > + 0 0 39 &intc 71 4 > + 0 0 40 &intc 72 4 > + 0 0 41 &intc 73 4 > + 0 0 42 &intc 74 4>; > + }; > +}; > + > +/include/ "vexpress-v2m-legacy.dtsi" > diff --git a/arch/arm/configs/vexpress_defconfig b/arch/arm/configs/vexpress_defconfig > index f2de51f..6c3c5f6 100644 > --- a/arch/arm/configs/vexpress_defconfig > +++ b/arch/arm/configs/vexpress_defconfig > @@ -22,6 +22,7 @@ CONFIG_MODULE_UNLOAD=y > # CONFIG_IOSCHED_DEADLINE is not set > # CONFIG_IOSCHED_CFQ is not set > CONFIG_ARCH_VEXPRESS=y > +CONFIG_ARCH_VEXPRESS_ATAGS=y > CONFIG_ARCH_VEXPRESS_CA9X4=y > # CONFIG_SWP_EMULATE is not set > CONFIG_SMP=y > diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig > index 9311484..ea64630 100644 > --- a/arch/arm/mach-vexpress/Kconfig > +++ b/arch/arm/mach-vexpress/Kconfig > @@ -1,12 +1,55 @@ > menu "Versatile Express platform type" > depends on ARCH_VEXPRESS > > +# ARCH_VEXPRESS ensures a sane minimal config is selected by selecting > +# ARCH_VEXPRESS_SANE_CONFIG. > +# Extend the logic here when adding new core tiles. > + > +config ARCH_VEXPRESS_SANE_CONFIG > + bool > + select ARCH_VEXPRESS_CA9X4 > + select ARCH_VEXPRESS_ATAGS if !ARCH_VEXPRESS_DT > + > + > +comment "At least one boot type must be selected" > + > +config ARCH_VEXPRESS_ATAGS > + bool "Boot via ATAGs" > + default y > + help > + This option enables support for the board using the standard > + ATAGs boot protocol. > + > + If your bootloader supports FDT-based booting and you do not > + intend ever to boot via the traditional ATAGs method, you can say > + N here. > + > +config ARCH_VEXPRESS_DT > + bool "Boot via Device Tree" > + select USE_OF > + help > + This option enables support for the board, and enables booting > + via a Flattened Device Tree provided by the bootloader. > + > + If your bootloader supports FDT-based booting, you can say Y > + here, otherwise, say N. > + > + > +# Core Tile support options > + > +comment "At least one core tile must be selected" > + > config ARCH_VEXPRESS_CA9X4 > - bool "Versatile Express Cortex-A9x4 tile" > + bool "Versatile Express Cortex-A9x4 Core Tile" > + default y > select CPU_V7 > select ARM_GIC > select ARM_ERRATA_720789 > select ARM_ERRATA_751472 > select ARM_ERRATA_753970 > + help > + Include support for the Cortex-A9x4 Core Tile (HBI-0191B). > + > + If unsure, say Y. > > endmenu > diff --git a/arch/arm/mach-vexpress/ct-ca9x4.c b/arch/arm/mach-vexpress/ct-ca9x4.c > index bfd32f5..e2fe2c9 100644 > --- a/arch/arm/mach-vexpress/ct-ca9x4.c > +++ b/arch/arm/mach-vexpress/ct-ca9x4.c > @@ -9,6 +9,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -59,10 +60,16 @@ static void __init ct_ca9x4_map_io(void) > iotable_init(ct_ca9x4_io_desc, ARRAY_SIZE(ct_ca9x4_io_desc)); > } > > +static const struct of_device_id gic_of_match[] __initconst = { > + { .compatible = "arm,cortex-a9-gic", }, > + {} > +}; > + > static void __init ct_ca9x4_init_irq(void) > { > gic_init(0, 29, MMIO_P2V(A9_MPCORE_GIC_DIST), > MMIO_P2V(A9_MPCORE_GIC_CPU)); > + irq_domain_generate_simple(gic_of_match, A9_MPCORE_GIC_DIST, 0); > } > > #if 0 > diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c > index 9e6b93b..6defce6 100644 > --- a/arch/arm/mach-vexpress/v2m.c > +++ b/arch/arm/mach-vexpress/v2m.c > @@ -6,6 +6,8 @@ > #include > #include > #include > +#include > +#include > #include > #include > #include > @@ -118,7 +120,7 @@ int v2m_cfg_read(u32 devfn, u32 *data) > return !!(val & SYS_CFG_ERR); > } > > - > +#ifdef CONFIG_ARCH_VEXPRESS_ATAGS > static struct resource v2m_pcie_i2c_resource = { > .start = V2M_SERIAL_BUS_PCI, > .end = V2M_SERIAL_BUS_PCI + SZ_4K - 1, > @@ -200,6 +202,7 @@ static struct platform_device v2m_usb_device = { > .num_resources = ARRAY_SIZE(v2m_usb_resources), > .dev.platform_data = &v2m_usb_config, > }; > +#endif /* CONFIG_ARCH_VEXPRESS_ATAGS */ > > static void v2m_flash_set_vpp(struct platform_device *pdev, int on) > { > @@ -211,6 +214,7 @@ static struct physmap_flash_data v2m_flash_data = { > .set_vpp = v2m_flash_set_vpp, > }; > > +#ifdef CONFIG_ARCH_VEXPRESS_ATAGS > static struct resource v2m_flash_resources[] = { > { > .start = V2M_NOR0, > @@ -254,6 +258,7 @@ static struct platform_device v2m_cf_device = { > .num_resources = ARRAY_SIZE(v2m_pata_resources), > .dev.platform_data = &v2m_pata_data, > }; > +#endif /* CONFIG_ARCH_VEXPRESS_ATAGS */ > > static unsigned int v2m_mmci_status(struct device *dev) > { > @@ -265,6 +270,7 @@ static struct mmci_platform_data v2m_mmci_data = { > .status = v2m_mmci_status, > }; > > +#ifdef CONFIG_ARCH_VEXPRESS_ATAGS > static AMBA_DEVICE(aaci, "mb:aaci", V2M_AACI, NULL); > static AMBA_DEVICE(mmci, "mb:mmci", V2M_MMCI, &v2m_mmci_data); > static AMBA_DEVICE(kmi0, "mb:kmi0", V2M_KMI0, NULL); > @@ -288,6 +294,7 @@ static struct amba_device *v2m_amba_devs[] __initdata = { > &wdt_device, > &rtc_device, > }; > +#endif /* CONFIG_ARCH_VEXPRESS_ATAGS */ > > > static long v2m_osc_round(struct clk *clk, unsigned long rate) > @@ -415,6 +422,8 @@ static void __init v2m_init_irq(void) > ct_desc->init_irq(); > } > > + > +#ifdef CONFIG_ARCH_VEXPRESS_ATAGS > static void __init v2m_init(void) > { > int i; > @@ -443,3 +452,46 @@ MACHINE_START(VEXPRESS, "ARM-Versatile Express") > .timer = &v2m_timer, > .init_machine = v2m_init, > MACHINE_END > +#endif /* CONFIG_ARCH_VEXPRESS_ATAGS */ > + > +#ifdef CONFIG_ARCH_VEXPRESS_DT > +struct of_dev_auxdata v2m_dt_auxdata_lookup[] __initdata = { > + OF_DEV_AUXDATA("arm,vexpress-flash", V2M_NOR0, "physmap-flash", &v2m_flash_data), > + OF_DEV_AUXDATA("arm,primecell", V2M_AACI, "mb:aaci", NULL), > + OF_DEV_AUXDATA("arm,primecell", V2M_WDT, "mb:wdt", NULL), > + OF_DEV_AUXDATA("arm,primecell", V2M_MMCI, "mb:mmci", &v2m_mmci_data), > + OF_DEV_AUXDATA("arm,primecell", V2M_KMI0, "mb:kmi0", NULL), > + OF_DEV_AUXDATA("arm,primecell", V2M_KMI1, "mb:kmi1", NULL), > + OF_DEV_AUXDATA("arm,primecell", V2M_UART0, "mb:uart0", NULL), > + OF_DEV_AUXDATA("arm,primecell", V2M_UART1, "mb:uart1", NULL), > + OF_DEV_AUXDATA("arm,primecell", V2M_UART2, "mb:uart2", NULL), > + OF_DEV_AUXDATA("arm,primecell", V2M_UART3, "mb:uart3", NULL), > + OF_DEV_AUXDATA("arm,primecell", V2M_RTC, "mb:rtc", NULL), > + {} > +}; > + > +static void __init v2m_dt_init(void) > +{ > + of_platform_populate(NULL, of_default_bus_match_table, > + v2m_dt_auxdata_lookup, NULL); > + > + pm_power_off = v2m_power_off; > + arm_pm_restart = v2m_restart; > + > + ct_desc->init_tile(); > +} > + > +static const char *v2m_dt_match[] __initconst = { > + "arm,vexpress", > + NULL, > +}; > + > +DT_MACHINE_START(VEXPRESS_DT, "ARM Versatile Express") > + .map_io = v2m_map_io, > + .init_early = v2m_init_early, > + .init_irq = v2m_init_irq, > + .timer = &v2m_timer, > + .init_machine = v2m_dt_init, > + .dt_compat = v2m_dt_match, > +MACHINE_END > +#endif /* CONFIG_ARCH_VEXPRESS_DT */ All the ifdefs are really ugly. Most people are creating new board_dt.c file and copying over pieces they need. Once DT support is on par with the old file, the old file can be deleted. Rob From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH] ARM: vexpress: initial device tree support Date: Wed, 21 Sep 2011 08:24:24 -0500 Message-ID: <4E79E588.6010703@gmail.com> References: <1316596786-2539-1-git-send-email-dave.martin@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1316596786-2539-1-git-send-email-dave.martin-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: devicetree-discuss-bounces+gldd-devicetree-discuss=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Sender: devicetree-discuss-bounces+gldd-devicetree-discuss=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org To: Dave Martin Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, Rob Herring , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, =?UTF-8?B?UGF3ZcWCIE1vbGw=?= , patches-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org List-Id: devicetree@vger.kernel.org RGF2ZSwKCk9uIDA5LzIxLzIwMTEgMDQ6MTkgQU0sIERhdmUgTWFydGluIHdyb3RlOgo+IFRoaXMg cGF0Y2ggaW1wbGVtZW50cyBpbml0aWFsIHN1cHBvcnQgZm9yIGJvb3RpbmcgdXNpbmcgYSBmbGF0 dGVuZWQKPiBkZXZpY2UgdHJlZSBvbiB0aGUgVmVyc2F0aWxlIEV4cHJlc3MgcGxhdGZvcm0uCj4g Cj4gRXZlbnR1YWxseSwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHByZXNlbnQgYSBzaW5nbGUs IGNvcmUtdGlsZS0KPiBpbmRlcGVuZGVudCBib2FyZCwgYnV0IGluIHRoaXMgdHJhbnNpdGlvbmFs IHBhdGNoIHRoZSBiYXNlYm9hcmQgKwo+IENvcnRleC1BOXg0IGNvcmUgdGlsZSBjb21iaW5hdGlv biBpcyB0aGUgb25seSBkaXJlY3RseSBzdXBwb3J0ZWQKPiBwbGF0Zm9ybSwgc2luY2UgdGhlIGlt cGxlbWVudGF0aW9uIGlzIG5vdCB5ZXQgZnVsbHkgZ2VuZXJpYy4KPiAKPiBGb3Igbm93LCBjbG9j a3MgYW5kIHRpbWVycyBhcmUgbm90IGhhbmRsZWQgdmlhIHRoZSBkZXZpY2UgdHJlZS4KPiBJbXBs ZW1lbnRhdGlvbiBvZiB0aGVzZSBjYW4gZm9sbG93IGluIGxhdGVyIHBhdGNoZXMuCj4gCj4gVGhh bmtzIHRvIExvcmVuem8gUGllcmFsaXNpLCBHcmFudCBMaWtlbHkgYW5kIFBhd2XFgiBNb2xsIGZv ciB0aGVpcgo+IGhlbHAgYW5kIGNvbnRyaWJ1dGlvbnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogRGF2 ZSBNYXJ0aW4gPGRhdmUubWFydGluQGxpbmFyby5vcmc+Cj4gQWNrZWQtYnk6IFBhd2XFgiBNb2xs IDxQYXdlbC5Nb2xsQGFybS5jb20+Cj4gLS0tCj4gCj4gVGhlcmUgYXJlIHNvbWUgb3V0c3RhbmRp bmcgaXNzdWVzIHdoaWNoIG5lZWQgdG8gYmUgZGlzY3Vzc2VkLCBsaXN0ZWQKPiBiZWxvdy4KPiAK PiAgICogVGhpcyBwYXRjaCBpcyBub3QgY3VycmVudGx5IGJhc2VkIG9uIHRoZSBHSUMgYmluZGlu Z3MgYmVpbmcKPiAgICAgZGlzY3Vzc2VkIGJ5IFJvYiBIZXJyaW5nIGV0IGFsLiAgT25jZSB0aGF0 IGRpc2N1c3Npb24gcmVhY2hlcyBhCj4gICAgIGNvbmNsdXNpb24sIGl0IHNob3VsZCBiZSBzdHJh aWdodGZvcndhcmQgdG8gcmViYXNlIG9udG8gdGhlIHJlc3VsdC4KPiAKPiAgICogVGhlIGZvbGxv d2luZyBhZGRlZCBiaW5kaW5ncyBhcmUgbm90IHByZXNlbnQgdXBzdHJlYW0gYW5kIG5lZWQKPiAg ICAgZG9jdW1lbnRhdGlvbiAvIGRpc2N1c3Npb246Cj4gCj4gICAgICAgKiBhcm0sdmV4cHJlc3Mg LS0gdGhlIGdsb2JhbCBib2FyZCBiaW5kaW5nIGZvciBhbGwgcGxhdGZvcm0KPiAgICAgICAgIGNv bWJpbmF0aW9ucyB1c2luZyB0aGUgVmVyc2F0aWxlIEV4cHJlc3MgbW90aGVyYm9hcmQuCj4gCj4g ICAgICAgKiBhcm0sdmV4cHJlc3MtdjJwLWNhOSAtLSB0aGUgc3BlY2lmaWMgYmluZGluZyBmb3Ig dGhlIFZlcnNhdGlsZQo+ICAgICAgICAgRXhwcmVzcyBtb3RoZXJib2FyZCB3aXRoIENvcnRleC1B OXg0IGNvcmUgdGlsZSBpbnN0YWxsZWQuICBJdAo+ICAgICAgICAgaXMgb25seSBtZW50aW9uZWQg YXMgdGhlIG1vc3Qtc3BlY2lmaWMgbWF0Y2ggaW4gdmV4cHJlc3MtdjJwLQo+ICAgICAgICAgY2E5 LmR0cwo+IAo+ICAgICAgICAgU2luY2UgaXQncyBpbnRlbmRlZCB0aGF0IHRoZSBtb3RoZXJib2Fy ZCBjb2RlIHNob3VsZCBiZSBmdWxseQo+ICAgICAgICAgZ2VuZXJpYywgYW5kIGJlY2F1c2Ugbm8g b3RoZXIgY29yZSB0aWxlcyBhcmUgdXBzdHJlYW0geWV0LAo+ICAgICAgICAgcGVyaGFwcyB3ZSBj YW4gZ2V0IHJpZCBvZiB0aGlzIGJpbmRpbmcgcmlnaHQgYXdheS4KPiAKPiAgICAgICAqIGVkaWQg LS0gSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGhhdmUgYSBmYWlybHkgZ2VuZXJpYyBiaW5kaW5n Cj4gICAgICAgICBmb3IgRURJRCBpbnRlcmZhY2VzLCBidXQgbm9uZSBzZWVtcyB0byBleGlzdCB5 ZXQuICBEaXNjdXNzaW9uCj4gICAgICAgICBpcyBuZWVkZWQgcmVnYXJkaW5nIHdoYXQgZm9ybSB0 aGlzIHNob3VsZCB0YWtlLgo+IAo+ICAgICAgICAgVGhpcyBtaWdodCBtb3JlIGFwcHJvcHJpYXRl bHkgYmUgY2FsbGVkICJkZGMiIChvciBzb21lCj4gICAgICAgICB2YXJpYXRpb24gb24gdGhhdCks IHNpbmNlIEVESUQgc2VlbXMgb25seSB0byBkZXNjcmliZSB0aGUKPiAgICAgICAgIGZvcm1hdCBv ZiB0aGUgSUQgZGF0YSByZXRyaWV2YWJsZSB2aWEgdGhpcyBpbnRlcmZhY2U7IG5vdCB0aGUKPiAg ICAgICAgIGludGVyZmFjZSBpdHNlbGYuCj4gCj4gICAgICAgKiBhcm0sdmV4cHJlc3MtZmxhc2gg LS0gTmVlZGVkIGJlY2F1c2Ugb2YgdGhlIHJlcXVpcmVtZW50IHRvCj4gICAgICAgICBwcm92aWRl IHRoZSBwaHlzbWFwX2ZsYXNoIGRyaXZlciB3aXRoIGEgc3BlY2lhbCAuc2V0X3ZwcAo+ICAgICAg ICAgaGFuZGxlci4KPiAKPiAgICAgICAqIGlkdCw4OWhwZXMzMmg4IC0tIFRoaXMgaXMgdGhlIElE VCA4OUhQRVMzMkg4IFBDSSBleHByZXNzCj4gICAgICAgICBpbnRlcmNvbm5lY3Qgc3dpdGNoLiAg VGhpcyBpc24ndCBuZWVkZWQgZm9yIHRoZSBWZXJzYXRpbGUKPiAgICAgICAgIEV4cHJlc3MgdG8g d29yaywgYnV0IHdvdWxkIGJlIG5lZWRlZCBpZiB1c2luZyBQQ0ktZSBwZXJpcGhlcmFscwo+ICAg ICAgICAgZm9yIHJlYWwuICBJIGV4cGVjdCB0aGF0IG1vcmUgZHJpdmVyIHN1cHBvcnQgbmVlZHMg dG8gZ28KPiAgICAgICAgIHVwc3RyZWFtIGJlZm9yZSB0aGlzIGlzIGFjdHVhbGx5IHVzYWJsZS4K PiAKPiAgICAgICAqIG54cCxpc3AxNzYxIC0tIFRoZSBkcml2ZXIgc3VwcG9ydCBmb3IgdGhpcyBp cyBhbHJlYWR5IHVwc3RyZWFtCj4gICAgICAgICAod2l0aCBzb21lIG1pbm9yIGlzc3VlcyBmb3Ig QVJNIHN1cHBvcnQpLgo+IAo+ICAgICAgICogYXJtLGFtYmEtYnVzIC0tIHdpZGVseSB1c2VkIGJ5 IG90aGVyIGJvYXJkcyBhbmQgcGF0Y2hzZXRzLCBidXQKPiAgICAgICAgIHNlZW1zIG5vdCB0byBi ZSBkb2N1bWVudGVkLgo+IAoKVGhpcyBzaG91bGQgYmUgZHJvcHBlZC4gVGhlcmUncyBub3QgcmVh bGx5IGFueSBidXMgY29tcG9uZW50IHRvIGFuIGFtYmEKYnVzLiBBbGwgdGhlIHByb2JpbmcgaW5m byBpcyB3aXRoaW4gdGhlIHByaW1lY2VsbCBwZXJpcGhlcmFscy4KCj4gICAgICAgKiBUaGUgZm9s bG93aW5nIGJpbmRpbmdzIGZvciBBUk0gcHJpbWVjZWxsIHBlcmlwaGVyYWxzIGFyZSB1c2VkCj4g ICAgICAgICBlbHNld2hlcmUgYnV0IG5vdCBkb2N1bWVudGVkLiAgVGhleSBzaG91bGQgYmUgcHJl dHR5IHNpbXBsZSBhbmQKPiAgICAgICAgIHVuY29udHJhdmVyc2lhbC4KPiAgICAgICAgICAgKiBh cm0scGwwMzEKPiAgICAgICAgICAgKiBhcm0scGwwNDEKPiAgICAgICAgICAgKiBhcm0scGwwNTAK PiAgICAgICAgICAgKiBhcm0scGwxODAKPiAgICAgICAgICAgKiBhcm0sc3A4MDUKPiAKClBsdXMg cGwwMTEsIHBsMDEwLCBzcDgwNCwgcGwwMjIsIHBsMDYxCgo+ICAgICAgICAgUm9iIEhlcnJpbmcg c3VnZ2VzdGVkIGRvY3VtZW50aW5nIHNpbXBsZSBiaW5kaW5ncyBmb3IgdGhlc2UKPiAgICAgICAg IChhbmQgb3RoZXJzKSBhbG9uZyB3aXRoIGhpcyBpbml0aWFsIGFtYmEgZGV2aWNlIHRyZWUgcHJv YmUKPiAgICAgICAgIHBhdGNoZXMsIGJ1dCB0aGVzZSBiaW5kaW5ncyBkb24ndCBzZWVtIHRvIGJl IGRvY3VtZW50ZWQKPiAgICAgICAgIHVwc3RyZWFtIGZvciBub3cuCj4gCgpwbDMzMCB3ZW50IHRo ZSBvdGhlciByb3V0ZSB3aXRoIGEgZmlsZSBmb3IgaXRzZWxmLiBUaGF0IG1heSBiZSBiZXR0ZXIg dG8KYXZvaWQgY29uZmxpY3RzLiBCdXQgeWVzLCBBUk0gc2hvdWxkIGRvY3VtZW50IGFsbCB0aGVp ciBwZXJpcGhlcmFscy4gOykKCkknbGwgZG8gdGhlIG9uZXMgb24gaGlnaGJhbmsgaWYgeW91IHdh bnQgdG8gZG8gdGhlIHJlc3Qgb24gVkV4cC4KCj4gCj4gICAqIFNoYXduIEd1bydzIHNtc2M5MTF4 IHBhdGNoIGlzIG5lZWRlZCBmb3IgRXRoZXJuZXQgdG8gd29yay4gIFRoaXMgaXMKPiAgICAgaGVh ZGVkIHVwc3RyZWFtIGJ1dCBub3QgeWV0IGluIG1haW5saW5lLiAgSXQgaXMgYXZhaWxhYmxlIGlu IC1uZXh0Lgo+IAo+ICAgKiBNaW5vciBwYXRjaGVzIGFyZSBuZWVkZWQgdG8gdGhlIGlzcDE3NjAg YW5kIHBhdGFfZ2VuZXJpYyBkcml2ZXJzLAo+ICAgICB0byBhbGxvdyBPRi1iYXNlZCBpbml0aWFs aXNhdGlvbiBhY3Jvc3MgYSB3aWRlciBncm91cCBvZgo+ICAgICBhcmNoaXRlY3R1cmVzLiAgVGhl c2UgYXJlIGJlaW5nIGRpc2N1c3NlZCBpbmRlcGVuZGVudGx5LCBidXQgYXJlCj4gICAgIG5vdCB5 ZXQgYWNjZXB0ZWQgZm9yIG1lcmdpbmcgdXBzdHJlYW0uCj4gCj4gICAqIE1vc3QgY29yZS10aWxl IHBlcmlwaGVyYWxzIGFyZSBjdXJyZW50bHkgbm90IGRlc2NyaWJlZCBpbiB0aGUgY29yZS0KPiAg ICAgdGlsZSBkZXZpY2UgdHJlZSBmcmFnbWVudC4gIFRoaXMgaXMgYSBsb3dlci1wcmlvcml0eSBp c3N1ZSBzaW5jZQo+ICAgICB0aGUgbW90aGVyYm9hcmQgY29kZSBhbHJlYWR5IGF1dG9kZXRlY3Rz IHRoZSBjb3JlLXRpbGUgKHRob3VnaCBvbmx5Cj4gICAgIG9uZSBjb3JlLXRpbGUgaXMgZnVsbHkg dXBzdHJlYW0gYXQgdGhlIG1vbWVudCkuCj4gCj4gICAqIFN0YXRpYyBwZXJpcGhlcmFsIG1hcHBp bmdzIGFyZSBub3QgeWV0IGhhbmRsZWQgaW4gYSBnZW5lcmljIHdheSBpbgo+ICAgICB0aGUgYm9h cmQgc3VwcG9ydCBjb2RlLiAgVGhpcyBpcyBhIHByZXJlcXVpc2l0ZSBmb3Igc3VwcG9ydGluZwo+ ICAgICBtdWx0aXBsZSBjb3JlLXRpbGVzIGludCB0aGUgc2FtZSBrZXJuZWwuICBJdCB3ZWxsIG5l ZWQgdG8gZ2V0IGZpeGVkCj4gICAgIGxhdGVyLCB3aGVuIGV4dHJhIGNvcmUgdGlsZSBzdXBwb3J0 IGlzIG1lcmdlZCAob3IgYmVmb3JlKS4KPiAKPiAgICAgUGF3ZcWCIE1vbGwgaXMgbG9va2luZyBp bnRvIHRoaXMgc2VwYXJhdGVseS4KPiAKPiAgICogVGhlIEtjb25maWcgbG9naWMgZm9yIGVuc3Vy aW5nIHRoYXQgYXQgbGVhc3Qgb25lIGJvb3QgcHJvdG9jb2wgYW5kCj4gICAgIGF0IGxlYXN0IG9u ZSBjb3JlIHRpbGUgYXJlIHNlbGVjdGVkIGlzIGEgYml0IHVnbHkuICBTdWdnZXN0aW9ucyBmb3IK PiAgICAgaW1wcm92aW5nIHRoaXMgYXJlIGNlcnRhaW5seSB3ZWxjb21lLgo+IAo+ICBhcmNoL2Fy bS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgYXJjaC9hcm0v Ym9vdC9kdHMvdmV4cHJlc3MtdjJtLWxlZ2FjeS5kdHNpIHwgIDE2MyArKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gIGFyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTkuZHRzICAg ICB8ICAgODAgKysrKysrKysrKysrKysKPiAgYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZj b25maWcgICAgICAgIHwgICAgMSArCj4gIGFyY2gvYXJtL21hY2gtdmV4cHJlc3MvS2NvbmZpZyAg ICAgICAgICAgICB8ICAgNDUgKysrKysrKystCj4gIGFyY2gvYXJtL21hY2gtdmV4cHJlc3MvY3Qt Y2E5eDQuYyAgICAgICAgICB8ICAgIDcgKysKPiAgYXJjaC9hcm0vbWFjaC12ZXhwcmVzcy92Mm0u YyAgICAgICAgICAgICAgIHwgICA1NCArKysrKysrKystCj4gIDcgZmlsZXMgY2hhbmdlZCwgMzQ5 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNo L2FybS9ib290L2R0cy92ZXhwcmVzcy12Mm0tbGVnYWN5LmR0c2kKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGFyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTkuZHRzCj4gCj4gZGlmZiAtLWdp dCBhL2FyY2gvYXJtL0tjb25maWcgYi9hcmNoL2FybS9LY29uZmlnCj4gaW5kZXggNWViYzVkOS4u YTZlOTBkNSAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybS9LY29uZmlnCj4gKysrIGIvYXJjaC9hcm0v S2NvbmZpZwo+IEBAIC0yODIsNiArMjgyLDcgQEAgY29uZmlnIEFSQ0hfVkVSU0FUSUxFCj4gIAo+ ICBjb25maWcgQVJDSF9WRVhQUkVTUwo+ICAJYm9vbCAiQVJNIEx0ZC4gVmVyc2F0aWxlIEV4cHJl c3MgZmFtaWx5Igo+ICsJc2VsZWN0IEFSQ0hfVkVYUFJFU1NfU0FORV9DT05GSUcKPiAgCXNlbGVj dCBBUkNIX1dBTlRfT1BUSU9OQUxfR1BJT0xJQgo+ICAJc2VsZWN0IEFSTV9BTUJBCj4gIAlzZWxl Y3QgQVJNX1RJTUVSX1NQODA0Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHBy ZXNzLXYybS1sZWdhY3kuZHRzaSBiL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYybS1sZWdh Y3kuZHRzaQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZmQ2ZTRlNAo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9hcmNoL2FybS9ib290L2R0cy92ZXhwcmVzcy12Mm0tbGVn YWN5LmR0c2kKPiBAQCAtMCwwICsxLDE2MyBAQAo+ICsvLyBBUk0gTHRkLiBWZXJzYXRpbGUgRXhw cmVzcyBNb3RoZXJib2FyZCBWMk0tUDEgKEhCSS0wMTkwRCkKPiArLy8gTGVnYWN5IG1lbW9yeSBt YXAKCk5vdCBzdXJlLCBidXQgQysrIHN0eWxlIGNvbW1lbnRzIGFyZSBwcm9iYWJseSBmcm93bmVk IHVwb24gaW4gZHRzIHRvby4KCj4gKwo+ICsvIHsKPiArCWFsaWFzZXMgewo+ICsJCXNlcmlhbDAg PSAmdWFydDA7Cj4gKwkJc2VyaWFsMSA9ICZ1YXJ0MTsKPiArCQlzZXJpYWwyID0gJnVhcnQyOwo+ ICsJCXNlcmlhbDMgPSAmdWFydDM7Cj4gKwkJaTJjMCA9ICZpMmMwOwo+ICsJCWkyYzEgPSAmaTJj MTsKPiArCX07Cj4gKwo+ICsJbW90aGVyYm9hcmQgewo+ICsJCWNvbXBhdGlibGUgPSAic2ltcGxl LWJ1cyI7Cj4gKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47IC8vIFNNQiBjaGlwc2VsZWN0IG51bWJl ciBhbmQgb2Zmc2V0Cj4gKwkJI3NpemUtY2VsbHMgPSA8MT47Cj4gKwkJI2ludGVycnVwdC1jZWxs cyA9IDwxPjsKPiArCj4gKwkJZmxhc2hAMCwwMDAwMDAwMCB7Cj4gKwkJCWNvbXBhdGlibGUgPSAi YXJtLHZleHByZXNzLWZsYXNoIiwgImNmaS1mbGFzaCI7Cj4gKwkJCXJlZyA9IDwwIDB4MDAwMDAw MDAgMHgwNDAwMDAwMAo+ICsJCQkgICAgICAgMSAweDAwMDAwMDAwIDB4MDQwMDAwMDA+Owo+ICsJ CQliYW5rLXdpZHRoID0gPDQ+Owo+ICsJCX07Cj4gKwo+ICsJCXBzcmFtQDIsMDAwMDAwMDAgewo+ ICsJCQljb21wYXRpYmxlID0gIm10ZC1yYW0iOwo+ICsJCQlyZWcgPSA8MiAweDAwMDAwMDAwIDB4 MDIwMDAwMDA+Owo+ICsJCQliYW5rLXdpZHRoID0gPDQ+Owo+ICsJCX07Cj4gKwo+ICsJCWV0aGVy bmV0QDMsMDIwMDAwMDAgewo+ICsJCQljb21wYXRpYmxlID0gInNtc2MsbGFuOTExOCIsICJzbXNj LGxhbjkxMTUiOwo+ICsJCQlyZWcgPSA8MyAweDAyMDAwMDAwIDB4MTAwMDA+Owo+ICsJCQlyZWct aW8td2lkdGggPSA8ND47Cj4gKwkJCWludGVycnVwdHMgPSA8MTU+Owo+ICsJCQlzbXNjLGlycS1h Y3RpdmUtaGlnaDsKPiArCQkJc21zYyxpcnEtcHVzaC1wdWxsOwo+ICsJCX07Cj4gKwo+ICsJCXVz YkAzLDAzMDAwMDAwIHsKPiArCQkJY29tcGF0aWJsZSA9ICJueHAsdXNiLWlzcDE3NjEiOwo+ICsJ CQlyZWcgPSA8MyAweDAzMDAwMDAwIDB4MjAwMDA+Owo+ICsJCQlpbnRlcnJ1cHRzID0gPDE2PjsK PiArCQkJcG9ydDEtb3RnOwo+ICsJCX07Cj4gKwo+ICsJCXBlcmlwaGVyYWxzQDcsMDAwMDAwMDAg ewo+ICsJCQljb21wYXRpYmxlID0gImFybSxhbWJhLWJ1cyIsICJzaW1wbGUtYnVzIjsKPiArCQkJ I2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJCSNzaXplLWNlbGxzID0gPDE+Owo+ICsJCQlyYW5n ZXMgPSA8MCA3IDAgMHgyMDAwMD47Cj4gKwo+ICsJCQkvLyBQQ0ktRSBJMkMgYnVzCj4gKwkJCWky YzA6IGkyY0AwMjAwMCB7Cj4gKwkJCQljb21wYXRpYmxlID0gImFybSx2ZXJzYXRpbGUtaTJjIjsK PiArCQkJCXJlZyA9IDwweDAyMDAwIDB4MTAwMD47Cj4gKwo+ICsJCQkJI2FkZHJlc3MtY2VsbHMg PSA8MT47Cj4gKwkJCQkjc2l6ZS1jZWxscyA9IDwwPjsKPiArCj4gKwkJCQlwY2llLXN3aXRjaEA2 MCB7Cj4gKwkJCQkJY29tcGF0aWJsZSA9ICJpZHQsODlocGVzMzJoOCI7Cj4gKwkJCQkJcmVnID0g PDB4NjA+Owo+ICsJCQkJfTsKPiArCQkJfTsKPiArCj4gKwkJCWFhY2lAMDQwMDAgewo+ICsJCQkJ Y29tcGF0aWJsZSA9ICJhcm0scGwwNDEiLCAiYXJtLHByaW1lY2VsbCI7Cj4gKwkJCQlyZWcgPSA8 MHgwNDAwMCAweDEwMDA+Owo+ICsJCQkJaW50ZXJydXB0cyA9IDwxMT47Cj4gKwkJCX07Cj4gKwo+ ICsJCQltbWNpQDA1MDAwIHsKPiArCQkJCWNvbXBhdGlibGUgPSAiYXJtLHBsMTgwIiwgImFybSxw cmltZWNlbGwiOwo+ICsJCQkJcmVnID0gPDB4MDUwMDAgMHgxMDAwPjsKPiArCQkJCWludGVycnVw dHMgPSA8OSAxMD47Cj4gKwkJCX07Cj4gKwo+ICsJCQlrbWlAMDYwMDAgewo+ICsJCQkJY29tcGF0 aWJsZSA9ICJhcm0scGwwNTAiLCAiYXJtLHByaW1lY2VsbCI7Cj4gKwkJCQlyZWcgPSA8MHgwNjAw MCAweDEwMDA+Owo+ICsJCQkJaW50ZXJydXB0cyA9IDwxMj47Cj4gKwkJCX07Cj4gKwo+ICsJCQlr bWlAMDcwMDAgewo+ICsJCQkJY29tcGF0aWJsZSA9ICJhcm0scGwwNTAiLCAiYXJtLHByaW1lY2Vs bCI7Cj4gKwkJCQlyZWcgPSA8MHgwNzAwMCAweDEwMDA+Owo+ICsJCQkJaW50ZXJydXB0cyA9IDwx Mz47Cj4gKwkJCX07Cj4gKwo+ICsJCQl1YXJ0MDogdWFydEAwOTAwMCB7Cj4gKwkJCQljb21wYXRp YmxlID0gImFybSxwbDAxMSIsICJhcm0scHJpbWVjZWxsIjsKPiArCQkJCXJlZyA9IDwweDA5MDAw IDB4MTAwMD47Cj4gKwkJCQlpbnRlcnJ1cHRzID0gPDU+Owo+ICsJCQl9Owo+ICsKPiArCQkJdWFy dDE6IHVhcnRAMGEwMDAgewo+ICsJCQkJY29tcGF0aWJsZSA9ICJhcm0scGwwMTEiLCAiYXJtLHBy aW1lY2VsbCI7Cj4gKwkJCQlyZWcgPSA8MHgwYTAwMCAweDEwMDA+Owo+ICsJCQkJaW50ZXJydXB0 cyA9IDw2PjsKPiArCQkJfTsKPiArCj4gKwkJCXVhcnQyOiB1YXJ0QDBiMDAwIHsKPiArCQkJCWNv bXBhdGlibGUgPSAiYXJtLHBsMDExIiwgImFybSxwcmltZWNlbGwiOwo+ICsJCQkJcmVnID0gPDB4 MGIwMDAgMHgxMDAwPjsKPiArCQkJCWludGVycnVwdHMgPSA8Nz47Cj4gKwkJCX07Cj4gKwo+ICsJ CQl1YXJ0MzogdWFydEAwYzAwMCB7Cj4gKwkJCQljb21wYXRpYmxlID0gImFybSxwbDAxMSIsICJh cm0scHJpbWVjZWxsIjsKPiArCQkJCXJlZyA9IDwweDBjMDAwIDB4MTAwMD47Cj4gKwkJCQlpbnRl cnJ1cHRzID0gPDg+Owo+ICsJCQl9Owo+ICsKPiArCQkJd2R0QDBmMDAwIHsKPiArCQkJCWNvbXBh dGlibGUgPSAiYXJtLHNwODA1IiwgImFybSxwcmltZWNlbGwiOwo+ICsJCQkJcmVnID0gPDB4MGYw MDAgMHgxMDAwPjsKPiArCQkJCWludGVycnVwdHMgPSA8MD47Cj4gKwkJCX07Cj4gKwo+ICsJCQkv LyBUaW1lciBpbml0IGlzIGhhcmRjb2RlZCBpbiB2Mm1fdGltZXJfaW5pdCgpLCBmb3Igbm93Lgo+ ICsJCQkvLyB0aW1lckAxMTAwMCB7Cj4gKwkJCS8vCWNvbXBhdGlibGUgPSAiYXJtLGFybS1zcDgw NCI7Cgphcm0sc3A4MDQgaXMgbW9yZSBjb25zaXN0ZW50LiBJIGJlbGlldmUgdGhlIHNwODA0IGRv ZXMgaGF2ZSB0aGUgcGVyaXBoaWQKcmVnaXN0ZXJzLCBzbyBhcm0scHJpbWVjZWxsIHNob3VsZCBh bHNvIGJlIGFkZGVkLgoKPiArCQkJLy8JcmVnID0gPDB4MTEwMDAgMHgxMDAwPjsKPiArCQkJLy8J aW50ZXJydXB0cyA9IDwyPjsKPiArCQkJLy8gfTsKPiArCj4gKwkJCS8vIHRpbWVyQDEyMDAwIHsK PiArCQkJLy8JY29tcGF0aWJsZSA9ICJhcm0sYXJtLXNwODA0IjsKPiArCQkJLy8JcmVnID0gPDB4 MTIwMDAgMHgxMDAwPjsKPiArCQkJLy8gfTsKCkp1c3QgYmVjYXVzZSBMaW51eCBpcyBub3QgdXNp bmcgaXQsIGRvZXNuJ3QgbWVhbiB5b3Ugc2hvdWxkIGNvbW1lbnQgaXQgb3V0LgoKPiArCj4gKwkJ CS8vIERWSSBJMkMgYnVzIChEREMpCj4gKwkJCWkyYzE6IGkyY0AxNjAwMCB7Cj4gKwkJCQljb21w YXRpYmxlID0gImFybSx2ZXJzYXRpbGUtaTJjIjsKPiArCQkJCXJlZyA9IDwweDE2MDAwIDB4MTAw MD47Cj4gKwo+ICsJCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJCQkjc2l6ZS1jZWxscyA9 IDwwPjsKPiArCj4gKwkJCQllZGlkQDUwIHsKPiArCQkJCQljb21wYXRpYmxlID0gImVkaWQiOwo+ ICsJCQkJCXJlZyA9IDwweDUwPjsKPiArCQkJCX07Cj4gKwkJCX07Cj4gKwo+ICsJCQlydGNAMTcw MDAgewo+ICsJCQkJY29tcGF0aWJsZSA9ICJhcm0scGwwMzEiLCAiYXJtLHByaW1lY2VsbCI7Cj4g KwkJCQlyZWcgPSA8MHgwMTcwMDAgMHgxMDAwPjsKPiArCQkJCWludGVycnVwdHMgPSA8ND47Cj4g KwkJCX07Cj4gKwo+ICsJCQljb21wYWN0LWZsYXNoQDFhMDAwIHsKPiArCQkJCWNvbXBhdGlibGUg PSAiYXRhLWdlbmVyaWMiOwo+ICsJCQkJcmVnID0gPDB4MWEwMDAgMHgxMDAKPiArCQkJCSAgICAg ICAweDFhMTAwIDB4ZjAwPjsKPiArCQkJCXJlZy1zaGlmdCA9IDwyPjsKPiArCQkJfTsKPiArCQl9 Owo+ICsJfTsKPiArfTsKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3Mt djJwLWNhOS5kdHMgYi9hcmNoL2FybS9ib290L2R0cy92ZXhwcmVzcy12MnAtY2E5LmR0cwo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMDU5YmU5Nwo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9hcmNoL2FybS9ib290L2R0cy92ZXhwcmVzcy12MnAtY2E5LmR0cwo+IEBAIC0w LDAgKzEsODAgQEAKPiArLy8gQVJNIEx0ZC4gVmVyc2F0aWxlIEV4cHJlc3MgQ29yZXgtQTkgKFF1 YWQgQ29yZSkgQ29yZSBUaWxlIFYyUC1DQTkgKEhCSS0wMTkxQikKPiArCj4gKy9kdHMtdjEvOwo+ ICsKPiArL2luY2x1ZGUvICJza2VsZXRvbi5kdHNpIgo+ICsKPiArLyB7Cj4gKwltb2RlbCA9ICJB Uk0gVmVyc2F0aWxlIEV4cHJlc3MgKENvcnRleC1BOSBRdWFkIENvcmUgVGlsZSkiOwo+ICsJY29t cGF0aWJsZSA9ICJhcm0sdmV4cHJlc3MtdjJwLWNhOSIsICJhcm0sdmV4cHJlc3MiOwo+ICsJaW50 ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47Cj4gKwo+ICsJbWVtb3J5IHsKPiArCQlkZXZpY2VfdHlw ZSA9ICJtZW1vcnkiOwo+ICsJCXJlZyA9IDwweDYwMDAwMDAwIDB4NDAwMDAwMDA+Owo+ICsJfTsK PiArCj4gKwlpbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxlckAxZTAwMTAwMCB7Cj4gKwkJY29tcGF0 aWJsZSA9ICJhcm0sY29ydGV4LWE5LWdpYyI7Cj4gKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsK PiArCQkjYWRkcmVzcy1jZWxscyA9IDwwPjsKPiArCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKPiAr CQlyZWcgPSA8MHgxZTAwMTAwMCAweDEwMDA+LAo+ICsJCSAgICAgIDwweDFlMDAwMTAwIDB4MTAw PjsKPiArCX07CgpJcyB0aGlzIHJlYWxseSBhbGwgYnkgaXRzZWxmPyBJdCBzaG91bGQgYmUgaW4g dGhlIHN1Yi10cmVlIG9mIHRoZQphcHByb3ByaWF0ZSBidXMuCgpZb3UgbmVlZCBhbiAiaW50ZXJy dXB0LXBhcmVudDsiIGxpbmUgc28gdGhlIHBhcmVudCBpcyBub3QgaXRzZWxmLgoKPiArCj4gKwlt b3RoZXJib2FyZCB7Cj4gKwkJcmFuZ2VzID0gPDAgMCAweDQwMDAwMDAwIDB4MDQwMDAwMDAKPiAr CQkJICAxIDAgMHg0NDAwMDAwMCAweDA0MDAwMDAwCj4gKwkJCSAgMiAwIDB4NDgwMDAwMDAgMHgw NDAwMDAwMAo+ICsJCQkgIDMgMCAweDRjMDAwMDAwIDB4MDQwMDAwMDAKPiArCQkJICA3IDAgMHgx MDAwMDAwMCAweDAwMDIwMDAwPjsKPiArCj4gKwkJaW50ZXJydXB0LW1hcC1tYXNrID0gPDAgMCA2 Mz47Cj4gKwkJaW50ZXJydXB0LW1hcCA9IDwwIDAgMCAmaW50YyAzMiA4Cj4gKwkJCQkgMCAwIDEg JmludGMgMzMgNAo+ICsJCQkJIDAgMCAyICZpbnRjIDM0IDQKPiArCQkJCSAwIDAgMyAmaW50YyAz NSA0Cj4gKwkJCQkgMCAwIDQgJmludGMgMzYgNAo+ICsJCQkJIDAgMCA1ICZpbnRjIDM3IDQKPiAr CQkJCSAwIDAgNiAmaW50YyAzOCA0Cj4gKwkJCQkgMCAwIDcgJmludGMgMzkgNAo+ICsJCQkJIDAg MCA4ICZpbnRjIDQwIDQKPiArCQkJCSAwIDAgOSAmaW50YyA0MSA0Cj4gKwkJCQkgMCAwIDEwICZp bnRjIDQyIDQKPiArCQkJCSAwIDAgMTEgJmludGMgNDMgNAo+ICsJCQkJIDAgMCAxMiAmaW50YyA0 NCA0Cj4gKwkJCQkgMCAwIDEzICZpbnRjIDQ1IDQKPiArCQkJCSAwIDAgMTQgJmludGMgNDYgNAo+ ICsJCQkJIDAgMCAxNSAmaW50YyA0NyA0Cj4gKwkJCQkgMCAwIDE2ICZpbnRjIDQ4IDQKPiArCQkJ CSAwIDAgMTcgJmludGMgNDkgNAo+ICsJCQkJIDAgMCAxOCAmaW50YyA1MCA0Cj4gKwkJCQkgMCAw IDE5ICZpbnRjIDUxIDQKPiArCQkJCSAwIDAgMjAgJmludGMgNTIgNAo+ICsJCQkJIDAgMCAyMSAm aW50YyA1MyA0Cj4gKwkJCQkgMCAwIDIyICZpbnRjIDU0IDQKPiArCQkJCSAwIDAgMjMgJmludGMg NTUgNAo+ICsJCQkJIDAgMCAyNCAmaW50YyA1NiA0Cj4gKwkJCQkgMCAwIDI1ICZpbnRjIDU3IDQK PiArCQkJCSAwIDAgMjYgJmludGMgNTggNAo+ICsJCQkJIDAgMCAyNyAmaW50YyA1OSA0Cj4gKwkJ CQkgMCAwIDI4ICZpbnRjIDYwIDQKPiArCQkJCSAwIDAgMjkgJmludGMgNjEgNAo+ICsJCQkJIDAg MCAzMCAmaW50YyA2MiA0Cj4gKwkJCQkgMCAwIDMxICZpbnRjIDYzIDQKPiArCQkJCSAwIDAgMzIg JmludGMgNjQgNAo+ICsJCQkJIDAgMCAzMyAmaW50YyA2NSA0Cj4gKwkJCQkgMCAwIDM0ICZpbnRj IDY2IDQKPiArCQkJCSAwIDAgMzUgJmludGMgNjcgNAo+ICsJCQkJIDAgMCAzNiAmaW50YyA2OCA0 Cj4gKwkJCQkgMCAwIDM3ICZpbnRjIDY5IDQKPiArCQkJCSAwIDAgMzggJmludGMgNzAgNAo+ICsJ CQkJIDAgMCAzOSAmaW50YyA3MSA0Cj4gKwkJCQkgMCAwIDQwICZpbnRjIDcyIDQKPiArCQkJCSAw IDAgNDEgJmludGMgNzMgNAo+ICsJCQkJIDAgMCA0MiAmaW50YyA3NCA0PjsKPiArCX07Cj4gK307 Cj4gKwo+ICsvaW5jbHVkZS8gInZleHByZXNzLXYybS1sZWdhY3kuZHRzaSIKPiBkaWZmIC0tZ2l0 IGEvYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdz L3ZleHByZXNzX2RlZmNvbmZpZwo+IGluZGV4IGYyZGU1MWYuLjZjM2M1ZjYgMTAwNjQ0Cj4gLS0t IGEvYXJjaC9hcm0vY29uZmlncy92ZXhwcmVzc19kZWZjb25maWcKPiArKysgYi9hcmNoL2FybS9j b25maWdzL3ZleHByZXNzX2RlZmNvbmZpZwo+IEBAIC0yMiw2ICsyMiw3IEBAIENPTkZJR19NT0RV TEVfVU5MT0FEPXkKPiAgIyBDT05GSUdfSU9TQ0hFRF9ERUFETElORSBpcyBub3Qgc2V0Cj4gICMg Q09ORklHX0lPU0NIRURfQ0ZRIGlzIG5vdCBzZXQKPiAgQ09ORklHX0FSQ0hfVkVYUFJFU1M9eQo+ ICtDT05GSUdfQVJDSF9WRVhQUkVTU19BVEFHUz15Cj4gIENPTkZJR19BUkNIX1ZFWFBSRVNTX0NB OVg0PXkKPiAgIyBDT05GSUdfU1dQX0VNVUxBVEUgaXMgbm90IHNldAo+ICBDT05GSUdfU01QPXkK PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC12ZXhwcmVzcy9LY29uZmlnIGIvYXJjaC9hcm0v bWFjaC12ZXhwcmVzcy9LY29uZmlnCj4gaW5kZXggOTMxMTQ4NC4uZWE2NDYzMCAxMDA2NDQKPiAt LS0gYS9hcmNoL2FybS9tYWNoLXZleHByZXNzL0tjb25maWcKPiArKysgYi9hcmNoL2FybS9tYWNo LXZleHByZXNzL0tjb25maWcKPiBAQCAtMSwxMiArMSw1NSBAQAo+ICBtZW51ICJWZXJzYXRpbGUg RXhwcmVzcyBwbGF0Zm9ybSB0eXBlIgo+ICAJZGVwZW5kcyBvbiBBUkNIX1ZFWFBSRVNTCj4gIAo+ ICsjIEFSQ0hfVkVYUFJFU1MgZW5zdXJlcyBhIHNhbmUgbWluaW1hbCBjb25maWcgaXMgc2VsZWN0 ZWQgYnkgc2VsZWN0aW5nCj4gKyMgQVJDSF9WRVhQUkVTU19TQU5FX0NPTkZJRy4KPiArIyBFeHRl bmQgdGhlIGxvZ2ljIGhlcmUgd2hlbiBhZGRpbmcgbmV3IGNvcmUgdGlsZXMuCj4gKwo+ICtjb25m aWcgQVJDSF9WRVhQUkVTU19TQU5FX0NPTkZJRwo+ICsJYm9vbAo+ICsJc2VsZWN0IEFSQ0hfVkVY UFJFU1NfQ0E5WDQKPiArCXNlbGVjdCBBUkNIX1ZFWFBSRVNTX0FUQUdTIGlmICFBUkNIX1ZFWFBS RVNTX0RUCj4gKwo+ICsKPiArY29tbWVudCAiQXQgbGVhc3Qgb25lIGJvb3QgdHlwZSBtdXN0IGJl IHNlbGVjdGVkIgo+ICsKPiArY29uZmlnIEFSQ0hfVkVYUFJFU1NfQVRBR1MKPiArCWJvb2wgIkJv b3QgdmlhIEFUQUdzIgo+ICsJZGVmYXVsdCB5Cj4gKwloZWxwCj4gKwkgIFRoaXMgb3B0aW9uIGVu YWJsZXMgc3VwcG9ydCBmb3IgdGhlIGJvYXJkIHVzaW5nIHRoZSBzdGFuZGFyZAo+ICsJICBBVEFH cyBib290IHByb3RvY29sLgo+ICsKPiArCSAgSWYgeW91ciBib290bG9hZGVyIHN1cHBvcnRzIEZE VC1iYXNlZCBib290aW5nIGFuZCB5b3UgZG8gbm90Cj4gKwkgIGludGVuZCBldmVyIHRvIGJvb3Qg dmlhIHRoZSB0cmFkaXRpb25hbCBBVEFHcyBtZXRob2QsIHlvdSBjYW4gc2F5Cj4gKwkgIE4gaGVy ZS4KPiArCj4gK2NvbmZpZyBBUkNIX1ZFWFBSRVNTX0RUCj4gKwlib29sICJCb290IHZpYSBEZXZp Y2UgVHJlZSIKPiArCXNlbGVjdCBVU0VfT0YKPiArCWhlbHAKPiArCSAgVGhpcyBvcHRpb24gZW5h YmxlcyBzdXBwb3J0IGZvciB0aGUgYm9hcmQsIGFuZCBlbmFibGVzIGJvb3RpbmcKPiArCSAgdmlh IGEgRmxhdHRlbmVkIERldmljZSBUcmVlIHByb3ZpZGVkIGJ5IHRoZSBib290bG9hZGVyLgo+ICsK PiArCSAgSWYgeW91ciBib290bG9hZGVyIHN1cHBvcnRzIEZEVC1iYXNlZCBib290aW5nLCB5b3Ug Y2FuIHNheSBZCj4gKwkgIGhlcmUsIG90aGVyd2lzZSwgc2F5IE4uCj4gKwo+ICsKPiArIyBDb3Jl IFRpbGUgc3VwcG9ydCBvcHRpb25zCj4gKwo+ICtjb21tZW50ICJBdCBsZWFzdCBvbmUgY29yZSB0 aWxlIG11c3QgYmUgc2VsZWN0ZWQiCj4gKwo+ICBjb25maWcgQVJDSF9WRVhQUkVTU19DQTlYNAo+ IC0JYm9vbCAiVmVyc2F0aWxlIEV4cHJlc3MgQ29ydGV4LUE5eDQgdGlsZSIKPiArCWJvb2wgIlZl cnNhdGlsZSBFeHByZXNzIENvcnRleC1BOXg0IENvcmUgVGlsZSIKPiArCWRlZmF1bHQgeQo+ICAJ c2VsZWN0IENQVV9WNwo+ICAJc2VsZWN0IEFSTV9HSUMKPiAgCXNlbGVjdCBBUk1fRVJSQVRBXzcy MDc4OQo+ICAJc2VsZWN0IEFSTV9FUlJBVEFfNzUxNDcyCj4gIAlzZWxlY3QgQVJNX0VSUkFUQV83 NTM5NzAKPiArCWhlbHAKPiArCSAgSW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgQ29ydGV4LUE5eDQg Q29yZSBUaWxlIChIQkktMDE5MUIpLgo+ICsKPiArCSAgSWYgdW5zdXJlLCBzYXkgWS4KPiAgCj4g IGVuZG1lbnUKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC12ZXhwcmVzcy9jdC1jYTl4NC5j IGIvYXJjaC9hcm0vbWFjaC12ZXhwcmVzcy9jdC1jYTl4NC5jCj4gaW5kZXggYmZkMzJmNS4uZTJm ZTJjOSAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybS9tYWNoLXZleHByZXNzL2N0LWNhOXg0LmMKPiAr KysgYi9hcmNoL2FybS9tYWNoLXZleHByZXNzL2N0LWNhOXg0LmMKPiBAQCAtOSw2ICs5LDcgQEAK PiAgI2luY2x1ZGUgPGxpbnV4L2FtYmEvYnVzLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9hbWJhL2Ns Y2QuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2Nsa2Rldi5oPgo+ICsjaW5jbHVkZSA8bGludXgvaXJx ZG9tYWluLmg+Cj4gIAo+ICAjaW5jbHVkZSA8YXNtL2hhcmR3YXJlL2FybV90aW1lci5oPgo+ICAj aW5jbHVkZSA8YXNtL2hhcmR3YXJlL2NhY2hlLWwyeDAuaD4KPiBAQCAtNTksMTAgKzYwLDE2IEBA IHN0YXRpYyB2b2lkIF9faW5pdCBjdF9jYTl4NF9tYXBfaW8odm9pZCkKPiAgCWlvdGFibGVfaW5p dChjdF9jYTl4NF9pb19kZXNjLCBBUlJBWV9TSVpFKGN0X2NhOXg0X2lvX2Rlc2MpKTsKPiAgfQo+ ICAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2ljX29mX21hdGNoW10gX19p bml0Y29uc3QgPSB7Cj4gKwl7IC5jb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTktZ2ljIiwgfSwK PiArCXt9Cj4gK307Cj4gKwo+ICBzdGF0aWMgdm9pZCBfX2luaXQgY3RfY2E5eDRfaW5pdF9pcnEo dm9pZCkKPiAgewo+ICAJZ2ljX2luaXQoMCwgMjksIE1NSU9fUDJWKEE5X01QQ09SRV9HSUNfRElT VCksCj4gIAkJIE1NSU9fUDJWKEE5X01QQ09SRV9HSUNfQ1BVKSk7Cj4gKwlpcnFfZG9tYWluX2dl bmVyYXRlX3NpbXBsZShnaWNfb2ZfbWF0Y2gsIEE5X01QQ09SRV9HSUNfRElTVCwgMCk7Cj4gIH0K PiAgCj4gICNpZiAwCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtdmV4cHJlc3MvdjJtLmMg Yi9hcmNoL2FybS9tYWNoLXZleHByZXNzL3YybS5jCj4gaW5kZXggOWU2YjkzYi4uNmRlZmNlNiAx MDA2NDQKPiAtLS0gYS9hcmNoL2FybS9tYWNoLXZleHByZXNzL3YybS5jCj4gKysrIGIvYXJjaC9h cm0vbWFjaC12ZXhwcmVzcy92Mm0uYwo+IEBAIC02LDYgKzYsOCBAQAo+ICAjaW5jbHVkZSA8bGlu dXgvYW1iYS9tbWNpLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9pby5oPgo+ICAjaW5jbHVkZSA8bGlu dXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9vZl9wbGF0Zm9ybS5oPgo+ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4g ICNpbmNsdWRlIDxsaW51eC9hdGFfcGxhdGZvcm0uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3Ntc2M5 MTF4Lmg+Cj4gQEAgLTExOCw3ICsxMjAsNyBAQCBpbnQgdjJtX2NmZ19yZWFkKHUzMiBkZXZmbiwg dTMyICpkYXRhKQo+ICAJcmV0dXJuICEhKHZhbCAmIFNZU19DRkdfRVJSKTsKPiAgfQo+ICAKPiAt Cj4gKyNpZmRlZiBDT05GSUdfQVJDSF9WRVhQUkVTU19BVEFHUwo+ICBzdGF0aWMgc3RydWN0IHJl c291cmNlIHYybV9wY2llX2kyY19yZXNvdXJjZSA9IHsKPiAgCS5zdGFydAk9IFYyTV9TRVJJQUxf QlVTX1BDSSwKPiAgCS5lbmQJPSBWMk1fU0VSSUFMX0JVU19QQ0kgKyBTWl80SyAtIDEsCj4gQEAg LTIwMCw2ICsyMDIsNyBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSB2Mm1fdXNiX2Rl dmljZSA9IHsKPiAgCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRSh2Mm1fdXNiX3Jlc291cmNl cyksCj4gIAkuZGV2LnBsYXRmb3JtX2RhdGEgPSAmdjJtX3VzYl9jb25maWcsCj4gIH07Cj4gKyNl bmRpZiAvKiBDT05GSUdfQVJDSF9WRVhQUkVTU19BVEFHUyAqLwo+ICAKPiAgc3RhdGljIHZvaWQg djJtX2ZsYXNoX3NldF92cHAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IG9uKQo+ ICB7Cj4gQEAgLTIxMSw2ICsyMTQsNyBAQCBzdGF0aWMgc3RydWN0IHBoeXNtYXBfZmxhc2hfZGF0 YSB2Mm1fZmxhc2hfZGF0YSA9IHsKPiAgCS5zZXRfdnBwCT0gdjJtX2ZsYXNoX3NldF92cHAsCj4g IH07Cj4gIAo+ICsjaWZkZWYgQ09ORklHX0FSQ0hfVkVYUFJFU1NfQVRBR1MKPiAgc3RhdGljIHN0 cnVjdCByZXNvdXJjZSB2Mm1fZmxhc2hfcmVzb3VyY2VzW10gPSB7Cj4gIAl7Cj4gIAkJLnN0YXJ0 CT0gVjJNX05PUjAsCj4gQEAgLTI1NCw2ICsyNTgsNyBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3Jt X2RldmljZSB2Mm1fY2ZfZGV2aWNlID0gewo+ICAJLm51bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpF KHYybV9wYXRhX3Jlc291cmNlcyksCj4gIAkuZGV2LnBsYXRmb3JtX2RhdGEgPSAmdjJtX3BhdGFf ZGF0YSwKPiAgfTsKPiArI2VuZGlmIC8qIENPTkZJR19BUkNIX1ZFWFBSRVNTX0FUQUdTICovCj4g IAo+ICBzdGF0aWMgdW5zaWduZWQgaW50IHYybV9tbWNpX3N0YXR1cyhzdHJ1Y3QgZGV2aWNlICpk ZXYpCj4gIHsKPiBAQCAtMjY1LDYgKzI3MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbW1jaV9wbGF0Zm9y bV9kYXRhIHYybV9tbWNpX2RhdGEgPSB7Cj4gIAkuc3RhdHVzCQk9IHYybV9tbWNpX3N0YXR1cywK PiAgfTsKPiAgCj4gKyNpZmRlZiBDT05GSUdfQVJDSF9WRVhQUkVTU19BVEFHUwo+ICBzdGF0aWMg QU1CQV9ERVZJQ0UoYWFjaSwgICJtYjphYWNpIiwgIFYyTV9BQUNJLCBOVUxMKTsKPiAgc3RhdGlj IEFNQkFfREVWSUNFKG1tY2ksICAibWI6bW1jaSIsICBWMk1fTU1DSSwgJnYybV9tbWNpX2RhdGEp Owo+ICBzdGF0aWMgQU1CQV9ERVZJQ0Uoa21pMCwgICJtYjprbWkwIiwgIFYyTV9LTUkwLCBOVUxM KTsKPiBAQCAtMjg4LDYgKzI5NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYW1iYV9kZXZpY2UgKnYybV9h bWJhX2RldnNbXSBfX2luaXRkYXRhID0gewo+ICAJJndkdF9kZXZpY2UsCj4gIAkmcnRjX2Rldmlj ZSwKPiAgfTsKPiArI2VuZGlmIC8qIENPTkZJR19BUkNIX1ZFWFBSRVNTX0FUQUdTICovCj4gIAo+ ICAKPiAgc3RhdGljIGxvbmcgdjJtX29zY19yb3VuZChzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVk IGxvbmcgcmF0ZSkKPiBAQCAtNDE1LDYgKzQyMiw4IEBAIHN0YXRpYyB2b2lkIF9faW5pdCB2Mm1f aW5pdF9pcnEodm9pZCkKPiAgCWN0X2Rlc2MtPmluaXRfaXJxKCk7Cj4gIH0KPiAgCj4gKwo+ICsj aWZkZWYgQ09ORklHX0FSQ0hfVkVYUFJFU1NfQVRBR1MKPiAgc3RhdGljIHZvaWQgX19pbml0IHYy bV9pbml0KHZvaWQpCj4gIHsKPiAgCWludCBpOwo+IEBAIC00NDMsMyArNDUyLDQ2IEBAIE1BQ0hJ TkVfU1RBUlQoVkVYUFJFU1MsICJBUk0tVmVyc2F0aWxlIEV4cHJlc3MiKQo+ICAJLnRpbWVyCQk9 ICZ2Mm1fdGltZXIsCj4gIAkuaW5pdF9tYWNoaW5lCT0gdjJtX2luaXQsCj4gIE1BQ0hJTkVfRU5E Cj4gKyNlbmRpZiAvKiBDT05GSUdfQVJDSF9WRVhQUkVTU19BVEFHUyAqLwo+ICsKPiArI2lmZGVm IENPTkZJR19BUkNIX1ZFWFBSRVNTX0RUCj4gK3N0cnVjdCBvZl9kZXZfYXV4ZGF0YSB2Mm1fZHRf YXV4ZGF0YV9sb29rdXBbXSBfX2luaXRkYXRhID0gewo+ICsJT0ZfREVWX0FVWERBVEEoImFybSx2 ZXhwcmVzcy1mbGFzaCIsIFYyTV9OT1IwLCAicGh5c21hcC1mbGFzaCIsICZ2Mm1fZmxhc2hfZGF0 YSksCj4gKwlPRl9ERVZfQVVYREFUQSgiYXJtLHByaW1lY2VsbCIsIFYyTV9BQUNJLCAibWI6YWFj aSIsIE5VTEwpLAo+ICsJT0ZfREVWX0FVWERBVEEoImFybSxwcmltZWNlbGwiLCBWMk1fV0RULCAi bWI6d2R0IiwgTlVMTCksCj4gKwlPRl9ERVZfQVVYREFUQSgiYXJtLHByaW1lY2VsbCIsIFYyTV9N TUNJLCAibWI6bW1jaSIsICZ2Mm1fbW1jaV9kYXRhKSwKPiArCU9GX0RFVl9BVVhEQVRBKCJhcm0s cHJpbWVjZWxsIiwgVjJNX0tNSTAsICJtYjprbWkwIiwgTlVMTCksCj4gKwlPRl9ERVZfQVVYREFU QSgiYXJtLHByaW1lY2VsbCIsIFYyTV9LTUkxLCAibWI6a21pMSIsIE5VTEwpLAo+ICsJT0ZfREVW X0FVWERBVEEoImFybSxwcmltZWNlbGwiLCBWMk1fVUFSVDAsICJtYjp1YXJ0MCIsIE5VTEwpLAo+ ICsJT0ZfREVWX0FVWERBVEEoImFybSxwcmltZWNlbGwiLCBWMk1fVUFSVDEsICJtYjp1YXJ0MSIs IE5VTEwpLAo+ICsJT0ZfREVWX0FVWERBVEEoImFybSxwcmltZWNlbGwiLCBWMk1fVUFSVDIsICJt Yjp1YXJ0MiIsIE5VTEwpLAo+ICsJT0ZfREVWX0FVWERBVEEoImFybSxwcmltZWNlbGwiLCBWMk1f VUFSVDMsICJtYjp1YXJ0MyIsIE5VTEwpLAo+ICsJT0ZfREVWX0FVWERBVEEoImFybSxwcmltZWNl bGwiLCBWMk1fUlRDLCAibWI6cnRjIiwgTlVMTCksCj4gKwl7fQo+ICt9Owo+ICsKPiArc3RhdGlj IHZvaWQgX19pbml0IHYybV9kdF9pbml0KHZvaWQpCj4gK3sKPiArCW9mX3BsYXRmb3JtX3BvcHVs YXRlKE5VTEwsIG9mX2RlZmF1bHRfYnVzX21hdGNoX3RhYmxlLAo+ICsJCQkgICAgIHYybV9kdF9h dXhkYXRhX2xvb2t1cCwgTlVMTCk7Cj4gKwo+ICsJcG1fcG93ZXJfb2ZmID0gdjJtX3Bvd2VyX29m ZjsKPiArCWFybV9wbV9yZXN0YXJ0ID0gdjJtX3Jlc3RhcnQ7Cj4gKwo+ICsJY3RfZGVzYy0+aW5p dF90aWxlKCk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBjaGFyICp2Mm1fZHRfbWF0Y2hbXSBf X2luaXRjb25zdCA9IHsKPiArCSJhcm0sdmV4cHJlc3MiLAo+ICsJTlVMTCwKPiArfTsKPiArCj4g K0RUX01BQ0hJTkVfU1RBUlQoVkVYUFJFU1NfRFQsICJBUk0gVmVyc2F0aWxlIEV4cHJlc3MiKQo+ ICsJLm1hcF9pbwkJPSB2Mm1fbWFwX2lvLAo+ICsJLmluaXRfZWFybHkJPSB2Mm1faW5pdF9lYXJs eSwKPiArCS5pbml0X2lycQk9IHYybV9pbml0X2lycSwKPiArCS50aW1lcgkJPSAmdjJtX3RpbWVy LAo+ICsJLmluaXRfbWFjaGluZQk9IHYybV9kdF9pbml0LAo+ICsJLmR0X2NvbXBhdAk9IHYybV9k dF9tYXRjaCwKPiArTUFDSElORV9FTkQKPiArI2VuZGlmIC8qIENPTkZJR19BUkNIX1ZFWFBSRVNT X0RUICovCgpBbGwgdGhlIGlmZGVmcyBhcmUgcmVhbGx5IHVnbHkuIE1vc3QgcGVvcGxlIGFyZSBj cmVhdGluZyBuZXcgYm9hcmRfZHQuYwpmaWxlIGFuZCBjb3B5aW5nIG92ZXIgcGllY2VzIHRoZXkg bmVlZC4gT25jZSBEVCBzdXBwb3J0IGlzIG9uIHBhciB3aXRoCnRoZSBvbGQgZmlsZSwgdGhlIG9s ZCBmaWxlIGNhbiBiZSBkZWxldGVkLgoKUm9iCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRldmljZXRyZWUtZGlzY3VzcyBtYWlsaW5nIGxpc3QKZGV2aWNl dHJlZS1kaXNjdXNzQGxpc3RzLm96bGFicy5vcmcKaHR0cHM6Ly9saXN0cy5vemxhYnMub3JnL2xp c3RpbmZvL2RldmljZXRyZWUtZGlzY3Vzcwo=